OSDN Git Service

drm/i915/tgl: skip setting PORT_CL_DW12_* on initialization
authorLucas De Marchi <lucas.demarchi@intel.com>
Sat, 13 Jul 2019 01:09:19 +0000 (18:09 -0700)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 26 Jul 2019 22:02:17 +0000 (15:02 -0700)
According to the spec when initializing the display in TGL we should not
set PORT_CL_DW12 for the Aux channel of the combo PHYs. We will re-use the
power well hooks from ICL so only set this register on gen < 12.

v2: Generalize check for gen 12 (suggested by José)
v3: Rebase after enum phy introduction

Cc: Imre Deak <imre.deak@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190713010940.17711-2-lucas.demarchi@intel.com
drivers/gpu/drm/i915/display/intel_display_power.c

index 93a1486..dd2a50b 100644 (file)
@@ -458,8 +458,10 @@ icl_combo_phy_aux_power_well_enable(struct drm_i915_private *dev_priv,
        val = I915_READ(regs->driver);
        I915_WRITE(regs->driver, val | HSW_PWR_WELL_CTL_REQ(pw_idx));
 
-       val = I915_READ(ICL_PORT_CL_DW12(phy));
-       I915_WRITE(ICL_PORT_CL_DW12(phy), val | ICL_LANE_ENABLE_AUX);
+       if (INTEL_GEN(dev_priv) < 12) {
+               val = I915_READ(ICL_PORT_CL_DW12(phy));
+               I915_WRITE(ICL_PORT_CL_DW12(phy), val | ICL_LANE_ENABLE_AUX);
+       }
 
        hsw_wait_for_power_well_enable(dev_priv, power_well);
 
@@ -487,8 +489,10 @@ icl_combo_phy_aux_power_well_disable(struct drm_i915_private *dev_priv,
        enum phy phy = ICL_AUX_PW_TO_PHY(pw_idx);
        u32 val;
 
-       val = I915_READ(ICL_PORT_CL_DW12(phy));
-       I915_WRITE(ICL_PORT_CL_DW12(phy), val & ~ICL_LANE_ENABLE_AUX);
+       if (INTEL_GEN(dev_priv) < 12) {
+               val = I915_READ(ICL_PORT_CL_DW12(phy));
+               I915_WRITE(ICL_PORT_CL_DW12(phy), val & ~ICL_LANE_ENABLE_AUX);
+       }
 
        val = I915_READ(regs->driver);
        I915_WRITE(regs->driver, val & ~HSW_PWR_WELL_CTL_REQ(pw_idx));