pwm: Convert pwm-imx to use devm_* APIs
Subsystems (3)
PATCH v2 1/3 pwm: Convert pwm-imx to use devm_* APIs
--- drivers/pwm/pwm-imx.c | 57 +++++++++---------------------------------------- 1 file changed, 10 insertions(+), 47 deletions(-)
drivers/pwm/pwm-imx.c +10 -47
@@ -159,18 +159,16 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev)struct resource *r;int ret =0 ; - imx =kzalloc (sizeof (*imx),GFP_KERNEL ); + imx =devm_kzalloc (&pdev->dev,sizeof (*imx),GFP_KERNEL );if (imx ==NULL ) {dev_err (&pdev->dev,"failed to allocate memory\n" );return -ENOMEM ; } - imx->clk =clk_get (&pdev->dev,"pwm" ); + imx->clk =devm_clk_get (&pdev->dev,"pwm" ); -if (IS_ERR (imx->clk)) { - ret =PTR_ERR (imx->clk); - goto err_free; - } +if (IS_ERR (imx->clk)) +return PTR_ERR (imx->clk); imx->chip.ops = &imx_pwm_ops; imx->chip.dev = &pdev->dev;
@@ -182,65 +180,30 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev) r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (r ==NULL ) {dev_err (&pdev->dev,"no memory resource defined\n" ); - ret = -ENODEV ; - goto err_free_clk; - } - - r =request_mem_region (r->start,resource_size (r), pdev->name); -if (r ==NULL ) { -dev_err (&pdev->dev,"failed to request memory resource\n" ); - ret = -EBUSY ; - goto err_free_clk; +return -ENODEV ; } - imx->mmio_base =ioremap (r->start,resource_size (r)); -if (imx->mmio_base ==NULL ) { -dev_err (&pdev->dev,"failed to ioremap() registers\n" ); - ret = -ENODEV ; - goto err_free_mem; - } + imx->mmio_base =devm_request_and_ioremap (&pdev->dev, r); +if (imx->mmio_base ==NULL ) +return -EADDRNOTAVAIL ; ret =pwmchip_add (&imx->chip);if (ret <0 ) - goto err_iounmap; +return ret;platform_set_drvdata (pdev, imx);return 0 ; - -err_iounmap: -iounmap (imx->mmio_base); -err_free_mem: -release_mem_region (r->start,resource_size (r)); -err_free_clk: -clk_put (imx->clk); -err_free: -kfree (imx); -return ret; } static int __devexit imx_pwm_remove(struct platform_device *pdev) {struct imx_chip *imx; -struct resource *r; -int ret; imx =platform_get_drvdata (pdev);if (imx ==NULL )return -ENODEV ; - ret =pwmchip_remove (&imx->chip); -if (ret) -return ret; - -iounmap (imx->mmio_base); - - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (r->start,resource_size (r)); - -clk_put (imx->clk); - -kfree (imx); -return 0 ; +return pwmchip_remove (&imx->chip); }static struct platform_driver imx_pwm_driver = {
Signature · 1 line
1.7.9.5
PATCH v2 2/3 pwm: Convert pwm-pxa to use devm_* APIs
--- drivers/pwm/pwm-pxa.c | 52 +++++++++++-------------------------------------- 1 file changed, 11 insertions(+), 41 deletions(-)
drivers/pwm/pwm-pxa.c +11 -41
@@ -1,5 +1,5 @@/* -* linux/arch/arm/mach-pxa/pwm.c +* drivers/pwm/pwm-pxa.c * * simple driver for PWM (Pulse Width Modulator) controller *
@@ -145,17 +145,16 @@ static int __devinit pwm_probe(struct platform_device *pdev)struct resource *r;int ret =0 ; - pwm =kzalloc (sizeof (*pwm),GFP_KERNEL ); + pwm =devm_kzalloc (&pdev->dev,sizeof (*pwm),GFP_KERNEL );if (pwm ==NULL ) {dev_err (&pdev->dev,"failed to allocate memory\n" );return -ENOMEM ; } - pwm->clk =clk_get (&pdev->dev,NULL ); -if (IS_ERR (pwm->clk)) { - ret =PTR_ERR (pwm->clk); - goto err_free; - } + pwm->clk =devm_clk_get (&pdev->dev,NULL ); +if (IS_ERR (pwm->clk)) +return PTR_ERR (pwm->clk); + pwm->clk_enabled =0 ; pwm->chip.dev = &pdev->dev;
@@ -166,23 +165,12 @@ static int __devinit pwm_probe(struct platform_device *pdev) r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (r ==NULL ) {dev_err (&pdev->dev,"no memory resource defined\n" ); - ret = -ENODEV ; - goto err_free_clk; - } - - r =request_mem_region (r->start,resource_size (r), pdev->name); -if (r ==NULL ) { -dev_err (&pdev->dev,"failed to request memory resource\n" ); - ret = -EBUSY ; - goto err_free_clk; +return -ENODEV ; } - pwm->mmio_base =ioremap (r->start,resource_size (r)); -if (pwm->mmio_base ==NULL ) { -dev_err (&pdev->dev,"failed to ioremap() registers\n" ); - ret = -ENODEV ; - goto err_free_mem; - } + pwm->mmio_base =devm_request_and_ioremap (&pdev->dev, r); +if (pwm->mmio_base ==NULL ) +return -EADDRNOTAVAIL ; ret =pwmchip_add (&pwm->chip);if (ret <0 ) {
@@ -192,35 +180,17 @@ static int __devinit pwm_probe(struct platform_device *pdev)platform_set_drvdata (pdev, pwm);return 0 ; - -err_free_mem: -release_mem_region (r->start,resource_size (r)); -err_free_clk: -clk_put (pwm->clk); -err_free: -kfree (pwm); -return ret; } static int __devexit pwm_remove(struct platform_device *pdev) {struct pxa_pwm_chip *chip; -struct resource *r; chip =platform_get_drvdata (pdev);if (chip ==NULL )return -ENODEV ; -pwmchip_remove (&chip->chip); - -iounmap (chip->mmio_base); - - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (r->start,resource_size (r)); - -clk_put (chip->clk); -kfree (chip); -return 0 ; +return pwmchip_remove (&chip->chip); }static struct platform_driver pwm_driver = {
Signature · 1 line
1.7.9.5
Re: [PATCH v2 2/3] pwm: Convert pwm-pxa to use devm_* APIs
Quoted 6 lines · Axel Lin
Signed-off-by Axel Lin <[email protected]>--- drivers/pwm/pwm-pxa.c | 52 +++++++++++-------------------------------------- 1 file changed, 11 insertions(+), 41 deletions(-)drivers/pwm/pwm-pxa.c +0
-0
[...]
Quoted 24 lines
drivers/pwm/pwm-pxa.c +0
-10@@ -192,35 +180,17 @@ static int __devinit pwm_probe(struct platform_device *pdev)platform_set_drvdata (pdev, pwm);return 0 ; - -err_free_mem: -release_mem_region (r->start,resource_size (r)); -err_free_clk: -clk_put (pwm->clk); -err_free: -kfree (pwm); -return ret; } static int __devexit pwm_remove(struct platform_device *pdev) {struct pxa_pwm_chip *chip; -struct resource *r; chip =platform_get_drvdata (pdev);if (chip ==NULL )return -ENODEV ; -pwmchip_remove (&chip->chip);
drivers/pwm/pwm-pxa.c static int __devinit pwm_probe(struct platform_device *pdev) · line 193
Quoted 10 lines
drivers/pwm/pwm-pxa.c +1
-9- -iounmap (chip->mmio_base); - - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (r->start,resource_size (r)); - -clk_put (chip->clk); -kfree (chip); -return 0 ; +return pwmchip_remove (&chip->chip);
What I meant was that this driver didn't return an error on failure of pwmchip_remove() before so incorporating this change is unrelated to this patch. Either make it a separate patch (preferably) or at least mention it in the commit message.
Thierry
Re: [PATCH v2 2/3] pwm: Convert pwm-pxa to use devm_* APIs
Quoted 8 lines
Quoted 8 lines
drivers/pwm/pwm-pxa.c +0
-8-pwmchip_remove (&chip->chip); - -iounmap (chip->mmio_base); - - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (r->start,resource_size (r)); - -clk_put (chip->clk);
Quoted 8 lines
drivers/pwm/pwm-pxa.c static int __devinit pwm_probe(struct platform_device *pdev) · line 193
Quoted 3 lines
drivers/pwm/pwm-pxa.c +1
-2-kfree (chip); -return 0 ; +return pwmchip_remove (&chip->chip);What I meant was that this driver didn't return an error on failure of
pwmchip_remove()before so incorporating this change is unrelated to this patch. Either make it a separate patch (preferably) or at least mention it in the commit message.
Oh. I just thought it is a trivial change and it probably ok to do so. Anyway, Since you prefer having this change in a separate patch, I'd send a v3 that leave this part unchanged.
Regards,
Axel
Quoted 2 lines
Thierry
PATCH v2 3/3 pwm: Convert pwm-vt8500 to use devm_* APIs
In reply to Axel Lin--- drivers/pwm/pwm-vt8500.c | 47 ++++++++-------------------------------------- 1 file changed, 8 insertions(+), 39 deletions(-)
drivers/pwm/pwm-vt8500.c +8 -39
@@ -1,5 +1,5 @@/* -* arch/arm/mach-vt8500/pwm.c +* drivers/pwm/pwm-vt8500.c * * Copyright (C) 2010 Alexey Charkov <[email protected]> *
@@ -113,7 +113,7 @@ static int __devinit pwm_probe(struct platform_device *pdev)struct resource *r;int ret; - chip =kzalloc (sizeof (*chip),GFP_KERNEL ); + chip =devm_kzalloc (&pdev->dev,sizeof (*chip),GFP_KERNEL );if (chip ==NULL ) {dev_err (&pdev->dev,"failed to allocate memory\n" );return -ENOMEM ;
@@ -127,61 +127,30 @@ static int __devinit pwm_probe(struct platform_device *pdev) r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (r ==NULL ) {dev_err (&pdev->dev,"no memory resource defined\n" ); - ret = -ENODEV ; - goto err_free; +return -ENODEV ; } - r =request_mem_region (r->start,resource_size (r), pdev->name); -if (r ==NULL ) { -dev_err (&pdev->dev,"failed to request memory resource\n" ); - ret = -EBUSY ; - goto err_free; - } - - chip->base =ioremap (r->start,resource_size (r)); -if (chip->base ==NULL ) { -dev_err (&pdev->dev,"failed to ioremap() registers\n" ); - ret = -ENODEV ; - goto err_free_mem; - } + chip->base =devm_request_and_ioremap (&pdev->dev, r); +if (chip->base ==NULL ) +return -EADDRNOTAVAIL ; ret =pwmchip_add (&chip->chip);if (ret <0 ) - goto err_unmap; +return ret;platform_set_drvdata (pdev, chip);return ret; - -err_unmap: -iounmap (chip->base); -err_free_mem: -release_mem_region (r->start,resource_size (r)); -err_free: -kfree (chip); -return ret; } static int __devexit pwm_remove(struct platform_device *pdev) {struct vt8500_chip *chip; -struct resource *r; -int err; chip =platform_get_drvdata (pdev);if (chip ==NULL )return -ENODEV ; - err =pwmchip_remove (&chip->chip); -if (err <0 ) -return err; - -iounmap (chip->base); - - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (r->start,resource_size (r)); - -kfree (chip); -return 0 ; +return pwmchip_remove (&chip->chip); }static struct platform_driver pwm_driver = {
Signature · 1 line
1.7.9.5
Thierry Reding
AppliedRe: [PATCH v2 3/3] pwm: Convert pwm-vt8500 to use devm_* APIs
Quoted 4 lines · Axel Lin
Signed-off-by Axel Lin <[email protected]>--- drivers/pwm/pwm-vt8500.c | 47 ++++++++-------------------------------------- 1 file changed, 8 insertions(+), 39 deletions(-)
Applied, thanks.
Thierry
Thierry Reding
AppliedQuoted 4 lines · Axel Lin
Signed-off-by Axel Lin <[email protected]>--- drivers/pwm/pwm-imx.c | 57 +++++++++---------------------------------------- 1 file changed, 10 insertions(+), 47 deletions(-)
Applied, thanks.
Thierry