Hi, On Wed, Dec 05, 2018 at 05:00:10PM +0200, Laurent Pinchart wrote: > The DT bindings for the OMAP DSS allow assigning numerical IDs to > display outputs through display entries in the alias node. The driver > uses this information to sort pipelines according to the order specified > in DT, making it possible for a system to give a priority order to > outputs. > > Retrieval of the alias ID is done when initializing display dss devices. > That code will be removed when moving to drm_bridge and drm_panel. Move > retrieval of the alias ID to display pipeline connection time and store > it in the pipeline structure instead to keep the feature. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> -- Sebastian > drivers/gpu/drm/omapdrm/dss/display.c | 2 -- > drivers/gpu/drm/omapdrm/dss/omapdss.h | 2 -- > drivers/gpu/drm/omapdrm/omap_drv.c | 9 +++++++-- > drivers/gpu/drm/omapdrm/omap_drv.h | 1 + > 4 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c > index 398964358386..e93f61a567a8 100644 > --- a/drivers/gpu/drm/omapdrm/dss/display.c > +++ b/drivers/gpu/drm/omapdrm/dss/display.c > @@ -42,8 +42,6 @@ void omapdss_display_init(struct omap_dss_device *dssdev) > if (id < 0) > id = disp_num_counter++; > > - dssdev->alias_id = id; > - > /* Use 'label' property for name, if it exists */ > of_property_read_string(dssdev->dev->of_node, "label", &dssdev->name); > > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index 5dac69519d7e..7c9f8a5ceb37 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -419,8 +419,6 @@ struct omap_dss_device { > > struct list_head list; > > - unsigned int alias_id; > - > enum omap_display_type type; > /* > * DSS output type that this device generates (for DSS internal devices) > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index 286590657d44..c9b578a49b24 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -155,9 +155,9 @@ static int omap_compare_pipes(const void *a, const void *b) > const struct omap_drm_pipeline *pipe1 = a; > const struct omap_drm_pipeline *pipe2 = b; > > - if (pipe1->display->alias_id > pipe2->display->alias_id) > + if (pipe1->alias_id > pipe2->alias_id) > return 1; > - else if (pipe1->display->alias_id < pipe2->display->alias_id) > + else if (pipe1->alias_id < pipe2->alias_id) > return -1; > return 0; > } > @@ -182,11 +182,16 @@ static int omap_connect_pipelines(struct drm_device *ddev) > output->name); > } else { > struct omap_drm_pipeline *pipe; > + int id; > > pipe = &priv->pipes[priv->num_pipes++]; > pipe->output = omapdss_device_get(output); > pipe->display = omapdss_display_get(output); > > + id = of_alias_get_id(pipe->display->dev->of_node, > + "display"); > + pipe->alias_id = id >= 0 ? id : priv->num_pipes - 1; > + > if (priv->num_pipes == ARRAY_SIZE(priv->pipes)) { > /* To balance the 'for_each_dss_output' loop */ > omapdss_device_put(output); > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h > index 788aa9f7e6df..a169de3ed95d 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.h > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h > @@ -51,6 +51,7 @@ struct omap_drm_pipeline { > struct drm_connector *connector; > struct omap_dss_device *output; > struct omap_dss_device *display; > + unsigned int alias_id; > }; > > struct omap_drm_private { > -- > 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