From 0c91fc8cfa3c12ffef9260a7c5eb2fce742749ef Mon Sep 17 00:00:00 2001 From: Tomasz Michalec Date: Thu, 21 Apr 2022 17:25:26 +0200 Subject: zephyr: move Adlrvp USB mux configuration into the DTS Move the Adlrvp board USB mux configuration into the devicetree. Remove USBC_PORT_Cx_BB_RETIMER_I2C_ADDR from zephyr/shim/include/config_chip.h since there is no platform in Zephyr that use these defines. BUG=b:229411952 TEST=zmake testall BRANCH=none Signed-off-by: Tomasz Michalec Change-Id: I95b9fdf665c9e7aa56dae65116d6d0030e9549d9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3607991 Commit-Queue: Tomasz Michalec Tested-by: Tomasz Michalec Reviewed-by: Keith Short --- .../projects/intelrvp/adlrvp/adlrvp_npcx/gpio.dts | 8 +- .../projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts | 24 ++++- zephyr/projects/intelrvp/adlrvp/src/adlrvp.c | 106 +-------------------- zephyr/shim/include/config_chip.h | 9 -- 4 files changed, 31 insertions(+), 116 deletions(-) diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/gpio.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/gpio.dts index 2e4348d557..7e1cb9c704 100644 --- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/gpio.dts +++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/gpio.dts @@ -281,7 +281,7 @@ gpios = <&ioex_c0_port 0 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C0_BB_RETIMER_RST"; }; - usb-c0-bb-retimer-ls-en { + usb_c0_bb_retimer_ls_en: usb-c0-bb-retimer-ls-en { gpios = <&ioex_c0_port 1 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C0_BB_RETIMER_LS_EN"; }; @@ -297,7 +297,7 @@ gpios = <&ioex_c1_port 0 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C1_BB_RETIMER_RST"; }; - usb-c1-bb-retimer-ls-en { + usb_c1_bb_retimer_ls_en: usb-c1-bb-retimer-ls-en { gpios = <&ioex_c1_port 1 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C1_BB_RETIMER_LS_EN"; }; @@ -313,7 +313,7 @@ gpios = <&ioex_c2_port 0 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C2_BB_RETIMER_RST"; }; - usb-c2-bb-retimer-ls-en { + usb_c2_bb_retimer_ls_en: usb-c2-bb-retimer-ls-en { gpios = <&ioex_c2_port 1 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C2_BB_RETIMER_LS_EN"; }; @@ -329,7 +329,7 @@ gpios = <&ioex_c3_port 0 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C3_BB_RETIMER_RST"; }; - usb-c3-bb-retimer-ls-en { + usb_c3_bb_retimer_ls_en: usb-c3-bb-retimer-ls-en { gpios = <&ioex_c3_port 1 GPIO_OUTPUT_LOW>; enum-name = "IOEX_USB_C3_BB_RETIMER_LS_EN"; }; diff --git a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts index a4698430a2..cd7c2b050f 100644 --- a/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts +++ b/zephyr/projects/intelrvp/adlrvp/adlrvp_npcx/usbc.dts @@ -7,7 +7,7 @@ usbc { #address-cells = <1>; #size-cells = <0>; - port0@0 { + usbc_port0: port0@0 { compatible = "named-usbc-port"; reg = <0>; tcpc { @@ -21,6 +21,7 @@ status = "okay"; port = <&i2c_charger>; }; + usb-muxes = <&usb_c0_bb_retimer &virtual_mux_c0>; }; port0-muxes { usb_c0_bb_retimer: jhl8040r-c0 { @@ -28,10 +29,14 @@ port = <&typec_0>; i2c-addr-flags = <0x56>; reset-pin = <&usb_c0_bb_retimer_rst>; + ls-en-pin = <&usb_c0_bb_retimer_ls_en>; + }; + virtual_mux_c0: virtual-mux-c0 { + compatible = "cros-ec,usbc-mux-virtual"; }; }; - port1@1 { + usbc_port1: port1@1 { compatible = "named-usbc-port"; reg = <1>; tcpc { @@ -40,6 +45,7 @@ port = <&typec_1>; i2c-addr-flags = "FUSB302_I2C_ADDR_FLAGS"; }; + usb-muxes = <&usb_c1_bb_retimer &virtual_mux_c1>; }; port1-muxes { usb_c1_bb_retimer: jhl8040r-c1 { @@ -47,6 +53,10 @@ port = <&typec_1>; i2c-addr-flags = <0x57>; reset-pin = <&usb_c1_bb_retimer_rst>; + ls-en-pin = <&usb_c1_bb_retimer_ls_en>; + }; + virtual_mux_c1: virtual-mux-c1 { + compatible = "cros-ec,usbc-mux-virtual"; }; }; @@ -59,6 +69,7 @@ port = <&typec_2>; i2c-addr-flags = "FUSB302_I2C_ADDR_FLAGS"; }; + usb-muxes = <&usb_c2_bb_retimer &virtual_mux_c2>; }; port2-muxes { usb_c2_bb_retimer: jhl8040r-c2 { @@ -66,6 +77,10 @@ port = <&typec_2>; i2c-addr-flags = <0x58>; reset-pin = <&usb_c2_bb_retimer_rst>; + ls-en-pin = <&usb_c2_bb_retimer_ls_en>; + }; + virtual_mux_c2: virtual-mux-c2 { + compatible = "cros-ec,usbc-mux-virtual"; }; }; @@ -78,6 +93,7 @@ port = <&typec_3>; i2c-addr-flags = "FUSB302_I2C_ADDR_FLAGS"; }; + usb-muxes = <&usb_c3_bb_retimer &virtual_mux_c3>; }; port3-muxes { usb_c3_bb_retimer: jhl8040r-c3 { @@ -85,6 +101,10 @@ port = <&typec_3>; i2c-addr-flags = <0x59>; reset-pin = <&usb_c3_bb_retimer_rst>; + ls-en-pin = <&usb_c3_bb_retimer_ls_en>; + }; + virtual_mux_c3: virtual-mux-c3 { + compatible = "cros-ec,usbc-mux-virtual"; }; }; }; diff --git a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c index 275a3c90f4..bcb9bba1a8 100644 --- a/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c +++ b/zephyr/projects/intelrvp/adlrvp/src/adlrvp.c @@ -25,6 +25,7 @@ #include "task.h" #include "tusb1064.h" #include "usb_mux.h" +#include "usbc/usb_muxes.h" #include "usbc_ppc.h" #include "util.h" @@ -95,81 +96,10 @@ 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-C retimer Configuration */ -struct usb_mux usbc0_tcss_usb_mux = { - .usb_port = TYPE_C_PORT_0, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; -#if defined(HAS_TASK_PD_C1) -struct usb_mux usbc1_tcss_usb_mux = { - .usb_port = TYPE_C_PORT_1, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; -#endif -#if defined(HAS_TASK_PD_C2) -struct usb_mux usbc2_tcss_usb_mux = { - .usb_port = TYPE_C_PORT_2, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; -#endif -#if defined(HAS_TASK_PD_C3) -struct usb_mux usbc3_tcss_usb_mux = { - .usb_port = TYPE_C_PORT_3, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; -#endif - -/* USB muxes Configuration */ -struct usb_mux usb_muxes[] = { - [TYPE_C_PORT_0] = { - .usb_port = TYPE_C_PORT_0, - .next_mux = &usbc0_tcss_usb_mux, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_0, - .i2c_addr_flags = USBC_PORT_C0_BB_RETIMER_I2C_ADDR, - }, -#if defined(HAS_TASK_PD_C1) - [TYPE_C_PORT_1] = { - .usb_port = TYPE_C_PORT_1, - .next_mux = &usbc1_tcss_usb_mux, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_1, - .i2c_addr_flags = USBC_PORT_C1_BB_RETIMER_I2C_ADDR, - }, -#endif -#if defined(HAS_TASK_PD_C2) - [TYPE_C_PORT_2] = { - .usb_port = TYPE_C_PORT_2, - .next_mux = &usbc2_tcss_usb_mux, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_2, - .i2c_addr_flags = USBC_PORT_C2_BB_RETIMER_I2C_ADDR, - }, -#endif -#if defined(HAS_TASK_PD_C3) - [TYPE_C_PORT_3] = { - .usb_port = TYPE_C_PORT_3, - .next_mux = &usbc3_tcss_usb_mux, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_TYPEC_3, - .i2c_addr_flags = USBC_PORT_C3_BB_RETIMER_I2C_ADDR, - }, -#endif -}; -BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == CONFIG_USB_PD_PORT_MAX_COUNT); - /* USB Mux Configuration for Soc side BB-Retimers for Dual retimer config */ -struct usb_mux soc_side_bb_retimer0_usb_mux = { +static struct usb_mux soc_side_bb_retimer0_usb_mux = { .usb_port = TYPE_C_PORT_0, - .next_mux = &usbc0_tcss_usb_mux, + .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, @@ -177,9 +107,9 @@ struct usb_mux soc_side_bb_retimer0_usb_mux = { }; #if defined(HAS_TASK_PD_C1) -struct usb_mux soc_side_bb_retimer1_usb_mux = { +static struct usb_mux soc_side_bb_retimer1_usb_mux = { .usb_port = TYPE_C_PORT_1, - .next_mux = &usbc1_tcss_usb_mux, + .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, @@ -187,32 +117,6 @@ struct usb_mux soc_side_bb_retimer1_usb_mux = { }; #endif -const struct bb_usb_control bb_controls[] = { - [TYPE_C_PORT_0] = { - .retimer_rst_gpio = IOEX_USB_C0_BB_RETIMER_RST, - .usb_ls_en_gpio = IOEX_USB_C0_BB_RETIMER_LS_EN, - }, -#if defined(HAS_TASK_PD_C1) - [TYPE_C_PORT_1] = { - .retimer_rst_gpio = IOEX_USB_C1_BB_RETIMER_RST, - .usb_ls_en_gpio = IOEX_USB_C1_BB_RETIMER_LS_EN, - }, -#endif -#if defined(HAS_TASK_PD_C2) - [TYPE_C_PORT_2] = { - .retimer_rst_gpio = IOEX_USB_C2_BB_RETIMER_RST, - .usb_ls_en_gpio = IOEX_USB_C2_BB_RETIMER_LS_EN, - }, -#endif -#if defined(HAS_TASK_PD_C3) - [TYPE_C_PORT_3] = { - .retimer_rst_gpio = IOEX_USB_C3_BB_RETIMER_RST, - .usb_ls_en_gpio = IOEX_USB_C3_BB_RETIMER_LS_EN, - }, -#endif -}; -BUILD_ASSERT(ARRAY_SIZE(bb_controls) == CONFIG_USB_PD_PORT_MAX_COUNT); - /* Cache BB retimer power state */ static bool cache_bb_enable[CONFIG_USB_PD_PORT_MAX_COUNT]; diff --git a/zephyr/shim/include/config_chip.h b/zephyr/shim/include/config_chip.h index 509f1a3749..9d86e8551b 100644 --- a/zephyr/shim/include/config_chip.h +++ b/zephyr/shim/include/config_chip.h @@ -1587,15 +1587,6 @@ extern struct jump_data mock_jump_data; #undef CONFIG_USBC_RETIMER_INTEL_BB #ifdef CONFIG_PLATFORM_EC_USBC_RETIMER_INTEL_BB - -#define USBC_PORT_C0_BB_RETIMER_I2C_ADDR \ - DT_PROP(DT_NODELABEL(usb_c0_bb_retimer), i2c_addr_flags) -#define USBC_PORT_C1_BB_RETIMER_I2C_ADDR \ - DT_PROP(DT_NODELABEL(usb_c1_bb_retimer), i2c_addr_flags) -#define USBC_PORT_C2_BB_RETIMER_I2C_ADDR \ - DT_PROP(DT_NODELABEL(usb_c2_bb_retimer), i2c_addr_flags) -#define USBC_PORT_C3_BB_RETIMER_I2C_ADDR \ - DT_PROP(DT_NODELABEL(usb_c3_bb_retimer), i2c_addr_flags) #define CONFIG_USBC_RETIMER_INTEL_BB #endif -- cgit v1.2.1