[U-Boot,RFT,6/8] power: regulator: s2mps11: Add enable delay

Message ID 20190209225411.32756-7-krzk@kernel.org
State RFC
Delegated to: Minkyu Kang
Headers show
Series
  • exynos: Fix reboot on Odroid HC1
Related show

Commit Message

Krzysztof Kozlowski Feb. 9, 2019, 10:54 p.m.
According to datasheet, the output on LDO regulators will start
appearing after 10-15 us.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 drivers/power/regulator/s2mps11_regulator.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Lukasz Majewski Feb. 11, 2019, 7:11 a.m. | #1
Hi Krzysztof,

> According to datasheet, the output on LDO regulators will start
> appearing after 10-15 us.
> 
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  drivers/power/regulator/s2mps11_regulator.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/power/regulator/s2mps11_regulator.c
> b/drivers/power/regulator/s2mps11_regulator.c index
> 723d27f67c9a..1f1581852ee2 100644 ---
> a/drivers/power/regulator/s2mps11_regulator.c +++
> b/drivers/power/regulator/s2mps11_regulator.c @@ -551,7 +551,14 @@
> static int ldo_get_enable(struct udevice *dev) 
>  static int ldo_set_enable(struct udevice *dev, bool enable)
>  {
> -	return s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
> +	int ret;
> +
> +	ret = s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
> +
> +	/* Wait the "enable delay" for voltage to start to rise */
> +	udelay(15);

I assume, that this value is the same as in the Linux driver?

> +
> +	return ret;
>  }
>  
>  static int ldo_get_mode(struct udevice *dev)




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Krzysztof Kozlowski Feb. 11, 2019, 8:20 a.m. | #2
On Mon, 11 Feb 2019 at 08:11, Lukasz Majewski <lukma@denx.de> wrote:
>
> Hi Krzysztof,
>
> > According to datasheet, the output on LDO regulators will start
> > appearing after 10-15 us.
> >
> > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > ---
> >  drivers/power/regulator/s2mps11_regulator.c | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/power/regulator/s2mps11_regulator.c
> > b/drivers/power/regulator/s2mps11_regulator.c index
> > 723d27f67c9a..1f1581852ee2 100644 ---
> > a/drivers/power/regulator/s2mps11_regulator.c +++
> > b/drivers/power/regulator/s2mps11_regulator.c @@ -551,7 +551,14 @@
> > static int ldo_get_enable(struct udevice *dev)
> >  static int ldo_set_enable(struct udevice *dev, bool enable)
> >  {
> > -     return s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
> > +     int ret;
> > +
> > +     ret = s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
> > +
> > +     /* Wait the "enable delay" for voltage to start to rise */
> > +     udelay(15);
>
> I assume, that this value is the same as in the Linux driver?

No, Linux drivers does not do it. It should... but we never
implemented it there.

Best regards,
Krzysztof

Patch

diff --git a/drivers/power/regulator/s2mps11_regulator.c b/drivers/power/regulator/s2mps11_regulator.c
index 723d27f67c9a..1f1581852ee2 100644
--- a/drivers/power/regulator/s2mps11_regulator.c
+++ b/drivers/power/regulator/s2mps11_regulator.c
@@ -551,7 +551,14 @@  static int ldo_get_enable(struct udevice *dev)
 
 static int ldo_set_enable(struct udevice *dev, bool enable)
 {
-	return s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
+	int ret;
+
+	ret = s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
+
+	/* Wait the "enable delay" for voltage to start to rise */
+	udelay(15);
+
+	return ret;
 }
 
 static int ldo_get_mode(struct udevice *dev)