Message ID | 1352458309-18141-1-git-send-email-tushar.behera@linaro.org |
---|---|
State | Rejected |
Headers | show |
On Fri, Nov 09, 2012 at 04:21:49PM +0530, Tushar Behera wrote: > In case of fixed regulators for which voltage cannot be changed, > regulator_is_supported_voltage should return success only if the > min_uV and max_uV parameters are same and it is equal to the current > voltage of the regulator. This makes no sense to me at all. The caller is asking if it's possible to set the voltage between the minimum and maximum values, any voltage in that range should be OK. Your patch makes the function massively less useful. > Currently this patch breaks MMC support for boards on which vmmc is a > fixed regulator and the voltage is not equal to either of 3.3v, 3.0v > or 1.8v. Earlier it used to work if the voltage was less than 3.3v. This sounds like a problem in the MMC framework. If it's happy with non-standard voltages it should be happy with non-standard voltages, or perhaps it should be ignoring voltages if it can't find any sane voltages at all. The regulator framework is accurately answering the question it was asked. It also seems like the MMC framework will be broken by a regulator which can change voltage but not over the full range the MMC framework is interested in, this is essentially just a special case of that situation.
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 1a35251..4a377a7 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1974,7 +1974,7 @@ int regulator_is_supported_voltage(struct regulator *regulator, if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { ret = regulator_get_voltage(regulator); if (ret >= 0) - return (min_uV >= ret && ret <= max_uV); + return (ret == min_uV && ret == max_uV); else return ret; }
Commit c5f3939b8fe0 ("regulator: core: Support fixed voltages in regulator_is_supported_voltage()") adds support for fixed regulators in regulator_is_supported_voltage. In case of fixed regulators for which voltage cannot be changed, regulator_is_supported_voltage should return success only if the min_uV and max_uV parameters are same and it is equal to the current voltage of the regulator. Signed-off-by: Tushar Behera <tushar.behera@linaro.org> --- Currently this patch breaks MMC support for boards on which vmmc is a fixed regulator and the voltage is not equal to either of 3.3v, 3.0v or 1.8v. Earlier it used to work if the voltage was less than 3.3v. drivers/regulator/core.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)