power: regulator: Introduce regulator_set_value_force function

In case we want to force a particular value on a regulator
irrespective of the min/max constraints for testing purposes
one can call regulator_set_value_force function.

Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Keerthy 2016-10-26 13:42:30 +05:30 committed by Simon Glass
parent 543bd27353
commit 2f5d532f3b
3 changed files with 28 additions and 1 deletions

View File

@ -292,7 +292,10 @@ static int do_value(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return CMD_RET_FAILURE;
}
ret = regulator_set_value(dev, value);
if (!force)
ret = regulator_set_value(dev, value);
else
ret = regulator_set_value_force(dev, value);
if (ret) {
printf("Regulator: %s - can't set the Voltage!\n",
uc_pdata->name);

View File

@ -48,6 +48,20 @@ int regulator_set_value(struct udevice *dev, int uV)
return ops->set_value(dev, uV);
}
/*
* To be called with at most caution as there is no check
* before setting the actual voltage value.
*/
int regulator_set_value_force(struct udevice *dev, int uV)
{
const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
if (!ops || !ops->set_value)
return -ENOSYS;
return ops->set_value(dev, uV);
}
int regulator_get_current(struct udevice *dev)
{
const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);

View File

@ -260,6 +260,16 @@ int regulator_get_value(struct udevice *dev);
*/
int regulator_set_value(struct udevice *dev, int uV);
/**
* regulator_set_value_force: set the microvoltage value of a given regulator
* without any min-,max condition check
*
* @dev - pointer to the regulator device
* @uV - the output value to set [micro Volts]
* @return - 0 on success or -errno val if fails
*/
int regulator_set_value_force(struct udevice *dev, int uV);
/**
* regulator_get_current: get microampere value of a given regulator
*