@@ -397,6 +397,19 @@ hsw_audio_config_update(struct intel_encoder *encoder,
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 )
@@ -430,6 +443,8 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder,
430
443
if (needs_wa_14020863754 (display ))
431
444
intel_de_rmw (display , AUD_CHICKENBIT_REG3 , DACBE_DISABLE_MIN_HBLANK_FIX , 0 );
432
445
446
+ intel_audio_sdp_split_update (old_crtc_state , false);
447
+
433
448
mutex_unlock (& display -> audio .mutex );
434
449
}
435
450
@@ -555,6 +570,8 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
555
570
if (intel_crtc_has_type (crtc_state , INTEL_OUTPUT_DP ))
556
571
enable_audio_dsc_wa (encoder , crtc_state );
557
572
573
+ intel_audio_sdp_split_update (crtc_state , true);
574
+
558
575
if (needs_wa_14020863754 (display ))
559
576
intel_de_rmw (display , AUD_CHICKENBIT_REG3 , 0 , DACBE_DISABLE_MIN_HBLANK_FIX );
560
577
@@ -681,16 +698,6 @@ static void ibx_audio_codec_enable(struct intel_encoder *encoder,
681
698
mutex_unlock (& display -> audio .mutex );
682
699
}
683
700
684
- void intel_audio_sdp_split_update (const struct intel_crtc_state * crtc_state )
685
- {
686
- struct intel_display * display = to_intel_display (crtc_state );
687
- enum transcoder trans = crtc_state -> cpu_transcoder ;
688
-
689
- if (HAS_DP20 (display ))
690
- intel_de_rmw (display , AUD_DP_2DOT0_CTRL (trans ), AUD_ENABLE_SDP_SPLIT ,
691
- crtc_state -> sdp_split_enable ? AUD_ENABLE_SDP_SPLIT : 0 );
692
- }
693
-
694
701
bool intel_audio_compute_config (struct intel_encoder * encoder ,
695
702
struct intel_crtc_state * crtc_state ,
696
703
struct drm_connector_state * conn_state )
0 commit comments