For a TBT sequence, we need to set the IO type to TBT
in  DDI_AUX_CTL.

Cc: Paulo Zanoni <[email protected]>
Signed-off-by: Anusha Srivatsa <[email protected]>
---
 drivers/gpu/drm/i915/i915_reg.h |  1 +
 drivers/gpu/drm/i915/intel_dp.c | 34 +++++++++++++++++++++++++---------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 5530c47..7bdc214 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -5558,6 +5558,7 @@ enum {
 #define   DP_AUX_CH_CTL_PSR_DATA_AUX_REG_SKL   (1 << 14)
 #define   DP_AUX_CH_CTL_FS_DATA_AUX_REG_SKL    (1 << 13)
 #define   DP_AUX_CH_CTL_GTC_DATA_AUX_REG_SKL   (1 << 12)
+#define   DP_AUX_CH_CTL_TBT_IO                 (1 << 11)
 #define   DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL_MASK (0x1f << 5)
 #define   DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(c) (((c) - 1) << 5)
 #define   DP_AUX_CH_CTL_SYNC_PULSE_SKL(c)   ((c) - 1)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index cc33d7c..90a8e2f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1208,15 +1208,31 @@ static uint32_t skl_get_aux_send_ctl(struct intel_dp 
*intel_dp,
                                      int send_bytes,
                                      uint32_t unused)
 {
-       return DP_AUX_CH_CTL_SEND_BUSY |
-              DP_AUX_CH_CTL_DONE |
-              DP_AUX_CH_CTL_INTERRUPT |
-              DP_AUX_CH_CTL_TIME_OUT_ERROR |
-              DP_AUX_CH_CTL_TIME_OUT_MAX |
-              DP_AUX_CH_CTL_RECEIVE_ERROR |
-              (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) |
-              DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(32) |
-              DP_AUX_CH_CTL_SYNC_PULSE_SKL(32);
+       struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+       struct drm_i915_private *dev_priv = 
to_i915(intel_dig_port->base.base.dev);
+
+       if (INTEL_GEN(dev_priv) >= 11 && intel_dig_port->tc_type == 
TC_PORT_TBT) {
+               return DP_AUX_CH_CTL_SEND_BUSY |
+                      DP_AUX_CH_CTL_DONE |
+                      DP_AUX_CH_CTL_INTERRUPT |
+                      DP_AUX_CH_CTL_TIME_OUT_ERROR |
+                      DP_AUX_CH_CTL_TIME_OUT_MAX |
+                      DP_AUX_CH_CTL_RECEIVE_ERROR |
+                      (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) |
+                      DP_AUX_CH_CTL_TBT_IO |
+                      DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(32) |
+                      DP_AUX_CH_CTL_SYNC_PULSE_SKL(32);
+       } else {
+               return DP_AUX_CH_CTL_SEND_BUSY |
+                      DP_AUX_CH_CTL_DONE |
+                      DP_AUX_CH_CTL_INTERRUPT |
+                      DP_AUX_CH_CTL_TIME_OUT_ERROR |
+                      DP_AUX_CH_CTL_TIME_OUT_MAX |
+                      DP_AUX_CH_CTL_RECEIVE_ERROR |
+                      (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) |
+                      DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(32) |
+                      DP_AUX_CH_CTL_SYNC_PULSE_SKL(32);
+       }
 }
 
 static int
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to