I've tried, as a bit of a shot in the dark, cutting out one bit of code that seems to try to enable the audio pipe, and this does not seem to be enough to make it reliable when the display is configured automatically.
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index db3b461..007c68b 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -867,10 +867,14 @@ intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, break; } if (intel_dp->has_audio) { - DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", - pipe_name(intel_crtc->pipe)); - intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; - intel_write_eld(encoder, adjusted_mode); + if (1) { + DRM_DEBUG_DRIVER("DP audio forced off!\n"); + } else { + DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", + pipe_name(intel_crtc->pipe)); + intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; + intel_write_eld(encoder, adjusted_mode); + } } memset(intel_dp->link_configuration, 0, DP_LINK_CONFIGURATION_SIZE); intel_dp->link_configuration[0] = intel_dp->link_bw;
I've tried, as a bit of a shot in the dark, cutting out one bit of code that seems to try to enable the audio pipe, and this does not seem to be enough to make it reliable when the display is configured automatically.
diff --git a/drivers/ gpu/drm/ i915/intel_ dp.c b/drivers/ gpu/drm/ i915/intel_ dp.c gpu/drm/ i915/intel_ dp.c gpu/drm/ i915/intel_ dp.c mode_set( struct drm_encoder *encoder, struct drm_display_mode *mode,
break; dp->has_ audio) { DRIVER( "Enabling DP audio on pipe %c\n", intel_crtc- >pipe)) ; OUTPUT_ ENABLE; eld(encoder, adjusted_mode); DRIVER( "DP audio forced off!\n"); DRIVER( "Enabling DP audio on pipe %c\n", intel_crtc- >pipe)) ; OUTPUT_ ENABLE; eld(encoder, adjusted_mode);
memset( intel_dp- >link_configura tion, 0, DP_LINK_ CONFIGURATION_ SIZE);
intel_ dp->link_ configuration[ 0] = intel_dp->link_bw;
index db3b461..007c68b 100644
--- a/drivers/
+++ b/drivers/
@@ -867,10 +867,14 @@ intel_dp_
}
if (intel_
- DRM_DEBUG_
- pipe_name(
- intel_dp->DP |= DP_AUDIO_
- intel_write_
+ if (1) {
+ DRM_DEBUG_
+ } else {
+ DRM_DEBUG_
+ pipe_name(
+ intel_dp->DP |= DP_AUDIO_
+ intel_write_
+ }
}