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@xxxxxxxxxxx> --- 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel