summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyushee <ayushee.shah@intel.com>2020-04-16 13:48:47 -0700
committerCommit Bot <commit-bot@chromium.org>2020-06-03 03:34:30 +0000
commit1c036fc18ba017480ab8b3bc9811d8c86771ab98 (patch)
treea8dd1f8c0a29d766347e7ee4fcf7a38ea2713935
parent9cfae101b2e6959c5f32aee1293469e441c9413f (diff)
downloadchrome-ec-1c036fc18ba017480ab8b3bc9811d8c86771ab98.tar.gz
BB retimer: Add 'vPro_Dock_Detect/DP_Overdrive' bit
For DFP, if SOP discover SVID supports Thunderbolt-Compat mode then, vPro_Dock_Detect/DP_Overdrive is set according to discover mode SOP response. Ref: Burnside Bridge spec Table 13: Connection state register BUG=b:152544514 BRANCH=None TEST=make buildall -j Signed-off-by: Ayushee <ayushee.shah@intel.com> Change-Id: I7a53396725052a4dfa12e934919c2e1d601c8949 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2153825 Reviewed-by: Keith Short <keithshort@chromium.org> Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
-rw-r--r--driver/retimer/bb_retimer.c11
-rw-r--r--driver/retimer/bb_retimer.h1
-rw-r--r--include/usb_pd_tbt.h17
3 files changed, 23 insertions, 6 deletions
diff --git a/driver/retimer/bb_retimer.c b/driver/retimer/bb_retimer.c
index 313d625873..518aebd101 100644
--- a/driver/retimer/bb_retimer.c
+++ b/driver/retimer/bb_retimer.c
@@ -197,6 +197,17 @@ static void retimer_set_state_dfp(int port, mux_state_t mux_state,
*set_retimer_con |= BB_RETIMER_TBT_CABLE_TYPE;
/*
+ * Bit 19: VPO_DOCK_DETECTED_OR_DP_OVERDRIVE
+ * 0 - No vPro Dock.No DP Overdrive
+ * detected
+ * 1 - vPro Dock or DP Overdrive
+ * detected
+ */
+ if (dev_resp.intel_spec_b0 == VENDOR_SPECIFIC_SUPPORTED ||
+ dev_resp.vendor_spec_b1 == VENDOR_SPECIFIC_SUPPORTED)
+ *set_retimer_con |= BB_RETIMER_VPRO_DOCK_DP_OVERDRIVE;
+
+ /*
* Bit 20: TBT_ACTIVE_LINK_TRAINING
* 0 - Active with bi-directional LSRX communication
* 1 - Active with uni-directional LSRX communication
diff --git a/driver/retimer/bb_retimer.h b/driver/retimer/bb_retimer.h
index 1b9c13f082..0993d58896 100644
--- a/driver/retimer/bb_retimer.h
+++ b/driver/retimer/bb_retimer.h
@@ -34,6 +34,7 @@
#define BB_RETIMER_TBT_CONNECTION BIT(16)
#define BB_RETIMER_TBT_TYPE BIT(17)
#define BB_RETIMER_TBT_CABLE_TYPE BIT(18)
+#define BB_RETIMER_VPRO_DOCK_DP_OVERDRIVE BIT(19)
#define BB_RETIMER_TBT_ACTIVE_LINK_TRAINING BIT(20)
#define BB_RETIMER_ACTIVE_PASSIVE BIT(22)
#define BB_RETIMER_USB4_ENABLED BIT(23)
diff --git a/include/usb_pd_tbt.h b/include/usb_pd_tbt.h
index 9d4bbd13c9..8e00219fe2 100644
--- a/include/usb_pd_tbt.h
+++ b/include/usb_pd_tbt.h
@@ -98,6 +98,11 @@ enum tbt_adapter_type {
TBT_ADAPTER_TBT2_LEGACY,
};
+enum vendor_specific_support {
+ VENDOR_SPECIFIC_NOT_SUPPORTED,
+ VENDOR_SPECIFIC_SUPPORTED,
+};
+
/* TBT Alternate Mode */
#define TBT_ALTERNATE_MODE 0x0001
#define PD_VDO_RESP_MODE_INTEL_TBT(x) (((x) & 0xff) == TBT_ALTERNATE_MODE)
@@ -107,10 +112,10 @@ union tbt_mode_resp_device {
uint16_t tbt_alt_mode : 16;
enum tbt_adapter_type tbt_adapter : 1;
uint16_t reserved0 : 9;
- uint8_t intel_spec_b0 : 1;
+ enum vendor_specific_support intel_spec_b0 : 1;
uint8_t reserved1 : 3;
- uint8_t vendor_spec_b0 : 1;
- uint8_t vendor_spec_b1 : 1;
+ enum vendor_specific_support vendor_spec_b0 : 1;
+ enum vendor_specific_support vendor_spec_b1 : 1;
};
uint32_t raw_value;
};
@@ -248,10 +253,10 @@ union tbt_dev_mode_enter_cmd {
enum link_lsrx_comm lsrx_comm : 1;
enum tbt_enter_cable_type cable : 1;
uint8_t reserved0 : 1;
- uint8_t intel_spec_b0 : 1;
+ enum vendor_specific_support intel_spec_b0 : 1;
uint8_t reserved1 : 3;
- uint8_t vendor_spec_b0 : 1;
- uint8_t vendor_spec_b1 : 1;
+ enum vendor_specific_support vendor_spec_b0 : 1;
+ enum vendor_specific_support vendor_spec_b1 : 1;
};
uint32_t raw_value;
};