summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Ujfalusi2016-05-02 13:55:38 +0200
committerTomi Valkeinen2017-04-03 11:36:40 +0200
commit7c79e8d67fde332f1cda26c8a0845fa167815351 (patch)
tree82e3b4cf308305f708e14ec87e9dbdd4d272fcfb
parentdrm/omap: fix replication logic (diff)
downloadkernel-qcow2-linux-7c79e8d67fde332f1cda26c8a0845fa167815351.tar.gz
kernel-qcow2-linux-7c79e8d67fde332f1cda26c8a0845fa167815351.tar.xz
kernel-qcow2-linux-7c79e8d67fde332f1cda26c8a0845fa167815351.zip
drm/omap: dss: Functions to check components in the display/output list
The functions can be used to check a component (by it's of_node) if it is part of the omapdss display or output list. If the component is found, it means that the driver is loaded. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/gpu/drm/omapdrm/dss/display.c18
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h3
-rw-r--r--drivers/gpu/drm/omapdrm/dss/output.c13
3 files changed, 34 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c
index e567ff68b216..94c012e0584b 100644
--- a/drivers/gpu/drm/omapdrm/dss/display.c
+++ b/drivers/gpu/drm/omapdrm/dss/display.c
@@ -132,6 +132,24 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev)
}
EXPORT_SYMBOL(omapdss_unregister_display);
+bool omapdss_component_is_display(struct device_node *node)
+{
+ struct omap_dss_device *dssdev;
+ bool found = false;
+
+ mutex_lock(&panel_list_mutex);
+ list_for_each_entry(dssdev, &panel_list, panel_list) {
+ if (dssdev->dev->of_node == node) {
+ found = true;
+ goto out;
+ }
+ }
+out:
+ mutex_unlock(&panel_list_mutex);
+ return found;
+}
+EXPORT_SYMBOL(omapdss_component_is_display);
+
struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev)
{
if (!try_module_get(dssdev->owner))
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 4545f1824e66..7e1feb935137 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -936,4 +936,7 @@ struct dispc_ops {
void dispc_set_ops(const struct dispc_ops *o);
const struct dispc_ops *dispc_get_ops(void);
+bool omapdss_component_is_display(struct device_node *node);
+bool omapdss_component_is_output(struct device_node *node);
+
#endif /* __OMAP_DRM_DSS_H */
diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c
index 2b999dc48621..655c5d73eac9 100644
--- a/drivers/gpu/drm/omapdrm/dss/output.c
+++ b/drivers/gpu/drm/omapdrm/dss/output.c
@@ -107,6 +107,19 @@ void omapdss_unregister_output(struct omap_dss_device *out)
}
EXPORT_SYMBOL(omapdss_unregister_output);
+bool omapdss_component_is_output(struct device_node *node)
+{
+ struct omap_dss_device *out;
+
+ list_for_each_entry(out, &output_list, list) {
+ if (out->dev->of_node == node)
+ return true;
+ }
+
+ return false;
+}
+EXPORT_SYMBOL(omapdss_component_is_output);
+
struct omap_dss_device *omap_dss_get_output(enum omap_dss_output_id id)
{
struct omap_dss_device *out;