Commit f122d33e authored by Felipe Balbi's avatar Felipe Balbi

usb: dwc3: core: explicitly setup and cleanup event buffers

Make the call to dwc3_event_buffers_setup()
and dwc3_event_buffers_cleanup() explicit,
so it's easier to implement PM.
Tested-by: default avatarVivek Gautam <gautam.vivek@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 4c0c6d00
...@@ -337,12 +337,6 @@ static int dwc3_core_init(struct dwc3 *dwc) ...@@ -337,12 +337,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
dwc3_writel(dwc->regs, DWC3_GCTL, reg); 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; return 0;
err0: err0:
...@@ -351,8 +345,6 @@ static int dwc3_core_init(struct dwc3 *dwc) ...@@ -351,8 +345,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
static void dwc3_core_exit(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->usb2_phy);
usb_phy_shutdown(dwc->usb3_phy); usb_phy_shutdown(dwc->usb3_phy);
} }
...@@ -480,6 +472,12 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -480,6 +472,12 @@ static int dwc3_probe(struct platform_device *pdev)
goto err0; 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); mode = DWC3_MODE(dwc->hwparams.hwparams0);
switch (mode) { switch (mode) {
...@@ -488,7 +486,7 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -488,7 +486,7 @@ static int dwc3_probe(struct platform_device *pdev)
ret = dwc3_gadget_init(dwc); ret = dwc3_gadget_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize gadget\n"); dev_err(dev, "failed to initialize gadget\n");
goto err1; goto err2;
} }
break; break;
case DWC3_MODE_HOST: case DWC3_MODE_HOST:
...@@ -496,7 +494,7 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -496,7 +494,7 @@ static int dwc3_probe(struct platform_device *pdev)
ret = dwc3_host_init(dwc); ret = dwc3_host_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize host\n"); dev_err(dev, "failed to initialize host\n");
goto err1; goto err2;
} }
break; break;
case DWC3_MODE_DRD: case DWC3_MODE_DRD:
...@@ -504,32 +502,32 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -504,32 +502,32 @@ static int dwc3_probe(struct platform_device *pdev)
ret = dwc3_host_init(dwc); ret = dwc3_host_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize host\n"); dev_err(dev, "failed to initialize host\n");
goto err1; goto err2;
} }
ret = dwc3_gadget_init(dwc); ret = dwc3_gadget_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize gadget\n"); dev_err(dev, "failed to initialize gadget\n");
goto err1; goto err2;
} }
break; break;
default: default:
dev_err(dev, "Unsupported mode of operation %d\n", mode); dev_err(dev, "Unsupported mode of operation %d\n", mode);
goto err1; goto err2;
} }
dwc->mode = mode; dwc->mode = mode;
ret = dwc3_debugfs_init(dwc); ret = dwc3_debugfs_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize debugfs\n"); dev_err(dev, "failed to initialize debugfs\n");
goto err2; goto err3;
} }
pm_runtime_allow(dev); pm_runtime_allow(dev);
return 0; return 0;
err2: err3:
switch (mode) { switch (mode) {
case DWC3_MODE_DEVICE: case DWC3_MODE_DEVICE:
dwc3_gadget_exit(dwc); dwc3_gadget_exit(dwc);
...@@ -546,6 +544,9 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -546,6 +544,9 @@ static int dwc3_probe(struct platform_device *pdev)
break; break;
} }
err2:
dwc3_event_buffers_cleanup(dwc);
err1: err1:
dwc3_core_exit(dwc); dwc3_core_exit(dwc);
...@@ -583,6 +584,7 @@ static int dwc3_remove(struct platform_device *pdev) ...@@ -583,6 +584,7 @@ static int dwc3_remove(struct platform_device *pdev)
break; break;
} }
dwc3_event_buffers_cleanup(dwc);
dwc3_free_event_buffers(dwc); dwc3_free_event_buffers(dwc);
dwc3_core_exit(dwc); dwc3_core_exit(dwc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment