aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_connector.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_connector.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_connector.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c
index f9cc04c7c0fa..4729af395156 100644
--- a/drivers/gpu/drm/omapdrm/omap_connector.c
+++ b/drivers/gpu/drm/omapdrm/omap_connector.c
@@ -61,26 +61,36 @@ static enum drm_connector_status omap_connector_detect(
61 struct drm_connector *connector, bool force) 61 struct drm_connector *connector, bool force)
62{ 62{
63 struct omap_connector *omap_connector = to_omap_connector(connector); 63 struct omap_connector *omap_connector = to_omap_connector(connector);
64 struct omap_dss_device *dssdev = omap_connector->dssdev; 64 struct omap_dss_device *dssdev;
65 enum drm_connector_status ret; 65 enum drm_connector_status status;
66
67 for (dssdev = omap_connector->dssdev; dssdev; dssdev = dssdev->src) {
68 if (dssdev->ops_flags & OMAP_DSS_DEVICE_OP_DETECT)
69 break;
70 }
66 71
67 if (dssdev->ops->detect) { 72 if (dssdev) {
68 if (dssdev->ops->detect(dssdev)) 73 if (dssdev->ops->detect(dssdev))
69 ret = connector_status_connected; 74 status = connector_status_connected;
70 else 75 else
71 ret = connector_status_disconnected; 76 status = connector_status_disconnected;
72 } else if (dssdev->type == OMAP_DISPLAY_TYPE_DPI ||
73 dssdev->type == OMAP_DISPLAY_TYPE_DBI ||
74 dssdev->type == OMAP_DISPLAY_TYPE_SDI ||
75 dssdev->type == OMAP_DISPLAY_TYPE_DSI) {
76 ret = connector_status_connected;
77 } else { 77 } else {
78 ret = connector_status_unknown; 78 switch (omap_connector->dssdev->type) {
79 case OMAP_DISPLAY_TYPE_DPI:
80 case OMAP_DISPLAY_TYPE_DBI:
81 case OMAP_DISPLAY_TYPE_SDI:
82 case OMAP_DISPLAY_TYPE_DSI:
83 status = connector_status_connected;
84 break;
85 default:
86 status = connector_status_unknown;
87 break;
88 }
79 } 89 }
80 90
81 VERB("%s: %d (force=%d)", omap_connector->dssdev->name, ret, force); 91 VERB("%s: %d (force=%d)", omap_connector->dssdev->name, status, force);
82 92
83 return ret; 93 return status;
84} 94}
85 95
86static void omap_connector_destroy(struct drm_connector *connector) 96static void omap_connector_destroy(struct drm_connector *connector)