usb: dwc3: exynos: use devm_ functions
authorJingoo Han <jg1.han@samsung.com>
Tue, 13 Nov 2012 02:20:49 +0000 (11:20 +0900)
committerFelipe Balbi <balbi@ti.com>
Fri, 18 Jan 2013 08:11:34 +0000 (10:11 +0200)
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@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/dwc3-exynos.c

index aae5328ac771b69ff0c516d75e0751379a6c9bd6..90e05e60c3fe567d159e88b9bc6581bdac4d0f53 100644 (file)
@@ -95,13 +95,14 @@ static int 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 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 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 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;
 }