[U-Boot] [PATCH] power: regulator: denied disable on always-on regulator

From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com ---
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev); + struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
+ uc_pdata = dev_get_uclass_platdata(dev); + if (!enable && uc_pdata->always_on) + return -EACCES; + return ops->set_enable(dev, enable); }

On 31 May 2018 at 01:57, Patrice Chotard patrice.chotard@st.com wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org

Hi Jaehoon
It's a gentle reminder to not forgot this patch.
Thanks
Patrice
On 05/31/2018 09:57 AM, Patrice Chotard wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
uc_pdata = dev_get_uclass_platdata(dev);
if (!enable && uc_pdata->always_on)
return -EACCES;
return ops->set_enable(dev, enable); }

On 31/05/2018 08:57, Patrice Chotard wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
uc_pdata = dev_get_uclass_platdata(dev);
if (!enable && uc_pdata->always_on)
return -EACCES;
return ops->set_enable(dev, enable);
}
Another ping for this, I've just spent a few hours this morning debugging the firefly-rk3288 failing to boot due to a required regulator being disabled in the emmc reset routine. I came up with almost the exact same patch, so
Reviewed-by: Jack Mitchell jack@embed.me.uk Tested-by: Jack Mitchell jack@embed.me.uk

Hi Jaehoon
This patch has been updated to "superseded" in patchwork, i don't know if it was intentional or not.
Nevertheless, Jack has encountered the same issue as us on its platform.
Do you want me to resend it or will you pick up it with reviewed-by and tested-by added by Jack ?
Regards
Patrice
On 10/30/18 11:50 AM, Jack Mitchell wrote:
On 31/05/2018 08:57, Patrice Chotard wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
uc_pdata = dev_get_uclass_platdata(dev);
if (!enable && uc_pdata->always_on)
return -EACCES;
return ops->set_enable(dev, enable);
}
Another ping for this, I've just spent a few hours this morning debugging the firefly-rk3288 failing to boot due to a required regulator being disabled in the emmc reset routine. I came up with almost the exact same patch, so
Reviewed-by: Jack Mitchell jack@embed.me.uk Tested-by: Jack Mitchell jack@embed.me.uk _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

On 31/05/2018 08:57, Patrice Chotard wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
uc_pdata = dev_get_uclass_platdata(dev);
if (!enable && uc_pdata->always_on)
return -EACCES;
return ops->set_enable(dev, enable);
}
Another ping for this, I've just spent a few hours this morning debugging the firefly-rk3288 failing to boot due to a required regulator being disabled in the emmc reset routine. I came up with almost the exact same patch, so
Reviewed-by: Jack Mitchell jack@embed.me.uk Tested-by: Jack Mitchell jack@embed.me.uk

On 31/05/2018 08:57, Patrice Chotard wrote:
From: Patrick Delaunay patrick.delaunay@st.com
Don't disable regulator which are tagged as "regulator-always-on" in DT.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
drivers/power/regulator/regulator-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 4da8e43259fc..4511625ff251 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -106,10 +106,15 @@ int regulator_get_enable(struct udevice *dev) int regulator_set_enable(struct udevice *dev, bool enable) { const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
struct dm_regulator_uclass_platdata *uc_pdata;
if (!ops || !ops->set_enable) return -ENOSYS;
uc_pdata = dev_get_uclass_platdata(dev);
if (!enable && uc_pdata->always_on)
return -EACCES;
return ops->set_enable(dev, enable);
}
Another ping for this, I've just spent a few hours this morning debugging the firefly-rk3288 failing to boot due to a required regulator being disabled in the emmc reset routine. I came up with almost the exact same patch, so
Reviewed-by: Jack Mitchell jack@embed.me.uk Tested-by: Jack Mitchell jack@embed.me.uk
participants (4)
-
Jack Mitchell
-
Patrice CHOTARD
-
Patrice Chotard
-
Simon Glass