[1/1] usb: s3c-hsotg: Use devm_* functions in s3c-hsotg.c file

Message ID 1337331826-19552-1-git-send-email-sachin.kamat@linaro.org
State Accepted
Headers show

Commit Message

Sachin Kamat May 18, 2012, 9:03 a.m.
devm_* functions are used to replace kzalloc, request_mem_region, ioremap
and request_irq functions in probe call. With the usage of devm_* functions
explicit freeing and unmapping is not required.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/usb/gadget/s3c-hsotg.c |   51 ++++++++-------------------------------
 1 files changed, 11 insertions(+), 40 deletions(-)

Comments

Sachin Kamat May 24, 2012, 10:59 a.m. | #1
ping..
Any comments about this patch?

On 18/05/2012, Sachin Kamat <sachin.kamat@linaro.org> wrote:
> devm_* functions are used to replace kzalloc, request_mem_region, ioremap
> and request_irq functions in probe call. With the usage of devm_* functions
> explicit freeing and unmapping is not required.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> ---
>  drivers/usb/gadget/s3c-hsotg.c |   51
> ++++++++-------------------------------
>  1 files changed, 11 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/usb/gadget/s3c-hsotg.c
> b/drivers/usb/gadget/s3c-hsotg.c
> index f4abb0e..d375851 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -136,7 +136,6 @@ struct s3c_hsotg_ep {
>   * @driver: USB gadget driver
>   * @plat: The platform specific configuration data.
>   * @regs: The memory area mapped for accessing registers.
> - * @regs_res: The resource that was allocated when claiming register
> space.
>   * @irq: The IRQ number we are using
>   * @supplies: Definition of USB power supplies
>   * @dedicated_fifos: Set if the hardware has dedicated IN-EP fifos.
> @@ -158,7 +157,6 @@ struct s3c_hsotg {
>  	struct s3c_hsotg_plat	 *plat;
>
>  	void __iomem		*regs;
> -	struct resource		*regs_res;
>  	int			irq;
>  	struct clk		*clk;
>
> @@ -3477,7 +3475,7 @@ static int __devinit s3c_hsotg_probe(struct
> platform_device *pdev)
>  		return -EINVAL;
>  	}
>
> -	hsotg = kzalloc(sizeof(struct s3c_hsotg), GFP_KERNEL);
> +	hsotg = devm_kzalloc(&pdev->dev, sizeof(struct s3c_hsotg), GFP_KERNEL);
>  	if (!hsotg) {
>  		dev_err(dev, "cannot get memory\n");
>  		return -ENOMEM;
> @@ -3489,46 +3487,33 @@ static int __devinit s3c_hsotg_probe(struct
> platform_device *pdev)
>  	hsotg->clk = clk_get(&pdev->dev, "otg");
>  	if (IS_ERR(hsotg->clk)) {
>  		dev_err(dev, "cannot get otg clock\n");
> -		ret = PTR_ERR(hsotg->clk);
> -		goto err_mem;
> +		return PTR_ERR(hsotg->clk);
>  	}
>
>  	platform_set_drvdata(pdev, hsotg);
>
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(dev, "cannot find register resource 0\n");
> -		ret = -EINVAL;
> -		goto err_clk;
> -	}
> -
> -	hsotg->regs_res = request_mem_region(res->start, resource_size(res),
> -					     dev_name(dev));
> -	if (!hsotg->regs_res) {
> -		dev_err(dev, "cannot reserve registers\n");
> -		ret = -ENOENT;
> -		goto err_clk;
> -	}
>
> -	hsotg->regs = ioremap(res->start, resource_size(res));
> +	hsotg->regs = devm_request_and_ioremap(&pdev->dev, res);
>  	if (!hsotg->regs) {
>  		dev_err(dev, "cannot map registers\n");
>  		ret = -ENXIO;
> -		goto err_regs_res;
> +		goto err_clk;
>  	}
>
>  	ret = platform_get_irq(pdev, 0);
>  	if (ret < 0) {
>  		dev_err(dev, "cannot find IRQ\n");
> -		goto err_regs;
> +		goto err_clk;
>  	}
>
>  	hsotg->irq = ret;
>
> -	ret = request_irq(ret, s3c_hsotg_irq, 0, dev_name(dev), hsotg);
> +	ret = devm_request_irq(&pdev->dev, hsotg->irq, s3c_hsotg_irq, 0,
> +				dev_name(dev), hsotg);
>  	if (ret < 0) {
>  		dev_err(dev, "cannot claim IRQ\n");
> -		goto err_regs;
> +		goto err_clk;
>  	}
>
>  	dev_info(dev, "regs %p, irq %d\n", hsotg->regs, hsotg->irq);
> @@ -3558,7 +3543,7 @@ static int __devinit s3c_hsotg_probe(struct
> platform_device *pdev)
>  				 hsotg->supplies);
>  	if (ret) {
>  		dev_err(dev, "failed to request supplies: %d\n", ret);
> -		goto err_irq;
> +		goto err_clk;
>  	}
>
>  	ret = regulator_bulk_enable(ARRAY_SIZE(hsotg->supplies),
> @@ -3642,19 +3627,11 @@ err_ep_mem:
>  err_supplies:
>  	s3c_hsotg_phy_disable(hsotg);
>  	regulator_bulk_free(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);
> -err_irq:
> -	free_irq(hsotg->irq, hsotg);
> -err_regs:
> -	iounmap(hsotg->regs);
> -
> -err_regs_res:
> -	release_resource(hsotg->regs_res);
> -	kfree(hsotg->regs_res);
> +
>  err_clk:
>  	clk_disable_unprepare(hsotg->clk);
>  	clk_put(hsotg->clk);
> -err_mem:
> -	kfree(hsotg);
> +
>  	return ret;
>  }
>
> @@ -3675,12 +3652,6 @@ static int __devexit s3c_hsotg_remove(struct
> platform_device *pdev)
>  		usb_gadget_unregister_driver(hsotg->driver);
>  	}
>
> -	free_irq(hsotg->irq, hsotg);
> -	iounmap(hsotg->regs);
> -
> -	release_resource(hsotg->regs_res);
> -	kfree(hsotg->regs_res);
> -
>  	s3c_hsotg_phy_disable(hsotg);
>  	regulator_bulk_free(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);
>
> --
> 1.7.4.1
>
>
Felipe Balbi May 24, 2012, 11:25 a.m. | #2
On Thu, May 24, 2012 at 04:29:37PM +0530, Sachin Kamat wrote:
> ping..
> Any comments about this patch?

