Commit 67b23ca1 authored by Tomi Valkeinen's avatar Tomi Valkeinen

OMAPDSS: use the panel list in omap_dss_get_next_device

omap_dss_get_next_device() uses the dss bus to iterate over the
displays. This patch changes omap_dss_get_next_device() to use the new
panel list instead.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 2e7e3dc7
...@@ -191,27 +191,51 @@ void omap_dss_put_device(struct omap_dss_device *dssdev) ...@@ -191,27 +191,51 @@ void omap_dss_put_device(struct omap_dss_device *dssdev)
} }
EXPORT_SYMBOL(omap_dss_put_device); EXPORT_SYMBOL(omap_dss_put_device);
/* ref count of the found device is incremented. ref count /*
* of from-device is decremented. */ * ref count of the found device is incremented.
* ref count of from-device is decremented.
*/
struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from) struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from)
{ {
struct device *dev; struct list_head *l;
struct device *dev_start = NULL; struct omap_dss_device *dssdev;
struct omap_dss_device *dssdev = NULL;
mutex_lock(&panel_list_mutex);
if (list_empty(&panel_list)) {
dssdev = NULL;
goto out;
}
int match(struct device *dev, void *data) if (from == NULL) {
{ dssdev = list_first_entry(&panel_list, struct omap_dss_device,
return 1; panel_list);
omap_dss_get_device(dssdev);
goto out;
} }
if (from) omap_dss_put_device(from);
dev_start = &from->dev;
dev = bus_find_device(dss_get_bus(), dev_start, NULL, match);
if (dev)
dssdev = to_dss_device(dev);
if (from)
put_device(&from->dev);
list_for_each(l, &panel_list) {
dssdev = list_entry(l, struct omap_dss_device, panel_list);
if (dssdev == from) {
if (list_is_last(l, &panel_list)) {
dssdev = NULL;
goto out;
}
dssdev = list_entry(l->next, struct omap_dss_device,
panel_list);
omap_dss_get_device(dssdev);
goto out;
}
}
WARN(1, "'from' dssdev not found\n");
dssdev = NULL;
out:
mutex_unlock(&panel_list_mutex);
return dssdev; return dssdev;
} }
EXPORT_SYMBOL(omap_dss_get_next_device); EXPORT_SYMBOL(omap_dss_get_next_device);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment