diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sdvo.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 7b31f55f55c8..9913651c1e17 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
| @@ -1357,6 +1357,23 @@ void intel_sdvo_set_hotplug(struct drm_connector *connector, int on) | |||
| 1357 | intel_sdvo_read_response(intel_output, &response, 2); | 1357 | intel_sdvo_read_response(intel_output, &response, 2); |
| 1358 | } | 1358 | } |
| 1359 | 1359 | ||
| 1360 | static void | ||
| 1361 | intel_sdvo_hdmi_sink_detect(struct drm_connector *connector) | ||
| 1362 | { | ||
| 1363 | struct intel_output *intel_output = to_intel_output(connector); | ||
| 1364 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | ||
| 1365 | struct edid *edid = NULL; | ||
| 1366 | |||
| 1367 | intel_sdvo_set_control_bus_switch(intel_output, sdvo_priv->ddc_bus); | ||
| 1368 | edid = drm_get_edid(&intel_output->base, | ||
| 1369 | &intel_output->ddc_bus->adapter); | ||
| 1370 | if (edid != NULL) { | ||
| 1371 | sdvo_priv->is_hdmi = drm_detect_hdmi_monitor(edid); | ||
| 1372 | kfree(edid); | ||
| 1373 | intel_output->base.display_info.raw_edid = NULL; | ||
| 1374 | } | ||
| 1375 | } | ||
| 1376 | |||
| 1360 | static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connector) | 1377 | static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connector) |
| 1361 | { | 1378 | { |
| 1362 | u8 response[2]; | 1379 | u8 response[2]; |
| @@ -1371,9 +1388,10 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect | |||
| 1371 | if (status != SDVO_CMD_STATUS_SUCCESS) | 1388 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 1372 | return connector_status_unknown; | 1389 | return connector_status_unknown; |
| 1373 | 1390 | ||
| 1374 | if ((response[0] != 0) || (response[1] != 0)) | 1391 | if ((response[0] != 0) || (response[1] != 0)) { |
| 1392 | intel_sdvo_hdmi_sink_detect(connector); | ||
| 1375 | return connector_status_connected; | 1393 | return connector_status_connected; |
| 1376 | else | 1394 | } else |
| 1377 | return connector_status_disconnected; | 1395 | return connector_status_disconnected; |
| 1378 | } | 1396 | } |
| 1379 | 1397 | ||
