Patch "drm/radeon: only enable audio streams if the monitor supports it" has been added to the 4.0-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/radeon: only enable audio streams if the monitor supports it
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-radeon-only-enable-audio-streams-if-the-monitor-supports-it.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
38aef1549b18539eaecd804383a6ccb6588a9ce1Mon Sep 17 00:00:00 2001
From: Alex Deucher <[email protected]>
Date: Tue, 7 Apr 2015 10:20:49 -0400
Subject: drm/radeon: only enable audio streams if the monitor supports it
From: Alex Deucher <[email protected]>
commit 38aef1549b18539eaecd804383a6ccb6588a9ce1 upstream.
Selectively enable which packets we send based on monitor caps.
--- drivers/gpu/drm/radeon/atombios_encoders.c | 6 ++---- drivers/gpu/drm/radeon/evergreen_hdmi.c | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 12 deletions(-)
drivers/gpu/drm/radeon/atombios_encoders.c +2 -4
@@ -1729,17 +1729,15 @@ radeon_atom_encoder_dpms(struct drm_encostruct drm_device *dev = encoder->dev;struct radeon_device *rdev = dev->dev_private;struct radeon_encoder *radeon_encoder =to_radeon_encoder (encoder); -struct drm_connector *connector =radeon_get_connector_for_encoder (encoder);int encoder_mode =atombios_get_encoder_mode (encoder);DRM_DEBUG_KMS ("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n" , radeon_encoder->encoder_id, mode, radeon_encoder->devices, radeon_encoder->active_device); -if (connector && (radeon_audio !=0 ) && +if ((radeon_audio !=0 ) && ((encoder_mode ==ATOM_ENCODER_MODE_HDMI ) || - (ENCODER_MODE_IS_DP (encoder_mode) && -drm_detect_monitor_audio (radeon_connector_edid (connector))))) +ENCODER_MODE_IS_DP (encoder_mode)))radeon_audio_dpms (encoder, mode);switch (radeon_encoder->encoder_id) {
drivers/gpu/drm/radeon/evergreen_hdmi.c +19 -8
@@ -398,13 +398,23 @@ void evergreen_hdmi_enable(struct drm_enreturn ;if (enable) { -WREG32 (HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset, -HDMI_AVI_INFO_SEND |/* enable AVI info frames */ -HDMI_AVI_INFO_CONT |/* required for audio info values to be updated */ -HDMI_AUDIO_INFO_SEND |/* enable audio info frames (frames won't be set until audio is enabled) */ -HDMI_AUDIO_INFO_CONT );/* required for audio info values to be updated */ -WREG32_OR (AFMT_AUDIO_PACKET_CONTROL + dig->afmt->offset, -AFMT_AUDIO_SAMPLE_SEND ); +struct drm_connector *connector =radeon_get_connector_for_encoder (encoder); + +if (drm_detect_monitor_audio (radeon_connector_edid (connector))) { +WREG32 (HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset, +HDMI_AVI_INFO_SEND |/* enable AVI info frames */ +HDMI_AVI_INFO_CONT |/* required for audio info values to be updated */ +HDMI_AUDIO_INFO_SEND |/* enable audio info frames (frames won't be set until audio is enabled) */ +HDMI_AUDIO_INFO_CONT );/* required for audio info values to be updated */ +WREG32_OR (AFMT_AUDIO_PACKET_CONTROL + dig->afmt->offset, +AFMT_AUDIO_SAMPLE_SEND ); + }else { +WREG32 (HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset, +HDMI_AVI_INFO_SEND |/* enable AVI info frames */ +HDMI_AVI_INFO_CONT );/* required for audio info values to be updated */ +WREG32_AND (AFMT_AUDIO_PACKET_CONTROL + dig->afmt->offset, + ~AFMT_AUDIO_SAMPLE_SEND ); + } }else {WREG32_AND (AFMT_AUDIO_PACKET_CONTROL + dig->afmt->offset, ~AFMT_AUDIO_SAMPLE_SEND );
@@ -423,11 +433,12 @@ void evergreen_dp_enable(struct drm_encostruct radeon_device *rdev = dev->dev_private;struct radeon_encoder *radeon_encoder =to_radeon_encoder (encoder);struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; +struct drm_connector *connector =radeon_get_connector_for_encoder (encoder);if (!dig || !dig->afmt)return ; -if (enable) { +if (enable &&drm_detect_monitor_audio (radeon_connector_edid (connector))) {struct drm_connector *connector =radeon_get_connector_for_encoder (encoder);struct radeon_connector *radeon_connector =to_radeon_connector (connector);struct radeon_connector_atom_dig *dig_connector;
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/drm-radeon-fix-lockup-when-bos-aren-t-part-of-the-vm-on-release.patch queue-4.0/drm-radeon-reset-bos-address-after-clearing-it.patch queue-4.0/drm-radeon-adjust-pll-when-audio-is-not-enabled.patch queue-4.0/drm-radeon-add-si-dpm-quirk-for-sapphire-r9-270-dual-x-2g-gddr5.patch queue-4.0/drm-radeon-only-enable-audio-streams-if-the-monitor-supports-it.patch queue-4.0/drm-radeon-only-mark-audio-as-connected-if-the-monitor-supports-it-v3.patch queue-4.0/drm-radeon-drop-dce6_dp_enable.patch queue-4.0/drm-radeon-audio-don-t-enable-packets-until-the-end.patch queue-4.0/drm-radeon-check-new-address-before-removing-old-one.patch queue-4.0/drm-radeon-fix-ordering-of-avi-packet-setup.patch queue-4.0/drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch