From c311f3af9a66b2d7fc1a96df99db318e52f41cdd Mon Sep 17 00:00:00 2001 From: Tomasz Michalec Date: Tue, 5 Jul 2022 16:16:48 +0200 Subject: zephyr: Add alternative usb_mux_chain config for adlrvp Add alternative USB mux configuration in DTS for adlrvp. LOW_COVERAGE_REASON=no test for adlrvp board yet BUG=b:234482311 TEST=zmake build -a TEST=./twister -T zephyr/test BRANCH=none Signed-off-by: Tomasz Michalec Change-Id: Ibecdaf47bbda5835412787a1f0387b0bc0d19c45 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3700331 Tested-by: Tomasz Michalec Commit-Queue: Tomasz Michalec Reviewed-by: Keith Short --- .../intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts | 14 ++++++++++ .../projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts | 14 ++++++++++ zephyr/projects/intelrvp/adlrvp/src/adlrvp.c | 31 ++-------------------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts index 60db6f504a..79723beabd 100644 --- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts +++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/adlrvp_npcx.dts @@ -150,6 +150,13 @@ reg = <0x22>; }; + usb_c0_soc_side_bb_retimer: jhl8040r-c0-soc-side@54 { + compatible = "intel,jhl8040r"; + reg = <0x54>; + reset-pin = <&usb_c0_bb_retimer_rst>; + ls-en-pin = <&usb_c0_bb_retimer_ls_en>; + }; + usb_c0_bb_retimer: jhl8040r-c0@56 { compatible = "intel,jhl8040r"; reg = <0x56>; @@ -174,6 +181,13 @@ reg = <0x22>; }; + usb_c1_soc_side_bb_retimer: jhl8040r-c1-soc-side@55 { + compatible = "intel,jhl8040r"; + reg = <0x55>; + reset-pin = <&usb_c1_bb_retimer_rst>; + ls-en-pin = <&usb_c1_bb_retimer_ls_en>; + }; + usb_c1_bb_retimer: jhl8040r-c1@57 { compatible = "intel,jhl8040r"; reg = <0x57>; diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts index 322550960d..471a1f52e9 100644 --- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts +++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts @@ -17,6 +17,13 @@ usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>; }; + usb_mux_alt_chain_0: usb-mux-alt-chain-0 { + compatible = "cros-ec,usb-mux-chain"; + alternative-chain; + usb-muxes = <&usb_c0_bb_retimer + &usb_c0_soc_side_bb_retimer + &virtual_mux_c0>; + }; }; port0-muxes { virtual_mux_c0: virtual-mux-c0 { @@ -33,6 +40,13 @@ usb-muxes = <&usb_c1_bb_retimer &virtual_mux_c1>; }; + usb_mux_alt_chain_1: usb-mux-alt-chain-1 { + compatible = "cros-ec,usb-mux-chain"; + alternative-chain; + usb-muxes = <&usb_c1_bb_retimer + &usb_c1_soc_side_bb_retimer + &virtual_mux_c1>; + }; }; port1-muxes { virtual_mux_c1: virtual-mux-c1 { diff --git a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c index 0145ae744f..ce5196c60d 100644 --- a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c +++ b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c @@ -95,33 +95,6 @@ struct ppc_config_t ppc_chips[] = { 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 */ -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) -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 - /* Cache BB retimer power state */ static bool cache_bb_enable[CONFIG_USB_PD_PORT_MAX_COUNT]; @@ -282,9 +255,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 = &soc_side_bb_retimer0_usb_mux; + USB_MUX_ENABLE_ALTERNATIVE(usb_mux_alt_chain_0); #if defined(HAS_TASK_PD_C1) - usb_muxes[TYPE_C_PORT_1].next = &soc_side_bb_retimer1_usb_mux; + USB_MUX_ENABLE_ALTERNATIVE(usb_mux_alt_chain_1); #endif break; -- cgit v1.2.1