Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/i915/psr: Fixes for Dell XPS DA14260 quirk

Dell seems to be changing device ID even within same device model. Due to
this we need to ignore device ID when applying quirk for Dell XPS 14
DA14260. Do this by adding DEVICE_ID_ANY and assign it to Dell XPS 14
DA14260 quirk. Also apply the quirk only for eDP Panel Replay.

Fixes: 45c77d4bf8d4 ("drm/i915/psr: Disable Panel Replay on Dell XPS 14 DA14260 as a quirk")
Cc: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Link: https://patch.msgid.link/20260320080403.1396926-1-jouni.hogander@intel.com

+13 -8
+2 -1
drivers/gpu/drm/i915/display/intel_psr.c
··· 610 610 if (intel_dp->mst_detect == DRM_DP_MST) 611 611 return; 612 612 613 - if (intel_has_dpcd_quirk(intel_dp, QUIRK_DISABLE_PANEL_REPLAY)) { 613 + if (intel_dp_is_edp(intel_dp) && 614 + intel_has_dpcd_quirk(intel_dp, QUIRK_DISABLE_EDP_PANEL_REPLAY)) { 614 615 drm_dbg_kms(display->drm, 615 616 "Panel Replay support not currently available for this setup\n"); 616 617 return;
+10 -6
drivers/gpu/drm/i915/display/intel_quirks.c
··· 86 86 drm_info(display->drm, "Applying eDP Limit rate to HBR2 quirk\n"); 87 87 } 88 88 89 - static void quirk_disable_panel_replay(struct intel_dp *intel_dp) 89 + static void quirk_disable_edp_panel_replay(struct intel_dp *intel_dp) 90 90 { 91 91 struct intel_display *display = to_intel_display(intel_dp); 92 92 93 - intel_set_dpcd_quirk(intel_dp, QUIRK_DISABLE_PANEL_REPLAY); 93 + intel_set_dpcd_quirk(intel_dp, QUIRK_DISABLE_EDP_PANEL_REPLAY); 94 94 drm_info(display->drm, "Applying disable Panel Replay quirk\n"); 95 95 } 96 96 ··· 115 115 { (first), (second), (third), (fourth), (fifth), (sixth) } 116 116 117 117 #define SINK_DEVICE_ID_ANY SINK_DEVICE_ID(0, 0, 0, 0, 0, 0) 118 + 119 + #define DEVICE_ID_ANY 0 118 120 119 121 /* For systems that don't have a meaningful PCI subdevice/subvendor ID */ 120 122 struct intel_dmi_quirk { ··· 263 261 }, 264 262 /* Dell XPS 14 DA14260 */ 265 263 { 266 - .device = 0xb080, 264 + .device = DEVICE_ID_ANY, 267 265 .subsystem_vendor = 0x1028, 268 266 .subsystem_device = 0x0db9, 269 267 .sink_oui = SINK_OUI(0x00, 0x22, 0xb9), 270 - .hook = quirk_disable_panel_replay, 268 + .hook = quirk_disable_edp_panel_replay, 271 269 }, 272 270 }; 273 271 ··· 279 277 for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) { 280 278 struct intel_quirk *q = &intel_quirks[i]; 281 279 282 - if (d->device == q->device && 280 + if ((d->device == q->device || 281 + q->device == DEVICE_ID_ANY) && 283 282 (d->subsystem_vendor == q->subsystem_vendor || 284 283 q->subsystem_vendor == PCI_ANY_ID) && 285 284 (d->subsystem_device == q->subsystem_device || ··· 303 300 for (i = 0; i < ARRAY_SIZE(intel_dpcd_quirks); i++) { 304 301 const struct intel_dpcd_quirk *q = &intel_dpcd_quirks[i]; 305 302 306 - if (d->device == q->device && 303 + if ((d->device == q->device || 304 + q->device == DEVICE_ID_ANY) && 307 305 (d->subsystem_vendor == q->subsystem_vendor || 308 306 q->subsystem_vendor == PCI_ANY_ID) && 309 307 (d->subsystem_device == q->subsystem_device ||
+1 -1
drivers/gpu/drm/i915/display/intel_quirks.h
··· 21 21 QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK, 22 22 QUIRK_FW_SYNC_LEN, 23 23 QUIRK_EDP_LIMIT_RATE_HBR2, 24 - QUIRK_DISABLE_PANEL_REPLAY, 24 + QUIRK_DISABLE_EDP_PANEL_REPLAY, 25 25 }; 26 26 27 27 void intel_init_quirks(struct intel_display *display);