Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-intel-next-fixes-2025-05-28' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next

- Fix the enabling/disabling of DP audio SDP splitting

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://lore.kernel.org/r/aDaztAmV_erxo1Am@jlahtine-mobl

Dave Airlie 58ce2aec f8bb3ed3

+17 -16
+17 -10
drivers/gpu/drm/i915/display/intel_audio.c
··· 397 397 hsw_hdmi_audio_config_update(encoder, crtc_state); 398 398 } 399 399 400 + static void intel_audio_sdp_split_update(const struct intel_crtc_state *crtc_state, 401 + bool enable) 402 + { 403 + struct intel_display *display = to_intel_display(crtc_state); 404 + enum transcoder trans = crtc_state->cpu_transcoder; 405 + 406 + if (!HAS_DP20(display)) 407 + return; 408 + 409 + intel_de_rmw(display, AUD_DP_2DOT0_CTRL(trans), AUD_ENABLE_SDP_SPLIT, 410 + enable && crtc_state->sdp_split_enable ? AUD_ENABLE_SDP_SPLIT : 0); 411 + } 412 + 400 413 static void hsw_audio_codec_disable(struct intel_encoder *encoder, 401 414 const struct intel_crtc_state *old_crtc_state, 402 415 const struct drm_connector_state *old_conn_state) ··· 442 429 443 430 if (needs_wa_14020863754(display)) 444 431 intel_de_rmw(display, AUD_CHICKENBIT_REG3, DACBE_DISABLE_MIN_HBLANK_FIX, 0); 432 + 433 + intel_audio_sdp_split_update(old_crtc_state, false); 445 434 446 435 mutex_unlock(&display->audio.mutex); 447 436 } ··· 570 555 if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP)) 571 556 enable_audio_dsc_wa(encoder, crtc_state); 572 557 558 + intel_audio_sdp_split_update(crtc_state, true); 559 + 573 560 if (needs_wa_14020863754(display)) 574 561 intel_de_rmw(display, AUD_CHICKENBIT_REG3, 0, DACBE_DISABLE_MIN_HBLANK_FIX); 575 562 ··· 696 679 audio_config_hdmi_pixel_clock(crtc_state))); 697 680 698 681 mutex_unlock(&display->audio.mutex); 699 - } 700 - 701 - void intel_audio_sdp_split_update(const struct intel_crtc_state *crtc_state) 702 - { 703 - struct intel_display *display = to_intel_display(crtc_state); 704 - enum transcoder trans = crtc_state->cpu_transcoder; 705 - 706 - if (HAS_DP20(display)) 707 - intel_de_rmw(display, AUD_DP_2DOT0_CTRL(trans), AUD_ENABLE_SDP_SPLIT, 708 - crtc_state->sdp_split_enable ? AUD_ENABLE_SDP_SPLIT : 0); 709 682 } 710 683 711 684 bool intel_audio_compute_config(struct intel_encoder *encoder,
-1
drivers/gpu/drm/i915/display/intel_audio.h
··· 31 31 void intel_audio_init(struct intel_display *display); 32 32 void intel_audio_register(struct intel_display *display); 33 33 void intel_audio_deinit(struct intel_display *display); 34 - void intel_audio_sdp_split_update(const struct intel_crtc_state *crtc_state); 35 34 36 35 #endif /* __INTEL_AUDIO_H__ */
-3
drivers/gpu/drm/i915/display/intel_ddi.c
··· 3507 3507 3508 3508 intel_vrr_transcoder_enable(crtc_state); 3509 3509 3510 - /* Enable/Disable DP2.0 SDP split config before transcoder */ 3511 - intel_audio_sdp_split_update(crtc_state); 3512 - 3513 3510 /* 128b/132b SST */ 3514 3511 if (!is_hdmi && intel_dp_is_uhbr(crtc_state)) { 3515 3512 struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-2
drivers/gpu/drm/i915/display/intel_dp_mst.c
··· 1328 1328 FECSTALL_DIS_DPTSTREAM_DPTTG, 1329 1329 pipe_config->fec_enable ? FECSTALL_DIS_DPTSTREAM_DPTTG : 0); 1330 1330 1331 - intel_audio_sdp_split_update(pipe_config); 1332 - 1333 1331 intel_enable_transcoder(pipe_config); 1334 1332 1335 1333 for_each_pipe_crtc_modeset_enable(display, pipe_crtc, pipe_config, i) {