diff options
Diffstat (limited to 'board/voxel')
-rw-r--r-- | board/voxel/board.c | 39 | ||||
-rw-r--r-- | board/voxel/board.h | 4 | ||||
-rw-r--r-- | board/voxel/gpio.inc | 6 |
3 files changed, 45 insertions, 4 deletions
diff --git a/board/voxel/board.c b/board/voxel/board.c index 1270860b00..cc39780324 100644 --- a/board/voxel/board.c +++ b/board/voxel/board.c @@ -147,13 +147,20 @@ const struct i2c_port_t i2c_ports[] = { .sda = GPIO_EC_I2C2_USB_C1_SDA, }, { - .name = "usb_1_mix", - .port = I2C_PORT_USB_1_MIX, + .name = "usb_0_mix", + .port = I2C_PORT_USB_0_MIX, .kbps = 100, .scl = GPIO_EC_I2C3_USB_1_MIX_SCL, .sda = GPIO_EC_I2C3_USB_1_MIX_SDA, }, { + .name = "usb_1_mix", + .port = I2C_PORT_USB_1_MIX, + .kbps = 100, + .scl = GPIO_EC_I2C4_USB_1_MIX_SCL, + .sda = GPIO_EC_I2C4_USB_1_MIX_SDA, + }, + { .name = "power", .port = I2C_PORT_POWER, .kbps = 100, @@ -215,6 +222,27 @@ const struct pwm_t pwm_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); +/* USBC mux configuration - Tiger Lake includes internal mux */ +struct usb_mux usbc0_usb4_db_retimer = { + .usb_port = USBC_PORT_C0, + .driver = &bb_usb_retimer, + .i2c_port = I2C_PORT_USB_0_MIX, + .i2c_addr_flags = USBC_PORT_C0_BB_RETIMER_I2C_ADDR, +}; + +/***************************************************************************** + * USB-C MUX/Retimer dynamic configuration. + */ + +static void setup_mux(void) +{ + CPRINTS("C0 supports bb-retimer"); + + /* USB-C port 0 have a retimer */ + usb_muxes[USBC_PORT_C0].next_mux = &usbc0_usb4_db_retimer; +} + + void board_reset_pd_mcu(void) { /* @@ -226,6 +254,13 @@ void board_reset_pd_mcu(void) __override void board_cbi_init(void) { /* TODO(b/159025739): Voxel: check FW_CONFIG fields for USB DB type */ + setup_mux(); + + /* Reassign USB_C0_RT_RST_ODL */ + bb_controls[USBC_PORT_C0].shared_nvm = false; + bb_controls[USBC_PORT_C0].usb_ls_en_gpio = GPIO_USB_C0_LS_EN; + bb_controls[USBC_PORT_C0].retimer_rst_gpio = GPIO_USB_C0_RT_RST_ODL; + bb_controls[USBC_PORT_C0].force_power_gpio = GPIO_USB_C0_RT_FORCE_PWR; } /******************************************************************************/ diff --git a/board/voxel/board.h b/board/voxel/board.h index 3457a1c23a..2678b95d74 100644 --- a/board/voxel/board.h +++ b/board/voxel/board.h @@ -119,7 +119,8 @@ #define I2C_PORT_SENSOR NPCX_I2C_PORT0_0 #define I2C_PORT_USB_C0 NPCX_I2C_PORT1_0 #define I2C_PORT_USB_C1 NPCX_I2C_PORT2_0 -#define I2C_PORT_USB_1_MIX NPCX_I2C_PORT3_0 +#define I2C_PORT_USB_0_MIX NPCX_I2C_PORT3_0 +#define I2C_PORT_USB_1_MIX NPCX_I2C_PORT4_1 #define I2C_PORT_POWER NPCX_I2C_PORT5_0 #define I2C_PORT_EEPROM NPCX_I2C_PORT7_0 @@ -129,6 +130,7 @@ #define I2C_ADDR_EEPROM_FLAGS 0x50 #define CONFIG_I2C_MASTER +#define USBC_PORT_C0_BB_RETIMER_I2C_ADDR 0x40 #ifndef __ASSEMBLER__ diff --git a/board/voxel/gpio.inc b/board/voxel/gpio.inc index 7d31115492..bf142cd6b9 100644 --- a/board/voxel/gpio.inc +++ b/board/voxel/gpio.inc @@ -101,14 +101,16 @@ GPIO(EC_PCH_INT_ODL, PIN(B, 0), GPIO_ODR_HIGH) * so it's safe to define GPIOs compatible with both designs. * TODO (b/149858568): remove board ID=0 support. */ -GPIO(USB_C1_RT_RST_ODL_BOARDID_0, PIN(3, 2), GPIO_ODR_LOW) /* USB_C1 Reset on boards without board ID */ +GPIO(USB_C0_RT_RST_ODL, PIN(4, 1), GPIO_ODR_LOW) GPIO(USB_C1_RT_RST_ODL, PIN(8, 3), GPIO_ODR_LOW) /* USB_C1 Reset on boards board ID >=1 */ GPIO(USB_C0_OC_ODL, PIN(B, 1), GPIO_ODR_HIGH) GPIO(USB_C1_OC_ODL, PIN(5, 0), GPIO_ODR_HIGH) /* Don't have a load switch for retimer */ +UNIMPLEMENTED(USB_C0_LS_EN) UNIMPLEMENTED(USB_C1_LS_EN) /* Retimer Force Power enable is connected to AP */ +UNIMPLEMENTED(USB_C0_RT_FORCE_PWR) UNIMPLEMENTED(USB_C1_RT_FORCE_PWR) /* Misc Signals */ @@ -131,6 +133,8 @@ GPIO(EC_I2C2_USB_C1_SCL, PIN(9, 2), GPIO_INPUT) GPIO(EC_I2C2_USB_C1_SDA, PIN(9, 1), GPIO_INPUT) GPIO(EC_I2C3_USB_1_MIX_SCL, PIN(D, 1), GPIO_INPUT) GPIO(EC_I2C3_USB_1_MIX_SDA, PIN(D, 0), GPIO_INPUT) +GPIO(EC_I2C4_USB_1_MIX_SCL, PIN(F, 3), GPIO_INPUT) +GPIO(EC_I2C4_USB_1_MIX_SDA, PIN(F, 2), GPIO_INPUT) GPIO(EC_I2C5_POWER_SCL, PIN(3, 3), GPIO_INPUT) GPIO(EC_I2C5_POWER_SDA, PIN(3, 6), GPIO_INPUT) GPIO(EC_I2C7_EEPROM_SCL, PIN(B, 3), GPIO_INPUT) |