summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2018-07-26 14:47:24 +0300
committerTom Rini <trini@konsulko.com>2018-08-20 03:38:39 +0300
commit39dd00fc5dbae60c4165a06b50420a36270c68ab (patch)
tree34d0f2993b9960d8120ea43f8464613494c90492 /drivers/power
parent4aee624c927519fc9edc79ccc247486ac3f68392 (diff)
downloadu-boot-39dd00fc5dbae60c4165a06b50420a36270c68ab.tar.xz
drivers: regulator: fixed: add u-boot, off-on-delay-us
Add u-boot,off-on-delay-us for fixed regulator. Depends on board design, the gpio regulator sometimes connects with a big capacitance. When need to off, then on the regulator, if there is no enough delay, the voltage does not drop to 0, so introduce this property to handle such case. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/regulator/fixed.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/power/regulator/fixed.c b/drivers/power/regulator/fixed.c
index 0be5b7bd51..a99aa78310 100644
--- a/drivers/power/regulator/fixed.c
+++ b/drivers/power/regulator/fixed.c
@@ -16,6 +16,7 @@
struct fixed_regulator_platdata {
struct gpio_desc gpio; /* GPIO for regulator enable control */
unsigned int startup_delay_us;
+ unsigned int off_on_delay_us;
};
static int fixed_regulator_ofdata_to_platdata(struct udevice *dev)
@@ -50,6 +51,8 @@ static int fixed_regulator_ofdata_to_platdata(struct udevice *dev)
/* Get optional ramp up delay */
dev_pdata->startup_delay_us = dev_read_u32_default(dev,
"startup-delay-us", 0);
+ dev_pdata->off_on_delay_us =
+ dev_read_u32_default(dev, "u-boot,off-on-delay-us", 0);
return 0;
}
@@ -123,6 +126,9 @@ static int fixed_regulator_set_enable(struct udevice *dev, bool enable)
udelay(dev_pdata->startup_delay_us);
debug("%s: done\n", __func__);
+ if (!enable && dev_pdata->off_on_delay_us)
+ udelay(dev_pdata->off_on_delay_us);
+
return 0;
}