mfd: arizona: Disable DCVDD before we destroy the MFD
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Mon, 2 Jun 2014 08:50:40 +0000 (09:50 +0100)
committerLee Jones <lee.jones@linaro.org>
Wed, 9 Jul 2014 13:58:03 +0000 (14:58 +0100)
As DCVDD is probably supplied by a child of the MFD device move its
disable to before we destroy the MFD children as the regulator likely
won't exist after that.

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

index 9d71ebccc8b02b97623d07a5870aa71059607aae..9df02502326a468d868b9781c33389e019021d44 100644 (file)
@@ -1025,6 +1025,8 @@ int arizona_dev_exit(struct arizona *arizona)
 {
        pm_runtime_disable(arizona->dev);
 
+       regulator_disable(arizona->dcvdd);
+
        mfd_remove_devices(arizona->dev);
        arizona_free_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, arizona);
        arizona_free_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, arizona);
@@ -1032,7 +1034,7 @@ int arizona_dev_exit(struct arizona *arizona)
        arizona_irq_exit(arizona);
        if (arizona->pdata.reset)
                gpio_set_value_cansleep(arizona->pdata.reset, 0);
-       regulator_disable(arizona->dcvdd);
+
        regulator_bulk_disable(ARRAY_SIZE(arizona->core_supplies),
                               arizona->core_supplies);
        return 0;