diff options
author | Sue Chen <sue.chen@quanta.corp-partner.google.com> | 2021-07-02 10:10:19 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-30 04:28:53 +0000 |
commit | 05e69748e694ffe803ebc1422c25dda6dfc87d53 (patch) | |
tree | 885168cdc53502afbe50565e9b7aaf76a96ef8a9 /board/ezkinil | |
parent | 94aa170edecde87bc8331021540a1f9692b21569 (diff) | |
download | chrome-ec-05e69748e694ffe803ebc1422c25dda6dfc87d53.tar.gz |
Ezkinil: Add PS8818 for TYPEC C1 secondary MUX
Use SSFC bits 6-7 to choose which secondary MUX is used.
BUG=b:192523667
BRANCH=zork
TEST=After setting SSFC to 0x80 on the DUT with PS8818,
the typec on DB works fine.
Signed-off-by: Sue Chen <sue.chen@quanta.corp-partner.google.com>
Change-Id: I8a66098d1e9b947acfb26b78f0cec7f835bf4c40
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3000894
Reviewed-by: Edward Hill <ecgh@chromium.org>
Commit-Queue: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'board/ezkinil')
-rw-r--r-- | board/ezkinil/board.c | 23 | ||||
-rw-r--r-- | board/ezkinil/board.h | 1 |
2 files changed, 23 insertions, 1 deletions
diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c index 69bf41d215..074a7694b0 100644 --- a/board/ezkinil/board.c +++ b/board/ezkinil/board.c @@ -6,6 +6,7 @@ #include "adc.h" #include "adc_chip.h" #include "button.h" +#include "cbi_ssfc.h" #include "charge_state_v2.h" #include "cros_board_info.h" #include "driver/accelgyro_bmi_common.h" @@ -336,9 +337,29 @@ void motion_interrupt(enum gpio_signal signal) * USB-C MUX/Retimer dynamic configuration */ +int board_usbc1_retimer_inhpd = IOEX_USB_C1_HPD_IN_DB; + static void setup_mux(void) { - if (ec_config_has_usbc1_retimer_tusb544()) { + enum ec_ssfc_c1_mux mux = get_cbi_ssfc_c1_mux(); + + if (mux == SSFC_C1_MUX_NONE && ec_config_has_usbc1_retimer_tusb544()) + mux = SSFC_C1_MUX_TUSB544; + + if (mux == SSFC_C1_MUX_PS8818) { + ccprints("C1 PS8818 detected"); + /* + * Main MUX is FP5, secondary MUX is PS8818 + * + * Replace usb_muxes[USBC_PORT_C1] with the AMD FP5 + * table entry. + */ + memcpy(&usb_muxes[USBC_PORT_C1], + &usbc1_amd_fp5_usb_mux, + sizeof(struct usb_mux)); + /* Set the PS8818 as the secondary MUX */ + usb_muxes[USBC_PORT_C1].next_mux = &usbc1_ps8818; + } else if (mux == SSFC_C1_MUX_TUSB544) { ccprints("C1 TUSB544 detected"); /* * Main MUX is FP5, secondary MUX is TUSB544 diff --git a/board/ezkinil/board.h b/board/ezkinil/board.h index b823ded45a..e3ec10d456 100644 --- a/board/ezkinil/board.h +++ b/board/ezkinil/board.h @@ -204,6 +204,7 @@ static inline bool ec_config_has_hdmi_conn_hpd(void) : GPIO_DP2_HPD) extern const struct usb_mux usbc1_tusb544; +extern const struct usb_mux usbc1_ps8818; extern const struct usb_mux usbc1_ps8743; extern struct usb_mux usbc1_amd_fp5_usb_mux; |