On Wed, Nov 30, 2022 at 03:02:13PM +0100, Michael Riesch wrote: > Commit 540b8f271e53 ("drm/rockchip: Embed drm_encoder into > rockchip_decoder") provides the means to pass the endpoint ID to the > VOP2 driver, which sets the interface MUX accordingly. However, this > step has not yet been carried out for the RGB output block. Embed the > drm_encoder structure into the rockchip_encoder structure and set the > endpoint ID correctly. > > Signed-off-by: Michael Riesch <michael.riesch@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/rockchip/rockchip_rgb.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c > index 75eb7cca3d82..16201a5cf1e8 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c > +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c > @@ -18,17 +18,17 @@ > #include <drm/drm_probe_helper.h> > #include <drm/drm_simple_kms_helper.h> > > +#include <dt-bindings/soc/rockchip,vop2.h> > + > #include "rockchip_drm_drv.h" > #include "rockchip_drm_vop.h" > #include "rockchip_rgb.h" > > -#define encoder_to_rgb(c) container_of(c, struct rockchip_rgb, encoder) > - > struct rockchip_rgb { > struct device *dev; > struct drm_device *drm_dev; > struct drm_bridge *bridge; > - struct drm_encoder encoder; > + struct rockchip_encoder encoder; > struct drm_connector connector; > int output_mode; > }; > @@ -125,7 +125,7 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *dev, > return ERR_PTR(ret); > } > > - encoder = &rgb->encoder; > + encoder = &rgb->encoder.encoder; > encoder->possible_crtcs = drm_crtc_mask(crtc); > > ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_NONE); > @@ -161,6 +161,8 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *dev, > goto err_free_encoder; > } > > + rgb->encoder.crtc_endpoint_id = ROCKCHIP_VOP2_EP_RGB0; This is vop2 specific. This code is used with the vop1 as well, so it doesn't look like it belongs here, at least not hidden in a patch titled "embed drm_encoder into rockchip_encoder". Normally the crtc_endpoint_id is set by the encoder, coming from the encoder node, asking the question "To which port on the VOP am I connected to?" Here the situation is different. We are called from the VOP and the question instead is: "Is there something connected to VPx endpoint id ROCKCHIP_VOP2_EP_RGB0?" You might need a vop2 specific entry to this code. Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |