diff options
author | Ayushee <ayushee.shah@intel.com> | 2020-04-16 13:48:47 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-03 03:34:30 +0000 |
commit | 1c036fc18ba017480ab8b3bc9811d8c86771ab98 (patch) | |
tree | a8dd1f8c0a29d766347e7ee4fcf7a38ea2713935 | |
parent | 9cfae101b2e6959c5f32aee1293469e441c9413f (diff) | |
download | chrome-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.c | 11 | ||||
-rw-r--r-- | driver/retimer/bb_retimer.h | 1 | ||||
-rw-r--r-- | include/usb_pd_tbt.h | 17 |
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; }; |