Support XPS 16 Panel Replay workaround
This commit is contained in:
@@ -1,21 +1,22 @@
|
||||
From 9126525701cdf19e6c3d2caf8a6ece559f99a99e Mon Sep 17 00:00:00 2001
|
||||
From: Gaggery Tsai <gaggery.tsai@intel.com>
|
||||
Date: Mon, 10 Aug 2026 22:45:00 -0500
|
||||
Subject: [PATCH] drm/i915/psr: restore DA14260 Panel Replay with ALPM lag
|
||||
Subject: [PATCH] drm/i915/psr: restore XPS 14/16 Panel Replay with ALPM lag
|
||||
workaround
|
||||
|
||||
Panel Replay ALPM AUX-less wake/sleep cycling cannot resume selective
|
||||
updates at frame rate on the LGD OLED panel in the Dell XPS 14 DA14260.
|
||||
Upstream avoids the visible lag by disabling Panel Replay for the exact
|
||||
Dell 1028:0db9 and LGD 00:22:b9 match, which also removes the idle power
|
||||
savings.
|
||||
updates at frame rate on the LGD OLED panels in the Dell XPS 14 DA14260
|
||||
and XPS 16 DA16260. Upstream avoids the visible lag on the XPS 14 by
|
||||
disabling Panel Replay for the exact Dell 1028:0db9 and LGD 00:22:b9
|
||||
match, which also removes the idle power savings. The XPS 16 has the
|
||||
same sink OUI under Dell subsystem 1028:0dba and exhibits the same lag.
|
||||
|
||||
Replace only that exact disable entry with a hardware-scoped workaround.
|
||||
Exit Panel Replay for relevant frontbuffer activity and re-enter it after
|
||||
50 ms of idle time. Use a dedicated delayed work item integrated under
|
||||
the existing PSR mutex and frontbuffer busy-bit tracking; block normal
|
||||
immediate re-entry while it is armed, wait for sink idle, and cancel it
|
||||
on invalidate, pause, and disable.
|
||||
Replace the XPS 14 disable entry and add an exact XPS 16 match for the
|
||||
hardware-scoped workaround. Exit Panel Replay for relevant frontbuffer
|
||||
activity and re-enter it after 50 ms of idle time. Use a dedicated
|
||||
delayed work item integrated under the existing PSR mutex and frontbuffer
|
||||
busy-bit tracking; block normal immediate re-entry while it is armed,
|
||||
wait for sink idle, and cancel it on invalidate, pause, and disable.
|
||||
|
||||
Other panels retain upstream behavior.
|
||||
|
||||
@@ -24,9 +25,9 @@ Signed-off-by: Gaggery Tsai <gaggery.tsai@intel.com>
|
||||
---
|
||||
.../drm/i915/display/intel_display_types.h | 1 +
|
||||
drivers/gpu/drm/i915/display/intel_psr.c | 65 ++++++++++++++++++-
|
||||
drivers/gpu/drm/i915/display/intel_quirks.c | 9 +--
|
||||
drivers/gpu/drm/i915/display/intel_quirks.c | 15 +++--
|
||||
drivers/gpu/drm/i915/display/intel_quirks.h | 1 +
|
||||
4 files changed, 71 insertions(+), 5 deletions(-)
|
||||
4 files changed, 77 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
|
||||
index 2e6a857..51ae4ed 100644
|
||||
@@ -194,13 +195,19 @@ index 883f297..7c772a9 100644
|
||||
}
|
||||
|
||||
struct intel_quirk {
|
||||
@@ -267,7 +268,7 @@ static const struct intel_dpcd_quirk intel_dpcd_quirks[] = {
|
||||
@@ -267,7 +268,13 @@ static const struct intel_dpcd_quirk intel_dpcd_quirks[] = {
|
||||
.subsystem_vendor = 0x1028,
|
||||
.subsystem_device = 0x0db9,
|
||||
.sink_oui = SINK_OUI(0x00, 0x22, 0xb9),
|
||||
- .hook = quirk_disable_edp_panel_replay,
|
||||
+ .hook = quirk_panel_replay_alpm_cursor_lag,
|
||||
},
|
||||
+ {
|
||||
+ .subsystem_vendor = 0x1028,
|
||||
+ .subsystem_device = 0x0dba,
|
||||
+ .sink_oui = SINK_OUI(0x00, 0x22, 0xb9),
|
||||
+ .hook = quirk_panel_replay_alpm_cursor_lag,
|
||||
+ },
|
||||
};
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
pkgbase=linux-ptl
|
||||
pkgver=7.1.8.arch1
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc='Linux for Panther Lake with Panel Replay power and OLED VRR fixes'
|
||||
url='https://github.com/archlinux/linux'
|
||||
arch=(
|
||||
@@ -55,7 +55,7 @@ b2sums=('84b59e5572d91f5ea1bb603aa7691851bd9549e1bf18a6bec8e27eb8a6e2de2e33da2ad
|
||||
'308952977c15ac3ad976ff1d99d0d186814d4b03e1c8512fc3a4c0ac1ecce3f74be8f3900a7fd286492d4f930bedc089674bf713a278fa80c35413e0e6339f97'
|
||||
'SKIP'
|
||||
'e672cd8d1f48756cf1062f84b83b4f676504cc6b44496511816a670435e00ccc22720fcbc36d013fd9b393389b955de5ec90715429ddbdcea860e1be80ab13fd'
|
||||
'5ebe470414df104da9b9b20076369df0fd853ee50800926125c73641aad79dae8f52ab57ff793d9644d4f7834195d17e356567914d7a074b315f9de4924d4836'
|
||||
'82b976261ed6f9c9ab4e30466eb91c74e94d38b489628d2de5b9974a0406a38bdec493112b84ed9f4b917662c871e70b1ea1c626d467eda245eaf7bfd973848b'
|
||||
'ed167ad347e83f072316b0d980ad192d97d0c4a69f6d1841a96089aa17caa0e57cb785214ed9297290f034420b5d0838dc75f84c7e9a9459eb49fd9dc22f3a3e')
|
||||
b2sums_x86_64=('b10d80423aa3eb65e2046bf5b1998f9a7bdbc97494c6881881f50ffcdb5fe2e242782f59dbb6402cd77ce64b988dbf295fd9fa54f20180c76fbe88b82e1dbc9d')
|
||||
|
||||
@@ -65,7 +65,7 @@ sha256sums=('ff01dcb449279d5b4cfccdb01fee639cf5ff1803f1749a77844dd33915422c49'
|
||||
'351cfb04db323bf5dd55ae8ce626650d20ba61441d202cadd8e198c6b9ef8f36'
|
||||
'SKIP'
|
||||
'150f059eaf36580f9ca8eff4f917d8c3ee4eb5493507cbc29ce8e91b3ec56a93'
|
||||
'82f3b6548b8badb9ec9ccc504c3d5d3ebdcb5f89837d5c48048ff8678f92dd61'
|
||||
'4a1f12817a985361c7497965b7474efb5dd8dcc36d47d04d1bb98fd1941b5901'
|
||||
'1a0bebfba76248bbda67f8812278835de71754412369454ce60f4dde0bd81916')
|
||||
|
||||
export KBUILD_BUILD_HOST=archlinux
|
||||
|
||||
Reference in New Issue
Block a user