Hey, > I think there are more places affected with this change. I can get below > compilation issues while trying to compile my branch: > > drivers/gpu/drm/vc4/vc4_txp.c: In function ‘encoder_to_vc4_txp’: > ./include/linux/build_bug.h:78:41: error: static assertion failed: > "pointer type mismatch in container_of()" > #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) > ^ > ./include/linux/build_bug.h:77:34: note: in expansion of macro > ‘__static_assert’ > #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, > #expr) > ^ > ./include/linux/container_of.h:19:2: note: in expansion of macro > ‘static_assert’ > static_assert(__same_type(*(ptr), ((type *)0)->member) || \ > ^ > drivers/gpu/drm/vc4/vc4_txp.c:162:9: note: in expansion of macro > ‘container_of’ > return container_of(encoder, struct vc4_txp, connector.encoder); > ^ > drivers/gpu/drm/vc4/vc4_txp.c: In function ‘connector_to_vc4_txp’: > ./include/linux/build_bug.h:78:41: error: static assertion failed: > "pointer type mismatch in container_of()" > #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) > ^ > ./include/linux/build_bug.h:77:34: note: in expansion of macro > ‘__static_assert’ > #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, > #expr) > ^ > ./include/linux/container_of.h:19:2: note: in expansion of macro > ‘static_assert’ > static_assert(__same_type(*(ptr), ((type *)0)->member) || \ > ^ > drivers/gpu/drm/vc4/vc4_txp.c:167:9: note: in expansion of macro > ‘container_of’ > return container_of(conn, struct vc4_txp, connector.base); > ^ > drivers/gpu/drm/vc4/vc4_txp.c: In function ‘vc4_txp_bind’: > drivers/gpu/drm/vc4/vc4_txp.c:495:27: error: passing argument 1 of > ‘drm_connector_helper_add’ from incompatible pointer type [- > Werror=incompatible-pointer-types] > drm_connector_helper_add(&txp->connector.base, > ^ > In file included from ./include/drm/drm_atomic_helper.h:32:0, > from drivers/gpu/drm/vc4/vc4_txp.c:17: > ./include/drm/drm_modeset_helper_vtables.h:1153:20: note: expected > ‘struct drm_connector *’ but argument is of type ‘struct drm_connector **’ > static inline void drm_connector_helper_add(struct drm_connector > *connector, > ^ > drivers/gpu/drm/vc4/vc4_txp.c:509:10: error: assignment from incompatible > pointer type [-Werror=incompatible-pointer-types] > encoder = &txp->connector.encoder; > ^ > drivers/gpu/drm/vc4/vc4_txp.c: In function ‘vc4_txp_unbind’: > drivers/gpu/drm/vc4/vc4_txp.c:532:28: error: passing argument 1 of > ‘vc4_txp_connector_destroy’ from incompatible pointer type [- > Werror=incompatible-pointer-types] > vc4_txp_connector_destroy(&txp->connector.base); > ^ > drivers/gpu/drm/vc4/vc4_txp.c:333:13: note: expected ‘struct > drm_connector *’ but argument is of type ‘struct drm_connector **’ > static void vc4_txp_connector_destroy(struct drm_connector *connector) > I will have a look at this and try to resolve it > > Looks like vc4 doesnt have its own encoder so we might have to move it to > have its own? Right seems like we will have to add a drm_connector and drm_encoder in the below structure > > struct vc4_txp { > struct vc4_crtc base; > > struct platform_device *pdev; > > struct drm_writeback_connector connector; > > void __iomem *regs; > struct debugfs_regset32 regset; > }; > > static inline struct vc4_txp *encoder_to_vc4_txp(struct drm_encoder > *encoder) > { > return container_of(encoder, struct vc4_txp, connector.encoder); } > > static inline struct vc4_txp *connector_to_vc4_txp(struct drm_connector > *conn) > { > return container_of(conn, struct vc4_txp, connector.base); } > Changes will be required here in both connector_of functions to point to The new drm_connector and drm_encoder we add in vc4_txp struct. > > One more thing, it looks like to me, we need to do one more thing. > > Like intel does and what MSM will do, the encoder pointer of the wb > connector has to point to the encoder struct . > > >> wb_conn = &intel_connector->wb_conn; > >> wb_conn->base = &intel_connector->base; > >> wb_conn->encoder = &intel_wd->base.base; > Yes this will need to be done Thanks Abhinav for pointing Ill implement this and send it in the next version of patches Regards, Suraj Kandpal