[Intel-gfx] [PATCH v3 02/22] drm/i915: Fix SKL DDI A digital port .connected()
Jani Nikula
jani.nikula at linux.intel.com
Tue Feb 28 18:18:33 UTC 2023
On Wed, 22 Feb 2023, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at linux.intel.com>
Finally found the clue in bspec for skl+, "This field is unused in
projects that have a PCH."
Reviewed-by: Jani Nikula <jani.nikula at intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list