drm/panel: support drm_find_panel_by_connector
authorMark Yao <mark.yao@rock-chips.com>
Thu, 6 Jul 2017 07:43:10 +0000 (15:43 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 19 Jul 2017 06:49:25 +0000 (14:49 +0800)
Change-Id: Iee970e013ff8b1558a060f334c700dea36c38d0f
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/gpu/drm/drm_panel.c
include/drm/drm_panel.h

index 2ef988e037b7e8933682ac19653675d01d6b927c..8cc1507a4b093305712d8b13ddf8919c8daa4364 100644 (file)
@@ -75,6 +75,24 @@ int drm_panel_detach(struct drm_panel *panel)
 }
 EXPORT_SYMBOL(drm_panel_detach);
 
+struct drm_panel *drm_find_panel_by_connector(struct drm_connector *connector)
+{
+       struct drm_panel *panel;
+
+       mutex_lock(&panel_lock);
+
+       list_for_each_entry(panel, &panel_list, list) {
+               if (panel->connector == connector) {
+                       mutex_unlock(&panel_lock);
+                       return panel;
+               }
+       }
+
+       mutex_unlock(&panel_lock);
+       return NULL;
+}
+EXPORT_SYMBOL(drm_find_panel_by_connector);
+
 #ifdef CONFIG_OF
 struct drm_panel *of_drm_find_panel(struct device_node *np)
 {
index 083dedde7a034e49a312a00eef36c8d26741fd57..0e1da22da93902ec9c7d7615fc9d3efac413ceb5 100644 (file)
@@ -143,6 +143,7 @@ void drm_panel_remove(struct drm_panel *panel);
 int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector);
 int drm_panel_detach(struct drm_panel *panel);
 
+struct drm_panel *drm_find_panel_by_connector(struct drm_connector *connector);
 #ifdef CONFIG_OF
 struct drm_panel *of_drm_find_panel(struct device_node *np);
 #else