Hi, On Tue, Nov 13, 2012 at 11:20:49AM +0900, Jingoo Han wrote: > The devm_ functions allocate memory that is released when a driver > detaches. This makes the code smaller and a bit simpler. > > Signed-off-by: Jingoo Han <jg1.han@xxxxxxxxxxx> Next time you want to use the output of scripts/get_maintainer.pl so you're sure to Cc everybody involved. Patch looks ok, but I will leave it in the mailing list for a couple of weeks (no time for v3.8 merge window anyway). > --- > Changes since v1: > - Rebased on usb-next branch > > drivers/usb/dwc3/dwc3-exynos.c | 51 ++++++++++++++++++---------------------- > 1 files changed, 23 insertions(+), 28 deletions(-) > > diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c > index dc35c54..1a79d20 100644 > --- a/drivers/usb/dwc3/dwc3-exynos.c > +++ b/drivers/usb/dwc3/dwc3-exynos.c > @@ -95,13 +95,14 @@ static int __devinit dwc3_exynos_probe(struct platform_device *pdev) > struct platform_device *dwc3; > struct dwc3_exynos *exynos; > struct clk *clk; > + struct device *dev = &pdev->dev; > > int ret = -ENOMEM; > > - exynos = kzalloc(sizeof(*exynos), GFP_KERNEL); > + exynos = devm_kzalloc(dev, sizeof(*exynos), GFP_KERNEL); > if (!exynos) { > - dev_err(&pdev->dev, "not enough memory\n"); > - goto err0; > + dev_err(dev, "not enough memory\n"); > + return -ENOMEM; > } > > /* > @@ -116,30 +117,30 @@ static int __devinit dwc3_exynos_probe(struct platform_device *pdev) > > ret = dwc3_exynos_register_phys(exynos); > if (ret) { > - dev_err(&pdev->dev, "couldn't register PHYs\n"); > - goto err1; > + dev_err(dev, "couldn't register PHYs\n"); > + return ret; > } > > dwc3 = platform_device_alloc("dwc3", PLATFORM_DEVID_AUTO); > if (!dwc3) { > - dev_err(&pdev->dev, "couldn't allocate dwc3 device\n"); > - goto err1; > + dev_err(dev, "couldn't allocate dwc3 device\n"); > + return -ENOMEM; > } > > - clk = clk_get(&pdev->dev, "usbdrd30"); > + clk = devm_clk_get(dev, "usbdrd30"); > if (IS_ERR(clk)) { > - dev_err(&pdev->dev, "couldn't get clock\n"); > + dev_err(dev, "couldn't get clock\n"); > ret = -EINVAL; > - goto err3; > + goto err1; > } > > - dma_set_coherent_mask(&dwc3->dev, pdev->dev.coherent_dma_mask); > + dma_set_coherent_mask(&dwc3->dev, dev->coherent_dma_mask); > > - dwc3->dev.parent = &pdev->dev; > - dwc3->dev.dma_mask = pdev->dev.dma_mask; > - dwc3->dev.dma_parms = pdev->dev.dma_parms; > + dwc3->dev.parent = dev; > + dwc3->dev.dma_mask = dev->dma_mask; > + dwc3->dev.dma_parms = dev->dma_parms; > exynos->dwc3 = dwc3; > - exynos->dev = &pdev->dev; > + exynos->dev = dev; > exynos->clk = clk; > > clk_enable(exynos->clk); > @@ -147,26 +148,23 @@ static int __devinit dwc3_exynos_probe(struct platform_device *pdev) > ret = platform_device_add_resources(dwc3, pdev->resource, > pdev->num_resources); > if (ret) { > - dev_err(&pdev->dev, "couldn't add resources to dwc3 device\n"); > - goto err4; > + dev_err(dev, "couldn't add resources to dwc3 device\n"); > + goto err2; > } > > ret = platform_device_add(dwc3); > if (ret) { > - dev_err(&pdev->dev, "failed to register dwc3 device\n"); > - goto err4; > + dev_err(dev, "failed to register dwc3 device\n"); > + goto err2; > } > > return 0; > > -err4: > +err2: > clk_disable(clk); > - clk_put(clk); > -err3: > - platform_device_put(dwc3); > err1: > - kfree(exynos); > -err0: > + platform_device_put(dwc3); > + > return ret; > } > > @@ -179,9 +177,6 @@ static int __devexit dwc3_exynos_remove(struct platform_device *pdev) > platform_device_unregister(exynos->usb3_phy); > > clk_disable(exynos->clk); > - clk_put(exynos->clk); > - > - kfree(exynos); > > return 0; > } > -- > 1.7.1 > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- balbi
Attachment:
signature.asc
Description: Digital signature