diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2021-03-29 11:35:32 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-29 20:35:48 +0000 |
commit | de1b38abb4d61d430ff76e2c4587eed4be5582d6 (patch) | |
tree | 7c225cae7b79e77a150690362937bf504b3f952b /baseboard/intelrvp/adlrvp.c | |
parent | 0ef0f5524e81f9a96f2bb9fd8d1517e8b0f19cb6 (diff) | |
download | chrome-ec-de1b38abb4d61d430ff76e2c4587eed4be5582d6.tar.gz |
adlrvp: Add TBT & USB4 overridable function
Type-C ports are not symmetrical on RVP to test various combinations.
ADL-P-LP5 RVP doesn't have a platform level AUX & LSx MUX on port-2
hence do not perform USB4 & TBT operations on port-2.
BUG=none
BRANCH=none
TEST=Connected TBT3 device on Port-2 of ADLRVP_P_LP5 board,
only DP+USB is selected as expected.
Change-Id: I52bbd4b8518d040cad637559cad0fd3533fcd5ea
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2791780
Reviewed-by: caveh jalali <caveh@chromium.org>
Diffstat (limited to 'baseboard/intelrvp/adlrvp.c')
-rw-r--r-- | baseboard/intelrvp/adlrvp.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/baseboard/intelrvp/adlrvp.c b/baseboard/intelrvp/adlrvp.c index b8f7d71661..b5fa260c9f 100644 --- a/baseboard/intelrvp/adlrvp.c +++ b/baseboard/intelrvp/adlrvp.c @@ -287,7 +287,7 @@ DECLARE_HOOK(HOOK_INIT, enable_h1_irq, HOOK_PRIO_LAST); static void configure_retimer_usbmux(void) { - switch (board_get_version() & 0x3F) { + switch (ADL_RVP_BOARD_ID(board_get_version())) { case ADLP_LP5_T4_RVP_SKU_BOARD_ID: /* No retimer on Port-2 */ #if defined(HAS_TASK_PD_C2) @@ -330,9 +330,16 @@ const int pwrok_signal_deassert_count = ARRAY_SIZE(pwrok_signal_assert_list); */ int board_get_version(void) { + /* Cache the ADLRVP board ID */ + static int adlrvp_board_id; + int port0, port1; int fab_id, board_id, bom_id; + /* Board ID is already read */ + if (adlrvp_board_id) + return adlrvp_board_id; + if (ioexpander_read_intelrvp_version(&port0, &port1)) return -1; /* @@ -347,5 +354,27 @@ int board_get_version(void) CPRINTS("BID:0x%x, FID:0x%x, BOM:0x%x", board_id, fab_id, bom_id); - return board_id | (fab_id << 8); + adlrvp_board_id = board_id | (fab_id << 8); + return adlrvp_board_id; +} + +__override bool board_is_tbt_usb4_port(int port) +{ + bool tbt_usb4 = true; + + switch (ADL_RVP_BOARD_ID(board_get_version())) { + case ADLP_LP5_T4_RVP_SKU_BOARD_ID: + /* No retimer on Port-2 hence no platform level AUX & LSx mux */ +#if defined(HAS_TASK_PD_C2) + if (port == TYPE_C_PORT_2) + tbt_usb4 = false; +#endif + break; + + /* Add additional board SKUs */ + default: + break; + } + + return tbt_usb4; } |