diff options
author | Mark Brown <broonie@linaro.org> | 2013-07-29 21:42:42 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-07-31 09:56:39 +0100 |
commit | de1dd9fd2156874b45803299b3b27e65d5defdd9 (patch) | |
tree | 031b04b662f93f38aab24fc4273376e07558327e /include/linux/regulator | |
parent | 4bdfb2729c3a396fe7400c9332c49aee2b971bd8 (diff) | |
download | op-kernel-dev-de1dd9fd2156874b45803299b3b27e65d5defdd9.zip op-kernel-dev-de1dd9fd2156874b45803299b3b27e65d5defdd9.tar.gz |
regulator: core: Provide hints to the core about optional supplies
While the majority of supplies on devices are mandatory and can't be
physically omitted for electrical reasons some devices do have optional
supplies and need to know if they are missing, MMC being the most common
of these.
Currently the core accurately reports all errors when regulators are
requested since it does not know if the supply is one that must be provided
even if by a regulator software does not know about or if it is one that
may genuinely be disconnected. In order to allow this behaviour to be
changed and stub regulators to be provided in the former case add a new
regulator request function regulator_get_optional() which provides a hint
to the core that the regulator may genuinely not be connected.
Currently the implementation is identical to the current behaviour, future
patches will add support in the core for returning stub regulators in the
case where normal regulator_get() fails and the board has requested it.
Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'include/linux/regulator')
-rw-r--r-- | include/linux/regulator/consumer.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 60da4a6..e2bac6d 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -137,6 +137,10 @@ struct regulator *__must_check devm_regulator_get(struct device *dev, const char *id); struct regulator *__must_check regulator_get_exclusive(struct device *dev, const char *id); +struct regulator *__must_check regulator_get_optional(struct device *dev, + const char *id); +struct regulator *__must_check devm_regulator_get_optional(struct device *dev, + const char *id); void regulator_put(struct regulator *regulator); void devm_regulator_put(struct regulator *regulator); @@ -212,14 +216,26 @@ static inline struct regulator *__must_check regulator_get(struct device *dev, } static inline struct regulator *__must_check +devm_regulator_get(struct device *dev, const char *id) +{ + return NULL; +} + +static inline struct regulator *__must_check regulator_get_exclusive(struct device *dev, const char *id) { return NULL; } +static inline struct regulator *__must_check +regulator_get_optional(struct device *dev, const char *id) +{ + return NULL; +} + static inline struct regulator *__must_check -devm_regulator_get(struct device *dev, const char *id) +devm_regulator_get_optional(struct device *dev, const char *id) { return NULL; } |