Currently regulator_set_voltage() returns zero when support for regulators isn't present in kernel, i.e. CONFIG_REGULATOR=n.
Make it return -EINVAL to propagate error instead of success here. Audit of all users of this routine is done to make sure nothing breaks due to this change.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- V1->V2: - New patch as suggested by Mark.
include/linux/regulator/consumer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 1a4a8c1..28fa089 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -394,7 +394,7 @@ static inline void regulator_bulk_free(int num_consumers, static inline int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) { - return 0; + return -EINVAL; }
static inline int regulator_get_voltage(struct regulator *regulator)
We already have dummy implementation for most of the regulators APIs for !CONFIG_REGULATOR case and were missing it for regulator_set_voltage_time().
Found this issue while compiling cpufreq-cpu0 driver without regulators support in kernel.
drivers/cpufreq/cpufreq-cpu0.c: In function ‘cpu0_cpufreq_probe’: drivers/cpufreq/cpufreq-cpu0.c:186:3: error: implicit declaration of function ‘regulator_set_voltage_time’ [-Werror=implicit-function-declaration]
Fix this by adding dummy definition for regulator_set_voltage_time().
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- V1->V2: return -EINVAL instead of zero.
include/linux/regulator/consumer.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 28fa089..7563f8b 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -397,6 +397,12 @@ static inline int regulator_set_voltage(struct regulator *regulator, return -EINVAL; }
+static inline int regulator_set_voltage_time(struct regulator *regulator, + int old_uV, int new_uV) +{ + return -EINVAL; +} + static inline int regulator_get_voltage(struct regulator *regulator) { return -EINVAL;
cpufreq-cpu0 uses thermal framework to register a cooling device, but doesn't depend on it as there are dummy calls provided by thermal layer when CONFIG_THERMAL=n. And when these calls fail, the driver is still usable.
Similar explanation is valid for regulators as well. We do have dummy calls available for regulator APIs and the driver can work even when those calls fail.
So, we don't really need to mention thermal and regulators as a dependency for cpufreq-cpu0 in Kconfig. Remove it.
Cc: Shawn Guo shawn.guo@linaro.org Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- V1->V2: No change.
drivers/cpufreq/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig index 1fbe11f..e473d65 100644 --- a/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig @@ -185,7 +185,7 @@ config CPU_FREQ_GOV_CONSERVATIVE
config GENERIC_CPUFREQ_CPU0 tristate "Generic CPU0 cpufreq driver" - depends on HAVE_CLK && REGULATOR && OF && THERMAL && CPU_THERMAL + depends on HAVE_CLK && OF select PM_OPP help This adds a generic cpufreq driver for CPU0 frequency management.
On Monday, June 02, 2014 12:59:23 PM Viresh Kumar wrote:
Currently regulator_set_voltage() returns zero when support for regulators isn't present in kernel, i.e. CONFIG_REGULATOR=n.
Make it return -EINVAL to propagate error instead of success here. Audit of all users of this routine is done to make sure nothing breaks due to this change.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org
Well, I'd say this patch series is for Mark and I'm fine with patch [3/3].
Thanks!
V1->V2: - New patch as suggested by Mark.
include/linux/regulator/consumer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 1a4a8c1..28fa089 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -394,7 +394,7 @@ static inline void regulator_bulk_free(int num_consumers, static inline int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) {
- return 0;
- return -EINVAL;
} static inline int regulator_get_voltage(struct regulator *regulator)
linaro-kernel@lists.linaro.org