drm/i915/dg2: Add fake PCH
authorMatt Roper <matthew.d.roper@intel.com>
Wed, 21 Jul 2021 22:30:35 +0000 (15:30 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Thu, 22 Jul 2021 16:28:58 +0000 (09:28 -0700)
As with DG1, DG2 has an ICL-style south display interface provided on
the same PCI device.  Add a fake PCH to ensure DG2 takes the appropriate
codepaths for south display handling.

Bspec: 54871, 50062, 49961, 53673
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Aditya Swarup <aditya.swarup@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210721223043.834562-11-matthew.d.roper@intel.com
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_pch.c
drivers/gpu/drm/i915/intel_pch.h

index 3e651d4..2e1774e 100644 (file)
@@ -207,7 +207,7 @@ static void intel_hpd_init_pins(struct drm_i915_private *dev_priv)
            (!HAS_PCH_SPLIT(dev_priv) || HAS_PCH_NOP(dev_priv)))
                return;
 
-       if (HAS_PCH_DG1(dev_priv))
+       if (INTEL_PCH_TYPE(dev_priv) >= PCH_DG1)
                hpd->pch_hpd = hpd_sde_dg1;
        else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
                hpd->pch_hpd = hpd_icp;
index 4e92ae1..cc44164 100644 (file)
@@ -211,6 +211,9 @@ void intel_detect_pch(struct drm_i915_private *dev_priv)
        if (IS_DG1(dev_priv)) {
                dev_priv->pch_type = PCH_DG1;
                return;
+       } else if (IS_DG2(dev_priv)) {
+               dev_priv->pch_type = PCH_DG2;
+               return;
        }
 
        /*
index e2f3f30..7c0d83d 100644 (file)
@@ -30,6 +30,7 @@ enum intel_pch {
 
        /* Fake PCHs, functionality handled on the same PCI dev */
        PCH_DG1 = 1024,
+       PCH_DG2,
 };
 
 #define INTEL_PCH_DEVICE_ID_MASK               0xff80
@@ -62,6 +63,7 @@ enum intel_pch {
 
 #define INTEL_PCH_TYPE(dev_priv)               ((dev_priv)->pch_type)
 #define INTEL_PCH_ID(dev_priv)                 ((dev_priv)->pch_id)
+#define HAS_PCH_DG2(dev_priv)                  (INTEL_PCH_TYPE(dev_priv) == PCH_DG2)
 #define HAS_PCH_ADP(dev_priv)                  (INTEL_PCH_TYPE(dev_priv) == PCH_ADP)
 #define HAS_PCH_DG1(dev_priv)                  (INTEL_PCH_TYPE(dev_priv) == PCH_DG1)
 #define HAS_PCH_JSP(dev_priv)                  (INTEL_PCH_TYPE(dev_priv) == PCH_JSP)