diff options
author | YongBeum.Ha <ybha@samsung.corp-partner.google.com> | 2021-04-02 14:09:47 +0900 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-22 08:51:38 +0000 |
commit | 759032cb3cc5a4839aab8781bd818b273186b041 (patch) | |
tree | fe1dae69575bc86f567d569760d823c03da09c20 /board | |
parent | a18259036ddc0f1a2cf9673772ba03360aac3b74 (diff) | |
download | chrome-ec-759032cb3cc5a4839aab8781bd818b273186b041.tar.gz |
sasuke : support multi-usb mux
Select usb mux on board init with cbi_ssfc.
BUG=b:182596801
BRANCH=none
TEST=make -j BOARD=sasuke & check if c1 port works
Signed-off-by: YongBeum.Ha <ybha@samsung.corp-partner.google.com>
Change-Id: Id5886a5dbe128cbb7c32af4cb24d930be302eaa0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2801177
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/sasuke/board.c | 33 | ||||
-rw-r--r-- | board/sasuke/board.h | 2 |
2 files changed, 34 insertions, 1 deletions
diff --git a/board/sasuke/board.c b/board/sasuke/board.c index 7e96204f11..21631c0323 100644 --- a/board/sasuke/board.c +++ b/board/sasuke/board.c @@ -8,6 +8,7 @@ #include "adc_chip.h" #include "button.h" #include "cbi_fw_config.h" +#include "cbi_ssfc.h" #include "charge_manager.h" #include "charge_state_v2.h" #include "charger.h" @@ -22,6 +23,7 @@ #include "driver/tcpm/tcpci.h" #include "driver/temp_sensor/thermistor.h" #include "driver/usb_mux/pi3usb3x532.h" +#include "driver/usb_mux/ps8743.h" #include "extpower.h" #include "gpio.h" #include "hooks.h" @@ -175,7 +177,10 @@ BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT); static int board_id = -1; +static int mux_c1 = SSFC_USB_SS_MUX_DEFAULT; + extern const struct usb_mux usbc0_retimer; +extern const struct usb_mux usbmux_ps8743; void board_init(void) { @@ -229,6 +234,13 @@ void board_init(void) } } } + + mux_c1 = get_cbi_ssfc_usb_ss_mux(); + + if (mux_c1 == SSFC_USB_SS_MUX_PS8743) + memcpy(&usb_muxes[1], + &usbmux_ps8743, + sizeof(struct usb_mux)); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); @@ -480,6 +492,8 @@ static int board_nb7v904m_mux_set_c0(const struct usb_mux *me, mux_state_t mux_state); static int board_nb7v904m_mux_set(const struct usb_mux *me, mux_state_t mux_state); +static int ps8743_tune_mux(const struct usb_mux *me); + const struct usb_mux usbc0_retimer = { .usb_port = 0, .i2c_port = I2C_PORT_USB_C0, @@ -495,7 +509,15 @@ const struct usb_mux usbc1_retimer = { .board_set = &board_nb7v904m_mux_set, }; -const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { +const struct usb_mux usbmux_ps8743 = { + .usb_port = 1, + .i2c_port = I2C_PORT_SUB_USB_C1, + .i2c_addr_flags = PS8743_I2C_ADDR0_FLAG, + .driver = &ps8743_usb_mux_driver, + .board_init = &ps8743_tune_mux, +}; + +struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { { .usb_port = 0, .i2c_port = I2C_PORT_USB_C0, @@ -511,6 +533,15 @@ const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { .next_mux = &usbc1_retimer, } }; +/* USB Mux C1 : board_init of PS8743 */ +static int ps8743_tune_mux(const struct usb_mux *me) +{ + ps8743_tune_usb_eq(me, + PS8743_USB_EQ_TX_3_6_DB, + PS8743_USB_EQ_RX_16_0_DB); + + return EC_SUCCESS; +} /* USB Mux C0 */ static int board_nb7v904m_mux_set_c0(const struct usb_mux *me, diff --git a/board/sasuke/board.h b/board/sasuke/board.h index 08bb872787..bb0fd8e286 100644 --- a/board/sasuke/board.h +++ b/board/sasuke/board.h @@ -64,6 +64,8 @@ /* USB */ #define CONFIG_BC12_DETECT_PI3USB9201 #define CONFIG_USBC_RETIMER_NB7V904M +#define CONFIG_USB_MUX_RUNTIME_CONFIG +#define CONFIG_USB_MUX_PS8743 /* USB PD */ #define CONFIG_USB_PD_PORT_MAX_COUNT 2 |