diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2016-03-02 05:54:46 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-03-02 09:13:05 -0500 |
commit | 670666b9e0aff40c65d8061a2f53e79eee238685 (patch) | |
tree | 04660dbf7aa36d14372c31d58a6647af77c94415 /drivers/regulator | |
parent | bd667d40a999e35c270e424b6d550410cb2c6d06 (diff) |
regulator: core: Add support for active-discharge configuration
Add support to enable/disable active discharge of regulator via
machine constraints. This configuration is done when setting
machine constraint during regulator register and if regulator
driver implemented the callback ops.
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/core.c | 11 | ||||
-rw-r--r-- | drivers/regulator/of_regulator.c | 6 |
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 744c9889f88d..7ebb7c899158 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
@@ -1140,6 +1140,17 @@ static int set_machine_constraints(struct regulator_dev *rdev, | |||
1140 | } | 1140 | } |
1141 | } | 1141 | } |
1142 | 1142 | ||
1143 | if (rdev->constraints->active_discharge && ops->set_active_discharge) { | ||
1144 | bool ad_state = (rdev->constraints->active_discharge == | ||
1145 | REGULATOR_ACTIVE_DISCHARGE_ENABLE) ? true : false; | ||
1146 | |||
1147 | ret = ops->set_active_discharge(rdev, ad_state); | ||
1148 | if (ret < 0) { | ||
1149 | rdev_err(rdev, "failed to set active discharge\n"); | ||
1150 | return ret; | ||
1151 | } | ||
1152 | } | ||
1153 | |||
1143 | print_constraints(rdev); | 1154 | print_constraints(rdev); |
1144 | return 0; | 1155 | return 0; |
1145 | out: | 1156 | out: |
diff --git a/drivers/regulator/of_regulator.c b/drivers/regulator/of_regulator.c index 499e437c7e91..fe2e33441dae 100644 --- a/drivers/regulator/of_regulator.c +++ b/drivers/regulator/of_regulator.c | |||
@@ -93,6 +93,12 @@ static void of_get_regulation_constraints(struct device_node *np, | |||
93 | 93 | ||
94 | constraints->soft_start = of_property_read_bool(np, | 94 | constraints->soft_start = of_property_read_bool(np, |
95 | "regulator-soft-start"); | 95 | "regulator-soft-start"); |
96 | ret = of_property_read_u32(np, "regulator-active-discharge", &pval); | ||
97 | if (!ret) { | ||
98 | constraints->active_discharge = | ||
99 | (pval) ? REGULATOR_ACTIVE_DISCHARGE_ENABLE : | ||
100 | REGULATOR_ACTIVE_DISCHARGE_DISABLE; | ||
101 | } | ||
96 | 102 | ||
97 | if (!of_property_read_u32(np, "regulator-initial-mode", &pval)) { | 103 | if (!of_property_read_u32(np, "regulator-initial-mode", &pval)) { |
98 | if (desc && desc->of_map_mode) { | 104 | if (desc && desc->of_map_mode) { |