waiting merge window to close. hang on.

Patch

diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index f4abb0e..d375851 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -136,7 +136,6 @@  struct s3c_hsotg_ep {
  * @driver: USB gadget driver
  * @plat: The platform specific configuration data.
  * @regs: The memory area mapped for accessing registers.
- * @regs_res: The resource that was allocated when claiming register space.
  * @irq: The IRQ number we are using
  * @supplies: Definition of USB power supplies
  * @dedicated_fifos: Set if the hardware has dedicated IN-EP fifos.
@@ -158,7 +157,6 @@  struct s3c_hsotg {
 	struct s3c_hsotg_plat	 *plat;
 
 	void __iomem		*regs;
-	struct resource		*regs_res;
 	int			irq;
 	struct clk		*clk;
 
@@ -3477,7 +3475,7 @@  static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	hsotg = kzalloc(sizeof(struct s3c_hsotg), GFP_KERNEL);
+	hsotg = devm_kzalloc(&pdev->dev, sizeof(struct s3c_hsotg), GFP_KERNEL);
 	if (!hsotg) {
 		dev_err(dev, "cannot get memory\n");
 		return -ENOMEM;
@@ -3489,46 +3487,33 @@  static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
 	hsotg->clk = clk_get(&pdev->dev, "otg");
 	if (IS_ERR(hsotg->clk)) {
 		dev_err(dev, "cannot get otg clock\n");
-		ret = PTR_ERR(hsotg->clk);
-		goto err_mem;
+		return PTR_ERR(hsotg->clk);
 	}
 
 	platform_set_drvdata(pdev, hsotg);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(dev, "cannot find register resource 0\n");
-		ret = -EINVAL;
-		goto err_clk;
-	}
-
-	hsotg->regs_res = request_mem_region(res->start, resource_size(res),
-					     dev_name(dev));
-	if (!hsotg->regs_res) {
-		dev_err(dev, "cannot reserve registers\n");
-		ret = -ENOENT;
-		goto err_clk;
-	}
 
-	hsotg->regs = ioremap(res->start, resource_size(res));
+	hsotg->regs = devm_request_and_ioremap(&pdev->dev, res);
 	if (!hsotg->regs) {
 		dev_err(dev, "cannot map registers\n");
 		ret = -ENXIO;
-		goto err_regs_res;
+		goto err_clk;
 	}
 
 	ret = platform_get_irq(pdev, 0);
 	if (ret < 0) {
 		dev_err(dev, "cannot find IRQ\n");
-		goto err_regs;
+		goto err_clk;
 	}
 
 	hsotg->irq = ret;
 
-	ret = request_irq(ret, s3c_hsotg_irq, 0, dev_name(dev), hsotg);
+	ret = devm_request_irq(&pdev->dev, hsotg->irq, s3c_hsotg_irq, 0,
+				dev_name(dev), hsotg);
 	if (ret < 0) {
 		dev_err(dev, "cannot claim IRQ\n");
-		goto err_regs;
+		goto err_clk;
 	}
 
 	dev_info(dev, "regs %p, irq %d\n", hsotg->regs, hsotg->irq);
@@ -3558,7 +3543,7 @@  static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
 				 hsotg->supplies);
 	if (ret) {
 		dev_err(dev, "failed to request supplies: %d\n", ret);
-		goto err_irq;
+		goto err_clk;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(hsotg->supplies),
@@ -3642,19 +3627,11 @@  err_ep_mem:
 err_supplies:
 	s3c_hsotg_phy_disable(hsotg);
 	regulator_bulk_free(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);
-err_irq:
-	free_irq(hsotg->irq, hsotg);
-err_regs:
-	iounmap(hsotg->regs);
-
-err_regs_res:
-	release_resource(hsotg->regs_res);
-	kfree(hsotg->regs_res);
+
 err_clk:
 	clk_disable_unprepare(hsotg->clk);
 	clk_put(hsotg->clk);
-err_mem:
-	kfree(hsotg);
+
 	return ret;
 }
 
@@ -3675,12 +3652,6 @@  static int __devexit s3c_hsotg_remove(struct platform_device *pdev)
 		usb_gadget_unregister_driver(hsotg->driver);
 	}
 
-	free_irq(hsotg->irq, hsotg);
-	iounmap(hsotg->regs);
-
-	release_resource(hsotg->regs_res);
-	kfree(hsotg->regs_res);
-
 	s3c_hsotg_phy_disable(hsotg);
 	regulator_bulk_free(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);