From 4fa8c6c7fb565356cb53d62b93375efac5a55b46 Mon Sep 17 00:00:00 2001 From: Tomasz Michalec Date: Tue, 19 Apr 2022 18:47:25 +0200 Subject: zephyr: move Nissa USB mux configuration into the DTS Move Nissa boards (Nivviks, Craask, and Nereid) USB mux configuration into the devicetree. BUG=b:227757117 TEST=zmake testall BRANCH=none Signed-off-by: Tomasz Michalec Change-Id: I988603bcc847ce9aae4fd0b86506659066577832 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3593790 Reviewed-by: Keith Short Tested-by: Tomasz Michalec Commit-Queue: Tomasz Michalec Reviewed-by: Andrew McRae --- zephyr/projects/nissa/craask_overlay.dts | 21 +++++++++++++++++++++ zephyr/projects/nissa/include/nissa_common.h | 5 ----- zephyr/projects/nissa/nereid_overlay.dts | 19 +++++++++++++++++++ zephyr/projects/nissa/nivviks_overlay.dts | 21 +++++++++++++++++++++ zephyr/projects/nissa/src/common.c | 17 ----------------- zephyr/projects/nissa/src/craask/usbc.c | 11 ----------- zephyr/projects/nissa/src/nereid/usbc.c | 18 ------------------ zephyr/projects/nissa/src/nivviks/usbc.c | 11 ----------- zephyr/projects/nissa/src/sub_board.c | 5 ++--- 9 files changed, 63 insertions(+), 65 deletions(-) diff --git a/zephyr/projects/nissa/craask_overlay.dts b/zephyr/projects/nissa/craask_overlay.dts index 60c454f363..1ff3022124 100644 --- a/zephyr/projects/nissa/craask_overlay.dts +++ b/zephyr/projects/nissa/craask_overlay.dts @@ -193,6 +193,12 @@ status = "okay"; port = <&i2c_ec_i2c_usb_c0>; }; + usb-muxes = <&virtual_mux_0>; + }; + port0-muxes { + virtual_mux_0: virtual-mux-0 { + compatible = "cros-ec,usbc-mux-virtual"; + }; }; /* * TODO(b:211693800): port1 may not be present on some @@ -210,6 +216,21 @@ status = "okay"; port = <&i2c_ec_i2c_sub_usb_c1>; }; + /* + * Some sub-boards may disable all usb muxes in chain + * except virtual_mux_1 + */ + usb-muxes = <&virtual_mux_1 &anx7483_mux_1>; + }; + port1-muxes { + virtual_mux_1: virtual-mux-1 { + compatible = "cros-ec,usbc-mux-virtual"; + }; + anx7483_mux_1: anx7483-mux-1 { + compatible = "analogix,anx7483"; + port = <&i2c_ec_i2c_sub_usb_c1>; + i2c-addr-flags = "ANX7483_I2C_ADDR0_FLAGS"; + }; }; }; diff --git a/zephyr/projects/nissa/include/nissa_common.h b/zephyr/projects/nissa/include/nissa_common.h index b0f99b5d05..7ee9056a71 100644 --- a/zephyr/projects/nissa/include/nissa_common.h +++ b/zephyr/projects/nissa/include/nissa_common.h @@ -22,9 +22,4 @@ extern struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT]; enum nissa_sub_board_type nissa_get_sb_type(void); -/** - * Return any necessary mux configuration for the sub-board USB-C port. - */ -const struct usb_mux *nissa_get_c1_sb_mux(void); - #endif /* __CROS_EC_NISSA_NISSA_COMMON_H__ */ diff --git a/zephyr/projects/nissa/nereid_overlay.dts b/zephyr/projects/nissa/nereid_overlay.dts index e40b0b7907..158629b1e9 100644 --- a/zephyr/projects/nissa/nereid_overlay.dts +++ b/zephyr/projects/nissa/nereid_overlay.dts @@ -216,6 +216,12 @@ status = "okay"; port = <&i2c_ec_i2c_usb_c0>; }; + usb-muxes = <&virtual_mux_0>; + }; + port0-muxes { + virtual_mux_0: virtual-mux-0 { + compatible = "cros-ec,usbc-mux-virtual"; + }; }; port1@1 { compatible = "named-usbc-port"; @@ -229,6 +235,19 @@ status = "okay"; port = <&i2c_ec_i2c_sub_usb_c1>; }; + /* + * Some sub-boards may disable all usb muxes in chain + * except virtual_mux_1 + */ + usb-muxes = <&virtual_mux_1 &tcpci_mux_1>; + }; + port1-muxes { + virtual_mux_1: virtual-mux-1 { + compatible = "cros-ec,usbc-mux-virtual"; + }; + tcpci_mux_1: tcpci-mux-1 { + compatible = "parade,usbc-mux-ps8xxx"; + }; }; }; }; diff --git a/zephyr/projects/nissa/nivviks_overlay.dts b/zephyr/projects/nissa/nivviks_overlay.dts index 47b2518c63..926dc46129 100644 --- a/zephyr/projects/nissa/nivviks_overlay.dts +++ b/zephyr/projects/nissa/nivviks_overlay.dts @@ -197,6 +197,12 @@ status = "okay"; port = <&i2c_ec_i2c_usb_c0>; }; + usb-muxes = <&virtual_mux_0>; + }; + port0-muxes { + virtual_mux_0: virtual-mux-0 { + compatible = "cros-ec,usbc-mux-virtual"; + }; }; /* * TODO(b:211693800): port1 may not be present on some @@ -214,6 +220,21 @@ status = "okay"; port = <&i2c_ec_i2c_sub_usb_c1>; }; + /* + * Some sub-boards may disable all usb muxes in chain + * except virtual_mux_1 + */ + usb-muxes = <&virtual_mux_1 &anx7483_mux_1>; + }; + port1-muxes { + virtual_mux_1: virtual-mux-1 { + compatible = "cros-ec,usbc-mux-virtual"; + }; + anx7483_mux_1: anx7483-mux-1 { + compatible = "analogix,anx7483"; + port = <&i2c_ec_i2c_sub_usb_c1>; + i2c-addr-flags = "ANX7483_I2C_ADDR0_FLAGS"; + }; }; }; diff --git a/zephyr/projects/nissa/src/common.c b/zephyr/projects/nissa/src/common.c index 19727e0659..e1e7aaf7e9 100644 --- a/zephyr/projects/nissa/src/common.c +++ b/zephyr/projects/nissa/src/common.c @@ -20,23 +20,6 @@ #include LOG_MODULE_REGISTER(nissa, CONFIG_NISSA_LOG_LEVEL); -struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { - { - .usb_port = 0, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, - }, - { /* sub-board */ - .usb_port = 1, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, - /* - * next_mux filled in by board config code - * if sub-board has type-C USB port. - */ - }, -}; - static uint8_t cached_usb_pd_port_count; __override uint8_t board_get_usb_pd_port_count(void) diff --git a/zephyr/projects/nissa/src/craask/usbc.c b/zephyr/projects/nissa/src/craask/usbc.c index 4f552c3dce..0604411be0 100644 --- a/zephyr/projects/nissa/src/craask/usbc.c +++ b/zephyr/projects/nissa/src/craask/usbc.c @@ -270,14 +270,3 @@ void usb_interrupt(enum gpio_signal signal) /* Check for lost interrupts in a bit */ hook_call_deferred(ud, USBC_INT_POLL_DELAY_US); } - -const struct usb_mux *nissa_get_c1_sb_mux(void) -{ - static const struct usb_mux usbc1_anx7483 = { - .usb_port = 1, - .i2c_port = I2C_PORT_USB_C1_TCPC, - .i2c_addr_flags = ANX7483_I2C_ADDR0_FLAGS, - .driver = &anx7483_usb_retimer_driver, - }; - return &usbc1_anx7483; -} diff --git a/zephyr/projects/nissa/src/nereid/usbc.c b/zephyr/projects/nissa/src/nereid/usbc.c index 5219c252e5..e731b73a76 100644 --- a/zephyr/projects/nissa/src/nereid/usbc.c +++ b/zephyr/projects/nissa/src/nereid/usbc.c @@ -405,21 +405,3 @@ int pd_snk_is_vbus_provided(int port) return chg_det; } - - -const struct usb_mux *nissa_get_c1_sb_mux(void) -{ - /* - * Use TCPC-integrated mux via CONFIG_STANDARD_OUTPUT register - * in PS8745. - */ - static const struct usb_mux usbc1_tcpc_mux = { - .usb_port = 1, - .i2c_port = I2C_PORT_USB_C1_TCPC, - .i2c_addr_flags = PS8XXX_I2C_ADDR1_FLAGS, - .driver = &tcpci_tcpm_usb_mux_driver, - .hpd_update = &ps8xxx_tcpc_update_hpd_status, - }; - - return &usbc1_tcpc_mux; -} diff --git a/zephyr/projects/nissa/src/nivviks/usbc.c b/zephyr/projects/nissa/src/nivviks/usbc.c index 7a7576ae25..0b061d2bd5 100644 --- a/zephyr/projects/nissa/src/nivviks/usbc.c +++ b/zephyr/projects/nissa/src/nivviks/usbc.c @@ -270,14 +270,3 @@ void usb_interrupt(enum gpio_signal signal) /* Check for lost interrupts in a bit */ hook_call_deferred(ud, USBC_INT_POLL_DELAY_US); } - -const struct usb_mux *nissa_get_c1_sb_mux(void) -{ - static const struct usb_mux usbc1_anx7483 = { - .usb_port = 1, - .i2c_port = I2C_PORT_USB_C1_TCPC, - .i2c_addr_flags = ANX7483_I2C_ADDR0_FLAGS, - .driver = &anx7483_usb_retimer_driver, - }; - return &usbc1_anx7483; -} diff --git a/zephyr/projects/nissa/src/sub_board.c b/zephyr/projects/nissa/src/sub_board.c index d88aaeaf57..2a3333bab9 100644 --- a/zephyr/projects/nissa/src/sub_board.c +++ b/zephyr/projects/nissa/src/sub_board.c @@ -123,18 +123,17 @@ static void nereid_subboard_config(void) } /* * USB-C port: the default configuration has I2C on the I2C pins, - * but the interrupt line needs to be configured and USB mux - * configuration provided. + * but the interrupt line needs to be configured. */ if (sb == NISSA_SB_C_A || sb == NISSA_SB_C_LTE) { /* Configure interrupt input */ gpio_pin_configure_dt( GPIO_DT_FROM_ALIAS(gpio_usb_c1_int_odl), GPIO_INPUT | GPIO_PULL_UP); - usb_muxes[1].next_mux = nissa_get_c1_sb_mux(); } else { /* Disable the port 1 charger task */ task_disable_task(TASK_ID_USB_CHG_P1); + usb_muxes[1].next_mux = NULL; } switch (sb) { -- cgit v1.2.1