]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/blobdiff - drivers/usb/dwc3/core.c
dwc3: Add code for supporting entering into D3 state during suspend
[vajnamar/linux-xlnx.git] / drivers / usb / dwc3 / core.c
index bc5bdae1266102c41f99ba247631f75626b0a281..a87da32073a13f5ed39964577c0a2eb58a59acda 100644 (file)
@@ -627,8 +627,6 @@ static int dwc3_phy_setup(struct dwc3 *dwc)
 
 static void dwc3_core_exit(struct dwc3 *dwc)
 {
-       dwc3_event_buffers_cleanup(dwc);
-
        usb_phy_shutdown(dwc->usb2_phy);
        usb_phy_shutdown(dwc->usb3_phy);
        phy_exit(dwc->usb2_generic_phy);
@@ -1275,6 +1273,7 @@ static int dwc3_remove(struct platform_device *pdev)
        dwc3_debugfs_exit(dwc);
        dwc3_core_exit_mode(dwc);
 
+       dwc3_event_buffers_cleanup(dwc);
        dwc3_core_exit(dwc);
        dwc3_ulpi_exit(dwc);
 
@@ -1306,6 +1305,11 @@ static int dwc3_suspend_common(struct dwc3 *dwc)
                break;
        }
 
+       dwc3_event_buffers_cleanup(dwc);
+
+       /* Put the core into D3 state */
+       dwc3_set_usb_core_power(dwc, false);
+
        dwc3_core_exit(dwc);
 
        return 0;
@@ -1316,6 +1320,9 @@ static int dwc3_resume_common(struct dwc3 *dwc)
        unsigned long   flags;
        int             ret;
 
+       /* Bring core to D0 state */
+       dwc3_set_usb_core_power(dwc, true);
+
        ret = dwc3_core_init(dwc);
        if (ret)
                return ret;