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: Enable DDI A/B AUX interrupts on LNL+

Apparently the DDI A/B AUX interrupts move onto the PICA side
on LNL. Unmask them properly so that we actually get the
interrupts. The interrupt handler was already trying to handle
them despite the interrupts remaining masked.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251119185310.10428-2-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>

+14 -5
+11 -1
drivers/gpu/drm/i915/display/intel_display_irq.c
··· 2410 2410 } 2411 2411 } 2412 2412 2413 + u32 xelpdp_pica_aux_mask(struct intel_display *display) 2414 + { 2415 + u32 mask = XELPDP_AUX_TC_MASK; 2416 + 2417 + if (DISPLAY_VER(display) >= 20) 2418 + mask |= XE2LPD_AUX_DDI_MASK; 2419 + 2420 + return mask; 2421 + } 2422 + 2413 2423 static void mtp_irq_postinstall(struct intel_display *display) 2414 2424 { 2415 2425 u32 sde_mask = SDE_GMBUS_ICP | SDE_PICAINTERRUPT; 2416 - u32 de_hpd_mask = XELPDP_AUX_TC_MASK; 2426 + u32 de_hpd_mask = xelpdp_pica_aux_mask(display); 2417 2427 u32 de_hpd_enables = de_hpd_mask | XELPDP_DP_ALT_HOTPLUG_MASK | 2418 2428 XELPDP_TBT_HOTPLUG_MASK; 2419 2429
+2
drivers/gpu/drm/i915/display/intel_display_irq.h
··· 16 16 struct intel_display; 17 17 struct intel_display_irq_snapshot; 18 18 19 + u32 xelpdp_pica_aux_mask(struct intel_display *display); 20 + 19 21 void valleyview_enable_display_irqs(struct intel_display *display); 20 22 void valleyview_disable_display_irqs(struct intel_display *display); 21 23
+1 -4
drivers/gpu/drm/i915/display/intel_hotplug_irq.c
··· 519 519 { 520 520 enum hpd_pin pin; 521 521 u32 hotplug_trigger = iir & (XELPDP_DP_ALT_HOTPLUG_MASK | XELPDP_TBT_HOTPLUG_MASK); 522 - u32 trigger_aux = iir & XELPDP_AUX_TC_MASK; 522 + u32 trigger_aux = iir & xelpdp_pica_aux_mask(display); 523 523 u32 pin_mask = 0, long_mask = 0; 524 - 525 - if (DISPLAY_VER(display) >= 20) 526 - trigger_aux |= iir & XE2LPD_AUX_DDI_MASK; 527 524 528 525 for (pin = HPD_PORT_TC1; pin <= HPD_PORT_TC4; pin++) { 529 526 u32 val;