mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
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>
This commit is contained in:
@@ -2410,10 +2410,20 @@ void gen8_de_irq_postinstall(struct intel_display *display)
|
||||
}
|
||||
}
|
||||
|
||||
u32 xelpdp_pica_aux_mask(struct intel_display *display)
|
||||
{
|
||||
u32 mask = XELPDP_AUX_TC_MASK;
|
||||
|
||||
if (DISPLAY_VER(display) >= 20)
|
||||
mask |= XE2LPD_AUX_DDI_MASK;
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
static void mtp_irq_postinstall(struct intel_display *display)
|
||||
{
|
||||
u32 sde_mask = SDE_GMBUS_ICP | SDE_PICAINTERRUPT;
|
||||
u32 de_hpd_mask = XELPDP_AUX_TC_MASK;
|
||||
u32 de_hpd_mask = xelpdp_pica_aux_mask(display);
|
||||
u32 de_hpd_enables = de_hpd_mask | XELPDP_DP_ALT_HOTPLUG_MASK |
|
||||
XELPDP_TBT_HOTPLUG_MASK;
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ struct drm_printer;
|
||||
struct intel_display;
|
||||
struct intel_display_irq_snapshot;
|
||||
|
||||
u32 xelpdp_pica_aux_mask(struct intel_display *display);
|
||||
|
||||
void valleyview_enable_display_irqs(struct intel_display *display);
|
||||
void valleyview_disable_display_irqs(struct intel_display *display);
|
||||
|
||||
|
||||
@@ -519,12 +519,9 @@ void xelpdp_pica_irq_handler(struct intel_display *display, u32 iir)
|
||||
{
|
||||
enum hpd_pin pin;
|
||||
u32 hotplug_trigger = iir & (XELPDP_DP_ALT_HOTPLUG_MASK | XELPDP_TBT_HOTPLUG_MASK);
|
||||
u32 trigger_aux = iir & XELPDP_AUX_TC_MASK;
|
||||
u32 trigger_aux = iir & xelpdp_pica_aux_mask(display);
|
||||
u32 pin_mask = 0, long_mask = 0;
|
||||
|
||||
if (DISPLAY_VER(display) >= 20)
|
||||
trigger_aux |= iir & XE2LPD_AUX_DDI_MASK;
|
||||
|
||||
for (pin = HPD_PORT_TC1; pin <= HPD_PORT_TC4; pin++) {
|
||||
u32 val;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user