Hi, On Wed, Jun 06, 2018 at 12:36:49PM +0300, Laurent Pinchart wrote: > The drm_encoder implementation requires access to the omap_dss_device > corresponding to the display, which is passed to its initialization > function and stored internally. Clean up of the HDMI mode and infoframe > handling will require access to the output omap_dss_device. To prepare > for that, pass it to the encoder initialization function and store it > internally as well. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> -- Sebastian > drivers/gpu/drm/omapdrm/omap_drv.c | 2 +- > drivers/gpu/drm/omapdrm/omap_encoder.c | 17 ++++++++++------- > drivers/gpu/drm/omapdrm/omap_encoder.h | 3 ++- > 3 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index bbcd467cd83f..49cd7609fa3b 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -318,7 +318,7 @@ static int omap_modeset_init(struct drm_device *dev) > struct drm_encoder *encoder; > struct drm_crtc *crtc; > > - encoder = omap_encoder_init(dev, display); > + encoder = omap_encoder_init(dev, pipe->output, display); > if (!encoder) > return -ENOMEM; > > diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c > index 87e2b3799a45..2689ae74ea60 100644 > --- a/drivers/gpu/drm/omapdrm/omap_encoder.c > +++ b/drivers/gpu/drm/omapdrm/omap_encoder.c > @@ -36,7 +36,8 @@ > */ > struct omap_encoder { > struct drm_encoder base; > - struct omap_dss_device *dssdev; > + struct omap_dss_device *output; > + struct omap_dss_device *display; > }; > > static void omap_encoder_destroy(struct drm_encoder *encoder) > @@ -57,7 +58,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder, > { > struct drm_device *dev = encoder->dev; > struct omap_encoder *omap_encoder = to_omap_encoder(encoder); > - struct omap_dss_device *dssdev = omap_encoder->dssdev; > + struct omap_dss_device *dssdev = omap_encoder->display; > struct drm_connector *connector; > bool hdmi_mode; > int r; > @@ -86,7 +87,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder, > static void omap_encoder_disable(struct drm_encoder *encoder) > { > struct omap_encoder *omap_encoder = to_omap_encoder(encoder); > - struct omap_dss_device *dssdev = omap_encoder->dssdev; > + struct omap_dss_device *dssdev = omap_encoder->display; > > dssdev->ops->disable(dssdev); > } > @@ -97,7 +98,7 @@ static int omap_encoder_update(struct drm_encoder *encoder, > { > struct drm_device *dev = encoder->dev; > struct omap_encoder *omap_encoder = to_omap_encoder(encoder); > - struct omap_dss_device *dssdev = omap_encoder->dssdev; > + struct omap_dss_device *dssdev = omap_encoder->display; > int ret; > > if (dssdev->ops->check_timings) { > @@ -127,7 +128,7 @@ static int omap_encoder_update(struct drm_encoder *encoder, > static void omap_encoder_enable(struct drm_encoder *encoder) > { > struct omap_encoder *omap_encoder = to_omap_encoder(encoder); > - struct omap_dss_device *dssdev = omap_encoder->dssdev; > + struct omap_dss_device *dssdev = omap_encoder->display; > int r; > > omap_encoder_update(encoder, omap_crtc_channel(encoder->crtc), > @@ -156,7 +157,8 @@ static const struct drm_encoder_helper_funcs omap_encoder_helper_funcs = { > > /* initialize encoder */ > struct drm_encoder *omap_encoder_init(struct drm_device *dev, > - struct omap_dss_device *dssdev) > + struct omap_dss_device *output, > + struct omap_dss_device *display) > { > struct drm_encoder *encoder = NULL; > struct omap_encoder *omap_encoder; > @@ -165,7 +167,8 @@ struct drm_encoder *omap_encoder_init(struct drm_device *dev, > if (!omap_encoder) > goto fail; > > - omap_encoder->dssdev = dssdev; > + omap_encoder->output = output; > + omap_encoder->display = display; > > encoder = &omap_encoder->base; > > diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.h b/drivers/gpu/drm/omapdrm/omap_encoder.h > index e8f1a35dce2f..a7b5dde63ecb 100644 > --- a/drivers/gpu/drm/omapdrm/omap_encoder.h > +++ b/drivers/gpu/drm/omapdrm/omap_encoder.h > @@ -25,6 +25,7 @@ struct drm_encoder; > struct omap_dss_device; > > struct drm_encoder *omap_encoder_init(struct drm_device *dev, > - struct omap_dss_device *dssdev); > + struct omap_dss_device *output, > + struct omap_dss_device *display); > > #endif /* __OMAPDRM_ENCODER_H__ */ > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel