staging: iio: spear_adc: Use devm_iio_device_alloc

Using devm_iio_device_alloc makes code simpler.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: Stefan Roese <sr@denx.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
Sachin Kamat 2013-07-22 12:02:00 +01:00 committed by Jonathan Cameron
parent 073c33d552
commit 8c7f6d562e
1 changed files with 12 additions and 18 deletions

View File

@ -300,11 +300,10 @@ static int spear_adc_probe(struct platform_device *pdev)
int ret = -ENODEV; int ret = -ENODEV;
int irq; int irq;
iodev = iio_device_alloc(sizeof(struct spear_adc_info)); iodev = devm_iio_device_alloc(dev, sizeof(struct spear_adc_info));
if (!iodev) { if (!iodev) {
dev_err(dev, "failed allocating iio device\n"); dev_err(dev, "failed allocating iio device\n");
ret = -ENOMEM; return -ENOMEM;
goto errout1;
} }
info = iio_priv(iodev); info = iio_priv(iodev);
@ -318,8 +317,7 @@ static int spear_adc_probe(struct platform_device *pdev)
info->adc_base_spear6xx = of_iomap(np, 0); info->adc_base_spear6xx = of_iomap(np, 0);
if (!info->adc_base_spear6xx) { if (!info->adc_base_spear6xx) {
dev_err(dev, "failed mapping memory\n"); dev_err(dev, "failed mapping memory\n");
ret = -ENOMEM; return -ENOMEM;
goto errout2;
} }
info->adc_base_spear3xx = info->adc_base_spear3xx =
(struct adc_regs_spear3xx *)info->adc_base_spear6xx; (struct adc_regs_spear3xx *)info->adc_base_spear6xx;
@ -327,33 +325,33 @@ static int spear_adc_probe(struct platform_device *pdev)
info->clk = clk_get(dev, NULL); info->clk = clk_get(dev, NULL);
if (IS_ERR(info->clk)) { if (IS_ERR(info->clk)) {
dev_err(dev, "failed getting clock\n"); dev_err(dev, "failed getting clock\n");
goto errout3; goto errout1;
} }
ret = clk_prepare_enable(info->clk); ret = clk_prepare_enable(info->clk);
if (ret) { if (ret) {
dev_err(dev, "failed enabling clock\n"); dev_err(dev, "failed enabling clock\n");
goto errout4; goto errout2;
} }
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 errout5; goto errout3;
} }
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 errout5; goto errout3;
} }
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 errout5; goto errout3;
} }
/* /*
@ -383,21 +381,18 @@ static int spear_adc_probe(struct platform_device *pdev)
ret = iio_device_register(iodev); ret = iio_device_register(iodev);
if (ret) if (ret)
goto errout5; goto errout3;
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;
errout5:
clk_disable_unprepare(info->clk);
errout4:
clk_put(info->clk);
errout3: errout3:
iounmap(info->adc_base_spear6xx); clk_disable_unprepare(info->clk);
errout2: errout2:
iio_device_free(iodev); clk_put(info->clk);
errout1: errout1:
iounmap(info->adc_base_spear6xx);
return ret; return ret;
} }
@ -410,7 +405,6 @@ static int spear_adc_remove(struct platform_device *pdev)
clk_disable_unprepare(info->clk); clk_disable_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);
return 0; return 0;
} }