]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mfd: twl4030-madc: Use managed resources
authorSebastian Reichel <sre@debian.org>
Sun, 16 Mar 2014 01:43:25 +0000 (02:43 +0100)
committerLee Jones <lee.jones@linaro.org>
Tue, 18 Mar 2014 08:07:15 +0000 (08:07 +0000)
Update twl4030-madc driver to use managed resources.

Signed-off-by: Sebastian Reichel <sre@debian.org>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Tested-by: Marek Belisko <marek@goldelico.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/twl4030-madc.c

index 4c583e47133993b59dd512f1e3ec7316fb68c7fb..54585617ab51e87935b9059bc06b2d761503f9bd 100644 (file)
@@ -702,14 +702,14 @@ static int twl4030_madc_probe(struct platform_device *pdev)
 {
        struct twl4030_madc_data *madc;
        struct twl4030_madc_platform_data *pdata = dev_get_platdata(&pdev->dev);
-       int ret;
+       int irq, ret;
        u8 regval;
 
        if (!pdata) {
                dev_err(&pdev->dev, "platform_data not available\n");
                return -EINVAL;
        }
-       madc = kzalloc(sizeof(*madc), GFP_KERNEL);
+       madc = devm_kzalloc(&pdev->dev, sizeof(*madc), GFP_KERNEL);
        if (!madc)
                return -ENOMEM;
 
@@ -726,7 +726,7 @@ static int twl4030_madc_probe(struct platform_device *pdev)
            TWL4030_MADC_ISR1 : TWL4030_MADC_ISR2;
        ret = twl4030_madc_set_power(madc, 1);
        if (ret < 0)
-               goto err_power;
+               return ret;
        ret = twl4030_madc_set_current_generator(madc, 0, 1);
        if (ret < 0)
                goto err_current_generator;
@@ -770,7 +770,9 @@ static int twl4030_madc_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, madc);
        mutex_init(&madc->lock);
-       ret = request_threaded_irq(platform_get_irq(pdev, 0), NULL,
+
+       irq = platform_get_irq(pdev, 0);
+       ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
                                   twl4030_madc_threaded_irq_handler,
                                   IRQF_TRIGGER_RISING, "twl4030_madc", madc);
        if (ret) {
@@ -783,9 +785,6 @@ err_i2c:
        twl4030_madc_set_current_generator(madc, 0, 0);
 err_current_generator:
        twl4030_madc_set_power(madc, 0);
-err_power:
-       kfree(madc);
-
        return ret;
 }
 
@@ -793,10 +792,8 @@ static int twl4030_madc_remove(struct platform_device *pdev)
 {
        struct twl4030_madc_data *madc = platform_get_drvdata(pdev);
 
-       free_irq(platform_get_irq(pdev, 0), madc);
        twl4030_madc_set_current_generator(madc, 0, 0);
        twl4030_madc_set_power(madc, 0);
-       kfree(madc);
 
        return 0;
 }