diff options
-rw-r--r-- | drivers/regulator/palmas-regulator.c | 109 |
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 | ||
435 | static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode) | 435 | static 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, ®); |
444 | ®); | ||
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) | |||
496 | static int palmas_smps_set_ramp_delay(struct regulator_dev *rdev, | 495 | static 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 | ||
591 | static int palmas_is_enabled_ldo(struct regulator_dev *dev) | 590 | static 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, ®); |
599 | ddata->palmas_regs_info[id].ctrl_addr, ®); | ||
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 = { | |||
643 | static int palmas_regulator_config_external(struct palmas *palmas, int id, | 642 | static 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, ®); | 673 | ret = palmas_smps_read(palmas, addr, ®); |
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, ®); | 718 | ret = palmas_smps_read(palmas, addr, ®); |
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, ®); | 744 | ret = palmas_ldo_read(palmas, addr, ®); |
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, ®); | 827 | ret = palmas_ldo_read(palmas, addr, ®); |
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, ®); | 845 | ret = palmas_ldo_read(palmas, addr, ®); |
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, ®); | 1137 | ret = palmas_smps_read(pmic->palmas, addr, ®); |
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, ®); | 1195 | ret = palmas_smps_read(pmic->palmas, addr, ®); |
@@ -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, ®); | 1219 | ret = palmas_smps_read(pmic->palmas, addr, ®); |
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, ®); | 1305 | ret = palmas_smps_read(pmic->palmas, addr, ®); |
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, ®); | 1333 | ret = palmas_smps_read(pmic->palmas, addr, ®); |
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], |