]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/regulator/pfuze100-regulator.c
Merge remote-tracking branches 'regulator/topic/notifier', 'regulator/topic/pfuze100...
[mirror_ubuntu-bionic-kernel.git] / drivers / regulator / pfuze100-regulator.c
index e193bbbb8ffc1beebabd453a06dc8670d159fe0d..63922a2167e55a75fb5e3c3f2526bc9f06bcabf2 100644 (file)
@@ -40,6 +40,7 @@
 #define PFUZE100_REVID         0x3
 #define PFUZE100_FABID         0x4
 
+#define PFUZE100_COINVOL       0x1a
 #define PFUZE100_SW1ABVOL      0x20
 #define PFUZE100_SW1CVOL       0x2e
 #define PFUZE100_SW2VOL                0x35
@@ -81,6 +82,10 @@ static const int pfuze100_vsnvs[] = {
        1000000, 1100000, 1200000, 1300000, 1500000, 1800000, 3000000,
 };
 
+static const int pfuze100_coin[] = {
+       2500000, 2700000, 2800000, 2900000, 3000000, 3100000, 3200000, 3300000,
+};
+
 static const int pfuze3000_sw2lo[] = {
        1500000, 1550000, 1600000, 1650000, 1700000, 1750000, 1800000, 1850000,
 };
@@ -230,6 +235,23 @@ static const struct regulator_ops pfuze100_swb_regulator_ops = {
                .stby_mask = 0x20,      \
        }
 
+#define PFUZE100_COIN_REG(_chip, _name, base, mask, voltages)  \
+       [_chip ## _ ##  _name] = {      \
+               .desc = {       \
+                       .name = #_name, \
+                       .n_voltages = ARRAY_SIZE(voltages),     \
+                       .ops = &pfuze100_swb_regulator_ops,     \
+                       .type = REGULATOR_VOLTAGE,      \
+                       .id = _chip ## _ ## _name,      \
+                       .owner = THIS_MODULE,   \
+                       .volt_table = voltages, \
+                       .vsel_reg = (base),     \
+                       .vsel_mask = (mask),    \
+                       .enable_reg = (base),   \
+                       .enable_mask = 0x8,     \
+               },      \
+       }
+
 #define PFUZE3000_VCC_REG(_chip, _name, base, min, max, step)  {       \
        .desc = {       \
                .name = #_name, \
@@ -317,6 +339,7 @@ static struct pfuze_regulator pfuze200_regulators[] = {
        PFUZE100_VGEN_REG(PFUZE200, VGEN4, PFUZE100_VGEN4VOL, 1800000, 3300000, 100000),
        PFUZE100_VGEN_REG(PFUZE200, VGEN5, PFUZE100_VGEN5VOL, 1800000, 3300000, 100000),
        PFUZE100_VGEN_REG(PFUZE200, VGEN6, PFUZE100_VGEN6VOL, 1800000, 3300000, 100000),
+       PFUZE100_COIN_REG(PFUZE200, COIN, PFUZE100_COINVOL, 0x7, pfuze100_coin),
 };
 
 static struct pfuze_regulator pfuze3000_regulators[] = {
@@ -371,6 +394,7 @@ static struct of_regulator_match pfuze200_matches[] = {
        { .name = "vgen4",      },
        { .name = "vgen5",      },
        { .name = "vgen6",      },
+       { .name = "coin",       },
 };
 
 /* PFUZE3000 */