diff options
Diffstat (limited to 'board/mithrax/usbc_config.c')
-rw-r--r-- | board/mithrax/usbc_config.c | 124 |
1 files changed, 24 insertions, 100 deletions
diff --git a/board/mithrax/usbc_config.c b/board/mithrax/usbc_config.c index b1b28ab7c2..10189bbf50 100644 --- a/board/mithrax/usbc_config.c +++ b/board/mithrax/usbc_config.c @@ -1,4 +1,4 @@ -/* Copyright 2022 The Chromium OS Authors. All rights reserved. +/* Copyright 2022 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -33,8 +33,8 @@ #include "usb_pd.h" #include "usb_pd_tcpm.h" -#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) -#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) +#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args) +#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args) /* USBC TCPC configuration */ struct tcpc_config_t tcpc_config[] = { @@ -63,17 +63,6 @@ struct tcpc_config_t tcpc_config[] = { BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT); BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT); -struct tcpc_config_t tcpc_config_c1 = { - .bus_type = EC_BUS_TYPE_I2C, - .i2c_info = { - .port = I2C_PORT_USB_C1_TCPC, - .addr_flags = NCT38XX_I2C_ADDR1_1_FLAGS, - }, - .drv = &nct38xx_tcpm_drv, - .flags = TCPC_FLAGS_TCPCI_REV2_0 | - TCPC_FLAGS_NO_DEBUG_ACC_CONTROL, -}; - /* USBC PPC configuration */ struct ppc_config_t ppc_chips[] = { [USBC_PORT_C2] = { @@ -92,71 +81,40 @@ BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == USBC_PORT_COUNT); unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips); -struct ppc_config_t ppc_chips_c1 = { - .i2c_port = I2C_PORT_USB_C1_PPC, - .i2c_addr_flags = SYV682X_ADDR0_FLAGS, - .drv = &syv682x_drv, -}; - -/* USBC mux configuration - Alder Lake includes internal mux */ -static const struct usb_mux usbc2_tcss_usb_mux = { - .usb_port = USBC_PORT_C2, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; - -static const struct usb_mux usbc1_tcss_usb_mux = { - .usb_port = USBC_PORT_C1, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, -}; - /* * USB3 DB mux configuration - the top level mux still needs to be set * to the virtual_usb_mux_driver so the AP gets notified of mux changes * and updates the TCSS configuration on state changes. */ -static const struct usb_mux usbc1_usb3_db_retimer = { - .usb_port = USBC_PORT_C1, - .driver = &tcpci_tcpm_usb_mux_driver, - .hpd_update = &ps8xxx_tcpc_update_hpd_status, +static const struct usb_mux_chain usbc1_usb3_db_retimer = { + .mux = + &(const struct usb_mux){ + .usb_port = USBC_PORT_C1, + .driver = &tcpci_tcpm_usb_mux_driver, + .hpd_update = &ps8xxx_tcpc_update_hpd_status, + }, }; -struct usb_mux usb_muxes[] = { +struct usb_mux_chain usb_muxes[] = { [USBC_PORT_C2] = { - .usb_port = USBC_PORT_C2, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, + .mux = &(const struct usb_mux) { + .usb_port = USBC_PORT_C2, + .driver = &virtual_usb_mux_driver, + .hpd_update = &virtual_hpd_update, + }, }, [USBC_PORT_C1] = { - /* PS8815 DB */ - .usb_port = USBC_PORT_C1, - .driver = &virtual_usb_mux_driver, - .hpd_update = &virtual_hpd_update, - .next_mux = &usbc1_usb3_db_retimer, + .mux = &(const struct usb_mux) { + /* PS8815 DB */ + .usb_port = USBC_PORT_C1, + .driver = &virtual_usb_mux_driver, + .hpd_update = &virtual_hpd_update, + }, + .next = &usbc1_usb3_db_retimer, }, }; BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); -static const struct usb_mux usb_muxes_c1 = { - .usb_port = USBC_PORT_C1, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_USB_C1_MUX, - .i2c_addr_flags = USBC_PORT_C1_BB_RETIMER_I2C_ADDR, - .next_mux = &usbc1_tcss_usb_mux, -}; - -static const struct usb_mux usb_muxes_c2 = { - .usb_port = USBC_PORT_C2, - .driver = &bb_usb_retimer, - .hpd_update = bb_retimer_hpd_update, - .i2c_port = I2C_PORT_USB_C2_MUX, - .i2c_addr_flags = USBC_PORT_C2_BB_RETIMER_I2C_ADDR, - .next_mux = &usbc2_tcss_usb_mux, -}; - - /* BC1.2 charger detect configuration */ const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = { [USBC_PORT_C2] = { @@ -251,10 +209,6 @@ void board_reset_pd_mcu(void) gpio_set_level(GPIO_USB_C0_C2_TCPC_RST_ODL, 0); gpio_set_level(GPIO_USB_C1_RT_RST_R_ODL, 0); - if (ec_cfg_usb_db_type() == DB_USB4_NCT3807) - gpio_set_level(GPIO_USB_C1_RST_ODL, 0); - - /* * delay for power-on to reset-off and min. assertion time */ @@ -264,9 +218,6 @@ void board_reset_pd_mcu(void) gpio_set_level(GPIO_USB_C0_C2_TCPC_RST_ODL, 1); gpio_set_level(GPIO_USB_C1_RT_RST_R_ODL, 1); - if (ec_cfg_usb_db_type() == DB_USB4_NCT3807) - gpio_set_level(GPIO_USB_C1_RST_ODL, 1); - /* wait for chips to come up */ msleep(50); @@ -288,8 +239,6 @@ static void board_tcpc_init(void) * C0/C2 TCPC, so they must be set up after the TCPC has * been taken out of reset. */ - if (ec_cfg_usb_db_type() == DB_USB4_NCT3807) - enable_ioex(IOEX_C1_NCT38XX); enable_ioex(IOEX_C2_NCT38XX); } @@ -361,14 +310,7 @@ void ppc_interrupt(enum gpio_signal signal) { switch (signal) { case GPIO_USB_C1_PPC_INT_ODL: - switch (ec_cfg_usb_db_type()) { - case DB_USB3_PS8815: - nx20p348x_interrupt(USBC_PORT_C1); - break; - case DB_USB4_NCT3807: - syv682x_interrupt(USBC_PORT_C1); - break; - } + nx20p348x_interrupt(USBC_PORT_C1); break; case GPIO_USB_C2_PPC_INT_ODL: syv682x_interrupt(USBC_PORT_C2); @@ -392,12 +334,6 @@ __override bool board_is_dts_port(int port) __override bool board_is_tbt_usb4_port(int port) { - if (((port == USBC_PORT_C2) && - (ec_cfg_usb_mb_type() == MB_USB4_TBT)) || - ((port == USBC_PORT_C1) && - (ec_cfg_usb_db_type() == DB_USB4_NCT3807))) - return true; - return false; } @@ -408,15 +344,3 @@ __override enum tbt_compat_cable_speed board_get_max_tbt_speed(int port) return TBT_SS_TBT_GEN3; } - -void db_update_usb4_config_from_config(void) -{ - tcpc_config[USBC_PORT_C1] = tcpc_config_c1; - ppc_chips[USBC_PORT_C1] = ppc_chips_c1; - usb_muxes[USBC_PORT_C1] = usb_muxes_c1; -} - -void mb_update_usb4_tbt_config_from_config(void) -{ - usb_muxes[USBC_PORT_C2] = usb_muxes_c2; -} |