diff options
-rw-r--r-- | drivers/gpu/drm/omapdrm/displays/connector-dvi.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/omapdss.h | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_connector.c | 17 |
5 files changed, 14 insertions, 40 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c index e9353e4cd297..a53d5967e5a9 100644 --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c +++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c | |||
@@ -211,30 +211,23 @@ static bool dvic_detect(struct omap_dss_device *dssdev) | |||
211 | return r == 0; | 211 | return r == 0; |
212 | } | 212 | } |
213 | 213 | ||
214 | static int dvic_register_hpd_cb(struct omap_dss_device *dssdev, | 214 | static void dvic_register_hpd_cb(struct omap_dss_device *dssdev, |
215 | void (*cb)(void *cb_data, | 215 | void (*cb)(void *cb_data, |
216 | enum drm_connector_status status), | 216 | enum drm_connector_status status), |
217 | void *cb_data) | 217 | void *cb_data) |
218 | { | 218 | { |
219 | struct panel_drv_data *ddata = to_panel_data(dssdev); | 219 | struct panel_drv_data *ddata = to_panel_data(dssdev); |
220 | 220 | ||
221 | if (!ddata->hpd_gpio) | ||
222 | return -ENOTSUPP; | ||
223 | |||
224 | mutex_lock(&ddata->hpd_lock); | 221 | mutex_lock(&ddata->hpd_lock); |
225 | ddata->hpd_cb = cb; | 222 | ddata->hpd_cb = cb; |
226 | ddata->hpd_cb_data = cb_data; | 223 | ddata->hpd_cb_data = cb_data; |
227 | mutex_unlock(&ddata->hpd_lock); | 224 | mutex_unlock(&ddata->hpd_lock); |
228 | return 0; | ||
229 | } | 225 | } |
230 | 226 | ||
231 | static void dvic_unregister_hpd_cb(struct omap_dss_device *dssdev) | 227 | static void dvic_unregister_hpd_cb(struct omap_dss_device *dssdev) |
232 | { | 228 | { |
233 | struct panel_drv_data *ddata = to_panel_data(dssdev); | 229 | struct panel_drv_data *ddata = to_panel_data(dssdev); |
234 | 230 | ||
235 | if (!ddata->hpd_gpio) | ||
236 | return; | ||
237 | |||
238 | mutex_lock(&ddata->hpd_lock); | 231 | mutex_lock(&ddata->hpd_lock); |
239 | ddata->hpd_cb = NULL; | 232 | ddata->hpd_cb = NULL; |
240 | ddata->hpd_cb_data = NULL; | 233 | ddata->hpd_cb_data = NULL; |
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c index 8eae973474dd..c58bf64d1a9b 100644 --- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c +++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | |||
@@ -147,31 +147,23 @@ static bool hdmic_detect(struct omap_dss_device *dssdev) | |||
147 | return connected; | 147 | return connected; |
148 | } | 148 | } |
149 | 149 | ||
150 | static int hdmic_register_hpd_cb(struct omap_dss_device *dssdev, | 150 | static void hdmic_register_hpd_cb(struct omap_dss_device *dssdev, |
151 | void (*cb)(void *cb_data, | 151 | void (*cb)(void *cb_data, |
152 | enum drm_connector_status status), | 152 | enum drm_connector_status status), |
153 | void *cb_data) | 153 | void *cb_data) |
154 | { | 154 | { |
155 | struct panel_drv_data *ddata = to_panel_data(dssdev); | 155 | struct panel_drv_data *ddata = to_panel_data(dssdev); |
156 | 156 | ||
157 | if (!ddata->hpd_gpio) | ||
158 | return -ENOTSUPP; | ||
159 | |||
160 | mutex_lock(&ddata->hpd_lock); | 157 | mutex_lock(&ddata->hpd_lock); |
161 | ddata->hpd_cb = cb; | 158 | ddata->hpd_cb = cb; |
162 | ddata->hpd_cb_data = cb_data; | 159 | ddata->hpd_cb_data = cb_data; |
163 | mutex_unlock(&ddata->hpd_lock); | 160 | mutex_unlock(&ddata->hpd_lock); |
164 | |||
165 | return 0; | ||
166 | } | 161 | } |
167 | 162 | ||
168 | static void hdmic_unregister_hpd_cb(struct omap_dss_device *dssdev) | 163 | static void hdmic_unregister_hpd_cb(struct omap_dss_device *dssdev) |
169 | { | 164 | { |
170 | struct panel_drv_data *ddata = to_panel_data(dssdev); | 165 | struct panel_drv_data *ddata = to_panel_data(dssdev); |
171 | 166 | ||
172 | if (!ddata->hpd_gpio) | ||
173 | return; | ||
174 | |||
175 | mutex_lock(&ddata->hpd_lock); | 167 | mutex_lock(&ddata->hpd_lock); |
176 | ddata->hpd_cb = NULL; | 168 | ddata->hpd_cb = NULL; |
177 | ddata->hpd_cb_data = NULL; | 169 | ddata->hpd_cb_data = NULL; |
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c index f6d4f90f2c08..508df4174c5e 100644 --- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | |||
@@ -140,10 +140,10 @@ static bool tpd_detect(struct omap_dss_device *dssdev) | |||
140 | return connected; | 140 | return connected; |
141 | } | 141 | } |
142 | 142 | ||
143 | static int tpd_register_hpd_cb(struct omap_dss_device *dssdev, | 143 | static void tpd_register_hpd_cb(struct omap_dss_device *dssdev, |
144 | void (*cb)(void *cb_data, | 144 | void (*cb)(void *cb_data, |
145 | enum drm_connector_status status), | 145 | enum drm_connector_status status), |
146 | void *cb_data) | 146 | void *cb_data) |
147 | { | 147 | { |
148 | struct panel_drv_data *ddata = to_panel_data(dssdev); | 148 | struct panel_drv_data *ddata = to_panel_data(dssdev); |
149 | 149 | ||
@@ -151,8 +151,6 @@ static int tpd_register_hpd_cb(struct omap_dss_device *dssdev, | |||
151 | ddata->hpd_cb = cb; | 151 | ddata->hpd_cb = cb; |
152 | ddata->hpd_cb_data = cb_data; | 152 | ddata->hpd_cb_data = cb_data; |
153 | mutex_unlock(&ddata->hpd_lock); | 153 | mutex_unlock(&ddata->hpd_lock); |
154 | |||
155 | return 0; | ||
156 | } | 154 | } |
157 | 155 | ||
158 | static void tpd_unregister_hpd_cb(struct omap_dss_device *dssdev) | 156 | static void tpd_unregister_hpd_cb(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index 30ad9985776f..b05d47b34937 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h | |||
@@ -372,10 +372,10 @@ struct omap_dss_device_ops { | |||
372 | 372 | ||
373 | bool (*detect)(struct omap_dss_device *dssdev); | 373 | bool (*detect)(struct omap_dss_device *dssdev); |
374 | 374 | ||
375 | int (*register_hpd_cb)(struct omap_dss_device *dssdev, | 375 | void (*register_hpd_cb)(struct omap_dss_device *dssdev, |
376 | void (*cb)(void *cb_data, | 376 | void (*cb)(void *cb_data, |
377 | enum drm_connector_status status), | 377 | enum drm_connector_status status), |
378 | void *cb_data); | 378 | void *cb_data); |
379 | void (*unregister_hpd_cb)(struct omap_dss_device *dssdev); | 379 | void (*unregister_hpd_cb)(struct omap_dss_device *dssdev); |
380 | void (*enable_hpd)(struct omap_dss_device *dssdev); | 380 | void (*enable_hpd)(struct omap_dss_device *dssdev); |
381 | void (*disable_hpd)(struct omap_dss_device *dssdev); | 381 | void (*disable_hpd)(struct omap_dss_device *dssdev); |
diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c index 05734c908aae..cd33995b0b1a 100644 --- a/drivers/gpu/drm/omapdrm/omap_connector.c +++ b/drivers/gpu/drm/omapdrm/omap_connector.c | |||
@@ -298,19 +298,10 @@ struct drm_connector *omap_connector_init(struct drm_device *dev, | |||
298 | */ | 298 | */ |
299 | dssdev = omap_connector_find_device(connector, OMAP_DSS_DEVICE_OP_HPD); | 299 | dssdev = omap_connector_find_device(connector, OMAP_DSS_DEVICE_OP_HPD); |
300 | if (dssdev) { | 300 | if (dssdev) { |
301 | int ret; | 301 | dssdev->ops->register_hpd_cb(dssdev, omap_connector_hpd_cb, |
302 | 302 | omap_connector); | |
303 | ret = dssdev->ops->register_hpd_cb(dssdev, | 303 | connector->polled = DRM_CONNECTOR_POLL_HPD; |
304 | omap_connector_hpd_cb, | 304 | } else { |
305 | omap_connector); | ||
306 | if (ret < 0) | ||
307 | DBG("%s: Failed to register HPD callback (%d).", | ||
308 | dssdev->name, ret); | ||
309 | else | ||
310 | connector->polled = DRM_CONNECTOR_POLL_HPD; | ||
311 | } | ||
312 | |||
313 | if (!connector->polled) { | ||
314 | dssdev = omap_connector_find_device(connector, | 305 | dssdev = omap_connector_find_device(connector, |
315 | OMAP_DSS_DEVICE_OP_DETECT); | 306 | OMAP_DSS_DEVICE_OP_DETECT); |
316 | if (dssdev) | 307 | if (dssdev) |