summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/fixed.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 7e649199bf..2515d3e70d 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;