clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
                break;
        case DWC2_POWER_DOWN_PARAM_HIBERNATION:
+               /* Enter hibernation */
+               spin_unlock_irqrestore(&hsotg->lock, flags);
+               ret = dwc2_enter_hibernation(hsotg, 1);
+               if (ret)
+                       dev_err(hsotg->dev, "enter hibernation failed\n");
+               spin_lock_irqsave(&hsotg->lock, flags);
+
+               /* After entering suspend, hardware is not accessible */
+               clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
+               break;
        case DWC2_POWER_DOWN_PARAM_NONE:
                /*
                 * If not hibernation nor partial power down are supported,