@@ -3473,8 +3473,21 @@ static void intel_ddi_enable(struct intel_atomic_state *state,
3473
3473
{
3474
3474
struct intel_display * display = to_intel_display (encoder );
3475
3475
struct intel_crtc * pipe_crtc ;
3476
+ enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
3477
+ bool is_hdmi = intel_crtc_has_type (crtc_state , INTEL_OUTPUT_HDMI );
3476
3478
int i ;
3477
3479
3480
+ /* 128b/132b SST */
3481
+ if (!is_hdmi && intel_dp_is_uhbr (crtc_state )) {
3482
+ const struct drm_display_mode * adjusted_mode = & crtc_state -> hw .adjusted_mode ;
3483
+ u64 crtc_clock_hz = KHz (adjusted_mode -> crtc_clock );
3484
+
3485
+ intel_de_write (display , TRANS_DP2_VFREQHIGH (cpu_transcoder ),
3486
+ TRANS_DP2_VFREQ_PIXEL_CLOCK (crtc_clock_hz >> 24 ));
3487
+ intel_de_write (display , TRANS_DP2_VFREQLOW (cpu_transcoder ),
3488
+ TRANS_DP2_VFREQ_PIXEL_CLOCK (crtc_clock_hz & 0xffffff ));
3489
+ }
3490
+
3478
3491
intel_ddi_enable_transcoder_func (encoder , crtc_state );
3479
3492
3480
3493
/* Enable/Disable DP2.0 SDP split config before transcoder */
@@ -3491,7 +3504,7 @@ static void intel_ddi_enable(struct intel_atomic_state *state,
3491
3504
intel_crtc_vblank_on (pipe_crtc_state );
3492
3505
}
3493
3506
3494
- if (intel_crtc_has_type ( crtc_state , INTEL_OUTPUT_HDMI ) )
3507
+ if (is_hdmi )
3495
3508
intel_ddi_enable_hdmi (state , encoder , crtc_state , conn_state );
3496
3509
else
3497
3510
intel_ddi_enable_dp (state , encoder , crtc_state , conn_state );
0 commit comments