diff options
Diffstat (limited to 'drivers/usb/dwc3/core.c')
| -rw-r--r-- | drivers/usb/dwc3/core.c | 25 | 
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 8d543ea4352..b923183c43c 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -381,24 +381,14 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc)  	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);  	if (ret) {  		dev_err(dwc->dev, "failed to setup event buffers\n"); -		goto err1; +		goto err0;  	}  	return 0; -err1: -	dwc3_free_event_buffers(dwc); -  err0:  	return ret;  } @@ -406,7 +396,6 @@ err0:  static void dwc3_core_exit(struct dwc3 *dwc)  {  	dwc3_event_buffers_cleanup(dwc); -	dwc3_free_event_buffers(dwc);  }  #define DWC3_ALIGN_MASK		(16 - 1) @@ -509,10 +498,17 @@ static int __devinit dwc3_probe(struct platform_device *pdev)  	pm_runtime_get_sync(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);  	if (ret) {  		dev_err(dev, "failed to initialize core\n"); -		return ret; +		goto err0;  	}  	mode = DWC3_MODE(dwc->hwparams.hwparams0); @@ -584,6 +580,9 @@ err2:  err1:  	dwc3_core_exit(dwc); +err0: +	dwc3_free_event_buffers(dwc); +  	return ret;  }  |