staging: iio: lpc32xx_adc: Use devm_* APIs
devm_* APIs are device managed and make code simpler. This also fixes an error in return type during clk_get failure. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Cc: Roland Stigge <stigge@antcom.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
6a88fa4826
commit
7d456e4ea2
|
@ -137,43 +137,39 @@ static int lpc32xx_adc_probe(struct platform_device *pdev)
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
dev_err(&pdev->dev, "failed to get platform I/O memory\n");
|
dev_err(&pdev->dev, "failed to get platform I/O memory\n");
|
||||||
retval = -EBUSY;
|
return -EBUSY;
|
||||||
goto errout1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
iodev = iio_device_alloc(sizeof(struct lpc32xx_adc_info));
|
iodev = devm_iio_device_alloc(&pdev->dev, sizeof(*info));
|
||||||
if (!iodev) {
|
if (!iodev)
|
||||||
dev_err(&pdev->dev, "failed allocating iio device\n");
|
return -ENOMEM;
|
||||||
retval = -ENOMEM;
|
|
||||||
goto errout1;
|
|
||||||
}
|
|
||||||
|
|
||||||
info = iio_priv(iodev);
|
info = iio_priv(iodev);
|
||||||
|
|
||||||
info->adc_base = ioremap(res->start, resource_size(res));
|
info->adc_base = devm_ioremap(&pdev->dev, res->start,
|
||||||
|
resource_size(res));
|
||||||
if (!info->adc_base) {
|
if (!info->adc_base) {
|
||||||
dev_err(&pdev->dev, "failed mapping memory\n");
|
dev_err(&pdev->dev, "failed mapping memory\n");
|
||||||
retval = -EBUSY;
|
return -EBUSY;
|
||||||
goto errout2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info->clk = clk_get(&pdev->dev, NULL);
|
info->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
if (IS_ERR(info->clk)) {
|
if (IS_ERR(info->clk)) {
|
||||||
dev_err(&pdev->dev, "failed getting clock\n");
|
dev_err(&pdev->dev, "failed getting clock\n");
|
||||||
goto errout3;
|
return PTR_ERR(info->clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
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(&pdev->dev, "failed getting interrupt resource\n");
|
dev_err(&pdev->dev, "failed getting interrupt resource\n");
|
||||||
retval = -EINVAL;
|
return -EINVAL;
|
||||||
goto errout4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = request_irq(irq, lpc32xx_adc_isr, 0, MOD_NAME, info);
|
retval = devm_request_irq(&pdev->dev, irq, lpc32xx_adc_isr, 0,
|
||||||
|
MOD_NAME, info);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&pdev->dev, "failed requesting interrupt\n");
|
dev_err(&pdev->dev, "failed requesting interrupt\n");
|
||||||
goto errout4;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
platform_set_drvdata(pdev, iodev);
|
platform_set_drvdata(pdev, iodev);
|
||||||
|
@ -189,35 +185,18 @@ static int lpc32xx_adc_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
retval = iio_device_register(iodev);
|
retval = iio_device_register(iodev);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto errout5;
|
return retval;
|
||||||
|
|
||||||
dev_info(&pdev->dev, "LPC32XX ADC driver loaded, IRQ %d\n", irq);
|
dev_info(&pdev->dev, "LPC32XX ADC driver loaded, IRQ %d\n", irq);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
errout5:
|
|
||||||
free_irq(irq, info);
|
|
||||||
errout4:
|
|
||||||
clk_put(info->clk);
|
|
||||||
errout3:
|
|
||||||
iounmap(info->adc_base);
|
|
||||||
errout2:
|
|
||||||
iio_device_free(iodev);
|
|
||||||
errout1:
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lpc32xx_adc_remove(struct platform_device *pdev)
|
static int lpc32xx_adc_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct iio_dev *iodev = platform_get_drvdata(pdev);
|
struct iio_dev *iodev = platform_get_drvdata(pdev);
|
||||||
struct lpc32xx_adc_info *info = iio_priv(iodev);
|
|
||||||
int irq = platform_get_irq(pdev, 0);
|
|
||||||
|
|
||||||
iio_device_unregister(iodev);
|
iio_device_unregister(iodev);
|
||||||
free_irq(irq, info);
|
|
||||||
clk_put(info->clk);
|
|
||||||
iounmap(info->adc_base);
|
|
||||||
iio_device_free(iodev);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue