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>
This commit is contained in:
committed by
Mark Brown
parent
bd667d40a9
commit
670666b9e0
@@ -1140,6 +1140,17 @@ static int set_machine_constraints(struct regulator_dev *rdev,
|
||||
}
|
||||
}
|
||||
|
||||
if (rdev->constraints->active_discharge && ops->set_active_discharge) {
|
||||
bool ad_state = (rdev->constraints->active_discharge ==
|
||||
REGULATOR_ACTIVE_DISCHARGE_ENABLE) ? true : false;
|
||||
|
||||
ret = ops->set_active_discharge(rdev, ad_state);
|
||||
if (ret < 0) {
|
||||
rdev_err(rdev, "failed to set active discharge\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
print_constraints(rdev);
|
||||
return 0;
|
||||
out:
|
||||
|
||||
@@ -93,6 +93,12 @@ static void of_get_regulation_constraints(struct device_node *np,
|
||||
|
||||
constraints->soft_start = of_property_read_bool(np,
|
||||
"regulator-soft-start");
|
||||
ret = of_property_read_u32(np, "regulator-active-discharge", &pval);
|
||||
if (!ret) {
|
||||
constraints->active_discharge =
|
||||
(pval) ? REGULATOR_ACTIVE_DISCHARGE_ENABLE :
|
||||
REGULATOR_ACTIVE_DISCHARGE_DISABLE;
|
||||
}
|
||||
|
||||
if (!of_property_read_u32(np, "regulator-initial-mode", &pval)) {
|
||||
if (desc && desc->of_map_mode) {
|
||||
|
||||
Reference in New Issue
Block a user