diff --git a/src/mainboard/google/bluey/board.h b/src/mainboard/google/bluey/board.h index 3260b283c7..3d42d89a48 100644 --- a/src/mainboard/google/bluey/board.h +++ b/src/mainboard/google/bluey/board.h @@ -44,6 +44,12 @@ #define GPIO_USB_CAM_RESET_L GPIO(10) #define GPIO_USB_CAM_ENABLE GPIO(206) +/* USB-C1 port specific GPIOs */ +#define GPIO_USB_C1_EN_PP3300 GPIO(186) +#define GPIO_USB_C1_EN_PP1800 GPIO(175) +#define GPIO_USB_C1_EN_PP0900 GPIO(188) +#define GPIO_USB_C1_RETIMER_RESET_L GPIO(176) + void setup_chromeos_gpios(void); bool is_off_mode(void); void configure_parallel_charging(void); diff --git a/src/mainboard/google/bluey/mainboard.c b/src/mainboard/google/bluey/mainboard.c index b93b4188db..b37c0b1e8a 100644 --- a/src/mainboard/google/bluey/mainboard.c +++ b/src/mainboard/google/bluey/mainboard.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -50,8 +51,21 @@ static void enable_usb_camera(void) gpio_output(GPIO_USB_CAM_ENABLE, 1); } +static void setup_usb_typec(void) +{ + gpio_output(GPIO_USB_C1_EN_PP3300, 1); + mdelay(1); + gpio_output(GPIO_USB_C1_EN_PP1800, 1); + mdelay(1); + gpio_output(GPIO_USB_C1_EN_PP0900, 1); + mdelay(1); + gpio_output(GPIO_USB_C1_RETIMER_RESET_L, 1); +} + static void setup_usb(void) { + setup_usb_typec(); + enable_usb_camera(); setup_usb_host0(); } diff --git a/src/mainboard/google/bluey/romstage.c b/src/mainboard/google/bluey/romstage.c index 1c6660112e..e0f1f05743 100644 --- a/src/mainboard/google/bluey/romstage.c +++ b/src/mainboard/google/bluey/romstage.c @@ -86,6 +86,19 @@ static void platform_dump_battery_soc_information(void) printk(BIOS_INFO, "Battery state-of-charge %d%%\n", batt_pct); } +static void early_setup_usb_typec(void) +{ + gpio_output(GPIO_USB_C1_RETIMER_RESET_L, 0); + gpio_output(GPIO_USB_C1_EN_PP3300, 0); + gpio_output(GPIO_USB_C1_EN_PP1800, 0); + gpio_output(GPIO_USB_C1_EN_PP0900, 0); +} + +static void early_setup_usb(void) +{ + early_setup_usb_typec(); +} + void platform_romstage_main(void) { /* Watchdog must be checked first to avoid erasing watchdog info later. */ @@ -107,6 +120,9 @@ void platform_romstage_main(void) qclib_rerun(); + /* Setup early USB related config */ + early_setup_usb(); + /* * Enable this power rail now for FPMCU stability prior to * its reset being deasserted in ramstage. This applies