diff options
author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2015-05-11 13:58:02 +0100 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2015-06-22 12:25:09 +0100 |
commit | 2229875dc00f38b95d04fecfc67858ba2221a563 (patch) | |
tree | 8f6ecf7eb7e1c32f7296d21bd5930ed8bb60882e /drivers/mfd/arizona-core.c | |
parent | 5f056bf04201dc533f5d10acf028435ede0a1442 (diff) | |
download | linux-2229875dc00f38b95d04fecfc67858ba2221a563.tar.bz2 |
mfd: arizona: Factor out hard reset into helper functions
This patch adds functions for enabling and disabling the physical reset
line. This will be helpful in future refactoring.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/mfd/arizona-core.c')
-rw-r--r-- | drivers/mfd/arizona-core.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 915cc28585d2..f30d92538584 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -250,6 +250,20 @@ static int arizona_wait_for_boot(struct arizona *arizona) return ret; } +static inline void arizona_enable_reset(struct arizona *arizona) +{ + if (arizona->pdata.reset) + gpio_set_value_cansleep(arizona->pdata.reset, 0); +} + +static void arizona_disable_reset(struct arizona *arizona) +{ + if (arizona->pdata.reset) { + gpio_set_value_cansleep(arizona->pdata.reset, 1); + msleep(1); + } +} + static int arizona_apply_hardware_patch(struct arizona* arizona) { unsigned int fll, sysclk; @@ -751,10 +765,7 @@ int arizona_dev_init(struct arizona *arizona) goto err_enable; } - if (arizona->pdata.reset) { - gpio_set_value_cansleep(arizona->pdata.reset, 1); - msleep(1); - } + arizona_disable_reset(arizona); regcache_cache_only(arizona->regmap, false); @@ -1046,8 +1057,7 @@ int arizona_dev_init(struct arizona *arizona) err_irq: arizona_irq_exit(arizona); err_reset: - if (arizona->pdata.reset) - gpio_set_value_cansleep(arizona->pdata.reset, 0); + arizona_enable_reset(arizona); regulator_disable(arizona->dcvdd); err_enable: regulator_bulk_disable(arizona->num_core_supplies, @@ -1072,8 +1082,7 @@ int arizona_dev_exit(struct arizona *arizona) arizona_free_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, arizona); arizona_free_irq(arizona, ARIZONA_IRQ_CLKGEN_ERR, arizona); arizona_irq_exit(arizona); - if (arizona->pdata.reset) - gpio_set_value_cansleep(arizona->pdata.reset, 0); + arizona_enable_reset(arizona); regulator_bulk_disable(arizona->num_core_supplies, arizona->core_supplies); |