Make the call to dwc3_event_buffers_setup()
and dwc3_event_buffers_cleanup() explicit,
so it's easier to implement PM.

Signed-off-by: Felipe Balbi <ba...@ti.com>
---
 drivers/usb/dwc3/core.c | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index f00c749..fb93918 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -337,12 +337,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
 
        dwc3_writel(dwc->regs, DWC3_GCTL, reg);
 
-       ret = dwc3_event_buffers_setup(dwc);
-       if (ret) {
-               dev_err(dwc->dev, "failed to setup event buffers\n");
-               goto err0;
-       }
-
        return 0;
 
 err0:
@@ -351,8 +345,6 @@ err0:
 
 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);
 }
@@ -472,6 +464,12 @@ static int dwc3_probe(struct platform_device *pdev)
                goto err0;
        }
 
+       ret = dwc3_event_buffers_setup(dwc);
+       if (ret) {
+               dev_err(dwc->dev, "failed to setup event buffers\n");
+               goto err1;
+       }
+
        mode = DWC3_MODE(dwc->hwparams.hwparams0);
 
        switch (mode) {
@@ -480,7 +478,7 @@ static int dwc3_probe(struct platform_device *pdev)
                ret = dwc3_gadget_init(dwc);
                if (ret) {
                        dev_err(dev, "failed to initialize gadget\n");
-                       goto err1;
+                       goto err2;
                }
                break;
        case DWC3_MODE_HOST:
@@ -488,7 +486,7 @@ static int dwc3_probe(struct platform_device *pdev)
                ret = dwc3_host_init(dwc);
                if (ret) {
                        dev_err(dev, "failed to initialize host\n");
-                       goto err1;
+                       goto err2;
                }
                break;
        case DWC3_MODE_DRD:
@@ -496,32 +494,32 @@ static int dwc3_probe(struct platform_device *pdev)
                ret = dwc3_host_init(dwc);
                if (ret) {
                        dev_err(dev, "failed to initialize host\n");
-                       goto err1;
+                       goto err2;
                }
 
                ret = dwc3_gadget_init(dwc);
                if (ret) {
                        dev_err(dev, "failed to initialize gadget\n");
-                       goto err1;
+                       goto err2;
                }
                break;
        default:
                dev_err(dev, "Unsupported mode of operation %d\n", mode);
-               goto err1;
+               goto err2;
        }
        dwc->mode = mode;
 
        ret = dwc3_debugfs_init(dwc);
        if (ret) {
                dev_err(dev, "failed to initialize debugfs\n");
-               goto err2;
+               goto err3;
        }
 
        pm_runtime_allow(dev);
 
        return 0;
 
-err2:
+err3:
        switch (mode) {
        case DWC3_MODE_DEVICE:
                dwc3_gadget_exit(dwc);
@@ -538,6 +536,9 @@ err2:
                break;
        }
 
+err2:
+       dwc3_event_buffers_cleanup(dwc);
+
 err1:
        dwc3_core_exit(dwc);
 
@@ -575,6 +576,7 @@ static int dwc3_remove(struct platform_device *pdev)
                break;
        }
 
+       dwc3_event_buffers_cleanup(dwc);
        dwc3_free_event_buffers(dwc);
        dwc3_core_exit(dwc);
 
-- 
1.8.1.rc1.5.g7e0651a

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to