diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2013-08-06 09:50:22 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2014-03-19 11:03:05 +0200 |
commit | 3e22b355343d808bb09cc47b5ecb261af3b5753b (patch) | |
tree | 12bf66dfe5a5c33ae5c0fc40b676c83fa20fa325 /drivers/video/omap2 | |
parent | 7f2bcd06558a40deecd4a294acbd0b3f659be911 (diff) | |
download | linux-stable-3e22b355343d808bb09cc47b5ecb261af3b5753b.tar.gz linux-stable-3e22b355343d808bb09cc47b5ecb261af3b5753b.tar.bz2 linux-stable-3e22b355343d808bb09cc47b5ecb261af3b5753b.zip |
OMAPDSS: get dssdev->alias from DT alias
We currently create a "displayX" style alias name for all displays,
using a number that is incremented for each registered display. With the
new DSS device model there is no clear order in which the displays are
registered, and thus the numbering is somewhat random.
This patch improves the behavior for DT case so that if the displays
have been assigned DT aliases, those aliases will be used as DSS
aliases.
This means that "display0" is always the one specified in the DT alias,
and thus display0 can be used as default display in case the user didn't
specify a default display.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Archit Taneja <archit@ti.com>
Diffstat (limited to 'drivers/video/omap2')
-rw-r--r-- | drivers/video/omap2/dss/display.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c index 012ada38a29d..21080f9dae87 100644 --- a/drivers/video/omap2/dss/display.c +++ b/drivers/video/omap2/dss/display.c @@ -134,9 +134,24 @@ static int disp_num_counter; int omapdss_register_display(struct omap_dss_device *dssdev) { struct omap_dss_driver *drv = dssdev->driver; + int id; - snprintf(dssdev->alias, sizeof(dssdev->alias), - "display%d", disp_num_counter++); + /* + * Note: this presumes all the displays are either using DT or non-DT, + * which normally should be the case. This also presumes that all + * displays either have an DT alias, or none has. + */ + + if (dssdev->dev->of_node) { + id = of_alias_get_id(dssdev->dev->of_node, "display"); + + if (id < 0) + id = disp_num_counter++; + } else { + id = disp_num_counter++; + } + + snprintf(dssdev->alias, sizeof(dssdev->alias), "display%d", id); /* Use 'label' property for name, if it exists */ if (dssdev->dev->of_node) |