aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/palmas-regulator.c109
1 files changed, 56 insertions, 53 deletions
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
index 05f11b96e17f..f75fb90d7db3 100644
--- a/drivers/regulator/palmas-regulator.c
+++ b/drivers/regulator/palmas-regulator.c
@@ -434,14 +434,14 @@ static int palmas_ldo_write(struct palmas *palmas, unsigned int reg,
434 434
435static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode) 435static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode)
436{ 436{
437 int id = rdev_get_id(dev);
437 struct palmas_pmic *pmic = rdev_get_drvdata(dev); 438 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
438 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; 439 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata;
439 int id = rdev_get_id(dev); 440 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
440 unsigned int reg; 441 unsigned int reg;
441 bool rail_enable = true; 442 bool rail_enable = true;
442 443
443 palmas_smps_read(pmic->palmas, ddata->palmas_regs_info[id].ctrl_addr, 444 palmas_smps_read(pmic->palmas, rinfo->ctrl_addr, &reg);
444 &reg);
445 445
446 reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 446 reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
447 447
@@ -464,8 +464,7 @@ static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode)
464 464
465 pmic->current_reg_mode[id] = reg & PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 465 pmic->current_reg_mode[id] = reg & PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
466 if (rail_enable) 466 if (rail_enable)
467 palmas_smps_write(pmic->palmas, 467 palmas_smps_write(pmic->palmas, rinfo->ctrl_addr, reg);
468 ddata->palmas_regs_info[id].ctrl_addr, reg);
469 468
470 /* Switch the enable value to ensure this is used for enable */ 469 /* Switch the enable value to ensure this is used for enable */
471 pmic->desc[id].enable_val = pmic->current_reg_mode[id]; 470 pmic->desc[id].enable_val = pmic->current_reg_mode[id];
@@ -496,11 +495,11 @@ static unsigned int palmas_get_mode_smps(struct regulator_dev *dev)
496static int palmas_smps_set_ramp_delay(struct regulator_dev *rdev, 495static int palmas_smps_set_ramp_delay(struct regulator_dev *rdev,
497 int ramp_delay) 496 int ramp_delay)
498{ 497{
498 int id = rdev_get_id(rdev);
499 struct palmas_pmic *pmic = rdev_get_drvdata(rdev); 499 struct palmas_pmic *pmic = rdev_get_drvdata(rdev);
500 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; 500 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata;
501 int id = rdev_get_id(rdev); 501 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
502 unsigned int reg = 0; 502 unsigned int reg = 0;
503 unsigned int addr = ddata->palmas_regs_info[id].tstep_addr;
504 int ret; 503 int ret;
505 504
506 /* SMPS3 and SMPS7 do not have tstep_addr setting */ 505 /* SMPS3 and SMPS7 do not have tstep_addr setting */
@@ -519,7 +518,7 @@ static int palmas_smps_set_ramp_delay(struct regulator_dev *rdev,
519 else 518 else
520 reg = 1; 519 reg = 1;
521 520
522 ret = palmas_smps_write(pmic->palmas, addr, reg); 521 ret = palmas_smps_write(pmic->palmas, rinfo->tstep_addr, reg);
523 if (ret < 0) { 522 if (ret < 0) {
524 dev_err(pmic->palmas->dev, "TSTEP write failed: %d\n", ret); 523 dev_err(pmic->palmas->dev, "TSTEP write failed: %d\n", ret);
525 return ret; 524 return ret;
@@ -590,13 +589,13 @@ static struct regulator_ops tps65917_ops_ext_control_smps = {
590 589
591static int palmas_is_enabled_ldo(struct regulator_dev *dev) 590static int palmas_is_enabled_ldo(struct regulator_dev *dev)
592{ 591{
592 int id = rdev_get_id(dev);
593 struct palmas_pmic *pmic = rdev_get_drvdata(dev); 593 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
594 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; 594 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata;
595 int id = rdev_get_id(dev); 595 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
596 unsigned int reg; 596 unsigned int reg;
597 597
598 palmas_ldo_read(pmic->palmas, 598 palmas_ldo_read(pmic->palmas, rinfo->ctrl_addr, &reg);
599 ddata->palmas_regs_info[id].ctrl_addr, &reg);
600 599
601 reg &= PALMAS_LDO1_CTRL_STATUS; 600 reg &= PALMAS_LDO1_CTRL_STATUS;
602 601
@@ -643,11 +642,12 @@ static struct regulator_ops tps65917_ops_ldo = {
643static int palmas_regulator_config_external(struct palmas *palmas, int id, 642static int palmas_regulator_config_external(struct palmas *palmas, int id,
644 struct palmas_reg_init *reg_init) 643 struct palmas_reg_init *reg_init)
645{ 644{
646 int sleep_id = palmas_regs_info[id].sleep_id; 645 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata;
646 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
647 int ret; 647 int ret;
648 648
649 ret = palmas_ext_control_req_config(palmas, sleep_id, 649 ret = palmas_ext_control_req_config(palmas, rinfo->sleep_id,
650 reg_init->roof_floor, true); 650 reg_init->roof_floor, true);
651 if (ret < 0) 651 if (ret < 0)
652 dev_err(palmas->dev, 652 dev_err(palmas->dev,
653 "Ext control config for regulator %d failed %d\n", 653 "Ext control config for regulator %d failed %d\n",
@@ -665,12 +665,10 @@ static int palmas_smps_init(struct palmas *palmas, int id,
665 struct palmas_reg_init *reg_init) 665 struct palmas_reg_init *reg_init)
666{ 666{
667 unsigned int reg; 667 unsigned int reg;
668 unsigned int addr;
669 int ret; 668 int ret;
670
671 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; 669 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata;
672 670 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
673 addr = ddata->palmas_regs_info[id].ctrl_addr; 671 unsigned int addr = rinfo->ctrl_addr;
674 672
675 ret = palmas_smps_read(palmas, addr, &reg); 673 ret = palmas_smps_read(palmas, addr, &reg);
676 if (ret) 674 if (ret)
@@ -705,12 +703,11 @@ static int palmas_smps_init(struct palmas *palmas, int id,
705 if (ret) 703 if (ret)
706 return ret; 704 return ret;
707 705
708 if (ddata->palmas_regs_info[id].vsel_addr && reg_init->vsel) { 706 if (rinfo->vsel_addr && reg_init->vsel) {
709 addr = ddata->palmas_regs_info[id].vsel_addr;
710 707
711 reg = reg_init->vsel; 708 reg = reg_init->vsel;
712 709
713 ret = palmas_smps_write(palmas, addr, reg); 710 ret = palmas_smps_write(palmas, rinfo->vsel_addr, reg);
714 if (ret) 711 if (ret)
715 return ret; 712 return ret;
716 } 713 }
@@ -718,7 +715,6 @@ static int palmas_smps_init(struct palmas *palmas, int id,
718 if (reg_init->roof_floor && (id != PALMAS_REG_SMPS10_OUT1) && 715 if (reg_init->roof_floor && (id != PALMAS_REG_SMPS10_OUT1) &&
719 (id != PALMAS_REG_SMPS10_OUT2)) { 716 (id != PALMAS_REG_SMPS10_OUT2)) {
720 /* Enable externally controlled regulator */ 717 /* Enable externally controlled regulator */
721 addr = ddata->palmas_regs_info[id].ctrl_addr;
722 ret = palmas_smps_read(palmas, addr, &reg); 718 ret = palmas_smps_read(palmas, addr, &reg);
723 if (ret < 0) 719 if (ret < 0)
724 return ret; 720 return ret;
@@ -740,10 +736,10 @@ static int palmas_ldo_init(struct palmas *palmas, int id,
740 unsigned int reg; 736 unsigned int reg;
741 unsigned int addr; 737 unsigned int addr;
742 int ret; 738 int ret;
743
744 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; 739 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata;
740 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
745 741
746 addr = ddata->palmas_regs_info[id].ctrl_addr; 742 addr = rinfo->ctrl_addr;
747 743
748 ret = palmas_ldo_read(palmas, addr, &reg); 744 ret = palmas_ldo_read(palmas, addr, &reg);
749 if (ret) 745 if (ret)
@@ -765,7 +761,6 @@ static int palmas_ldo_init(struct palmas *palmas, int id,
765 761
766 if (reg_init->roof_floor) { 762 if (reg_init->roof_floor) {
767 /* Enable externally controlled regulator */ 763 /* Enable externally controlled regulator */
768 addr = ddata->palmas_regs_info[id].ctrl_addr;
769 ret = palmas_update_bits(palmas, PALMAS_LDO_BASE, 764 ret = palmas_update_bits(palmas, PALMAS_LDO_BASE,
770 addr, PALMAS_LDO1_CTRL_MODE_ACTIVE, 765 addr, PALMAS_LDO1_CTRL_MODE_ACTIVE,
771 PALMAS_LDO1_CTRL_MODE_ACTIVE); 766 PALMAS_LDO1_CTRL_MODE_ACTIVE);
@@ -786,10 +781,10 @@ static int palmas_extreg_init(struct palmas *palmas, int id,
786 unsigned int addr; 781 unsigned int addr;
787 int ret; 782 int ret;
788 unsigned int val = 0; 783 unsigned int val = 0;
789
790 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; 784 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata;
785 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
791 786
792 addr = ddata->palmas_regs_info[id].ctrl_addr; 787 addr = rinfo->ctrl_addr;
793 788
794 if (reg_init->mode_sleep) 789 if (reg_init->mode_sleep)
795 val = PALMAS_REGEN1_CTRL_MODE_SLEEP; 790 val = PALMAS_REGEN1_CTRL_MODE_SLEEP;
@@ -804,7 +799,6 @@ static int palmas_extreg_init(struct palmas *palmas, int id,
804 799
805 if (reg_init->roof_floor) { 800 if (reg_init->roof_floor) {
806 /* Enable externally controlled regulator */ 801 /* Enable externally controlled regulator */
807 addr = ddata->palmas_regs_info[id].ctrl_addr;
808 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE, 802 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE,
809 addr, PALMAS_REGEN1_CTRL_MODE_ACTIVE, 803 addr, PALMAS_REGEN1_CTRL_MODE_ACTIVE,
810 PALMAS_REGEN1_CTRL_MODE_ACTIVE); 804 PALMAS_REGEN1_CTRL_MODE_ACTIVE);
@@ -824,10 +818,11 @@ static void palmas_enable_ldo8_track(struct palmas *palmas)
824 unsigned int reg; 818 unsigned int reg;
825 unsigned int addr; 819 unsigned int addr;
826 int ret; 820 int ret;
827
828 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; 821 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata;
822 struct palmas_regs_info *rinfo;
829 823
830 addr = ddata->palmas_regs_info[PALMAS_REG_LDO8].ctrl_addr; 824 rinfo = &ddata->palmas_regs_info[PALMAS_REG_LDO8];
825 addr = rinfo->ctrl_addr;
831 826
832 ret = palmas_ldo_read(palmas, addr, &reg); 827 ret = palmas_ldo_read(palmas, addr, &reg);
833 if (ret) { 828 if (ret) {
@@ -846,7 +841,7 @@ static void palmas_enable_ldo8_track(struct palmas *palmas)
846 * output is defined by the LDO8_VOLTAGE.VSEL register divided by two, 841 * output is defined by the LDO8_VOLTAGE.VSEL register divided by two,
847 * and can be set from 0.45 to 1.65 V. 842 * and can be set from 0.45 to 1.65 V.
848 */ 843 */
849 addr = ddata->palmas_regs_info[PALMAS_REG_LDO8].vsel_addr; 844 addr = rinfo->vsel_addr;
850 ret = palmas_ldo_read(palmas, addr, &reg); 845 ret = palmas_ldo_read(palmas, addr, &reg);
851 if (ret) { 846 if (ret) {
852 dev_err(palmas->dev, "Error in reading ldo8 voltage reg\n"); 847 dev_err(palmas->dev, "Error in reading ldo8 voltage reg\n");
@@ -870,6 +865,7 @@ static int palmas_ldo_registration(struct palmas_pmic *pmic,
870 int id, ret; 865 int id, ret;
871 struct regulator_dev *rdev; 866 struct regulator_dev *rdev;
872 struct palmas_reg_init *reg_init; 867 struct palmas_reg_init *reg_init;
868 struct palmas_regs_info *rinfo;
873 869
874 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) { 870 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) {
875 if (pdata && pdata->reg_init[id]) 871 if (pdata && pdata->reg_init[id])
@@ -877,12 +873,13 @@ static int palmas_ldo_registration(struct palmas_pmic *pmic,
877 else 873 else
878 reg_init = NULL; 874 reg_init = NULL;
879 875
876 rinfo = &ddata->palmas_regs_info[id];
880 /* Miss out regulators which are not available due 877 /* Miss out regulators which are not available due
881 * to alternate functions. 878 * to alternate functions.
882 */ 879 */
883 880
884 /* Register the regulators */ 881 /* Register the regulators */
885 pmic->desc[id].name = ddata->palmas_regs_info[id].name; 882 pmic->desc[id].name = rinfo->name;
886 pmic->desc[id].id = id; 883 pmic->desc[id].id = id;
887 pmic->desc[id].type = REGULATOR_VOLTAGE; 884 pmic->desc[id].type = REGULATOR_VOLTAGE;
888 pmic->desc[id].owner = THIS_MODULE; 885 pmic->desc[id].owner = THIS_MODULE;
@@ -900,12 +897,12 @@ static int palmas_ldo_registration(struct palmas_pmic *pmic,
900 pmic->desc[id].enable_time = 500; 897 pmic->desc[id].enable_time = 500;
901 pmic->desc[id].vsel_reg = 898 pmic->desc[id].vsel_reg =
902 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, 899 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
903 ddata->palmas_regs_info[id].vsel_addr); 900 rinfo->vsel_addr);
904 pmic->desc[id].vsel_mask = 901 pmic->desc[id].vsel_mask =
905 PALMAS_LDO1_VOLTAGE_VSEL_MASK; 902 PALMAS_LDO1_VOLTAGE_VSEL_MASK;
906 pmic->desc[id].enable_reg = 903 pmic->desc[id].enable_reg =
907 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, 904 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
908 ddata->palmas_regs_info[id].ctrl_addr); 905 rinfo->ctrl_addr);
909 pmic->desc[id].enable_mask = 906 pmic->desc[id].enable_mask =
910 PALMAS_LDO1_CTRL_MODE_ACTIVE; 907 PALMAS_LDO1_CTRL_MODE_ACTIVE;
911 908
@@ -930,7 +927,7 @@ static int palmas_ldo_registration(struct palmas_pmic *pmic,
930 pmic->desc[id].ops = &palmas_ops_extreg; 927 pmic->desc[id].ops = &palmas_ops_extreg;
931 pmic->desc[id].enable_reg = 928 pmic->desc[id].enable_reg =
932 PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE, 929 PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE,
933 ddata->palmas_regs_info[id].ctrl_addr); 930 rinfo->ctrl_addr);
934 pmic->desc[id].enable_mask = 931 pmic->desc[id].enable_mask =
935 PALMAS_REGEN1_CTRL_MODE_ACTIVE; 932 PALMAS_REGEN1_CTRL_MODE_ACTIVE;
936 } 933 }
@@ -940,7 +937,7 @@ static int palmas_ldo_registration(struct palmas_pmic *pmic,
940 else 937 else
941 config.init_data = NULL; 938 config.init_data = NULL;
942 939
943 pmic->desc[id].supply_name = ddata->palmas_regs_info[id].sname; 940 pmic->desc[id].supply_name = rinfo->sname;
944 config.of_node = ddata->palmas_matches[id].of_node; 941 config.of_node = ddata->palmas_matches[id].of_node;
945 942
946 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id], 943 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
@@ -983,6 +980,7 @@ static int tps65917_ldo_registration(struct palmas_pmic *pmic,
983 int id, ret; 980 int id, ret;
984 struct regulator_dev *rdev; 981 struct regulator_dev *rdev;
985 struct palmas_reg_init *reg_init; 982 struct palmas_reg_init *reg_init;
983 struct palmas_regs_info *rinfo;
986 984
987 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) { 985 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) {
988 if (pdata && pdata->reg_init[id]) 986 if (pdata && pdata->reg_init[id])
@@ -993,9 +991,10 @@ static int tps65917_ldo_registration(struct palmas_pmic *pmic,
993 /* Miss out regulators which are not available due 991 /* Miss out regulators which are not available due
994 * to alternate functions. 992 * to alternate functions.
995 */ 993 */
994 rinfo = &ddata->palmas_regs_info[id];
996 995
997 /* Register the regulators */ 996 /* Register the regulators */
998 pmic->desc[id].name = ddata->palmas_regs_info[id].name; 997 pmic->desc[id].name = rinfo->name;
999 pmic->desc[id].id = id; 998 pmic->desc[id].id = id;
1000 pmic->desc[id].type = REGULATOR_VOLTAGE; 999 pmic->desc[id].type = REGULATOR_VOLTAGE;
1001 pmic->desc[id].owner = THIS_MODULE; 1000 pmic->desc[id].owner = THIS_MODULE;
@@ -1013,12 +1012,12 @@ static int tps65917_ldo_registration(struct palmas_pmic *pmic,
1013 pmic->desc[id].enable_time = 500; 1012 pmic->desc[id].enable_time = 500;
1014 pmic->desc[id].vsel_reg = 1013 pmic->desc[id].vsel_reg =
1015 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, 1014 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
1016 ddata->palmas_regs_info[id].vsel_addr); 1015 rinfo->vsel_addr);
1017 pmic->desc[id].vsel_mask = 1016 pmic->desc[id].vsel_mask =
1018 PALMAS_LDO1_VOLTAGE_VSEL_MASK; 1017 PALMAS_LDO1_VOLTAGE_VSEL_MASK;
1019 pmic->desc[id].enable_reg = 1018 pmic->desc[id].enable_reg =
1020 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, 1019 PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
1021 ddata->palmas_regs_info[id].ctrl_addr); 1020 rinfo->ctrl_addr);
1022 pmic->desc[id].enable_mask = 1021 pmic->desc[id].enable_mask =
1023 PALMAS_LDO1_CTRL_MODE_ACTIVE; 1022 PALMAS_LDO1_CTRL_MODE_ACTIVE;
1024 /* 1023 /*
@@ -1035,7 +1034,7 @@ static int tps65917_ldo_registration(struct palmas_pmic *pmic,
1035 pmic->desc[id].ops = &palmas_ops_extreg; 1034 pmic->desc[id].ops = &palmas_ops_extreg;
1036 pmic->desc[id].enable_reg = 1035 pmic->desc[id].enable_reg =
1037 PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE, 1036 PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE,
1038 ddata->palmas_regs_info[id].ctrl_addr); 1037 rinfo->ctrl_addr);
1039 pmic->desc[id].enable_mask = 1038 pmic->desc[id].enable_mask =
1040 PALMAS_REGEN1_CTRL_MODE_ACTIVE; 1039 PALMAS_REGEN1_CTRL_MODE_ACTIVE;
1041 } 1040 }
@@ -1045,7 +1044,7 @@ static int tps65917_ldo_registration(struct palmas_pmic *pmic,
1045 else 1044 else
1046 config.init_data = NULL; 1045 config.init_data = NULL;
1047 1046
1048 pmic->desc[id].supply_name = ddata->palmas_regs_info[id].sname; 1047 pmic->desc[id].supply_name = rinfo->sname;
1049 config.of_node = ddata->palmas_matches[id].of_node; 1048 config.of_node = ddata->palmas_matches[id].of_node;
1050 1049
1051 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id], 1050 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
@@ -1089,6 +1088,7 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1089 unsigned int addr, reg; 1088 unsigned int addr, reg;
1090 struct regulator_dev *rdev; 1089 struct regulator_dev *rdev;
1091 struct palmas_reg_init *reg_init; 1090 struct palmas_reg_init *reg_init;
1091 struct palmas_regs_info *rinfo;
1092 1092
1093 for (id = ddata->smps_start; id <= ddata->smps_end; id++) { 1093 for (id = ddata->smps_start; id <= ddata->smps_end; id++) {
1094 bool ramp_delay_support = false; 1094 bool ramp_delay_support = false;
@@ -1127,12 +1127,13 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1127 if (!PALMAS_PMIC_HAS(pmic->palmas, SMPS10_BOOST)) 1127 if (!PALMAS_PMIC_HAS(pmic->palmas, SMPS10_BOOST))
1128 continue; 1128 continue;
1129 } 1129 }
1130 rinfo = &ddata->palmas_regs_info[id];
1130 1131
1131 if ((id == PALMAS_REG_SMPS6) || (id == PALMAS_REG_SMPS8)) 1132 if ((id == PALMAS_REG_SMPS6) || (id == PALMAS_REG_SMPS8))
1132 ramp_delay_support = true; 1133 ramp_delay_support = true;
1133 1134
1134 if (ramp_delay_support) { 1135 if (ramp_delay_support) {
1135 addr = ddata->palmas_regs_info[id].tstep_addr; 1136 addr = rinfo->tstep_addr;
1136 ret = palmas_smps_read(pmic->palmas, addr, &reg); 1137 ret = palmas_smps_read(pmic->palmas, addr, &reg);
1137 if (ret < 0) { 1138 if (ret < 0) {
1138 dev_err(pmic->dev, 1139 dev_err(pmic->dev,
@@ -1155,7 +1156,7 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1155 } 1156 }
1156 1157
1157 /* Register the regulators */ 1158 /* Register the regulators */
1158 pmic->desc[id].name = ddata->palmas_regs_info[id].name; 1159 pmic->desc[id].name = rinfo->name;
1159 pmic->desc[id].id = id; 1160 pmic->desc[id].id = id;
1160 1161
1161 switch (id) { 1162 switch (id) {
@@ -1188,7 +1189,7 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1188 * otherwise we error in probe with unsupportable 1189 * otherwise we error in probe with unsupportable
1189 * ranges. Read the current smps mode for later use. 1190 * ranges. Read the current smps mode for later use.
1190 */ 1191 */
1191 addr = palmas_regs_info[id].vsel_addr; 1192 addr = rinfo->vsel_addr;
1192 pmic->desc[id].n_linear_ranges = 3; 1193 pmic->desc[id].n_linear_ranges = 3;
1193 1194
1194 ret = palmas_smps_read(pmic->palmas, addr, &reg); 1195 ret = palmas_smps_read(pmic->palmas, addr, &reg);
@@ -1209,12 +1210,12 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1209 pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES; 1210 pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
1210 pmic->desc[id].vsel_reg = 1211 pmic->desc[id].vsel_reg =
1211 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, 1212 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
1212 palmas_regs_info[id].vsel_addr); 1213 rinfo->vsel_addr);
1213 pmic->desc[id].vsel_mask = 1214 pmic->desc[id].vsel_mask =
1214 PALMAS_SMPS12_VOLTAGE_VSEL_MASK; 1215 PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
1215 1216
1216 /* Read the smps mode for later use. */ 1217 /* Read the smps mode for later use. */
1217 addr = palmas_regs_info[id].ctrl_addr; 1218 addr = rinfo->ctrl_addr;
1218 ret = palmas_smps_read(pmic->palmas, addr, &reg); 1219 ret = palmas_smps_read(pmic->palmas, addr, &reg);
1219 if (ret) 1220 if (ret)
1220 return ret; 1221 return ret;
@@ -1223,7 +1224,7 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1223 1224
1224 pmic->desc[id].enable_reg = 1225 pmic->desc[id].enable_reg =
1225 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, 1226 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
1226 palmas_regs_info[id].ctrl_addr); 1227 rinfo->ctrl_addr);
1227 pmic->desc[id].enable_mask = 1228 pmic->desc[id].enable_mask =
1228 PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 1229 PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
1229 /* set_mode overrides this value */ 1230 /* set_mode overrides this value */
@@ -1238,7 +1239,7 @@ static int palmas_smps_registration(struct palmas_pmic *pmic,
1238 else 1239 else
1239 config.init_data = NULL; 1240 config.init_data = NULL;
1240 1241
1241 pmic->desc[id].supply_name = ddata->palmas_regs_info[id].sname; 1242 pmic->desc[id].supply_name = rinfo->sname;
1242 config.of_node = ddata->palmas_matches[id].of_node; 1243 config.of_node = ddata->palmas_matches[id].of_node;
1243 1244
1244 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id], 1245 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
@@ -1267,6 +1268,7 @@ static int tps65917_smps_registration(struct palmas_pmic *pmic,
1267 unsigned int addr, reg; 1268 unsigned int addr, reg;
1268 struct regulator_dev *rdev; 1269 struct regulator_dev *rdev;
1269 struct palmas_reg_init *reg_init; 1270 struct palmas_reg_init *reg_init;
1271 struct palmas_regs_info *rinfo;
1270 1272
1271 for (id = ddata->smps_start; id <= ddata->smps_end; id++) { 1273 for (id = ddata->smps_start; id <= ddata->smps_end; id++) {
1272 /* 1274 /*
@@ -1286,9 +1288,10 @@ static int tps65917_smps_registration(struct palmas_pmic *pmic,
1286 } else { 1288 } else {
1287 reg_init = NULL; 1289 reg_init = NULL;
1288 } 1290 }
1291 rinfo = &ddata->palmas_regs_info[id];
1289 1292
1290 /* Register the regulators */ 1293 /* Register the regulators */
1291 pmic->desc[id].name = ddata->palmas_regs_info[id].name; 1294 pmic->desc[id].name = rinfo->name;
1292 pmic->desc[id].id = id; 1295 pmic->desc[id].id = id;
1293 1296
1294 /* 1297 /*
@@ -1297,7 +1300,7 @@ static int tps65917_smps_registration(struct palmas_pmic *pmic,
1297 * otherwise we error in probe with unsupportable 1300 * otherwise we error in probe with unsupportable
1298 * ranges. Read the current smps mode for later use. 1301 * ranges. Read the current smps mode for later use.
1299 */ 1302 */
1300 addr = ddata->palmas_regs_info[id].vsel_addr; 1303 addr = rinfo->vsel_addr;
1301 1304
1302 ret = palmas_smps_read(pmic->palmas, addr, &reg); 1305 ret = palmas_smps_read(pmic->palmas, addr, &reg);
1303 if (ret) 1306 if (ret)
@@ -1319,14 +1322,14 @@ static int tps65917_smps_registration(struct palmas_pmic *pmic,
1319 pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES; 1322 pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
1320 pmic->desc[id].vsel_reg = 1323 pmic->desc[id].vsel_reg =
1321 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, 1324 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
1322 tps65917_regs_info[id].vsel_addr); 1325 rinfo->vsel_addr);
1323 pmic->desc[id].vsel_mask = 1326 pmic->desc[id].vsel_mask =
1324 PALMAS_SMPS12_VOLTAGE_VSEL_MASK; 1327 PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
1325 1328
1326 pmic->desc[id].ramp_delay = 2500; 1329 pmic->desc[id].ramp_delay = 2500;
1327 1330
1328 /* Read the smps mode for later use. */ 1331 /* Read the smps mode for later use. */
1329 addr = ddata->palmas_regs_info[id].ctrl_addr; 1332 addr = rinfo->ctrl_addr;
1330 ret = palmas_smps_read(pmic->palmas, addr, &reg); 1333 ret = palmas_smps_read(pmic->palmas, addr, &reg);
1331 if (ret) 1334 if (ret)
1332 return ret; 1335 return ret;
@@ -1341,7 +1344,7 @@ static int tps65917_smps_registration(struct palmas_pmic *pmic,
1341 else 1344 else
1342 config.init_data = NULL; 1345 config.init_data = NULL;
1343 1346
1344 pmic->desc[id].supply_name = ddata->palmas_regs_info[id].sname; 1347 pmic->desc[id].supply_name = rinfo->sname;
1345 config.of_node = ddata->palmas_matches[id].of_node; 1348 config.of_node = ddata->palmas_matches[id].of_node;
1346 1349
1347 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id], 1350 rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],