[PATCH 8/8] Fix the PHY pat register set sequence
Manasi Navare
manasi.d.navare at intel.com
Tue Mar 3 22:13:47 UTC 2020
Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 52 ++++++++++++++++---------
1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 3c14d2225025..c51bc2829911 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5081,20 +5081,28 @@ intel_dp_autotest_phy_ddi_disable(struct intel_dp *intel_dp)
struct drm_device *dev = intel_dig_port->base.base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum port port = intel_dig_port->base.port;
- u32 ddi_buf_ctl_value, dp_tp_ctl_value, trans_ddi_func_ctl_value;
+ struct intel_crtc *crtc = to_intel_crtc(intel_dig_port->base.base.crtc);
+ enum pipe pipe = crtc->pipe;
+ u32 trans_ddi_func_ctl_value, trans_conf_value;
- ddi_buf_ctl_value = I915_READ(DDI_BUF_CTL(port));
- dp_tp_ctl_value = I915_READ(TGL_DP_TP_CTL(port));
trans_ddi_func_ctl_value = I915_READ(TRANS_DDI_FUNC_CTL(port));
+ trans_conf_value = intel_de_read(dev_priv, PIPECONF(pipe));
+
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG: Trans DDI FUNC CTL = 0x%08x",
+ trans_ddi_func_ctl_value);
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG: Trans CONF = 0x%08x",
+ trans_conf_value);
- ddi_buf_ctl_value &= ~(DDI_BUF_CTL_ENABLE | DDI_PORT_WIDTH_MASK);
- dp_tp_ctl_value &= ~DP_TP_CTL_ENABLE;
- trans_ddi_func_ctl_value &= ~(TRANS_DDI_FUNC_ENABLE |
- DDI_PORT_WIDTH_MASK);
+ trans_ddi_func_ctl_value &= ~TRANS_DDI_FUNC_ENABLE;
+ trans_conf_value &= ~PIPECONF_ENABLE;
- I915_WRITE(DDI_BUF_CTL(port), ddi_buf_ctl_value);
- I915_WRITE(TGL_DP_TP_CTL(port), dp_tp_ctl_value);
+ intel_de_write(dev_priv, PIPECONF(pipe), trans_conf_value);
I915_WRITE(TRANS_DDI_FUNC_CTL(port), trans_ddi_func_ctl_value);
+
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG After disable: Trans DDI FUNC CTL = 0x%08x",
+ I915_READ(TRANS_DDI_FUNC_CTL(port)));
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG after disable: Trans CONF = 0x%08x",
+ intel_de_read(dev_priv, PIPECONF(pipe)));
}
static void
@@ -5104,20 +5112,28 @@ intel_dp_autotest_phy_ddi_enable(struct intel_dp *intel_dp, uint8_t lane_cnt)
struct drm_device *dev = intel_dig_port->base.base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum port port = intel_dig_port->base.port;
- u32 ddi_buf_ctl_value, dp_tp_ctl_value, trans_ddi_func_ctl_value;
+ struct intel_crtc *crtc = to_intel_crtc(intel_dig_port->base.base.crtc);
+ enum pipe pipe = crtc->pipe;
+ u32 trans_ddi_func_ctl_value, trans_conf_value;
- ddi_buf_ctl_value = I915_READ(DDI_BUF_CTL(port));
- dp_tp_ctl_value = I915_READ(TGL_DP_TP_CTL(port));
trans_ddi_func_ctl_value = I915_READ(TRANS_DDI_FUNC_CTL(port));
+ trans_conf_value = intel_de_read(dev_priv, PIPECONF(pipe));
+
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG: Trans DDI FUNC CTL = 0x%08x",
+ trans_ddi_func_ctl_value);
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG: Trans CONF = 0x%08x",
+ trans_conf_value);
- ddi_buf_ctl_value |= DDI_BUF_CTL_ENABLE | DDI_PORT_WIDTH(lane_cnt);
- dp_tp_ctl_value |= DP_TP_CTL_ENABLE;
- trans_ddi_func_ctl_value |= TRANS_DDI_FUNC_ENABLE |
- DDI_PORT_WIDTH(lane_cnt);
+ trans_ddi_func_ctl_value |= TRANS_DDI_FUNC_ENABLE;
+ trans_conf_value |= PIPECONF_ENABLE;
I915_WRITE(TRANS_DDI_FUNC_CTL(port), trans_ddi_func_ctl_value);
- I915_WRITE(TGL_DP_TP_CTL(port), dp_tp_ctl_value);
- I915_WRITE(DDI_BUF_CTL(port), ddi_buf_ctl_value);
+ intel_de_write(dev_priv, PIPECONF(pipe), trans_conf_value);
+
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG After enable: Trans DDI FUNC CTL = 0x%08x",
+ I915_READ(TRANS_DDI_FUNC_CTL(port)));
+ DRM_DEBUG_KMS("\n DP PHY COMP DEBUG after enable: Trans CONF = 0x%08x",
+ intel_de_read(dev_priv, PIPECONF(pipe)));
}
void intel_dp_process_phy_request(struct intel_dp *intel_dp)
--
2.19.1
More information about the Intel-gfx-trybot
mailing list