@@ -3275,7 +3275,9 @@ static void intel_psr_configure_full_frame_update(struct intel_dp *intel_dp)
3275
3275
3276
3276
static void _psr_invalidate_handle (struct intel_dp * intel_dp )
3277
3277
{
3278
- if (intel_dp -> psr .psr2_sel_fetch_enabled ) {
3278
+ struct intel_display * display = to_intel_display (intel_dp );
3279
+
3280
+ if (DISPLAY_VER (display ) < 20 && intel_dp -> psr .psr2_sel_fetch_enabled ) {
3279
3281
if (!intel_dp -> psr .psr2_sel_fetch_cff_enabled ) {
3280
3282
intel_dp -> psr .psr2_sel_fetch_cff_enabled = true;
3281
3283
intel_psr_configure_full_frame_update (intel_dp );
@@ -3361,7 +3363,7 @@ static void _psr_flush_handle(struct intel_dp *intel_dp)
3361
3363
{
3362
3364
struct intel_display * display = to_intel_display (intel_dp );
3363
3365
3364
- if (intel_dp -> psr .psr2_sel_fetch_enabled ) {
3366
+ if (DISPLAY_VER ( display ) < 20 && intel_dp -> psr .psr2_sel_fetch_enabled ) {
3365
3367
if (intel_dp -> psr .psr2_sel_fetch_cff_enabled ) {
3366
3368
/* can we turn CFF off? */
3367
3369
if (intel_dp -> psr .busy_frontbuffer_bits == 0 )
@@ -3378,11 +3380,13 @@ static void _psr_flush_handle(struct intel_dp *intel_dp)
3378
3380
* existing SU configuration
3379
3381
*/
3380
3382
intel_psr_configure_full_frame_update (intel_dp );
3381
- }
3382
3383
3383
- intel_psr_force_update (intel_dp );
3384
+ intel_psr_force_update (intel_dp );
3385
+ } else {
3386
+ intel_psr_exit (intel_dp );
3387
+ }
3384
3388
3385
- if (!intel_dp -> psr .psr2_sel_fetch_enabled && ! intel_dp -> psr . active &&
3389
+ if (( !intel_dp -> psr .psr2_sel_fetch_enabled || DISPLAY_VER ( display ) >= 20 ) &&
3386
3390
!intel_dp -> psr .busy_frontbuffer_bits )
3387
3391
queue_work (display -> wq .unordered , & intel_dp -> psr .work );
3388
3392
}
0 commit comments