mfd: arizona: Use devres to manage reset GPIO
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Mon, 11 May 2015 12:58:01 +0000 (13:58 +0100)
committerLee Jones <lee.jones@linaro.org>
Mon, 22 Jun 2015 11:25:08 +0000 (12:25 +0100)
This also handily fixes a leak of the GPIO in arizona_dev_exit.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/arizona-core.c

index aed43a549f77dab3fa83d332fe82415304621989..915cc28585d20b16977d823f2871920bad2df521 100644 (file)
@@ -728,9 +728,9 @@ int arizona_dev_init(struct arizona *arizona)
 
        if (arizona->pdata.reset) {
                /* Start out with /RESET low to put the chip into reset */
-               ret = gpio_request_one(arizona->pdata.reset,
-                                      GPIOF_DIR_OUT | GPIOF_INIT_LOW,
-                                      "arizona /RESET");
+               ret = devm_gpio_request_one(arizona->dev, arizona->pdata.reset,
+                                           GPIOF_DIR_OUT | GPIOF_INIT_LOW,
+                                           "arizona /RESET");
                if (ret != 0) {
                        dev_err(dev, "Failed to request /RESET: %d\n", ret);
                        goto err_dcvdd;
@@ -1046,10 +1046,8 @@ int arizona_dev_init(struct arizona *arizona)
 err_irq:
        arizona_irq_exit(arizona);
 err_reset:
-       if (arizona->pdata.reset) {
+       if (arizona->pdata.reset)
                gpio_set_value_cansleep(arizona->pdata.reset, 0);
-               gpio_free(arizona->pdata.reset);
-       }
        regulator_disable(arizona->dcvdd);
 err_enable:
        regulator_bulk_disable(arizona->num_core_supplies,