summaryrefslogtreecommitdiff
path: root/baseboard/volteer/baseboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'baseboard/volteer/baseboard.c')
-rw-r--r--baseboard/volteer/baseboard.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/baseboard/volteer/baseboard.c b/baseboard/volteer/baseboard.c
index c9e7543ad3..207a6c0491 100644
--- a/baseboard/volteer/baseboard.c
+++ b/baseboard/volteer/baseboard.c
@@ -407,7 +407,7 @@ struct usb_mux usb_muxes[] = {
};
BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
-const struct bb_usb_control bb_controls[] = {
+struct bb_usb_control bb_controls[] = {
[USBC_PORT_C0] = {
/* USB-C port 0 doesn't have a retimer */
},
@@ -468,14 +468,16 @@ void ppc_interrupt(enum gpio_signal signal)
/******************************************************************************/
/* TCPC support routines */
+static enum gpio_signal ps8xxx_rst_odl = GPIO_USB_C1_RT_RST_ODL;
+
static void ps8815_reset(void)
{
int val;
- gpio_set_level(GPIO_USB_C1_RT_RST_ODL, 0);
+ gpio_set_level(ps8xxx_rst_odl, 0);
msleep(GENERIC_MAX(PS8XXX_RESET_DELAY_MS,
PS8815_PWR_H_RST_H_DELAY_MS));
- gpio_set_level(GPIO_USB_C1_RT_RST_ODL, 1);
+ gpio_set_level(ps8xxx_rst_odl, 1);
msleep(PS8815_FW_INIT_DELAY_MS);
/*
@@ -661,6 +663,20 @@ static void config_db_usb3(void)
sizeof(usb_retimers[USBC_PORT_C1]));
}
+/*
+ * Reconfigure Volteer GPIOs based on the board ID
+ */
+static void config_volteer_gpios(void)
+{
+ /* Legacy support for the first board build */
+ if (get_board_id() == 0) {
+ /* Reassign USB_C1_RT_RST_ODL */
+ bb_controls[USBC_PORT_C1].retimer_rst_gpio =
+ GPIO_USB_C1_RT_RST_ODL_BOARDID_0;
+ ps8xxx_rst_odl = GPIO_USB_C1_RT_RST_ODL_BOARDID_0;
+ }
+}
+
static uint8_t board_id;
uint8_t get_board_id(void)
@@ -688,6 +704,8 @@ static void cbi_init(void)
CPRINTS("Board ID: %d", board_id);
+ config_volteer_gpios();
+
/* FW config */
if (cbi_get_fw_config(&cbi_val) != EC_SUCCESS) {