Support the "regulator-always-on" property for fixed regulators.
The regulator gets enabled on probe and subsequent disable calls are
ignored.

Signed-off-by: Steffen Trumtrar <[email protected]>
---
 drivers/regulator/fixed.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 7e64919..2515d3e 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -27,6 +27,7 @@
 struct regulator_fixed {
        int gpio;
        int active_low;
+       int always_on;
        struct regulator_dev rdev;
 };
 
@@ -44,6 +45,9 @@ static int regulator_fixed_disable(struct regulator_dev *rdev)
 {
        struct regulator_fixed *fix = container_of(rdev, struct 
regulator_fixed, rdev);
 
+       if (fix->always_on)
+               return 0;
+
        if (!gpio_is_valid(fix->gpio))
                return 0;
 
@@ -79,6 +83,11 @@ static int regulator_fixed_probe(struct device_d *dev)
 
        fix->rdev.ops = &fixed_ops;
 
+       if (of_find_property(dev->device_node, "regulator-always-on", NULL)) {
+               fix->always_on = 1;
+               regulator_fixed_enable(&fix->rdev);
+       }
+
        ret = of_regulator_register(&fix->rdev, dev->device_node);
        if (ret)
                return ret;
-- 
2.0.0


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to