diff options
Diffstat (limited to 'board')
-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; |