|
138 | 138 | #define AXP313A_DCDC_V_OUT_MASK GENMASK(6, 0)
|
139 | 139 | #define AXP313A_LDO_V_OUT_MASK GENMASK(4, 0)
|
140 | 140 |
|
| 141 | +#define AXP717_DCDC1_NUM_VOLTAGES 88 |
| 142 | +#define AXP717_DCDC2_NUM_VOLTAGES 107 |
| 143 | +#define AXP717_DCDC3_NUM_VOLTAGES 104 |
| 144 | +#define AXP717_DCDC_V_OUT_MASK GENMASK(6, 0) |
| 145 | +#define AXP717_LDO_V_OUT_MASK GENMASK(4, 0) |
| 146 | + |
141 | 147 | #define AXP803_PWR_OUT_DCDC1_MASK BIT_MASK(0)
|
142 | 148 | #define AXP803_PWR_OUT_DCDC2_MASK BIT_MASK(1)
|
143 | 149 | #define AXP803_PWR_OUT_DCDC3_MASK BIT_MASK(2)
|
@@ -752,6 +758,79 @@ static const struct regulator_desc axp313a_regulators[] = {
|
752 | 758 | AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800),
|
753 | 759 | };
|
754 | 760 |
|
| 761 | +static const struct linear_range axp717_dcdc1_ranges[] = { |
| 762 | + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), |
| 763 | + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), |
| 764 | +}; |
| 765 | + |
| 766 | +static const struct linear_range axp717_dcdc2_ranges[] = { |
| 767 | + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), |
| 768 | + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), |
| 769 | + REGULATOR_LINEAR_RANGE(1600000, 88, 107, 100000), |
| 770 | +}; |
| 771 | + |
| 772 | +static const struct linear_range axp717_dcdc3_ranges[] = { |
| 773 | + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), |
| 774 | + REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000), |
| 775 | +}; |
| 776 | + |
| 777 | +static const struct regulator_desc axp717_regulators[] = { |
| 778 | + AXP_DESC_RANGES(AXP717, DCDC1, "dcdc1", "vin1", |
| 779 | + axp717_dcdc1_ranges, AXP717_DCDC1_NUM_VOLTAGES, |
| 780 | + AXP717_DCDC1_CONTROL, AXP717_DCDC_V_OUT_MASK, |
| 781 | + AXP717_DCDC_OUTPUT_CONTROL, BIT(0)), |
| 782 | + AXP_DESC_RANGES(AXP717, DCDC2, "dcdc2", "vin2", |
| 783 | + axp717_dcdc2_ranges, AXP717_DCDC2_NUM_VOLTAGES, |
| 784 | + AXP717_DCDC2_CONTROL, AXP717_DCDC_V_OUT_MASK, |
| 785 | + AXP717_DCDC_OUTPUT_CONTROL, BIT(1)), |
| 786 | + AXP_DESC_RANGES(AXP717, DCDC3, "dcdc3", "vin3", |
| 787 | + axp717_dcdc3_ranges, AXP717_DCDC3_NUM_VOLTAGES, |
| 788 | + AXP717_DCDC3_CONTROL, AXP717_DCDC_V_OUT_MASK, |
| 789 | + AXP717_DCDC_OUTPUT_CONTROL, BIT(2)), |
| 790 | + AXP_DESC(AXP717, DCDC4, "dcdc4", "vin4", 1000, 3700, 100, |
| 791 | + AXP717_DCDC4_CONTROL, AXP717_DCDC_V_OUT_MASK, |
| 792 | + AXP717_DCDC_OUTPUT_CONTROL, BIT(3)), |
| 793 | + AXP_DESC(AXP717, ALDO1, "aldo1", "vin1", 500, 3500, 100, |
| 794 | + AXP717_ALDO1_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 795 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(0)), |
| 796 | + AXP_DESC(AXP717, ALDO2, "aldo2", "vin1", 500, 3500, 100, |
| 797 | + AXP717_ALDO2_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 798 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(1)), |
| 799 | + AXP_DESC(AXP717, ALDO3, "aldo3", "vin1", 500, 3500, 100, |
| 800 | + AXP717_ALDO3_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 801 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(2)), |
| 802 | + AXP_DESC(AXP717, ALDO4, "aldo4", "vin1", 500, 3500, 100, |
| 803 | + AXP717_ALDO4_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 804 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(3)), |
| 805 | + AXP_DESC(AXP717, BLDO1, "bldo1", "vin1", 500, 3500, 100, |
| 806 | + AXP717_BLDO1_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 807 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(4)), |
| 808 | + AXP_DESC(AXP717, BLDO2, "bldo2", "vin1", 500, 3500, 100, |
| 809 | + AXP717_BLDO2_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 810 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(5)), |
| 811 | + AXP_DESC(AXP717, BLDO3, "bldo3", "vin1", 500, 3500, 100, |
| 812 | + AXP717_BLDO3_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 813 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(6)), |
| 814 | + AXP_DESC(AXP717, BLDO4, "bldo4", "vin1", 500, 3500, 100, |
| 815 | + AXP717_BLDO4_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 816 | + AXP717_LDO0_OUTPUT_CONTROL, BIT(7)), |
| 817 | + AXP_DESC(AXP717, CLDO1, "cldo1", "vin1", 500, 3500, 100, |
| 818 | + AXP717_CLDO1_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 819 | + AXP717_LDO1_OUTPUT_CONTROL, BIT(0)), |
| 820 | + AXP_DESC(AXP717, CLDO2, "cldo2", "vin1", 500, 3500, 100, |
| 821 | + AXP717_CLDO2_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 822 | + AXP717_LDO1_OUTPUT_CONTROL, BIT(1)), |
| 823 | + AXP_DESC(AXP717, CLDO3, "cldo3", "vin1", 500, 3500, 100, |
| 824 | + AXP717_CLDO3_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 825 | + AXP717_LDO1_OUTPUT_CONTROL, BIT(2)), |
| 826 | + AXP_DESC(AXP717, CLDO4, "cldo4", "vin1", 500, 3500, 100, |
| 827 | + AXP717_CLDO4_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 828 | + AXP717_LDO1_OUTPUT_CONTROL, BIT(3)), |
| 829 | + AXP_DESC(AXP717, CPUSLDO, "cpusldo", "vin1", 500, 1400, 50, |
| 830 | + AXP717_CPUSLDO_CONTROL, AXP717_LDO_V_OUT_MASK, |
| 831 | + AXP717_LDO1_OUTPUT_CONTROL, BIT(4)), |
| 832 | +}; |
| 833 | + |
755 | 834 | /* DCDC ranges shared with AXP813 */
|
756 | 835 | static const struct linear_range axp803_dcdc234_ranges[] = {
|
757 | 836 | REGULATOR_LINEAR_RANGE(500000,
|
@@ -1253,6 +1332,7 @@ static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
|
1253 | 1332 | step = 150;
|
1254 | 1333 | break;
|
1255 | 1334 | case AXP313A_ID:
|
| 1335 | + case AXP717_ID: |
1256 | 1336 | case AXP15060_ID:
|
1257 | 1337 | /* The DCDC PWM frequency seems to be fixed to 3 MHz. */
|
1258 | 1338 | if (dcdcfreq != 0) {
|
@@ -1479,6 +1559,10 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
|
1479 | 1559 | regulators = axp313a_regulators;
|
1480 | 1560 | nregulators = AXP313A_REG_ID_MAX;
|
1481 | 1561 | break;
|
| 1562 | + case AXP717_ID: |
| 1563 | + regulators = axp717_regulators; |
| 1564 | + nregulators = AXP717_REG_ID_MAX; |
| 1565 | + break; |
1482 | 1566 | case AXP803_ID:
|
1483 | 1567 | regulators = axp803_regulators;
|
1484 | 1568 | nregulators = AXP803_REG_ID_MAX;
|
|
0 commit comments