[RFC PATCH 1/3] drm/panel: Support panel detection
Boris Brezillon
boris.brezillon at bootlin.com
Mon Apr 30 14:43:21 UTC 2018
Some panels might be connected through extension boards and might not
be available when the system boots. Extend the panel interface to
support panel detection.
An optional ->detect() hook is added and, if implemented, will be called
every time the panel user wants to know if the panel is connected or
disconnected.
We also add a ->polled field which should encode the type of polling the
DRM core should do (DRM_CONNECTOR_POLL_HPD, DRM_CONNECTOR_POLL_CONNECT
and DRM_CONNECTOR_POLL_DISCONNECT flags).
Signed-off-by: Boris Brezillon <boris.brezillon at bootlin.com>
---
include/drm/drm_panel.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h
index 14ac240a1f64..718cc1f746ab 100644
--- a/include/drm/drm_panel.h
+++ b/include/drm/drm_panel.h
@@ -24,6 +24,7 @@
#ifndef __DRM_PANEL_H__
#define __DRM_PANEL_H__
+#include <drm/drm_connector.h>
#include <linux/errno.h>
#include <linux/list.h>
@@ -68,6 +69,7 @@ struct display_timing;
* the panel. This is the job of the .unprepare() function.
*/
struct drm_panel_funcs {
+ int (*detect)(struct drm_panel *panel);
int (*disable)(struct drm_panel *panel);
int (*unprepare)(struct drm_panel *panel);
int (*prepare)(struct drm_panel *panel);
@@ -90,6 +92,7 @@ struct drm_panel {
struct drm_connector *connector;
struct device *dev;
+ u8 polled;
const struct drm_panel_funcs *funcs;
struct list_head list;
@@ -186,6 +189,15 @@ static inline int drm_panel_get_modes(struct drm_panel *panel)
return panel ? -ENOSYS : -EINVAL;
}
+static inline int drm_panel_detect(struct drm_panel *panel)
+{
+ if (panel && panel->funcs && panel->funcs->detect)
+ return panel->funcs->detect(panel);
+
+ /* Consider the panel as connected by default. */
+ return panel ? connector_status_connected : -EINVAL;
+}
+
void drm_panel_init(struct drm_panel *panel);
int drm_panel_add(struct drm_panel *panel);
--
2.14.1
More information about the dri-devel
mailing list