From d06ca5e7a3cf726f5be5ffd96e93ccd798b8c09a Mon Sep 17 00:00:00 2001 From: Georgi Djakov Date: Thu, 12 May 2016 14:41:33 +0300 Subject: [PATCH 51/69] PM / OPP: Add a helper to get an opp regulator for device Signed-off-by: Georgi Djakov --- drivers/base/power/opp/core.c | 21 +++++++++++++++++++++ include/linux/pm_opp.h | 1 + 2 files changed, 22 insertions(+) --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c @@ -126,6 +126,27 @@ unsigned long dev_pm_opp_get_freq(struct } EXPORT_SYMBOL_GPL(dev_pm_opp_get_freq); +struct regulator *dev_pm_opp_get_regulator(struct device *dev) +{ + struct opp_table *opp_table; + struct regulator *reg; + + rcu_read_lock(); + + opp_table = _find_opp_table(dev); + if (IS_ERR(opp_table)) { + rcu_read_unlock(); + return ERR_CAST(opp_table); + } + + reg = opp_table->regulators[0]; + + rcu_read_unlock(); + + return reg; +} +EXPORT_SYMBOL_GPL(dev_pm_opp_get_regulator); + /** * dev_pm_opp_is_turbo() - Returns if opp is turbo OPP or not * @opp: opp for which turbo mode is being verified --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -85,6 +85,7 @@ void dev_pm_opp_put_opp_table(struct opp unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp); unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp); +struct regulator *dev_pm_opp_get_regulator(struct device *dev); bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);