diff --git a/board/cr50/rdd.c b/board/cr50/rdd.c index da93b1c401..993ccfc167 100644 --- a/board/cr50/rdd.c +++ b/board/cr50/rdd.c @@ -138,7 +138,7 @@ void rdd_detached(void) /* Done with case-closed debug mode */ gpio_set_level(GPIO_CCD_MODE_L, 1); - enable_usb_wakeup = 0; + enable_usb_wakeup = board_has_ap_usb(); ec_uart_enabled = 0; /* Disable CCD */ diff --git a/chip/g/idle.c b/chip/g/idle.c index cdc31ff810..3544948b5f 100644 --- a/chip/g/idle.c +++ b/chip/g/idle.c @@ -94,7 +94,7 @@ static void prepare_to_sleep(void) /* Wake on RBOX interrupts */ GREG32(RBOX, WAKEUP) = GC_RBOX_WAKEUP_ENABLE_MASK; - if (utmi_wakeup_is_enabled()) + if (utmi_wakeup_is_enabled() && idle_action != IDLE_DEEP_SLEEP) GR_PMU_EXITPD_MASK |= GC_PMU_EXITPD_MASK_UTMI_SUSPEND_N_MASK; diff --git a/chip/g/usb.c b/chip/g/usb.c index 901a959e92..1f9ee07ca1 100644 --- a/chip/g/usb.c +++ b/chip/g/usb.c @@ -1261,6 +1261,9 @@ void usb_init(void) GR_USB_DIEPMSK = 0; GR_USB_DOEPMSK = 0; + /* Disable the PHY clock whenever usb suspend is detected */ + GWRITE_FIELD(USB, PCGCCTL, STOPPCLK, 1); + /* Select the correct PHY */ usb_select_phy(which_phy);