On Wed, 22 Feb 2023, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > SKL doesn't have any north DE hotplug stuff. Currently we're > trying to read DDI A live state from the BDW north DE bit, > instead of the approproate south DE bit. Fix it. > > And for good measure clear the pointer to the north hpd > pin array, so that we'll actually notice if some other > place is also using the wrong thing. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Finally found the clue in bspec for skl+, "This field is unused in projects that have a PCH." Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 11 +++++++---- > drivers/gpu/drm/i915/i915_irq.c | 2 ++ > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index 40b5c93f9223..1a042f3658eb 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -4508,15 +4508,18 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port) > if (intel_phy_is_tc(dev_priv, phy)) > dig_port->connected = intel_tc_port_connected; > else > dig_port->connected = lpt_digital_port_connected; > - } else if (DISPLAY_VER(dev_priv) >= 8) { > - if (port == PORT_A || IS_GEMINILAKE(dev_priv) || > - IS_BROXTON(dev_priv)) > + } else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) { > + dig_port->connected = bdw_digital_port_connected; > + } else if (DISPLAY_VER(dev_priv) == 9) { > + dig_port->connected = lpt_digital_port_connected; > + } else if (IS_BROADWELL(dev_priv)) { > + if (port == PORT_A) > dig_port->connected = bdw_digital_port_connected; > else > dig_port->connected = lpt_digital_port_connected; > - } else { > + } else if (IS_HASWELL(dev_priv)) { > if (port == PORT_A) > dig_port->connected = hsw_digital_port_connected; > else > dig_port->connected = lpt_digital_port_connected; > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index b024a3a7ca19..13ada0916c2a 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -197,8 +197,10 @@ static void intel_hpd_init_pins(struct drm_i915_private *dev_priv) > if (DISPLAY_VER(dev_priv) >= 11) > hpd->hpd = hpd_gen11; > else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) > hpd->hpd = hpd_bxt; > + else if (DISPLAY_VER(dev_priv) == 9) > + hpd->hpd = NULL; /* no north HPD on SKL */ > else if (DISPLAY_VER(dev_priv) >= 8) > hpd->hpd = hpd_bdw; > else if (DISPLAY_VER(dev_priv) >= 7) > hpd->hpd = hpd_ivb; -- Jani Nikula, Intel Open Source Graphics Center