summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorTomasz Michalec <tm@semihalf.com>2022-07-20 12:17:15 +0200
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-13 11:14:35 +0000
commitc983435174bb8a2bbe6c63256c99ea848c15fe63 (patch)
treef9b97fcec63f1a89a9383abc7384f7d80ec362a3 /baseboard
parentaa323c2f87f210e1a78db3096c7785c77b937769 (diff)
downloadchrome-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.c38
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);