Commit f5ed9c35 authored by Julia Lawall's avatar Julia Lawall Committed by Jonathan Cameron

drivers/staging/iio/adc/spear_adc.c: use clk_prepare_enable and clk_disable_unprepare

Clk_prepare_enable and clk_disable_unprepare combine clk_prepare and
clk_enable, and clk_disable and clk_unprepare.  They make the code more
concise, and ensure that clk_unprepare is called when clk_enable fails.

A simplified version of the semantic patch that introduces calls to these
functions is as follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
expression e;
@@

- clk_prepare(e);
- clk_enable(e);
+ clk_prepare_enable(e);

@@
expression e;
@@

- clk_disable(e);
- clk_unprepare(e);
+ clk_disable_unprepare(e);
// </smpl>
Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 91b4171f
...@@ -330,36 +330,30 @@ static int __devinit spear_adc_probe(struct platform_device *pdev) ...@@ -330,36 +330,30 @@ static int __devinit spear_adc_probe(struct platform_device *pdev)
goto errout3; goto errout3;
} }
ret = clk_prepare(info->clk); ret = clk_prepare_enable(info->clk);
if (ret) {
dev_err(dev, "failed preparing clock\n");
goto errout4;
}
ret = clk_enable(info->clk);
if (ret) { if (ret) {
dev_err(dev, "failed enabling clock\n"); dev_err(dev, "failed enabling clock\n");
goto errout5; goto errout4;
} }
irq = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
if ((irq < 0) || (irq >= NR_IRQS)) { if ((irq < 0) || (irq >= NR_IRQS)) {
dev_err(dev, "failed getting interrupt resource\n"); dev_err(dev, "failed getting interrupt resource\n");
ret = -EINVAL; ret = -EINVAL;
goto errout6; goto errout5;
} }
ret = devm_request_irq(dev, irq, spear_adc_isr, 0, MOD_NAME, info); ret = devm_request_irq(dev, irq, spear_adc_isr, 0, MOD_NAME, info);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "failed requesting interrupt\n"); dev_err(dev, "failed requesting interrupt\n");
goto errout6; goto errout5;
} }
if (of_property_read_u32(np, "sampling-frequency", if (of_property_read_u32(np, "sampling-frequency",
&info->sampling_freq)) { &info->sampling_freq)) {
dev_err(dev, "sampling-frequency missing in DT\n"); dev_err(dev, "sampling-frequency missing in DT\n");
ret = -EINVAL; ret = -EINVAL;
goto errout6; goto errout5;
} }
/* /*
...@@ -389,16 +383,14 @@ static int __devinit spear_adc_probe(struct platform_device *pdev) ...@@ -389,16 +383,14 @@ static int __devinit spear_adc_probe(struct platform_device *pdev)
ret = iio_device_register(iodev); ret = iio_device_register(iodev);
if (ret) if (ret)
goto errout6; goto errout5;
dev_info(dev, "SPEAR ADC driver loaded, IRQ %d\n", irq); dev_info(dev, "SPEAR ADC driver loaded, IRQ %d\n", irq);
return 0; return 0;
errout6:
clk_disable(info->clk);
errout5: errout5:
clk_unprepare(info->clk); clk_disable_unprepare(info->clk);
errout4: errout4:
clk_put(info->clk); clk_put(info->clk);
errout3: errout3:
...@@ -416,8 +408,7 @@ static int __devexit spear_adc_remove(struct platform_device *pdev) ...@@ -416,8 +408,7 @@ static int __devexit spear_adc_remove(struct platform_device *pdev)
iio_device_unregister(iodev); iio_device_unregister(iodev);
platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL);
clk_disable(info->clk); clk_disable_unprepare(info->clk);
clk_unprepare(info->clk);
clk_put(info->clk); clk_put(info->clk);
iounmap(info->adc_base_spear6xx); iounmap(info->adc_base_spear6xx);
iio_device_free(iodev); iio_device_free(iodev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment