Implementing of_map_mode is necessary to be able to specify operating
modes in the devicetree using 'regulator-allowed-modes', and to change
regulator modes.

Signed-off-by: Anand K Mistry <amis...@google.com>
---

 drivers/regulator/da9211-regulator.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/da9211-regulator.c 
b/drivers/regulator/da9211-regulator.c
index 1f9b75b41346..297b3aa7c753 100644
--- a/drivers/regulator/da9211-regulator.c
+++ b/drivers/regulator/da9211-regulator.c
@@ -86,6 +86,20 @@ static const int da9215_current_limits[] = {
        5600000, 5800000, 6000000, 6200000, 6400000, 6600000, 6800000, 7000000
 };
 
+static unsigned int da9211_map_buck_mode(unsigned int mode)
+{
+       switch (mode) {
+       case DA9211_BUCK_MODE_SLEEP:
+               return REGULATOR_MODE_STANDBY;
+       case DA9211_BUCK_MODE_SYNC:
+               return REGULATOR_MODE_FAST;
+       case DA9211_BUCK_MODE_AUTO:
+               return REGULATOR_MODE_NORMAL;
+       default:
+               return REGULATOR_MODE_INVALID;
+       }
+}
+
 static unsigned int da9211_buck_get_mode(struct regulator_dev *rdev)
 {
        int id = rdev_get_id(rdev);
@@ -233,6 +247,7 @@ static const struct regulator_ops da9211_buck_ops = {
        .vsel_reg = DA9211_REG_VBUCKA_A + DA9211_ID_##_id * 2,\
        .vsel_mask = DA9211_VBUCK_MASK,\
        .owner = THIS_MODULE,\
+       .of_map_mode = da9211_map_buck_mode,\
 }
 
 static struct regulator_desc da9211_regulators[] = {
@@ -242,8 +257,14 @@ static struct regulator_desc da9211_regulators[] = {
 
 #ifdef CONFIG_OF
 static struct of_regulator_match da9211_matches[] = {
-       [DA9211_ID_BUCKA] = { .name = "BUCKA" },
-       [DA9211_ID_BUCKB] = { .name = "BUCKB" },
+       [DA9211_ID_BUCKA] = {
+               .name = "BUCKA",
+               .desc = &da9211_regulators[DA9211_ID_BUCKA],
+       },
+       [DA9211_ID_BUCKB] = {
+               .name = "BUCKB",
+               .desc = &da9211_regulators[DA9211_ID_BUCKB],
+       },
        };
 
 static struct da9211_pdata *da9211_parse_regulators_dt(
-- 
2.27.0.212.ge8ba1cc988-goog

Reply via email to