Commit 3921426b authored by Felipe Balbi's avatar Felipe Balbi

usb: dwc3: core: move event buffer allocation out of dwc3_core_init()

This patch is in preparation for adding PM support
dwc3 driver. We want to re-use dwc3_core_init and
dwc3_core_exit() functions on resume() and suspend()
callbacks respectively.

Moving even buffer allocation away from dwc3_core_init()
will allow us to reuse the event buffer which was allocated
long ago on our probe() routine.
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 380f0d28
...@@ -381,24 +381,14 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc) ...@@ -381,24 +381,14 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc)
dwc3_writel(dwc->regs, DWC3_GCTL, reg); dwc3_writel(dwc->regs, DWC3_GCTL, reg);
ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE);
if (ret) {
dev_err(dwc->dev, "failed to allocate event buffers\n");
ret = -ENOMEM;
goto err1;
}
ret = dwc3_event_buffers_setup(dwc); ret = dwc3_event_buffers_setup(dwc);
if (ret) { if (ret) {
dev_err(dwc->dev, "failed to setup event buffers\n"); dev_err(dwc->dev, "failed to setup event buffers\n");
goto err1; goto err0;
} }
return 0; return 0;
err1:
dwc3_free_event_buffers(dwc);
err0: err0:
return ret; return ret;
} }
...@@ -406,7 +396,6 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc) ...@@ -406,7 +396,6 @@ static int __devinit 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); dwc3_event_buffers_cleanup(dwc);
dwc3_free_event_buffers(dwc);
} }
#define DWC3_ALIGN_MASK (16 - 1) #define DWC3_ALIGN_MASK (16 - 1)
...@@ -509,10 +498,17 @@ static int __devinit dwc3_probe(struct platform_device *pdev) ...@@ -509,10 +498,17 @@ static int __devinit dwc3_probe(struct platform_device *pdev)
pm_runtime_get_sync(dev); pm_runtime_get_sync(dev);
pm_runtime_forbid(dev); pm_runtime_forbid(dev);
ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE);
if (ret) {
dev_err(dwc->dev, "failed to allocate event buffers\n");
ret = -ENOMEM;
goto err0;
}
ret = dwc3_core_init(dwc); ret = dwc3_core_init(dwc);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize core\n"); dev_err(dev, "failed to initialize core\n");
return ret; goto err0;
} }
mode = DWC3_MODE(dwc->hwparams.hwparams0); mode = DWC3_MODE(dwc->hwparams.hwparams0);
...@@ -584,6 +580,9 @@ static int __devinit dwc3_probe(struct platform_device *pdev) ...@@ -584,6 +580,9 @@ static int __devinit dwc3_probe(struct platform_device *pdev)
err1: err1:
dwc3_core_exit(dwc); dwc3_core_exit(dwc);
err0:
dwc3_free_event_buffers(dwc);
return ret; return ret;
} }
......
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