aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2019-04-19 03:10:26 -0400
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>2019-04-24 02:39:11 -0400
commit447811a686e8da7325516a78069ccfbd139ef1a7 (patch)
tree63e6760882b170a3d1a0e7bf3b2a959fec86c80c
parent929eec99f5fd408fbc7e36f6c25fadbd3f45bfa3 (diff)
drm/i915/icl: Fix MG_DP_MODE() register programming
Fix the order of lane, port parameters passed to the register macro. Note that this was already partly fixed by commit 37fc7845df7b6 ("drm/i915: Call MG_DP_MODE() macro with the right parameters order") While at it simplify things by using the macro directly instead of an unnecessary redirection via an array. v2: - Add a note the commit message about simplifying things. (José) Fixes: 58106b7d816e1 ("drm/i915: Make MG PHY macros semantically consistent") Cc: José Roberto de Souza <jose.souza@intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Aditya Swarup <aditya.swarup@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190419071026.32370-1-imre.deak@intel.com (cherry picked from commit 9c11b12184bb01d8ba2c48e655509b184f02c769) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 24f9106efcc6..f181c26f62fd 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2905,21 +2905,20 @@ static void icl_enable_phy_clock_gating(struct intel_digital_port *dig_port)
2905 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev); 2905 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
2906 enum port port = dig_port->base.port; 2906 enum port port = dig_port->base.port;
2907 enum tc_port tc_port = intel_port_to_tc(dev_priv, port); 2907 enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
2908 i915_reg_t mg_regs[2] = { MG_DP_MODE(0, port), MG_DP_MODE(1, port) };
2909 u32 val; 2908 u32 val;
2910 int i; 2909 int ln;
2911 2910
2912 if (tc_port == PORT_TC_NONE) 2911 if (tc_port == PORT_TC_NONE)
2913 return; 2912 return;
2914 2913
2915 for (i = 0; i < ARRAY_SIZE(mg_regs); i++) { 2914 for (ln = 0; ln < 2; ln++) {
2916 val = I915_READ(mg_regs[i]); 2915 val = I915_READ(MG_DP_MODE(ln, port));
2917 val |= MG_DP_MODE_CFG_TR2PWR_GATING | 2916 val |= MG_DP_MODE_CFG_TR2PWR_GATING |
2918 MG_DP_MODE_CFG_TRPWR_GATING | 2917 MG_DP_MODE_CFG_TRPWR_GATING |
2919 MG_DP_MODE_CFG_CLNPWR_GATING | 2918 MG_DP_MODE_CFG_CLNPWR_GATING |
2920 MG_DP_MODE_CFG_DIGPWR_GATING | 2919 MG_DP_MODE_CFG_DIGPWR_GATING |
2921 MG_DP_MODE_CFG_GAONPWR_GATING; 2920 MG_DP_MODE_CFG_GAONPWR_GATING;
2922 I915_WRITE(mg_regs[i], val); 2921 I915_WRITE(MG_DP_MODE(ln, port), val);
2923 } 2922 }
2924 2923
2925 val = I915_READ(MG_MISC_SUS0(tc_port)); 2924 val = I915_READ(MG_MISC_SUS0(tc_port));
@@ -2938,21 +2937,20 @@ static void icl_disable_phy_clock_gating(struct intel_digital_port *dig_port)
2938 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev); 2937 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
2939 enum port port = dig_port->base.port; 2938 enum port port = dig_port->base.port;
2940 enum tc_port tc_port = intel_port_to_tc(dev_priv, port); 2939 enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
2941 i915_reg_t mg_regs[2] = { MG_DP_MODE(port, 0), MG_DP_MODE(port, 1) };
2942 u32 val; 2940 u32 val;
2943 int i; 2941 int ln;
2944 2942
2945 if (tc_port == PORT_TC_NONE) 2943 if (tc_port == PORT_TC_NONE)
2946 return; 2944 return;
2947 2945
2948 for (i = 0; i < ARRAY_SIZE(mg_regs); i++) { 2946 for (ln = 0; ln < 2; ln++) {
2949 val = I915_READ(mg_regs[i]); 2947 val = I915_READ(MG_DP_MODE(ln, port));
2950 val &= ~(MG_DP_MODE_CFG_TR2PWR_GATING | 2948 val &= ~(MG_DP_MODE_CFG_TR2PWR_GATING |
2951 MG_DP_MODE_CFG_TRPWR_GATING | 2949 MG_DP_MODE_CFG_TRPWR_GATING |
2952 MG_DP_MODE_CFG_CLNPWR_GATING | 2950 MG_DP_MODE_CFG_CLNPWR_GATING |
2953 MG_DP_MODE_CFG_DIGPWR_GATING | 2951 MG_DP_MODE_CFG_DIGPWR_GATING |
2954 MG_DP_MODE_CFG_GAONPWR_GATING); 2952 MG_DP_MODE_CFG_GAONPWR_GATING);
2955 I915_WRITE(mg_regs[i], val); 2953 I915_WRITE(MG_DP_MODE(ln, port), val);
2956 } 2954 }
2957 2955
2958 val = I915_READ(MG_MISC_SUS0(tc_port)); 2956 val = I915_READ(MG_MISC_SUS0(tc_port));