#define AXP313A_DCDC_V_OUT_MASK                GENMASK(6, 0)
 #define AXP313A_LDO_V_OUT_MASK         GENMASK(4, 0)
 
+#define AXP717_DCDC1_NUM_VOLTAGES      88
+#define AXP717_DCDC2_NUM_VOLTAGES      107
+#define AXP717_DCDC3_NUM_VOLTAGES      104
+#define AXP717_DCDC_V_OUT_MASK         GENMASK(6, 0)
+#define AXP717_LDO_V_OUT_MASK          GENMASK(4, 0)
+
 #define AXP803_PWR_OUT_DCDC1_MASK      BIT_MASK(0)
 #define AXP803_PWR_OUT_DCDC2_MASK      BIT_MASK(1)
 #define AXP803_PWR_OUT_DCDC3_MASK      BIT_MASK(2)
        AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800),
 };
 
+static const struct linear_range axp717_dcdc1_ranges[] = {
+       REGULATOR_LINEAR_RANGE(500000,   0, 70, 10000),
+       REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
+};
+
+static const struct linear_range axp717_dcdc2_ranges[] = {
+       REGULATOR_LINEAR_RANGE(500000,   0,  70,  10000),
+       REGULATOR_LINEAR_RANGE(1220000, 71,  87,  20000),
+       REGULATOR_LINEAR_RANGE(1600000, 88, 107, 100000),
+};
+
+static const struct linear_range axp717_dcdc3_ranges[] = {
+       REGULATOR_LINEAR_RANGE(500000,   0,  70, 10000),
+       REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000),
+};
+
+static const struct regulator_desc axp717_regulators[] = {
+       AXP_DESC_RANGES(AXP717, DCDC1, "dcdc1", "vin1",
+                       axp717_dcdc1_ranges, AXP717_DCDC1_NUM_VOLTAGES,
+                       AXP717_DCDC1_CONTROL, AXP717_DCDC_V_OUT_MASK,
+                       AXP717_DCDC_OUTPUT_CONTROL, BIT(0)),
+       AXP_DESC_RANGES(AXP717, DCDC2, "dcdc2", "vin2",
+                       axp717_dcdc2_ranges, AXP717_DCDC2_NUM_VOLTAGES,
+                       AXP717_DCDC2_CONTROL, AXP717_DCDC_V_OUT_MASK,
+                       AXP717_DCDC_OUTPUT_CONTROL, BIT(1)),
+       AXP_DESC_RANGES(AXP717, DCDC3, "dcdc3", "vin3",
+                       axp717_dcdc3_ranges, AXP717_DCDC3_NUM_VOLTAGES,
+                       AXP717_DCDC3_CONTROL, AXP717_DCDC_V_OUT_MASK,
+                       AXP717_DCDC_OUTPUT_CONTROL, BIT(2)),
+       AXP_DESC(AXP717, DCDC4, "dcdc4", "vin4", 1000, 3700, 100,
+                AXP717_DCDC4_CONTROL, AXP717_DCDC_V_OUT_MASK,
+                AXP717_DCDC_OUTPUT_CONTROL, BIT(3)),
+       AXP_DESC(AXP717, ALDO1, "aldo1", "vin1", 500, 3500, 100,
+                AXP717_ALDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(0)),
+       AXP_DESC(AXP717, ALDO2, "aldo2", "vin1", 500, 3500, 100,
+                AXP717_ALDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(1)),
+       AXP_DESC(AXP717, ALDO3, "aldo3", "vin1", 500, 3500, 100,
+                AXP717_ALDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(2)),
+       AXP_DESC(AXP717, ALDO4, "aldo4", "vin1", 500, 3500, 100,
+                AXP717_ALDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(3)),
+       AXP_DESC(AXP717, BLDO1, "bldo1", "vin1", 500, 3500, 100,
+                AXP717_BLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(4)),
+       AXP_DESC(AXP717, BLDO2, "bldo2", "vin1", 500, 3500, 100,
+                AXP717_BLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(5)),
+       AXP_DESC(AXP717, BLDO3, "bldo3", "vin1", 500, 3500, 100,
+                AXP717_BLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(6)),
+       AXP_DESC(AXP717, BLDO4, "bldo4", "vin1", 500, 3500, 100,
+                AXP717_BLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO0_OUTPUT_CONTROL, BIT(7)),
+       AXP_DESC(AXP717, CLDO1, "cldo1", "vin1", 500, 3500, 100,
+                AXP717_CLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO1_OUTPUT_CONTROL, BIT(0)),
+       AXP_DESC(AXP717, CLDO2, "cldo2", "vin1", 500, 3500, 100,
+                AXP717_CLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO1_OUTPUT_CONTROL, BIT(1)),
+       AXP_DESC(AXP717, CLDO3, "cldo3", "vin1", 500, 3500, 100,
+                AXP717_CLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO1_OUTPUT_CONTROL, BIT(2)),
+       AXP_DESC(AXP717, CLDO4, "cldo4", "vin1", 500, 3500, 100,
+                AXP717_CLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO1_OUTPUT_CONTROL, BIT(3)),
+       AXP_DESC(AXP717, CPUSLDO, "cpusldo", "vin1", 500, 1400, 50,
+                AXP717_CPUSLDO_CONTROL, AXP717_LDO_V_OUT_MASK,
+                AXP717_LDO1_OUTPUT_CONTROL, BIT(4)),
+};
+
 /* DCDC ranges shared with AXP813 */
 static const struct linear_range axp803_dcdc234_ranges[] = {
        REGULATOR_LINEAR_RANGE(500000,
                step = 150;
                break;
        case AXP313A_ID:
+       case AXP717_ID:
        case AXP15060_ID:
                /* The DCDC PWM frequency seems to be fixed to 3 MHz. */
                if (dcdcfreq != 0) {
                regulators = axp313a_regulators;
                nregulators = AXP313A_REG_ID_MAX;
                break;
+       case AXP717_ID:
+               regulators = axp717_regulators;
+               nregulators = AXP717_REG_ID_MAX;
+               break;
        case AXP803_ID:
                regulators = axp803_regulators;
                nregulators = AXP803_REG_ID_MAX;