|
18 | 18 | #include <linux/regulator/of_regulator.h> |
19 | 19 | #include <linux/mfd/samsung/core.h> |
20 | 20 | #include <linux/mfd/samsung/s2mpg10.h> |
| 21 | +#include <linux/mfd/samsung/s2mpg11.h> |
21 | 22 | #include <linux/mfd/samsung/s2mps11.h> |
22 | 23 | #include <linux/mfd/samsung/s2mps13.h> |
23 | 24 | #include <linux/mfd/samsung/s2mps14.h> |
@@ -437,9 +438,20 @@ static int s2mpg10_of_parse_cb(struct device_node *np, |
437 | 438 | [S2MPG10_EXTCTRL_LDO20M_EN2] = S2MPG10_PCTRLSEL_LDO20M_EN2, |
438 | 439 | [S2MPG10_EXTCTRL_LDO20M_EN] = S2MPG10_PCTRLSEL_LDO20M_EN, |
439 | 440 | }; |
| 441 | + static const u32 ext_control_s2mpg11[] = { |
| 442 | + [S2MPG11_EXTCTRL_PWREN] = S2MPG10_PCTRLSEL_PWREN, |
| 443 | + [S2MPG11_EXTCTRL_PWREN_MIF] = S2MPG10_PCTRLSEL_PWREN_MIF, |
| 444 | + [S2MPG11_EXTCTRL_AP_ACTIVE_N] = S2MPG10_PCTRLSEL_AP_ACTIVE_N, |
| 445 | + [S2MPG11_EXTCTRL_G3D_EN] = S2MPG10_PCTRLSEL_CPUCL1_EN, |
| 446 | + [S2MPG11_EXTCTRL_G3D_EN2] = S2MPG10_PCTRLSEL_CPUCL1_EN2, |
| 447 | + [S2MPG11_EXTCTRL_AOC_VDD] = S2MPG10_PCTRLSEL_CPUCL2_EN, |
| 448 | + [S2MPG11_EXTCTRL_AOC_RET] = S2MPG10_PCTRLSEL_CPUCL2_EN2, |
| 449 | + [S2MPG11_EXTCTRL_UFS_EN] = S2MPG10_PCTRLSEL_TPU_EN, |
| 450 | + [S2MPG11_EXTCTRL_LDO13S_EN] = S2MPG10_PCTRLSEL_TPU_EN2, |
| 451 | + }; |
440 | 452 | u32 ext_control; |
441 | 453 |
|
442 | | - if (s2mps11->dev_type != S2MPG10) |
| 454 | + if (s2mps11->dev_type != S2MPG10 && s2mps11->dev_type != S2MPG11) |
443 | 455 | return 0; |
444 | 456 |
|
445 | 457 | if (of_property_read_u32(np, "samsung,ext-control", &ext_control)) |
@@ -470,6 +482,31 @@ static int s2mpg10_of_parse_cb(struct device_node *np, |
470 | 482 | ext_control = ext_control_s2mpg10[ext_control]; |
471 | 483 | break; |
472 | 484 |
|
| 485 | + case S2MPG11: |
| 486 | + switch (desc->id) { |
| 487 | + case S2MPG11_BUCK1 ... S2MPG11_BUCK3: |
| 488 | + case S2MPG11_BUCK5: |
| 489 | + case S2MPG11_BUCK8: |
| 490 | + case S2MPG11_BUCK9: |
| 491 | + case S2MPG11_BUCKD: |
| 492 | + case S2MPG11_BUCKA: |
| 493 | + case S2MPG11_LDO1: |
| 494 | + case S2MPG11_LDO2: |
| 495 | + case S2MPG11_LDO8: |
| 496 | + case S2MPG11_LDO13: |
| 497 | + if (ext_control > S2MPG11_EXTCTRL_LDO13S_EN) |
| 498 | + return -EINVAL; |
| 499 | + break; |
| 500 | + |
| 501 | + default: |
| 502 | + return -EINVAL; |
| 503 | + } |
| 504 | + |
| 505 | + if (ext_control > ARRAY_SIZE(ext_control_s2mpg11)) |
| 506 | + return -EINVAL; |
| 507 | + ext_control = ext_control_s2mpg11[ext_control]; |
| 508 | + break; |
| 509 | + |
473 | 510 | default: |
474 | 511 | return -EINVAL; |
475 | 512 | } |
@@ -507,6 +544,7 @@ static int s2mpg10_enable_ext_control(struct s2mps11_info *s2mps11, |
507 | 544 |
|
508 | 545 | switch (s2mps11->dev_type) { |
509 | 546 | case S2MPG10: |
| 547 | + case S2MPG11: |
510 | 548 | s2mpg10_desc = to_s2mpg10_regulator_desc(rdev->desc); |
511 | 549 | break; |
512 | 550 |
|
@@ -607,6 +645,21 @@ static int s2mpg10_regulator_buck_set_voltage_time(struct regulator_dev *rdev, |
607 | 645 | rdev->desc->ramp_mask); |
608 | 646 | } |
609 | 647 |
|
| 648 | +static int s2mpg11_regulator_buck_set_voltage_time(struct regulator_dev *rdev, |
| 649 | + int old_uV, int new_uV) |
| 650 | +{ |
| 651 | + unsigned int ramp_mask; |
| 652 | + |
| 653 | + ramp_mask = rdev->desc->ramp_mask; |
| 654 | + if (old_uV > new_uV) |
| 655 | + /* The downwards mask is at a different position. */ |
| 656 | + ramp_mask >>= 2; |
| 657 | + |
| 658 | + return s2mpg1x_regulator_buck_set_voltage_time(rdev, old_uV, new_uV, |
| 659 | + rdev->desc->ramp_reg, |
| 660 | + ramp_mask); |
| 661 | +} |
| 662 | + |
610 | 663 | /* |
611 | 664 | * We assign both, ::set_voltage_time() and ::set_voltage_time_sel(), because |
612 | 665 | * only if the latter is != NULL, the regulator core will call neither during |
@@ -967,6 +1020,246 @@ static const struct s2mpg10_regulator_desc s2mpg10_regulators[] = { |
967 | 1020 | s2mpg10_regulator_desc_ldo(31, "vinl11m", s2mpg10_ldo_vranges2) |
968 | 1021 | }; |
969 | 1022 |
|
| 1023 | +static const struct regulator_ops s2mpg11_reg_buck_ops[] = { |
| 1024 | + [S2MPG10_REGULATOR_OPS_STD] = { |
| 1025 | + .list_voltage = regulator_list_voltage_linear_range, |
| 1026 | + .map_voltage = regulator_map_voltage_linear_range, |
| 1027 | + .is_enabled = regulator_is_enabled_regmap, |
| 1028 | + .enable = regulator_enable_regmap, |
| 1029 | + .disable = regulator_disable_regmap, |
| 1030 | + .get_voltage_sel = regulator_get_voltage_sel_regmap, |
| 1031 | + .set_voltage_sel = regulator_set_voltage_sel_regmap, |
| 1032 | + .set_voltage_time = s2mpg11_regulator_buck_set_voltage_time, |
| 1033 | + .set_voltage_time_sel = regulator_set_voltage_time_sel, |
| 1034 | + .enable_time = s2mpg10_regulator_buck_enable_time, |
| 1035 | + .set_ramp_delay = regulator_set_ramp_delay_regmap, |
| 1036 | + }, |
| 1037 | + [S2MPG10_REGULATOR_OPS_EXTCONTROL] = { |
| 1038 | + .list_voltage = regulator_list_voltage_linear_range, |
| 1039 | + .map_voltage = regulator_map_voltage_linear_range, |
| 1040 | + .enable = s2mpg10_regulator_enable_nop, |
| 1041 | + .get_voltage_sel = regulator_get_voltage_sel_regmap, |
| 1042 | + .set_voltage_sel = regulator_set_voltage_sel_regmap, |
| 1043 | + .set_voltage_time = s2mpg11_regulator_buck_set_voltage_time, |
| 1044 | + .set_voltage_time_sel = regulator_set_voltage_time_sel, |
| 1045 | + .enable_time = s2mpg10_regulator_buck_enable_time, |
| 1046 | + .set_ramp_delay = regulator_set_ramp_delay_regmap, |
| 1047 | + } |
| 1048 | +}; |
| 1049 | + |
| 1050 | +#define s2mpg11_buck_to_ramp_mask(n) (GENMASK(3, 2) << (((n) % 2) * 4)) |
| 1051 | + |
| 1052 | +#define regulator_desc_s2mpg11_buckx(_name, _id, _supply, _vrange, \ |
| 1053 | + _vsel_reg, _en_reg, _en_mask, _r_reg) \ |
| 1054 | + regulator_desc_s2mpg1x_buck_cmn(_name, _id, _supply, \ |
| 1055 | + s2mpg11_reg_buck_ops, _vrange, \ |
| 1056 | + S2MPG11_PMIC_##_vsel_reg, GENMASK(7, 0), \ |
| 1057 | + S2MPG11_PMIC_##_en_reg, _en_mask, \ |
| 1058 | + S2MPG11_PMIC_##_r_reg, \ |
| 1059 | + s2mpg11_buck_to_ramp_mask(_id - S2MPG11_BUCK1), \ |
| 1060 | + s2mpg10_buck_ramp_table, \ |
| 1061 | + ARRAY_SIZE(s2mpg10_buck_ramp_table), 30) |
| 1062 | + |
| 1063 | +#define s2mpg11_regulator_desc_buck_xm(_num, _vrange, _vsel_reg_sfx, \ |
| 1064 | + _en_mask, _r_reg, _en_rrate) \ |
| 1065 | + .desc = regulator_desc_s2mpg11_buckx(#_num"s", \ |
| 1066 | + S2MPG11_BUCK##_num, "vinb"#_num"s", \ |
| 1067 | + _vrange, \ |
| 1068 | + B##_num##S_##_vsel_reg_sfx, \ |
| 1069 | + B##_num##S_CTRL, _en_mask, \ |
| 1070 | + _r_reg), \ |
| 1071 | + .enable_ramp_rate = _en_rrate |
| 1072 | + |
| 1073 | +#define s2mpg11_regulator_desc_buck_cm(_num, _vrange, _vsel_reg_sfx, \ |
| 1074 | + _en_mask, _r_reg) \ |
| 1075 | + [S2MPG11_BUCK##_num] = { \ |
| 1076 | + s2mpg11_regulator_desc_buck_xm(_num, _vrange, \ |
| 1077 | + _vsel_reg_sfx, _en_mask, _r_reg, 12500), \ |
| 1078 | + } |
| 1079 | + |
| 1080 | +#define s2mpg11_regulator_desc_buckn_cm_gpio(_num, _vrange, \ |
| 1081 | + _vsel_reg_sfx, _en_mask, _r_reg, _pc_reg, _pc_mask) \ |
| 1082 | + [S2MPG11_BUCK##_num] = { \ |
| 1083 | + s2mpg11_regulator_desc_buck_xm(_num, _vrange, \ |
| 1084 | + _vsel_reg_sfx, _en_mask, _r_reg, 12500), \ |
| 1085 | + .pctrlsel_reg = S2MPG11_PMIC_##_pc_reg, \ |
| 1086 | + .pctrlsel_mask = _pc_mask, \ |
| 1087 | + } |
| 1088 | + |
| 1089 | +#define s2mpg11_regulator_desc_buck_vm(_num, _vrange, _vsel_reg_sfx, \ |
| 1090 | + _en_mask, _r_reg) \ |
| 1091 | + [S2MPG11_BUCK##_num] = { \ |
| 1092 | + s2mpg11_regulator_desc_buck_xm(_num, _vrange, \ |
| 1093 | + _vsel_reg_sfx, _en_mask, _r_reg, 25000), \ |
| 1094 | + } |
| 1095 | + |
| 1096 | +#define s2mpg11_regulator_desc_bucka(_num, _num_lower, _r_reg, \ |
| 1097 | + _pc_reg, _pc_mask) \ |
| 1098 | + [S2MPG11_BUCK##_num] = { \ |
| 1099 | + .desc = regulator_desc_s2mpg11_buckx(#_num_lower, \ |
| 1100 | + S2MPG11_BUCK##_num, "vinb"#_num_lower, \ |
| 1101 | + s2mpg11_buck_vranges##_num_lower, \ |
| 1102 | + BUCK##_num##_OUT, \ |
| 1103 | + BUCK##_num##_CTRL, GENMASK(7, 6), \ |
| 1104 | + _r_reg), \ |
| 1105 | + .enable_ramp_rate = 25000, \ |
| 1106 | + .pctrlsel_reg = S2MPG11_PMIC_##_pc_reg, \ |
| 1107 | + .pctrlsel_mask = _pc_mask, \ |
| 1108 | + } |
| 1109 | + |
| 1110 | +#define s2mpg11_regulator_desc_buckboost() \ |
| 1111 | + [S2MPG11_BUCKBOOST] = { \ |
| 1112 | + .desc = regulator_desc_s2mpg1x_buck_cmn("boost", \ |
| 1113 | + S2MPG11_BUCKBOOST, "vinbb", \ |
| 1114 | + s2mpg10_reg_ldo_ops, \ |
| 1115 | + s2mpg11_buck_vrangesboost, \ |
| 1116 | + S2MPG11_PMIC_BB_OUT1, GENMASK(6, 0), \ |
| 1117 | + S2MPG11_PMIC_BB_CTRL, BIT(7), \ |
| 1118 | + 0, 0, NULL, 0, 35), \ |
| 1119 | + .enable_ramp_rate = 17500, \ |
| 1120 | + } |
| 1121 | + |
| 1122 | +#define s2mpg11_regulator_desc_ldo_cmn(_num, _supply, _ops, \ |
| 1123 | + _vrange, _vsel_reg_sfx, _vsel_mask, _en_reg, _en_mask, \ |
| 1124 | + _ramp_delay, _r_reg, _r_mask, _r_table, _r_table_sz, \ |
| 1125 | + _pc_reg, _pc_mask) \ |
| 1126 | + [S2MPG11_LDO##_num] = { \ |
| 1127 | + .desc = regulator_desc_s2mpg1x_ldo_cmn(#_num "s", \ |
| 1128 | + S2MPG11_LDO##_num, _supply, _ops, \ |
| 1129 | + _vrange, \ |
| 1130 | + S2MPG11_PMIC_L##_num##S_##_vsel_reg_sfx, \ |
| 1131 | + _vsel_mask, \ |
| 1132 | + S2MPG11_PMIC_##_en_reg, _en_mask, \ |
| 1133 | + _ramp_delay, _r_reg, _r_mask, _r_table, \ |
| 1134 | + _r_table_sz), \ |
| 1135 | + .pctrlsel_reg = _pc_reg, \ |
| 1136 | + .pctrlsel_mask = _pc_mask, \ |
| 1137 | + } |
| 1138 | + |
| 1139 | +/* standard LDO via LxM_CTRL */ |
| 1140 | +#define s2mpg11_regulator_desc_ldo(_num, _supply, _vrange) \ |
| 1141 | + s2mpg11_regulator_desc_ldo_cmn(_num, _supply, \ |
| 1142 | + s2mpg10_reg_ldo_ops, _vrange, CTRL, GENMASK(5, 0), \ |
| 1143 | + L##_num##S_CTRL, BIT(7), \ |
| 1144 | + 0, 0, 0, NULL, 0, \ |
| 1145 | + 0, 0) |
| 1146 | + |
| 1147 | +/* standard LDO but possibly GPIO controlled */ |
| 1148 | +#define s2mpg11_regulator_desc_ldo_gpio(_num, _supply, _vrange, \ |
| 1149 | + _pc_reg, _pc_mask) \ |
| 1150 | + s2mpg11_regulator_desc_ldo_cmn(_num, _supply, \ |
| 1151 | + s2mpg10_reg_ldo_ops, _vrange, CTRL, GENMASK(5, 0), \ |
| 1152 | + L##_num##S_CTRL, GENMASK(7, 6), \ |
| 1153 | + 0, 0, 0, NULL, 0, \ |
| 1154 | + S2MPG11_PMIC_##_pc_reg, _pc_mask) |
| 1155 | + |
| 1156 | +/* LDO with ramp support and possibly GPIO controlled */ |
| 1157 | +#define s2mpg11_regulator_desc_ldo_ramp(_num, _supply, _vrange, \ |
| 1158 | + _en_mask, _r_reg, _pc_reg, _pc_mask) \ |
| 1159 | + s2mpg11_regulator_desc_ldo_cmn(_num, _supply, \ |
| 1160 | + s2mpg10_reg_ldo_ramp_ops, _vrange, CTRL1, GENMASK(6, 0), \ |
| 1161 | + LDO_CTRL1, _en_mask, \ |
| 1162 | + 6250, S2MPG11_PMIC_##_r_reg, GENMASK(1, 0), \ |
| 1163 | + s2mpg10_ldo_ramp_table, \ |
| 1164 | + ARRAY_SIZE(s2mpg10_ldo_ramp_table), \ |
| 1165 | + S2MPG11_PMIC_##_pc_reg, _pc_mask) |
| 1166 | + |
| 1167 | +/* voltage range for s2mpg11 BUCK 1, 2, 3, 4, 8, 9, 10 */ |
| 1168 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, 1, 200000, 450000, 1300000, STEP_6_25_MV); |
| 1169 | + |
| 1170 | +/* voltage range for s2mpg11 BUCK 5 */ |
| 1171 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, 5, 200000, 400000, 1300000, STEP_6_25_MV); |
| 1172 | + |
| 1173 | +/* voltage range for s2mpg11 BUCK 6 */ |
| 1174 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, 6, 200000, 1000000, 1500000, STEP_6_25_MV); |
| 1175 | + |
| 1176 | +/* voltage range for s2mpg11 BUCK 7 */ |
| 1177 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, 7, 600000, 1500000, 2200000, STEP_12_5_MV); |
| 1178 | + |
| 1179 | +/* voltage range for s2mpg11 BUCK D */ |
| 1180 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, d, 600000, 2400000, 3300000, STEP_12_5_MV); |
| 1181 | + |
| 1182 | +/* voltage range for s2mpg11 BUCK A */ |
| 1183 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, a, 600000, 1700000, 2100000, STEP_12_5_MV); |
| 1184 | + |
| 1185 | +/* voltage range for s2mpg11 BUCK BOOST */ |
| 1186 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_buck, boost, |
| 1187 | + 2600000, 3000000, 3600000, STEP_12_5_MV); |
| 1188 | + |
| 1189 | +/* voltage range for s2mpg11 LDO 1, 2 */ |
| 1190 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 1, 300000, 450000, 950000, STEP_12_5_MV); |
| 1191 | + |
| 1192 | +/* voltage range for s2mpg11 LDO 3, 7, 10, 11, 12, 14, 15 */ |
| 1193 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 3, 700000, 1600000, 1950000, STEP_25_MV); |
| 1194 | + |
| 1195 | +/* voltage range for s2mpg11 LDO 4, 6 */ |
| 1196 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 4, 1800000, 2500000, 3300000, STEP_25_MV); |
| 1197 | + |
| 1198 | +/* voltage range for s2mpg11 LDO 5 */ |
| 1199 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 5, 1600000, 1600000, 1950000, STEP_12_5_MV); |
| 1200 | + |
| 1201 | +/* voltage range for s2mpg11 LDO 8 */ |
| 1202 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 8, 979600, 1130400, 1281200, 5800); |
| 1203 | + |
| 1204 | +/* voltage range for s2mpg11 LDO 9 */ |
| 1205 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 9, 725000, 725000, 1300000, STEP_12_5_MV); |
| 1206 | + |
| 1207 | +/* voltage range for s2mpg11 LDO 13 */ |
| 1208 | +S2MPG10_VOLTAGE_RANGE(s2mpg11_ldo, 13, 1800000, 1800000, 3350000, STEP_25_MV); |
| 1209 | + |
| 1210 | +static const struct s2mpg10_regulator_desc s2mpg11_regulators[] = { |
| 1211 | + s2mpg11_regulator_desc_buckboost(), |
| 1212 | + s2mpg11_regulator_desc_buckn_cm_gpio(1, s2mpg11_buck_vranges1, |
| 1213 | + OUT1, GENMASK(7, 6), DVS_RAMP1, |
| 1214 | + PCTRLSEL1, GENMASK(3, 0)), |
| 1215 | + s2mpg11_regulator_desc_buckn_cm_gpio(2, s2mpg11_buck_vranges1, |
| 1216 | + OUT1, GENMASK(7, 6), DVS_RAMP1, |
| 1217 | + PCTRLSEL1, GENMASK(7, 4)), |
| 1218 | + s2mpg11_regulator_desc_buckn_cm_gpio(3, s2mpg11_buck_vranges1, |
| 1219 | + OUT1, GENMASK(7, 6), DVS_RAMP2, |
| 1220 | + PCTRLSEL2, GENMASK(3, 0)), |
| 1221 | + s2mpg11_regulator_desc_buck_cm(4, s2mpg11_buck_vranges1, |
| 1222 | + OUT, BIT(7), DVS_RAMP2), |
| 1223 | + s2mpg11_regulator_desc_buckn_cm_gpio(5, s2mpg11_buck_vranges5, |
| 1224 | + OUT, GENMASK(7, 6), DVS_RAMP3, |
| 1225 | + PCTRLSEL2, GENMASK(7, 4)), |
| 1226 | + s2mpg11_regulator_desc_buck_cm(6, s2mpg11_buck_vranges6, |
| 1227 | + OUT1, BIT(7), DVS_RAMP3), |
| 1228 | + s2mpg11_regulator_desc_buck_vm(7, s2mpg11_buck_vranges7, |
| 1229 | + OUT1, BIT(7), DVS_RAMP4), |
| 1230 | + s2mpg11_regulator_desc_buckn_cm_gpio(8, s2mpg11_buck_vranges1, |
| 1231 | + OUT1, GENMASK(7, 6), DVS_RAMP4, |
| 1232 | + PCTRLSEL3, GENMASK(3, 0)), |
| 1233 | + s2mpg11_regulator_desc_buckn_cm_gpio(9, s2mpg11_buck_vranges1, |
| 1234 | + OUT1, GENMASK(7, 6), DVS_RAMP5, |
| 1235 | + PCTRLSEL3, GENMASK(7, 4)), |
| 1236 | + s2mpg11_regulator_desc_buck_cm(10, s2mpg11_buck_vranges1, |
| 1237 | + OUT, BIT(7), DVS_RAMP5), |
| 1238 | + s2mpg11_regulator_desc_bucka(D, d, DVS_RAMP6, PCTRLSEL4, GENMASK(3, 0)), |
| 1239 | + s2mpg11_regulator_desc_bucka(A, a, DVS_RAMP6, PCTRLSEL4, GENMASK(7, 4)), |
| 1240 | + s2mpg11_regulator_desc_ldo_ramp(1, "vinl1s", s2mpg11_ldo_vranges1, |
| 1241 | + GENMASK(5, 4), DVS_SYNC_CTRL1, |
| 1242 | + PCTRLSEL5, GENMASK(3, 0)), |
| 1243 | + s2mpg11_regulator_desc_ldo_ramp(2, "vinl1s", s2mpg11_ldo_vranges1, |
| 1244 | + GENMASK(7, 6), DVS_SYNC_CTRL2, |
| 1245 | + PCTRLSEL5, GENMASK(7, 4)), |
| 1246 | + s2mpg11_regulator_desc_ldo(3, "vinl3s", s2mpg11_ldo_vranges3), |
| 1247 | + s2mpg11_regulator_desc_ldo(4, "vinl5s", s2mpg11_ldo_vranges4), |
| 1248 | + s2mpg11_regulator_desc_ldo(5, "vinl3s", s2mpg11_ldo_vranges5), |
| 1249 | + s2mpg11_regulator_desc_ldo(6, "vinl5s", s2mpg11_ldo_vranges4), |
| 1250 | + s2mpg11_regulator_desc_ldo(7, "vinl3s", s2mpg11_ldo_vranges3), |
| 1251 | + s2mpg11_regulator_desc_ldo_gpio(8, "vinl2s", s2mpg11_ldo_vranges8, |
| 1252 | + PCTRLSEL6, GENMASK(3, 0)), |
| 1253 | + s2mpg11_regulator_desc_ldo(9, "vinl2s", s2mpg11_ldo_vranges9), |
| 1254 | + s2mpg11_regulator_desc_ldo(10, "vinl4s", s2mpg11_ldo_vranges3), |
| 1255 | + s2mpg11_regulator_desc_ldo(11, "vinl4s", s2mpg11_ldo_vranges3), |
| 1256 | + s2mpg11_regulator_desc_ldo(12, "vinl4s", s2mpg11_ldo_vranges3), |
| 1257 | + s2mpg11_regulator_desc_ldo_gpio(13, "vinl6s", s2mpg11_ldo_vranges13, |
| 1258 | + PCTRLSEL6, GENMASK(7, 4)), |
| 1259 | + s2mpg11_regulator_desc_ldo(14, "vinl4s", s2mpg11_ldo_vranges3), |
| 1260 | + s2mpg11_regulator_desc_ldo(15, "vinl3s", s2mpg11_ldo_vranges3) |
| 1261 | +}; |
| 1262 | + |
970 | 1263 | static const struct regulator_ops s2mps11_ldo_ops = { |
971 | 1264 | .list_voltage = regulator_list_voltage_linear, |
972 | 1265 | .map_voltage = regulator_map_voltage_linear, |
@@ -1851,6 +2144,7 @@ static int s2mps11_handle_ext_control(struct s2mps11_info *s2mps11, |
1851 | 2144 | break; |
1852 | 2145 |
|
1853 | 2146 | case S2MPG10: |
| 2147 | + case S2MPG11: |
1854 | 2148 | /* |
1855 | 2149 | * If desc.enable_val is != 0, then external control was |
1856 | 2150 | * requested. We can not test s2mpg10_desc::ext_control, |
@@ -1891,6 +2185,11 @@ static int s2mps11_pmic_probe(struct platform_device *pdev) |
1891 | 2185 | s2mpg1x_regulators = s2mpg10_regulators; |
1892 | 2186 | BUILD_BUG_ON(ARRAY_SIZE(s2mpg10_regulators) > S2MPS_REGULATOR_MAX); |
1893 | 2187 | break; |
| 2188 | + case S2MPG11: |
| 2189 | + rdev_num = ARRAY_SIZE(s2mpg11_regulators); |
| 2190 | + s2mpg1x_regulators = s2mpg11_regulators; |
| 2191 | + BUILD_BUG_ON(ARRAY_SIZE(s2mpg11_regulators) > S2MPS_REGULATOR_MAX); |
| 2192 | + break; |
1894 | 2193 | case S2MPS11X: |
1895 | 2194 | rdev_num = ARRAY_SIZE(s2mps11_regulators); |
1896 | 2195 | regulators = s2mps11_regulators; |
@@ -1971,6 +2270,7 @@ static int s2mps11_pmic_probe(struct platform_device *pdev) |
1971 | 2270 |
|
1972 | 2271 | static const struct platform_device_id s2mps11_pmic_id[] = { |
1973 | 2272 | { "s2mpg10-regulator", S2MPG10}, |
| 2273 | + { "s2mpg11-regulator", S2MPG11}, |
1974 | 2274 | { "s2mps11-regulator", S2MPS11X}, |
1975 | 2275 | { "s2mps13-regulator", S2MPS13X}, |
1976 | 2276 | { "s2mps14-regulator", S2MPS14X}, |
|
0 commit comments