summaryrefslogtreecommitdiff
path: root/board/voxel
diff options
context:
space:
mode:
authorBen Chen <ben.chen2@quanta.corp-partner.google.com>2020-07-02 16:47:58 +0800
committerCommit Bot <commit-bot@chromium.org>2020-07-07 05:57:11 +0000
commit94ff39b6e02e00882aeea8d2f5e1a417ffe00262 (patch)
tree0867769bf8d65768d761673d15bc2150a4e4b57c /board/voxel
parentb4db0c490e66368b3a2cb5bec9e4fd17c028589a (diff)
downloadchrome-ec-94ff39b6e02e00882aeea8d2f5e1a417ffe00262.tar.gz
voxel: supports bb_retimer for C0/C1 port
add bb retimer for C0/C1 port BUG=b:155062762, b:155062762 BRANCH=none TEST=make buildall PASS Change-Id: I1da93b58eae4c28a8f7a7192518a130f80b848d9 Signed-off-by: Ben Chen <ben.chen2@quanta.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2275516 Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'board/voxel')
-rw-r--r--board/voxel/board.c39
-rw-r--r--board/voxel/board.h4
-rw-r--r--board/voxel/gpio.inc6
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)