diff --git a/board/kevin/board.c b/board/kevin/board.c index 544dbbf864..393e5527ed 100644 --- a/board/kevin/board.c +++ b/board/kevin/board.c @@ -455,3 +455,21 @@ struct motion_sensor_t motion_sensors[] = { }; const unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); #endif /* defined(HAS_TASK_MOTIONSENSE) */ + +#ifdef BOARD_GRU +static void usb_charge_resume(void) +{ + /* Turn on USB-A ports on as we go into S0 from S3. */ + gpio_set_level(GPIO_USB_A_EN, 1); + gpio_set_level(GPIO_USB_A_CHARGE_EN, 1); +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, usb_charge_resume, HOOK_PRIO_DEFAULT); + +static void usb_charge_shutdown(void) +{ + /* Turn off USB-A ports as we go back to S5. */ + gpio_set_level(GPIO_USB_A_CHARGE_EN, 0); + gpio_set_level(GPIO_USB_A_EN, 0); +} +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, usb_charge_shutdown, HOOK_PRIO_DEFAULT); +#endif diff --git a/power/rk3399.c b/power/rk3399.c index 4d3a16e2e4..6f2b0c6cba 100644 --- a/power/rk3399.c +++ b/power/rk3399.c @@ -75,11 +75,6 @@ enum power_state power_chipset_init(void) } wireless_set_state(WIRELESS_OFF); -#ifdef BOARD_GRU - /* TODO: Enable CONFIG_USB_PORT_POWER_SMART */ - gpio_set_level(GPIO_USB_A_EN, 0); - gpio_set_level(GPIO_USB_A_CHARGE_EN, 0); -#endif } return POWER_G3; @@ -178,11 +173,6 @@ enum power_state power_handle_state(enum power_state state) /* Enable wireless */ wireless_set_state(WIRELESS_ON); -#ifdef BOARD_GRU - gpio_set_level(GPIO_USB_A_EN, 1); - gpio_set_level(GPIO_USB_A_CHARGE_EN, 1); -#endif - /* Call hooks now that rails are up */ hook_notify(HOOK_CHIPSET_RESUME); @@ -199,11 +189,6 @@ enum power_state power_handle_state(enum power_state state) /* Call hooks before we remove power rails */ hook_notify(HOOK_CHIPSET_SUSPEND); -#ifdef BOARD_GRU - gpio_set_level(GPIO_USB_A_CHARGE_EN, 0); - gpio_set_level(GPIO_USB_A_EN, 0); -#endif - /* Suspend wireless */ wireless_set_state(WIRELESS_SUSPEND);