diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/display.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/omapdss.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.c | 9 | ||||
-rw-r--r-- | 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 01da7e94b974..dd93c2121a35 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h @@ -414,8 +414,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 3b8f0fdf24a8..008eec6356fd 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 0c57d2814c51..ebff86595167 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.h +++ b/drivers/gpu/drm/omapdrm/omap_drv.h @@ -50,6 +50,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 { |