@@ -800,6 +800,8 @@ static void _psr_enable_sink(struct intel_dp *intel_dp,
800
800
static void intel_psr_enable_sink (struct intel_dp * intel_dp ,
801
801
const struct intel_crtc_state * crtc_state )
802
802
{
803
+ intel_alpm_enable_sink (intel_dp , crtc_state );
804
+
803
805
crtc_state -> has_panel_replay ?
804
806
_panel_replay_enable_sink (intel_dp , crtc_state ) :
805
807
_psr_enable_sink (intel_dp , crtc_state );
@@ -1962,6 +1964,8 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
1962
1964
IS_DISPLAY_VERx100_STEP (display , 3000 , STEP_A0 , STEP_B0 )) &&
1963
1965
!intel_dp -> psr .panel_replay_enabled )
1964
1966
intel_dmc_block_pkgc (display , intel_dp -> psr .pipe , true);
1967
+
1968
+ intel_alpm_configure (intel_dp , crtc_state );
1965
1969
}
1966
1970
1967
1971
static bool psr_interrupt_error_check (struct intel_dp * intel_dp )
@@ -2029,8 +2033,9 @@ static void intel_psr_enable_locked(struct intel_dp *intel_dp,
2029
2033
intel_dp -> psr .sel_update_enabled ? "2" : "1" );
2030
2034
2031
2035
/*
2032
- * Enabling here only for PSR. Panel Replay enable bit is already
2033
- * written at this point. See
2036
+ * Enabling sink PSR/Panel Replay here only for PSR. Panel Replay enable
2037
+ * bit is already written at this point. Sink ALPM is enabled here for
2038
+ * PSR and Panel Replay. See
2034
2039
* intel_psr_panel_replay_enable_sink. Modifiers/options:
2035
2040
* - Selective Update
2036
2041
* - Region Early Transport
@@ -2172,6 +2177,9 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
2172
2177
if (intel_dp_is_edp (intel_dp ))
2173
2178
intel_snps_phy_update_psr_power_state (& dp_to_dig_port (intel_dp )-> base , false);
2174
2179
2180
+ if (intel_dp -> psr .panel_replay_enabled && intel_dp_is_edp (intel_dp ))
2181
+ intel_alpm_disable (intel_dp );
2182
+
2175
2183
/* Disable PSR on Sink */
2176
2184
if (!intel_dp -> psr .panel_replay_enabled ) {
2177
2185
drm_dp_dpcd_writeb (& intel_dp -> aux , DP_PSR_EN_CFG , 0 );
@@ -3498,7 +3506,6 @@ static void psr_alpm_check(struct intel_dp *intel_dp)
3498
3506
if (intel_alpm_get_error (intel_dp )) {
3499
3507
intel_psr_disable_locked (intel_dp );
3500
3508
psr -> sink_not_reliable = true;
3501
- intel_alpm_disable (intel_dp );
3502
3509
}
3503
3510
}
3504
3511
0 commit comments