Export a function to allow a consumer to check if its supply regulator is always on. Drivers might wish to take different action based on this - for example skipping time-consuming power-saving preparations that are irrelevant if the regulator cannot be disabled.
Signed-off-by: Richard Fitzgerald <r...@opensource.wolfsonmicro.com> --- drivers/regulator/core.c | 16 ++++++++++++++++ include/linux/regulator/consumer.h | 6 ++++++ 2 files changed, 22 insertions(+), 0 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index cd87c0c..e93db90 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2184,6 +2184,22 @@ int regulator_is_enabled(struct regulator *regulator) EXPORT_SYMBOL_GPL(regulator_is_enabled); /** + * regulator_is_always_on - check if regulator is always on + * @regulator: regulator source + * + * Returns positive if the regulator driver backing the source/client + * is always on, false otherwise. + */ +int regulator_is_always_on(struct regulator *regulator) +{ + if (regulator->always_on) + return 1; + else + return 0; +} +EXPORT_SYMBOL_GPL(regulator_is_always_on); + +/** * regulator_can_change_voltage - check if regulator can change voltage * @regulator: regulator source * diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index f540b14..bd6daef 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -217,6 +217,7 @@ int regulator_bulk_force_disable(int num_consumers, void regulator_bulk_free(int num_consumers, struct regulator_bulk_data *consumers); +int regulator_is_always_on(struct regulator *regulator); int regulator_can_change_voltage(struct regulator *regulator); int regulator_count_voltages(struct regulator *regulator); int regulator_list_voltage(struct regulator *regulator, unsigned selector); @@ -425,6 +426,11 @@ static inline void regulator_bulk_free(int num_consumers, { } +static inline int regulator_is_always_on(struct regulator *regulator) +{ + return 1; +} + static inline int regulator_can_change_voltage(struct regulator *regulator) { return 0; -- 1.7.2.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/