diff options
author | Tomasz Michalec <tm@semihalf.com> | 2022-07-20 14:01:48 +0200 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-09-13 11:17:43 +0000 |
commit | 7a31262e625a9b60cd3be8af991f4c2b71ddbc1c (patch) | |
tree | 54688bd9b4dad74f8597c3cda6ebfd90edfe9ff9 | |
parent | cee97725249c4a7b1f800544ad9620f133f36316 (diff) | |
download | chrome-ec-7a31262e625a9b60cd3be8af991f4c2b71ddbc1c.tar.gz |
zephyr: intelrvp: usb_mux: Split struct usb_mux in intelrvp boards
Update intelrvp boards to use new struct usb_mux_chain.
LOW_COVERAGE_REASON=no test for adlrvp board yet
BUG=b:236274003
TEST=zmake build -a
TEST=./twister -T zephyr/test
BRANCH=None
Cq-Depend: chromium:3779618
Signed-off-by: Tomasz Michalec <tm@semihalf.com>
Change-Id: I6f69cc3d4ce99837a0db6bb12d55b71551a0d577
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3780416
Tested-by: Tomasz Michalec <tmichalec@google.com>
Commit-Queue: Tomasz Michalec <tmichalec@google.com>
Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r-- | zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts | 24 | ||||
-rw-r--r-- | zephyr/projects/intelrvp/adlrvp/src/adlrvp.c | 58 | ||||
-rw-r--r-- | zephyr/projects/intelrvp/mtlrvp/usbc.dts | 24 |
3 files changed, 73 insertions, 33 deletions
diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts index 0134636df5..322550960d 100644 --- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts +++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts @@ -12,7 +12,11 @@ reg = <0>; tcpc = <&tcpc_port0>; chg = <&charger>; - usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>; + usb_mux_chain_0: usb-mux-chain-0 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c0_bb_retimer + &virtual_mux_c0>; + }; }; port0-muxes { virtual_mux_c0: virtual-mux-c0 { @@ -24,7 +28,11 @@ compatible = "named-usbc-port"; reg = <1>; tcpc = <&tcpc_port1>; - usb-muxes = <&usb_c1_bb_retimer &virtual_mux_c1>; + usb_mux_chain_1: usb-mux-chain-1 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c1_bb_retimer + &virtual_mux_c1>; + }; }; port1-muxes { virtual_mux_c1: virtual-mux-c1 { @@ -36,7 +44,11 @@ compatible = "named-usbc-port"; reg = <2>; tcpc = <&tcpc_port2>; - usb-muxes = <&usb_c2_bb_retimer &virtual_mux_c2>; + usb_mux_chain_2: usb-mux-chain-2 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c2_bb_retimer + &virtual_mux_c2>; + }; }; port2-muxes { virtual_mux_c2: virtual-mux-c2 { @@ -48,7 +60,11 @@ compatible = "named-usbc-port"; reg = <3>; tcpc = <&tcpc_port3>; - usb-muxes = <&usb_c3_bb_retimer &virtual_mux_c3>; + usb_mux_chain_3: usb-mux-chain-3 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c3_bb_retimer + &virtual_mux_c3>; + }; }; port3-muxes { virtual_mux_c3: virtual-mux-c3 { diff --git a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c index 59d7d59abb..0145ae744f 100644 --- a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c +++ b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c @@ -96,23 +96,29 @@ BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == CONFIG_USB_PD_PORT_MAX_COUNT); unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips); /* USB Mux Configuration for Soc side BB-Retimers for Dual retimer config */ -static struct usb_mux soc_side_bb_retimer0_usb_mux = { - .usb_port = TYPE_C_PORT_0, - .next_mux = USB_MUX_NEXT_POINTER(DT_NODELABEL(usbc_port0), 0), - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_0, - .i2c_addr_flags = I2C_PORT0_BB_RETIMER_SOC_ADDR, +struct usb_mux_chain soc_side_bb_retimer0_usb_mux = { + .mux = + &(const struct usb_mux){ + .usb_port = TYPE_C_PORT_0, + .driver = &bb_usb_retimer, + .hpd_update = bb_retimer_hpd_update, + .i2c_port = I2C_PORT_TYPEC_0, + .i2c_addr_flags = I2C_PORT0_BB_RETIMER_SOC_ADDR, + }, + .next = &USB_MUX_CHAIN_STRUCT_NAME(1, 0), }; #if defined(HAS_TASK_PD_C1) -static struct usb_mux soc_side_bb_retimer1_usb_mux = { - .usb_port = TYPE_C_PORT_1, - .next_mux = USB_MUX_NEXT_POINTER(DT_NODELABEL(usbc_port1), 0), - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_1, - .i2c_addr_flags = I2C_PORT1_BB_RETIMER_SOC_ADDR, +struct usb_mux_chain soc_side_bb_retimer1_usb_mux = { + .mux = + &(const struct usb_mux){ + .usb_port = TYPE_C_PORT_1, + .driver = &bb_usb_retimer, + .hpd_update = bb_retimer_hpd_update, + .i2c_port = I2C_PORT_TYPEC_1, + .i2c_addr_flags = I2C_PORT1_BB_RETIMER_SOC_ADDR, + }, + .next = &USB_MUX_CHAIN_STRUCT_NAME(1, 1), }; #endif @@ -244,25 +250,29 @@ static void configure_charger(void) static void configure_retimer_usbmux(void) { + struct usb_mux *mux; + switch (ADL_RVP_BOARD_ID(board_get_version())) { case ADLN_LP5_ERB_SKU_BOARD_ID: case ADLN_LP5_RVP_SKU_BOARD_ID: /* enable TUSB1044RNQR redriver on Port0 */ - usb_muxes[TYPE_C_PORT_0].i2c_addr_flags = - TUSB1064_I2C_ADDR14_FLAGS; - usb_muxes[TYPE_C_PORT_0].driver = &tusb1064_usb_mux_driver; - usb_muxes[TYPE_C_PORT_0].hpd_update = tusb1044_hpd_update; + mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_0), 0); + mux->i2c_addr_flags = TUSB1064_I2C_ADDR14_FLAGS; + mux->driver = &tusb1064_usb_mux_driver; + mux->hpd_update = tusb1044_hpd_update; #if defined(HAS_TASK_PD_C1) - usb_muxes[TYPE_C_PORT_1].driver = NULL; - usb_muxes[TYPE_C_PORT_1].hpd_update = NULL; + mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_1), 0); + mux->driver = NULL; + mux->hpd_update = NULL; #endif break; case ADLP_LP5_T4_RVP_SKU_BOARD_ID: /* No retimer on Port-2 */ #if defined(HAS_TASK_PD_C2) - usb_muxes[TYPE_C_PORT_2].driver = NULL; + mux = USB_MUX_POINTER(DT_NODELABEL(usb_mux_chain_2), 0); + mux->driver = NULL; #endif break; @@ -272,11 +282,9 @@ static void configure_retimer_usbmux(void) * Change the default usb mux config on runtime to support * dual retimer topology. */ - usb_muxes[TYPE_C_PORT_0].next_mux = - &soc_side_bb_retimer0_usb_mux; + usb_muxes[TYPE_C_PORT_0].next = &soc_side_bb_retimer0_usb_mux; #if defined(HAS_TASK_PD_C1) - usb_muxes[TYPE_C_PORT_1].next_mux = - &soc_side_bb_retimer1_usb_mux; + usb_muxes[TYPE_C_PORT_1].next = &soc_side_bb_retimer1_usb_mux; #endif break; diff --git a/zephyr/projects/intelrvp/mtlrvp/usbc.dts b/zephyr/projects/intelrvp/mtlrvp/usbc.dts index caad49fc05..e4f3bdc465 100644 --- a/zephyr/projects/intelrvp/mtlrvp/usbc.dts +++ b/zephyr/projects/intelrvp/mtlrvp/usbc.dts @@ -13,7 +13,11 @@ reg = <0>; tcpc = <&tcpc_port0>; chg = <&charger>; - usb-muxes = <&usb_c0_hb_retimer &virtual_mux_c0>; + usb-mux-chain-0 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c0_hb_retimer + &virtual_mux_c0>; + }; }; port0-muxes { virtual_mux_c0: virtual-mux-c0 { @@ -25,7 +29,11 @@ compatible = "named-usbc-port"; reg = <1>; tcpc = <&tcpc_port1>; - usb-muxes = <&usb_c1_hb_retimer &virtual_mux_c1>; + usb-mux-chain-1 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c1_hb_retimer + &virtual_mux_c1>; + }; }; port1-muxes { virtual_mux_c1: virtual-mux-c1 { @@ -37,7 +45,11 @@ compatible = "named-usbc-port"; reg = <2>; tcpc = <&tcpc_port2>; - usb-muxes = <&usb_c2_hb_retimer &virtual_mux_c2>; + usb-mux-chain-2 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c2_hb_retimer + &virtual_mux_c2>; + }; }; port2-muxes { virtual_mux_c2: virtual-mux-c2 { @@ -49,7 +61,11 @@ compatible = "named-usbc-port"; reg = <3>; tcpc = <&tcpc_port3>; - usb-muxes = <&usb_c3_hb_retimer &virtual_mux_c3>; + usb-mux-chain-3 { + compatible = "cros-ec,usb-mux-chain"; + usb-muxes = <&usb_c3_hb_retimer + &virtual_mux_c3>; + }; }; port3-muxes { virtual_mux_c3: virtual-mux-c3 { |