Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge remote-tracking branches 'regulator/topic/palmas', 'regulator/topic/pbias', 'regulator/topic/pfuze100', 'regulator/topic/s2mpa01' and 'regulator/topic/s2mps11' into regulator-next

+161 -181
+14
Documentation/devicetree/bindings/mfd/s2mps11.txt
··· 56 56 Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6], 57 57 BUCK[3, 4], and BUCK[7, 8, 10] 58 58 59 + On S2MPS14 the LDO10, LDO11 and LDO12 can be configured to external control 60 + over GPIO. To turn this feature on this property must be added to the regulator 61 + sub-node: 62 + - samsung,ext-control-gpios: GPIO specifier for one GPIO 63 + controlling this regulator (enable/disable); 64 + Example: 65 + LDO12 { 66 + regulator-name = "V_EMMC_2.8V"; 67 + regulator-min-microvolt = <2800000>; 68 + regulator-max-microvolt = <2800000>; 69 + samsung,ext-control-gpios = <&gpk0 2 0>; 70 + }; 71 + 72 + 59 73 The regulator constraints inside the regulator nodes use the standard regulator 60 74 bindings which are documented elsewhere. 61 75
+26 -132
drivers/regulator/palmas-regulator.c
··· 36 36 int sleep_id; 37 37 }; 38 38 39 + static const struct regulator_linear_range smps_low_ranges[] = { 40 + REGULATOR_LINEAR_RANGE(500000, 0x1, 0x6, 0), 41 + REGULATOR_LINEAR_RANGE(510000, 0x7, 0x79, 10000), 42 + REGULATOR_LINEAR_RANGE(1650000, 0x7A, 0x7f, 0), 43 + }; 44 + 45 + static const struct regulator_linear_range smps_high_ranges[] = { 46 + REGULATOR_LINEAR_RANGE(1000000, 0x1, 0x6, 0), 47 + REGULATOR_LINEAR_RANGE(1020000, 0x7, 0x79, 20000), 48 + REGULATOR_LINEAR_RANGE(3300000, 0x7A, 0x7f, 0), 49 + }; 50 + 39 51 static const struct regs_info palmas_regs_info[] = { 40 52 { 41 53 .name = "SMPS12", ··· 292 280 return regmap_write(palmas->regmap[REGULATOR_SLAVE], addr, value); 293 281 } 294 282 295 - static int palmas_is_enabled_smps(struct regulator_dev *dev) 296 - { 297 - struct palmas_pmic *pmic = rdev_get_drvdata(dev); 298 - int id = rdev_get_id(dev); 299 - unsigned int reg; 300 - 301 - palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, &reg); 302 - 303 - reg &= PALMAS_SMPS12_CTRL_STATUS_MASK; 304 - reg >>= PALMAS_SMPS12_CTRL_STATUS_SHIFT; 305 - 306 - return !!(reg); 307 - } 308 - 309 - static int palmas_enable_smps(struct regulator_dev *dev) 310 - { 311 - struct palmas_pmic *pmic = rdev_get_drvdata(dev); 312 - int id = rdev_get_id(dev); 313 - unsigned int reg; 314 - 315 - palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, &reg); 316 - 317 - reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 318 - if (pmic->current_reg_mode[id]) 319 - reg |= pmic->current_reg_mode[id]; 320 - else 321 - reg |= SMPS_CTRL_MODE_ON; 322 - 323 - palmas_smps_write(pmic->palmas, palmas_regs_info[id].ctrl_addr, reg); 324 - 325 - return 0; 326 - } 327 - 328 - static int palmas_disable_smps(struct regulator_dev *dev) 329 - { 330 - struct palmas_pmic *pmic = rdev_get_drvdata(dev); 331 - int id = rdev_get_id(dev); 332 - unsigned int reg; 333 - 334 - palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, &reg); 335 - 336 - reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 337 - 338 - palmas_smps_write(pmic->palmas, palmas_regs_info[id].ctrl_addr, reg); 339 - 340 - return 0; 341 - } 342 - 343 283 static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode) 344 284 { 345 285 struct palmas_pmic *pmic = rdev_get_drvdata(dev); ··· 346 382 return 0; 347 383 } 348 384 349 - static int palmas_list_voltage_smps(struct regulator_dev *dev, 350 - unsigned selector) 351 - { 352 - struct palmas_pmic *pmic = rdev_get_drvdata(dev); 353 - int id = rdev_get_id(dev); 354 - int mult = 1; 355 - 356 - /* Read the multiplier set in VSEL register to return 357 - * the correct voltage. 358 - */ 359 - if (pmic->range[id]) 360 - mult = 2; 361 - 362 - if (selector == 0) 363 - return 0; 364 - else if (selector < 6) 365 - return 500000 * mult; 366 - else 367 - /* Voltage is linear mapping starting from selector 6, 368 - * volt = (0.49V + ((selector - 5) * 0.01V)) * RANGE 369 - * RANGE is either x1 or x2 370 - */ 371 - return (490000 + ((selector - 5) * 10000)) * mult; 372 - } 373 - 374 - static int palmas_map_voltage_smps(struct regulator_dev *rdev, 375 - int min_uV, int max_uV) 376 - { 377 - struct palmas_pmic *pmic = rdev_get_drvdata(rdev); 378 - int id = rdev_get_id(rdev); 379 - int ret, voltage; 380 - 381 - if (min_uV == 0) 382 - return 0; 383 - 384 - if (pmic->range[id]) { /* RANGE is x2 */ 385 - if (min_uV < 1000000) 386 - min_uV = 1000000; 387 - ret = DIV_ROUND_UP(min_uV - 1000000, 20000) + 6; 388 - } else { /* RANGE is x1 */ 389 - if (min_uV < 500000) 390 - min_uV = 500000; 391 - ret = DIV_ROUND_UP(min_uV - 500000, 10000) + 6; 392 - } 393 - 394 - /* Map back into a voltage to verify we're still in bounds */ 395 - voltage = palmas_list_voltage_smps(rdev, ret); 396 - if (voltage < min_uV || voltage > max_uV) 397 - return -EINVAL; 398 - 399 - return ret; 400 - } 401 - 402 - static int palma_smps_set_voltage_smps_time_sel(struct regulator_dev *rdev, 403 - unsigned int old_selector, unsigned int new_selector) 404 - { 405 - struct palmas_pmic *pmic = rdev_get_drvdata(rdev); 406 - int id = rdev_get_id(rdev); 407 - int old_uv, new_uv; 408 - unsigned int ramp_delay = pmic->ramp_delay[id]; 409 - 410 - if (!ramp_delay) 411 - return 0; 412 - 413 - old_uv = palmas_list_voltage_smps(rdev, old_selector); 414 - if (old_uv < 0) 415 - return old_uv; 416 - 417 - new_uv = palmas_list_voltage_smps(rdev, new_selector); 418 - if (new_uv < 0) 419 - return new_uv; 420 - 421 - return DIV_ROUND_UP(abs(old_uv - new_uv), ramp_delay); 422 - } 423 - 424 385 static int palmas_smps_set_ramp_delay(struct regulator_dev *rdev, 425 386 int ramp_delay) 426 387 { ··· 382 493 } 383 494 384 495 static struct regulator_ops palmas_ops_smps = { 385 - .is_enabled = palmas_is_enabled_smps, 386 - .enable = palmas_enable_smps, 387 - .disable = palmas_disable_smps, 496 + .is_enabled = regulator_is_enabled_regmap, 497 + .enable = regulator_enable_regmap, 498 + .disable = regulator_disable_regmap, 388 499 .set_mode = palmas_set_mode_smps, 389 500 .get_mode = palmas_get_mode_smps, 390 501 .get_voltage_sel = regulator_get_voltage_sel_regmap, 391 502 .set_voltage_sel = regulator_set_voltage_sel_regmap, 392 - .list_voltage = palmas_list_voltage_smps, 393 - .map_voltage = palmas_map_voltage_smps, 394 - .set_voltage_time_sel = palma_smps_set_voltage_smps_time_sel, 503 + .list_voltage = regulator_list_voltage_linear_range, 504 + .map_voltage = regulator_map_voltage_linear_range, 505 + .set_voltage_time_sel = regulator_set_voltage_time_sel, 395 506 .set_ramp_delay = palmas_smps_set_ramp_delay, 396 507 }; 397 508 ··· 400 511 .get_mode = palmas_get_mode_smps, 401 512 .get_voltage_sel = regulator_get_voltage_sel_regmap, 402 513 .set_voltage_sel = regulator_set_voltage_sel_regmap, 403 - .list_voltage = palmas_list_voltage_smps, 404 - .map_voltage = palmas_map_voltage_smps, 405 - .set_voltage_time_sel = palma_smps_set_voltage_smps_time_sel, 514 + .list_voltage = regulator_list_voltage_linear_range, 515 + .map_voltage = regulator_map_voltage_linear_range, 516 + .set_voltage_time_sel = regulator_set_voltage_time_sel, 406 517 .set_ramp_delay = palmas_smps_set_ramp_delay, 407 518 }; 408 519 ··· 931 1042 * ranges. Read the current smps mode for later use. 932 1043 */ 933 1044 addr = palmas_regs_info[id].vsel_addr; 1045 + pmic->desc[id].n_linear_ranges = 3; 934 1046 935 1047 ret = palmas_smps_read(pmic->palmas, addr, &reg); 936 1048 if (ret) 937 1049 return ret; 938 1050 if (reg & PALMAS_SMPS12_VOLTAGE_RANGE) 939 1051 pmic->range[id] = 1; 1052 + if (pmic->range[id]) 1053 + pmic->desc[id].linear_ranges = smps_high_ranges; 1054 + else 1055 + pmic->desc[id].linear_ranges = smps_low_ranges; 940 1056 941 1057 if (reg_init && reg_init->roof_floor) 942 1058 pmic->desc[id].ops =
+4 -25
drivers/regulator/pbias-regulator.c
··· 49 49 3000000 50 50 }; 51 51 52 - static int pbias_regulator_enable(struct regulator_dev *rdev) 53 - { 54 - struct pbias_regulator_data *data = rdev_get_drvdata(rdev); 55 - const struct pbias_reg_info *info = data->info; 56 - 57 - return regmap_update_bits(data->syscon, rdev->desc->enable_reg, 58 - info->enable_mask, info->enable); 59 - } 60 - 61 - static int pbias_regulator_is_enable(struct regulator_dev *rdev) 62 - { 63 - struct pbias_regulator_data *data = rdev_get_drvdata(rdev); 64 - const struct pbias_reg_info *info = data->info; 65 - int value; 66 - 67 - regmap_read(data->syscon, rdev->desc->enable_reg, &value); 68 - 69 - return (value & info->enable_mask) == info->enable; 70 - } 71 - 72 52 static struct regulator_ops pbias_regulator_voltage_ops = { 73 53 .list_voltage = regulator_list_voltage_table, 74 54 .get_voltage_sel = regulator_get_voltage_sel_regmap, 75 55 .set_voltage_sel = regulator_set_voltage_sel_regmap, 76 - .enable = pbias_regulator_enable, 56 + .enable = regulator_enable_regmap, 77 57 .disable = regulator_disable_regmap, 78 - .is_enabled = pbias_regulator_is_enable, 58 + .is_enabled = regulator_is_enabled_regmap, 79 59 }; 80 60 81 61 static const struct pbias_reg_info pbias_mmc_omap2430 = { ··· 122 142 123 143 drvdata = devm_kzalloc(&pdev->dev, sizeof(struct pbias_regulator_data) 124 144 * count, GFP_KERNEL); 125 - if (drvdata == NULL) { 126 - dev_err(&pdev->dev, "Failed to allocate device data\n"); 145 + if (!drvdata) 127 146 return -ENOMEM; 128 - } 129 147 130 148 syscon = syscon_regmap_lookup_by_phandle(np, "syscon"); 131 149 if (IS_ERR(syscon)) ··· 158 180 drvdata[data_idx].desc.vsel_mask = info->vmode; 159 181 drvdata[data_idx].desc.enable_reg = res->start; 160 182 drvdata[data_idx].desc.enable_mask = info->enable_mask; 183 + drvdata[data_idx].desc.enable_val = info->enable; 161 184 162 185 cfg.init_data = pbias_matches[idx].init_data; 163 186 cfg.driver_data = &drvdata[data_idx];
+8
drivers/regulator/pfuze100-regulator.c
··· 125 125 }; 126 126 127 127 static struct regulator_ops pfuze100_fixed_regulator_ops = { 128 + .enable = regulator_enable_regmap, 129 + .disable = regulator_disable_regmap, 130 + .is_enabled = regulator_is_enabled_regmap, 128 131 .list_voltage = regulator_list_voltage_linear, 129 132 }; 130 133 ··· 140 137 }; 141 138 142 139 static struct regulator_ops pfuze100_swb_regulator_ops = { 140 + .enable = regulator_enable_regmap, 141 + .disable = regulator_disable_regmap, 143 142 .list_voltage = regulator_list_voltage_table, 144 143 .map_voltage = regulator_map_voltage_ascend, 145 144 .set_voltage_sel = regulator_set_voltage_sel_regmap, ··· 194 189 .volt_table = voltages, \ 195 190 .vsel_reg = (base), \ 196 191 .vsel_mask = (mask), \ 192 + .enable_reg = (base), \ 193 + .enable_mask = 0x48, \ 197 194 }, \ 198 195 } 199 196 ··· 509 502 config.init_data = init_data; 510 503 config.driver_data = pfuze_chip; 511 504 config.of_node = match_of_node(i); 505 + config.ena_gpio = -EINVAL; 512 506 513 507 pfuze_chip->regulators[i] = 514 508 devm_regulator_register(&client->dev, desc, &config);
+11 -7
drivers/regulator/s2mpa01.c
··· 61 61 unsigned int ramp_delay = 0; 62 62 int old_volt, new_volt; 63 63 64 - switch (rdev->desc->id) { 64 + switch (rdev_get_id(rdev)) { 65 65 case S2MPA01_BUCK2: 66 66 case S2MPA01_BUCK4: 67 67 ramp_delay = s2mpa01->ramp_delay24; ··· 102 102 unsigned int ramp_enable = 1, enable_shift = 0; 103 103 int ret; 104 104 105 - switch (rdev->desc->id) { 105 + switch (rdev_get_id(rdev)) { 106 106 case S2MPA01_BUCK1: 107 107 enable_shift = S2MPA01_BUCK1_RAMP_EN_SHIFT; 108 108 if (!ramp_delay) { ··· 191 191 if (!ramp_enable) 192 192 goto ramp_disable; 193 193 194 - ret = regmap_update_bits(rdev->regmap, S2MPA01_REG_RAMP1, 195 - 1 << enable_shift, 1 << enable_shift); 196 - if (ret) { 197 - dev_err(&rdev->dev, "failed to enable ramp rate\n"); 198 - return ret; 194 + /* Ramp delay can be enabled/disabled only for buck[1234] */ 195 + if (rdev_get_id(rdev) >= S2MPA01_BUCK1 && 196 + rdev_get_id(rdev) <= S2MPA01_BUCK4) { 197 + ret = regmap_update_bits(rdev->regmap, S2MPA01_REG_RAMP1, 198 + 1 << enable_shift, 1 << enable_shift); 199 + if (ret) { 200 + dev_err(&rdev->dev, "failed to enable ramp rate\n"); 201 + return ret; 202 + } 199 203 } 200 204 201 205 ramp_val = get_ramp_delay(ramp_delay);
+96 -17
drivers/regulator/s2mps11.c
··· 27 27 #include <linux/regulator/driver.h> 28 28 #include <linux/regulator/machine.h> 29 29 #include <linux/regulator/of_regulator.h> 30 + #include <linux/of_gpio.h> 30 31 #include <linux/mfd/samsung/core.h> 31 32 #include <linux/mfd/samsung/s2mps11.h> 32 33 #include <linux/mfd/samsung/s2mps14.h> ··· 45 44 * was enabled. 46 45 */ 47 46 unsigned int s2mps14_suspend_state:30; 47 + /* Array of size rdev_num with GPIO-s for external sleep control */ 48 + int *ext_control_gpio; 48 49 }; 49 50 50 51 static int get_ramp_delay(int ramp_delay) ··· 205 202 if (!ramp_enable) 206 203 goto ramp_disable; 207 204 208 - ret = regmap_update_bits(rdev->regmap, S2MPS11_REG_RAMP, 209 - 1 << enable_shift, 1 << enable_shift); 210 - if (ret) { 211 - dev_err(&rdev->dev, "failed to enable ramp rate\n"); 212 - return ret; 205 + /* Ramp delay can be enabled/disabled only for buck[2346] */ 206 + if ((rdev_get_id(rdev) >= S2MPS11_BUCK2 && 207 + rdev_get_id(rdev) <= S2MPS11_BUCK4) || 208 + rdev_get_id(rdev) == S2MPS11_BUCK6) { 209 + ret = regmap_update_bits(rdev->regmap, S2MPS11_REG_RAMP, 210 + 1 << enable_shift, 1 << enable_shift); 211 + if (ret) { 212 + dev_err(&rdev->dev, "failed to enable ramp rate\n"); 213 + return ret; 214 + } 213 215 } 214 216 215 217 ramp_val = get_ramp_delay(ramp_delay); ··· 417 409 418 410 if (s2mps11->s2mps14_suspend_state & (1 << rdev_get_id(rdev))) 419 411 val = S2MPS14_ENABLE_SUSPEND; 412 + else if (gpio_is_valid(s2mps11->ext_control_gpio[rdev_get_id(rdev)])) 413 + val = S2MPS14_ENABLE_EXT_CONTROL; 420 414 else 421 415 val = rdev->desc->enable_mask; 422 416 ··· 575 565 regulator_desc_s2mps14_buck1235(5), 576 566 }; 577 567 568 + static int s2mps14_pmic_enable_ext_control(struct s2mps11_info *s2mps11, 569 + struct regulator_dev *rdev) 570 + { 571 + return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, 572 + rdev->desc->enable_mask, S2MPS14_ENABLE_EXT_CONTROL); 573 + } 574 + 575 + static void s2mps14_pmic_dt_parse_ext_control_gpio(struct platform_device *pdev, 576 + struct of_regulator_match *rdata, struct s2mps11_info *s2mps11) 577 + { 578 + int *gpio = s2mps11->ext_control_gpio; 579 + unsigned int i; 580 + unsigned int valid_regulators[3] = { S2MPS14_LDO10, S2MPS14_LDO11, 581 + S2MPS14_LDO12 }; 582 + 583 + for (i = 0; i < ARRAY_SIZE(valid_regulators); i++) { 584 + unsigned int reg = valid_regulators[i]; 585 + 586 + if (!rdata[reg].init_data || !rdata[reg].of_node) 587 + continue; 588 + 589 + gpio[reg] = of_get_named_gpio(rdata[reg].of_node, 590 + "samsung,ext-control-gpios", 0); 591 + if (gpio_is_valid(gpio[reg])) 592 + dev_dbg(&pdev->dev, "Using GPIO %d for ext-control over %d/%s\n", 593 + gpio[reg], reg, rdata[reg].name); 594 + } 595 + } 596 + 597 + static int s2mps11_pmic_dt_parse(struct platform_device *pdev, 598 + struct of_regulator_match *rdata, struct s2mps11_info *s2mps11, 599 + enum sec_device_type dev_type) 600 + { 601 + struct device_node *reg_np; 602 + 603 + reg_np = of_get_child_by_name(pdev->dev.parent->of_node, "regulators"); 604 + if (!reg_np) { 605 + dev_err(&pdev->dev, "could not find regulators sub-node\n"); 606 + return -EINVAL; 607 + } 608 + 609 + of_regulator_match(&pdev->dev, reg_np, rdata, s2mps11->rdev_num); 610 + if (dev_type == S2MPS14X) 611 + s2mps14_pmic_dt_parse_ext_control_gpio(pdev, rdata, s2mps11); 612 + 613 + of_node_put(reg_np); 614 + 615 + return 0; 616 + } 617 + 578 618 static int s2mps11_pmic_probe(struct platform_device *pdev) 579 619 { 580 620 struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent); 581 - struct sec_platform_data *pdata = iodev->pdata; 621 + struct sec_platform_data *pdata = NULL; 582 622 struct of_regulator_match *rdata = NULL; 583 - struct device_node *reg_np = NULL; 584 623 struct regulator_config config = { }; 585 624 struct s2mps11_info *s2mps11; 586 625 int i, ret = 0; ··· 656 597 return -EINVAL; 657 598 }; 658 599 600 + s2mps11->ext_control_gpio = devm_kzalloc(&pdev->dev, 601 + sizeof(*s2mps11->ext_control_gpio) * s2mps11->rdev_num, 602 + GFP_KERNEL); 603 + if (!s2mps11->ext_control_gpio) 604 + return -ENOMEM; 605 + /* 606 + * 0 is a valid GPIO so initialize all GPIO-s to negative value 607 + * to indicate that external control won't be used for this regulator. 608 + */ 609 + for (i = 0; i < s2mps11->rdev_num; i++) 610 + s2mps11->ext_control_gpio[i] = -EINVAL; 611 + 659 612 if (!iodev->dev->of_node) { 660 - if (pdata) { 613 + if (iodev->pdata) { 614 + pdata = iodev->pdata; 661 615 goto common_reg; 662 616 } else { 663 617 dev_err(pdev->dev.parent, ··· 686 614 for (i = 0; i < s2mps11->rdev_num; i++) 687 615 rdata[i].name = regulators[i].name; 688 616 689 - reg_np = of_get_child_by_name(iodev->dev->of_node, "regulators"); 690 - if (!reg_np) { 691 - dev_err(&pdev->dev, "could not find regulators sub-node\n"); 692 - ret = -EINVAL; 617 + ret = s2mps11_pmic_dt_parse(pdev, rdata, s2mps11, dev_type); 618 + if (ret) 693 619 goto out; 694 - } 695 - 696 - of_regulator_match(&pdev->dev, reg_np, rdata, s2mps11->rdev_num); 697 - of_node_put(reg_np); 698 620 699 621 common_reg: 700 622 platform_set_drvdata(pdev, s2mps11); ··· 696 630 config.dev = &pdev->dev; 697 631 config.regmap = iodev->regmap_pmic; 698 632 config.driver_data = s2mps11; 633 + config.ena_gpio_flags = GPIOF_OUT_INIT_HIGH; 699 634 for (i = 0; i < s2mps11->rdev_num; i++) { 700 635 struct regulator_dev *regulator; 701 636 702 - if (!reg_np) { 637 + if (pdata) { 703 638 config.init_data = pdata->regulators[i].initdata; 704 639 config.of_node = pdata->regulators[i].reg_node; 705 640 } else { 706 641 config.init_data = rdata[i].init_data; 707 642 config.of_node = rdata[i].of_node; 708 643 } 644 + config.ena_gpio = s2mps11->ext_control_gpio[i]; 709 645 710 646 regulator = devm_regulator_register(&pdev->dev, 711 647 &regulators[i], &config); ··· 716 648 dev_err(&pdev->dev, "regulator init failed for %d\n", 717 649 i); 718 650 goto out; 651 + } 652 + 653 + if (gpio_is_valid(s2mps11->ext_control_gpio[i])) { 654 + ret = s2mps14_pmic_enable_ext_control(s2mps11, 655 + regulator); 656 + if (ret < 0) { 657 + dev_err(&pdev->dev, 658 + "failed to enable GPIO control over %s: %d\n", 659 + regulator->desc->name, ret); 660 + goto out; 661 + } 719 662 } 720 663 } 721 664
+2
include/linux/mfd/samsung/s2mps14.h
··· 148 148 #define S2MPS14_ENABLE_SHIFT 6 149 149 /* On/Off controlled by PWREN */ 150 150 #define S2MPS14_ENABLE_SUSPEND (0x01 << S2MPS14_ENABLE_SHIFT) 151 + /* On/Off controlled by LDO10EN or EMMCEN */ 152 + #define S2MPS14_ENABLE_EXT_CONTROL (0x00 << S2MPS14_ENABLE_SHIFT) 151 153 #define S2MPS14_LDO_N_VOLTAGES (S2MPS14_LDO_VSEL_MASK + 1) 152 154 #define S2MPS14_BUCK_N_VOLTAGES (S2MPS14_BUCK_VSEL_MASK + 1) 153 155