|
@@ -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)
|