regulator: da9211: Implement of_map_mode
authorAnand K Mistry <amistry@google.com>
Thu, 2 Jul 2020 03:15:24 +0000 (13:15 +1000)
committerMark Brown <broonie@kernel.org>
Thu, 2 Jul 2020 15:20:58 +0000 (16:20 +0100)
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 <amistry@google.com>
Link: https://lore.kernel.org/r/20200702131350.3.I6a0bc18fcdb2fe13e838a31e6d034d0e095368bc@changeid
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/da9211-regulator.c

index 1f9b75b..297b3aa 100644 (file)
@@ -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(