diff options
author | Tomasz Michalec <tm@semihalf.com> | 2022-07-20 12:17:15 +0200 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-09-13 11:14:35 +0000 |
commit | c983435174bb8a2bbe6c63256c99ea848c15fe63 (patch) | |
tree | f9b97fcec63f1a89a9383abc7384f7d80ec362a3 /baseboard | |
parent | aa323c2f87f210e1a78db3096c7785c77b937769 (diff) | |
download | chrome-ec-c983435174bb8a2bbe6c63256c99ea848c15fe63.tar.gz |
guybrush: usb_mux: Split struct usb_mux in guybrush board
Update guybrush board to use new struct usb_mux_chain.
BUG=b:236274003
TEST=make buildall
BRANCH=None
Cq-Depend: chromium:3748785
Signed-off-by: Tomasz Michalec <tm@semihalf.com>
Change-Id: I57dba5ee02a9ed68df848fb1ff1e307ad128fc89
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3780397
Tested-by: Tomasz Michalec <tmichalec@google.com>
Commit-Queue: Tomasz Michalec <tmichalec@google.com>
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/guybrush/baseboard.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/baseboard/guybrush/baseboard.c b/baseboard/guybrush/baseboard.c index ff1fc1c9b2..4c831b9769 100644 --- a/baseboard/guybrush/baseboard.c +++ b/baseboard/guybrush/baseboard.c @@ -242,7 +242,7 @@ __overridable int board_c1_ps8818_mux_set(const struct usb_mux *me, return 0; } -struct usb_mux usbc1_ps8818 = { +const struct usb_mux usbc1_ps8818 = { .usb_port = USBC_PORT_C1, .i2c_port = I2C_PORT_TCPC1, .flags = USB_MUX_FLAG_RESETS_IN_G3, @@ -258,7 +258,7 @@ __overridable int board_c1_anx7451_mux_set(const struct usb_mux *me, return 0; } -struct usb_mux usbc1_anx7451 = { +const struct usb_mux usbc1_anx7451 = { .usb_port = USBC_PORT_C1, .i2c_port = I2C_PORT_TCPC1, .flags = USB_MUX_FLAG_RESETS_IN_G3, @@ -267,20 +267,27 @@ struct usb_mux usbc1_anx7451 = { .board_set = &board_c1_anx7451_mux_set, }; -struct usb_mux usb_muxes[] = { +/* Filled in by setup_mux based on fw_config */ +struct usb_mux_chain usbc1_mux1; + +struct usb_mux_chain usb_muxes[] = { [USBC_PORT_C0] = { - .usb_port = USBC_PORT_C0, - .i2c_port = I2C_PORT_USB_MUX, - .i2c_addr_flags = AMD_FP6_C0_MUX_I2C_ADDR, - .driver = &amd_fp6_usb_mux_driver, - .board_set = &fsusb42umx_set_mux, + .mux = &(const struct usb_mux) { + .usb_port = USBC_PORT_C0, + .i2c_port = I2C_PORT_USB_MUX, + .i2c_addr_flags = AMD_FP6_C0_MUX_I2C_ADDR, + .driver = &amd_fp6_usb_mux_driver, + .board_set = &fsusb42umx_set_mux, + }, }, [USBC_PORT_C1] = { - .usb_port = USBC_PORT_C1, - .i2c_port = I2C_PORT_USB_MUX, - .i2c_addr_flags = AMD_FP6_C4_MUX_I2C_ADDR, - .driver = &amd_fp6_usb_mux_driver, - /* .next_mux = filled in by setup_mux based on fw_config */ + .mux = &(const struct usb_mux) { + .usb_port = USBC_PORT_C1, + .i2c_port = I2C_PORT_USB_MUX, + .i2c_addr_flags = AMD_FP6_C4_MUX_I2C_ADDR, + .driver = &amd_fp6_usb_mux_driver, + }, + .next = &usbc1_mux1, } }; BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); @@ -373,14 +380,15 @@ static void setup_mux(void) switch (board_get_usb_c1_mux()) { case USB_C1_MUX_PS8818: CPRINTSUSB("C1: Setting PS8818 mux"); - usb_muxes[USBC_PORT_C1].next_mux = &usbc1_ps8818; + usbc1_mux1.mux = &usbc1_ps8818; break; case USB_C1_MUX_ANX7451: CPRINTSUSB("C1: Setting ANX7451 mux"); - usb_muxes[USBC_PORT_C1].next_mux = &usbc1_anx7451; + usbc1_mux1.mux = &usbc1_anx7451; break; default: CPRINTSUSB("C1: Mux is unknown"); + usb_muxes[USBC_PORT_C1].next = NULL; } } DECLARE_HOOK(HOOK_INIT, setup_mux, HOOK_PRIO_INIT_I2C); |