From 9fbac0b19d530ef9980e83f68c1ebb0a7cd9d9a3 Mon Sep 17 00:00:00 2001 From: David Collins Date: Thu, 9 Apr 2015 14:44:15 -0700 Subject: regulator: core: add regulator_list_corner_voltage function Introduce a regulator_list_corner_voltage function for consumers that need to know the maximum absolute voltage that may be physically configured when a regulator is operating at a given voltage corner. Change-Id: Ide7a0b502796774fcad01f5cb5679f0938c72f96 Signed-off-by: David Collins [adharmap: fixed merge conflicts] Signed-off-by: Abhijeet Dharmapurikar Conflicts: include/linux/regulator/consumer.h --- include/linux/regulator/consumer.h | 6 ++++++ include/linux/regulator/driver.h | 5 +++++ 2 files changed, 11 insertions(+) (limited to 'include/linux/regulator') diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 7812e7fca3f8..734ae72d3c16 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -234,6 +234,7 @@ void regulator_bulk_free(int num_consumers, int regulator_can_change_voltage(struct regulator *regulator); int regulator_count_voltages(struct regulator *regulator); int regulator_list_voltage(struct regulator *regulator, unsigned selector); +int regulator_list_corner_voltage(struct regulator *regulator, int corner); int regulator_is_supported_voltage(struct regulator *regulator, int min_uV, int max_uV); unsigned int regulator_get_linear_step(struct regulator *regulator); @@ -566,6 +567,11 @@ static inline int regulator_list_voltage(struct regulator *regulator, unsigned s return -EINVAL; } +static inline int regulator_list_corner_voltage(struct regulator *regulator, + int corner) +{ + return -EINVAL; +} #endif static inline int regulator_set_voltage_triplet(struct regulator *regulator, diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h index 2593c9a44787..72266ea83d82 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h @@ -88,6 +88,10 @@ struct regulator_linear_range { * if the selector indicates a voltage that is unusable on this system; * or negative errno. Selectors range from zero to one less than * regulator_desc.n_voltages. Voltages may be reported in any order. + * @list_corner_voltage: Return the maximum voltage in microvolts that + * that can be physically configured for the regulator when operating at + * the specified voltage corner or a negative errno if the corner value + * can't be used on this system. * * @set_current_limit: Configure a limit for a current-limited regulator. * The driver should select the current closest to max_uA. @@ -134,6 +138,7 @@ struct regulator_ops { /* enumerate supported voltages */ int (*list_voltage) (struct regulator_dev *, unsigned selector); + int (*list_corner_voltage)(struct regulator_dev *, int corner); /* get/set regulator voltage */ int (*set_voltage) (struct regulator_dev *, int min_uV, int max_uV, -- cgit v1.2.3