diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2015-05-27 11:43:53 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-05-27 12:08:29 -0400 |
commit | 2d1c18bba15daf89d75ce475ecd2068f483aa12f (patch) | |
tree | 469ed8e4de8ad30075dd0f24d2a1a7bbe5ba90b3 /drivers/gpu/drm/radeon | |
parent | a10f0df0615abb194968fc08147f3cdd70fd5aa5 (diff) |
Revert "drm/radeon: only mark audio as connected if the monitor supports it (v3)"
This breaks too many things.
bugs:
https://bugzilla.kernel.org/show_bug.cgi?id=99041
https://bugs.freedesktop.org/show_bug.cgi?id=90681
This reverts commit 0f55db36d49d45b80eff0c0a2a498766016f458b.
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_audio.c | 27 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 8 |
2 files changed, 14 insertions, 21 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c index dcb779647c57..25191f126f3b 100644 --- a/drivers/gpu/drm/radeon/radeon_audio.c +++ b/drivers/gpu/drm/radeon/radeon_audio.c | |||
@@ -460,9 +460,6 @@ void radeon_audio_detect(struct drm_connector *connector, | |||
460 | if (!connector || !connector->encoder) | 460 | if (!connector || !connector->encoder) |
461 | return; | 461 | return; |
462 | 462 | ||
463 | if (!radeon_encoder_is_digital(connector->encoder)) | ||
464 | return; | ||
465 | |||
466 | rdev = connector->encoder->dev->dev_private; | 463 | rdev = connector->encoder->dev->dev_private; |
467 | 464 | ||
468 | if (!radeon_audio_chipset_supported(rdev)) | 465 | if (!radeon_audio_chipset_supported(rdev)) |
@@ -471,26 +468,26 @@ void radeon_audio_detect(struct drm_connector *connector, | |||
471 | radeon_encoder = to_radeon_encoder(connector->encoder); | 468 | radeon_encoder = to_radeon_encoder(connector->encoder); |
472 | dig = radeon_encoder->enc_priv; | 469 | dig = radeon_encoder->enc_priv; |
473 | 470 | ||
474 | if (!dig->afmt) | ||
475 | return; | ||
476 | |||
477 | if (status == connector_status_connected) { | 471 | if (status == connector_status_connected) { |
478 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); | 472 | struct radeon_connector *radeon_connector; |
473 | int sink_type; | ||
474 | |||
475 | if (!drm_detect_monitor_audio(radeon_connector_edid(connector))) { | ||
476 | radeon_encoder->audio = NULL; | ||
477 | return; | ||
478 | } | ||
479 | |||
480 | radeon_connector = to_radeon_connector(connector); | ||
481 | sink_type = radeon_dp_getsinktype(radeon_connector); | ||
479 | 482 | ||
480 | if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort && | 483 | if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort && |
481 | radeon_dp_getsinktype(radeon_connector) == | 484 | sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) |
482 | CONNECTOR_OBJECT_ID_DISPLAYPORT) | ||
483 | radeon_encoder->audio = rdev->audio.dp_funcs; | 485 | radeon_encoder->audio = rdev->audio.dp_funcs; |
484 | else | 486 | else |
485 | radeon_encoder->audio = rdev->audio.hdmi_funcs; | 487 | radeon_encoder->audio = rdev->audio.hdmi_funcs; |
486 | 488 | ||
487 | dig->afmt->pin = radeon_audio_get_pin(connector->encoder); | 489 | dig->afmt->pin = radeon_audio_get_pin(connector->encoder); |
488 | if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { | 490 | radeon_audio_enable(rdev, dig->afmt->pin, 0xf); |
489 | radeon_audio_enable(rdev, dig->afmt->pin, 0xf); | ||
490 | } else { | ||
491 | radeon_audio_enable(rdev, dig->afmt->pin, 0); | ||
492 | dig->afmt->pin = NULL; | ||
493 | } | ||
494 | } else { | 491 | } else { |
495 | radeon_audio_enable(rdev, dig->afmt->pin, 0); | 492 | radeon_audio_enable(rdev, dig->afmt->pin, 0); |
496 | dig->afmt->pin = NULL; | 493 | dig->afmt->pin = NULL; |
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index d17d251dbd4f..cebb65e07e1d 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
@@ -1379,10 +1379,8 @@ out: | |||
1379 | /* updated in get modes as well since we need to know if it's analog or digital */ | 1379 | /* updated in get modes as well since we need to know if it's analog or digital */ |
1380 | radeon_connector_update_scratch_regs(connector, ret); | 1380 | radeon_connector_update_scratch_regs(connector, ret); |
1381 | 1381 | ||
1382 | if (radeon_audio != 0) { | 1382 | if (radeon_audio != 0) |
1383 | radeon_connector_get_edid(connector); | ||
1384 | radeon_audio_detect(connector, ret); | 1383 | radeon_audio_detect(connector, ret); |
1385 | } | ||
1386 | 1384 | ||
1387 | exit: | 1385 | exit: |
1388 | pm_runtime_mark_last_busy(connector->dev->dev); | 1386 | pm_runtime_mark_last_busy(connector->dev->dev); |
@@ -1719,10 +1717,8 @@ radeon_dp_detect(struct drm_connector *connector, bool force) | |||
1719 | 1717 | ||
1720 | radeon_connector_update_scratch_regs(connector, ret); | 1718 | radeon_connector_update_scratch_regs(connector, ret); |
1721 | 1719 | ||
1722 | if (radeon_audio != 0) { | 1720 | if (radeon_audio != 0) |
1723 | radeon_connector_get_edid(connector); | ||
1724 | radeon_audio_detect(connector, ret); | 1721 | radeon_audio_detect(connector, ret); |
1725 | } | ||
1726 | 1722 | ||
1727 | out: | 1723 | out: |
1728 | pm_runtime_mark_last_busy(connector->dev->dev); | 1724 | pm_runtime_mark_last_busy(connector->dev->dev); |