linux-ptl: enable PSR2 selective update on OLED panels#75
Open
TsaiGaggery wants to merge 4 commits intoomacom-io:masterfrom
Open
linux-ptl: enable PSR2 selective update on OLED panels#75TsaiGaggery wants to merge 4 commits intoomacom-io:masterfrom
TsaiGaggery wants to merge 4 commits intoomacom-io:masterfrom
Conversation
Add two display driver patches for PSR2 support on Panther Lake
eDP OLED panels:
0019: Accept Early Transport (DPCD 0x04) for PSR2 sink support.
Panels advertising PSR2 with Early Transport imply Y-coordinate
support, so the explicit Y-coordinate requirement check is
relaxed for these panels.
0020: Fix SU granularity register source when Panel Replay is disabled.
When a panel supports both PSR2 and Panel Replay SU, the
granularity helper functions unconditionally read from Panel
Replay DPCD registers. If Panel Replay is disabled via
enable_panel_replay=0, PSR2 is the active mode but gets Panel
Replay granularity values (X=0xFFFF), failing the width modulus
check. The fix adds a panel_replay_global_enabled() guard so
PSR2 registers are used when Panel Replay is disabled.
Tested on Dell XPS 14 OLED (Panther Lake, LG Display 2880x1800):
- PSR2 with Early Transport and selective fetch enabled
- Display enters DEEP_SLEEP with VRR at 20Hz idle
- RAPL uncore power: 23mW (PSR1) -> 4mW (PSR2), 83% reduction
Remove blanket VRR rejection in _psr_compute_config() that prevented PSR2 from coexisting with VRR on all platforms. The existing Wa_16011303918 already handles the ADL-P stepping-specific issue. Tested on Dell XPS 14 OLED (PTL B0): PSR2 + VRR both active from boot.
spencerbull
added a commit
to spencerbull/omarchy-pkgs
that referenced
this pull request
Apr 9, 2026
Backport drm-tip handling of DP_PANEL_REPLAY_FULL_LINE_GRANULARITY (0xFFFF) in psr2_granularity_check(). Without this, Panel Replay SU is rejected because crtc_hdisplay (2880) % 65535 != 0. With this patch, Panel Replay SU activates on LGD 2880x1800 OLED, saving ~83 mW Psys vs basic Panel Replay.
This reverts commit ae47a1f.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Patches
0019-drm-i915-psr-accept-early-transport-for-psr2.patch
Accept Early Transport (DPCD version 0x04) for PSR2 sink support.
0020-drm-i915-psr-fix-su-granularity-source-for-psr2.patch
Fix SU granularity register source when Panel Replay is disabled. Without this, PSR2 reads Panel Replay X granularity (0xFFFF) causing
2880 % 65535 != 0failure.0022-psr-allow-vrr.patch
Remove blanket VRR rejection in
_psr_compute_config(). The existing Wa_16011303918 inintel_psr2_config_valid()already handles the Alderlake-P stepping-specific VRR incompatibility. On PTL, PSR2 + VRR works correctly.Root cause
All three patches fix kernel code issues, not panel problems:
_psr_compute_config()hadif (crtc_state->vrr.enable) return falseblocking ALL PSR with VRR on ALL platforms, even though only ADL-P A0/B0 has a known issueIn upstream drm-intel-next, issues 1-2 are solved by architectural refactoring. Issue 3 is handled differently — upstream blocks PSR+VRR but enables Panel Replay+VRR instead.
Power measurements
Dell XPS 14 OLED (Panther Lake B0, LG Display 2880x1800, eDP 1.5).
90s settle + 60s measure, no debugfs reads, screensaver disabled.
PSR2 saves ~213 mW Psys (13%) vs PSR disabled.
Test results
PSR2 + VRR both active from boot:
Configuration
Notes
QUIRK_DISABLE_EDP_PANEL_REPLAY(45c77d4bf8d4). PSR2 has no cursor lag.Selective fetch area calculation failed in pipe Ais a known PTL issue. Does not affect PSR2 operation.