OSDN Git Service

OMAPDSS: get dssdev->alias from DT alias
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 6 Aug 2013 06:50:22 +0000 (09:50 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 19 Mar 2014 09:03:05 +0000 (11:03 +0200)
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>
drivers/video/omap2/dss/display.c

index 012ada3..21080f9 100644 (file)
@@ -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)