diff options
-rw-r--r-- | drivers/iio/adc/exynos_adc.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c index 9809fc9a35d2..d25b262193a7 100644 --- a/drivers/iio/adc/exynos_adc.c +++ b/drivers/iio/adc/exynos_adc.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/of_irq.h> | 33 | #include <linux/of_irq.h> |
34 | #include <linux/regulator/consumer.h> | 34 | #include <linux/regulator/consumer.h> |
35 | #include <linux/of_platform.h> | 35 | #include <linux/of_platform.h> |
36 | #include <linux/err.h> | ||
36 | 37 | ||
37 | #include <linux/iio/iio.h> | 38 | #include <linux/iio/iio.h> |
38 | #include <linux/iio/machine.h> | 39 | #include <linux/iio/machine.h> |
@@ -261,7 +262,7 @@ static int exynos_adc_probe(struct platform_device *pdev) | |||
261 | if (!np) | 262 | if (!np) |
262 | return ret; | 263 | return ret; |
263 | 264 | ||
264 | indio_dev = iio_device_alloc(sizeof(struct exynos_adc)); | 265 | indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct exynos_adc)); |
265 | if (!indio_dev) { | 266 | if (!indio_dev) { |
266 | dev_err(&pdev->dev, "failed allocating iio device\n"); | 267 | dev_err(&pdev->dev, "failed allocating iio device\n"); |
267 | return -ENOMEM; | 268 | return -ENOMEM; |
@@ -271,23 +272,18 @@ static int exynos_adc_probe(struct platform_device *pdev) | |||
271 | 272 | ||
272 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 273 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
273 | info->regs = devm_ioremap_resource(&pdev->dev, mem); | 274 | info->regs = devm_ioremap_resource(&pdev->dev, mem); |
274 | if (IS_ERR(info->regs)) { | 275 | if (IS_ERR(info->regs)) |
275 | ret = PTR_ERR(info->regs); | 276 | return PTR_ERR(info->regs); |
276 | goto err_iio; | ||
277 | } | ||
278 | 277 | ||
279 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 278 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
280 | info->enable_reg = devm_ioremap_resource(&pdev->dev, mem); | 279 | info->enable_reg = devm_ioremap_resource(&pdev->dev, mem); |
281 | if (IS_ERR(info->enable_reg)) { | 280 | if (IS_ERR(info->enable_reg)) |
282 | ret = PTR_ERR(info->enable_reg); | 281 | return PTR_ERR(info->enable_reg); |
283 | goto err_iio; | ||
284 | } | ||
285 | 282 | ||
286 | irq = platform_get_irq(pdev, 0); | 283 | irq = platform_get_irq(pdev, 0); |
287 | if (irq < 0) { | 284 | if (irq < 0) { |
288 | dev_err(&pdev->dev, "no irq resource?\n"); | 285 | dev_err(&pdev->dev, "no irq resource?\n"); |
289 | ret = irq; | 286 | return irq; |
290 | goto err_iio; | ||
291 | } | 287 | } |
292 | 288 | ||
293 | info->irq = irq; | 289 | info->irq = irq; |
@@ -299,7 +295,7 @@ static int exynos_adc_probe(struct platform_device *pdev) | |||
299 | if (ret < 0) { | 295 | if (ret < 0) { |
300 | dev_err(&pdev->dev, "failed requesting irq, irq = %d\n", | 296 | dev_err(&pdev->dev, "failed requesting irq, irq = %d\n", |
301 | info->irq); | 297 | info->irq); |
302 | goto err_iio; | 298 | return ret; |
303 | } | 299 | } |
304 | 300 | ||
305 | writel(1, info->enable_reg); | 301 | writel(1, info->enable_reg); |
@@ -365,8 +361,6 @@ err_iio_dev: | |||
365 | iio_device_unregister(indio_dev); | 361 | iio_device_unregister(indio_dev); |
366 | err_irq: | 362 | err_irq: |
367 | free_irq(info->irq, info); | 363 | free_irq(info->irq, info); |
368 | err_iio: | ||
369 | iio_device_free(indio_dev); | ||
370 | return ret; | 364 | return ret; |
371 | } | 365 | } |
372 | 366 | ||
@@ -382,7 +376,6 @@ static int exynos_adc_remove(struct platform_device *pdev) | |||
382 | writel(0, info->enable_reg); | 376 | writel(0, info->enable_reg); |
383 | iio_device_unregister(indio_dev); | 377 | iio_device_unregister(indio_dev); |
384 | free_irq(info->irq, info); | 378 | free_irq(info->irq, info); |
385 | iio_device_free(indio_dev); | ||
386 | 379 | ||
387 | return 0; | 380 | return 0; |
388 | } | 381 | } |