Commit e10bd354 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen

drm/omap: dss: Allow looking up any device by port

The omap_dss_find_output_by_port() function looks up an omap_dss_device
by port from the list of devices registered as outputs. In preparation
for looking up sinks in addition to sources, allow the function to look
up any registered device. Rename it to omap_dss_find_device_by_port() to
match its new purpose.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent a7e82a67
...@@ -89,6 +89,19 @@ static bool omapdss_device_is_registered(struct device_node *node) ...@@ -89,6 +89,19 @@ static bool omapdss_device_is_registered(struct device_node *node)
return found; return found;
} }
struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src,
unsigned int port)
{
struct omap_dss_device *dssdev;
list_for_each_entry(dssdev, &omapdss_devices_list, list) {
if (dssdev->dev->of_node == src && dssdev->port_num == port)
return omap_dss_get_device(dssdev);
}
return NULL;
}
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* Components Handling * Components Handling
*/ */
......
...@@ -74,7 +74,7 @@ omapdss_of_find_source_for_first_ep(struct device_node *node) ...@@ -74,7 +74,7 @@ omapdss_of_find_source_for_first_ep(struct device_node *node)
return NULL; return NULL;
/* ... and finally the source. */ /* ... and finally the source. */
src = omap_dss_find_output_by_port(src_node, port_number); src = omapdss_find_device_by_port(src_node, port_number);
of_node_put(src_node); of_node_put(src_node);
return src ? src : ERR_PTR(-EPROBE_DEFER); return src ? src : ERR_PTR(-EPROBE_DEFER);
......
...@@ -563,6 +563,8 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev); ...@@ -563,6 +563,8 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev);
void omapdss_device_register(struct omap_dss_device *dssdev); void omapdss_device_register(struct omap_dss_device *dssdev);
void omapdss_device_unregister(struct omap_dss_device *dssdev); void omapdss_device_unregister(struct omap_dss_device *dssdev);
struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src,
unsigned int port);
struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev); struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev);
void omap_dss_put_device(struct omap_dss_device *dssdev); void omap_dss_put_device(struct omap_dss_device *dssdev);
...@@ -576,8 +578,6 @@ int omap_dss_get_num_overlays(void); ...@@ -576,8 +578,6 @@ int omap_dss_get_num_overlays(void);
int omapdss_register_output(struct omap_dss_device *output); int omapdss_register_output(struct omap_dss_device *output);
void omapdss_unregister_output(struct omap_dss_device *output); void omapdss_unregister_output(struct omap_dss_device *output);
struct omap_dss_device *omap_dss_get_output(enum omap_dss_output_id id); struct omap_dss_device *omap_dss_get_output(enum omap_dss_output_id id);
struct omap_dss_device *omap_dss_find_output_by_port(struct device_node *src,
unsigned int port);
int omapdss_output_set_device(struct omap_dss_device *out, int omapdss_output_set_device(struct omap_dss_device *out,
struct omap_dss_device *dssdev); struct omap_dss_device *dssdev);
int omapdss_output_unset_device(struct omap_dss_device *out); int omapdss_output_unset_device(struct omap_dss_device *out);
......
...@@ -122,19 +122,6 @@ struct omap_dss_device *omap_dss_get_output(enum omap_dss_output_id id) ...@@ -122,19 +122,6 @@ struct omap_dss_device *omap_dss_get_output(enum omap_dss_output_id id)
} }
EXPORT_SYMBOL(omap_dss_get_output); EXPORT_SYMBOL(omap_dss_get_output);
struct omap_dss_device *omap_dss_find_output_by_port(struct device_node *src,
unsigned int port)
{
struct omap_dss_device *out;
list_for_each_entry(out, &output_list, output_list) {
if (out->dev->of_node == src && out->port_num == port)
return omap_dss_get_device(out);
}
return NULL;
}
struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev) struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev)
{ {
while (dssdev->src) while (dssdev->src)
......
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