Lines Matching +full:have +full:- +full:pmic
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Driver for Regulator part of Palmas PMIC Chips
5 * Copyright 2011-2013 Texas Instruments Inc.
41 .sname = "smps1-in",
49 .sname = "smps1-in",
57 .sname = "smps3-in",
64 .sname = "smps4-in",
72 .sname = "smps4-in",
80 .sname = "smps6-in",
88 .sname = "smps7-in",
95 .sname = "smps8-in",
103 .sname = "smps9-in",
110 .sname = "smps10-in",
116 .sname = "smps10-out2",
122 .sname = "ldo1-in",
129 .sname = "ldo2-in",
136 .sname = "ldo3-in",
143 .sname = "ldo4-in",
150 .sname = "ldo5-in",
157 .sname = "ldo6-in",
164 .sname = "ldo7-in",
171 .sname = "ldo8-in",
178 .sname = "ldo9-in",
185 .sname = "ldoln-in",
192 .sname = "ldousb-in",
227 .sname = "smps1-in",
234 .sname = "smps2-in",
241 .sname = "smps3-in",
248 .sname = "smps4-in",
255 .sname = "smps5-in",
262 .sname = "smps1-in",
269 .sname = "ldo1-in",
276 .sname = "ldo2-in",
283 .sname = "ldo3-in",
290 .sname = "ldo4-in",
297 .sname = "ldo5-in",
404 return regmap_read(palmas->regmap[REGULATOR_SLAVE], addr, dest); in palmas_smps_read()
414 return regmap_write(palmas->regmap[REGULATOR_SLAVE], addr, value); in palmas_smps_write()
424 return regmap_read(palmas->regmap[REGULATOR_SLAVE], addr, dest); in palmas_ldo_read()
434 return regmap_write(palmas->regmap[REGULATOR_SLAVE], addr, value); in palmas_ldo_write()
441 struct palmas_pmic *pmic = rdev_get_drvdata(dev); in palmas_set_mode_smps() local
442 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; in palmas_set_mode_smps()
443 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_set_mode_smps()
447 ret = palmas_smps_read(pmic->palmas, rinfo->ctrl_addr, ®); in palmas_set_mode_smps()
467 return -EINVAL; in palmas_set_mode_smps()
470 pmic->current_reg_mode[id] = reg & PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; in palmas_set_mode_smps()
472 palmas_smps_write(pmic->palmas, rinfo->ctrl_addr, reg); in palmas_set_mode_smps()
475 pmic->desc[id].enable_val = pmic->current_reg_mode[id]; in palmas_set_mode_smps()
482 struct palmas_pmic *pmic = rdev_get_drvdata(dev); in palmas_get_mode_smps() local
486 reg = pmic->current_reg_mode[id] & PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; in palmas_get_mode_smps()
504 struct palmas_pmic *pmic = rdev_get_drvdata(rdev); in palmas_smps_set_ramp_delay() local
505 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; in palmas_smps_set_ramp_delay()
506 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_smps_set_ramp_delay()
510 /* SMPS3 and SMPS7 do not have tstep_addr setting */ in palmas_smps_set_ramp_delay()
526 ret = palmas_smps_write(pmic->palmas, rinfo->tstep_addr, reg); in palmas_smps_set_ramp_delay()
528 dev_err(pmic->palmas->dev, "TSTEP write failed: %d\n", ret); in palmas_smps_set_ramp_delay()
532 pmic->ramp_delay[id] = palmas_smps_ramp_delay[reg]; in palmas_smps_set_ramp_delay()
598 struct palmas_pmic *pmic = rdev_get_drvdata(dev); in palmas_is_enabled_ldo() local
599 struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata; in palmas_is_enabled_ldo()
600 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_is_enabled_ldo()
603 palmas_ldo_read(pmic->palmas, rinfo->ctrl_addr, ®); in palmas_is_enabled_ldo()
675 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; in palmas_regulator_config_external()
676 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_regulator_config_external()
679 ret = palmas_ext_control_req_config(palmas, rinfo->sleep_id, in palmas_regulator_config_external()
680 reg_init->roof_floor, true); in palmas_regulator_config_external()
682 dev_err(palmas->dev, in palmas_regulator_config_external()
692 * pins on the PMIC such as PREQ, SYSEN, ...
699 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; in palmas_smps_init()
700 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_smps_init()
701 unsigned int addr = rinfo->ctrl_addr; in palmas_smps_init()
711 if (reg_init->mode_sleep) in palmas_smps_init()
712 reg |= reg_init->mode_sleep << in palmas_smps_init()
716 if (reg_init->warm_reset) in palmas_smps_init()
721 if (reg_init->roof_floor) in palmas_smps_init()
727 if (reg_init->mode_sleep) in palmas_smps_init()
728 reg |= reg_init->mode_sleep << in palmas_smps_init()
736 if (rinfo->vsel_addr && reg_init->vsel) { in palmas_smps_init()
738 reg = reg_init->vsel; in palmas_smps_init()
740 ret = palmas_smps_write(palmas, rinfo->vsel_addr, reg); in palmas_smps_init()
745 if (reg_init->roof_floor && (id != PALMAS_REG_SMPS10_OUT1) && in palmas_smps_init()
769 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; in palmas_ldo_init()
770 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_ldo_init()
772 addr = rinfo->ctrl_addr; in palmas_ldo_init()
778 if (reg_init->warm_reset) in palmas_ldo_init()
783 if (reg_init->mode_sleep) in palmas_ldo_init()
792 if (reg_init->roof_floor) { in palmas_ldo_init()
798 dev_err(palmas->dev, in palmas_ldo_init()
814 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; in palmas_extreg_init()
815 struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id]; in palmas_extreg_init()
817 addr = rinfo->ctrl_addr; in palmas_extreg_init()
819 if (reg_init->mode_sleep) in palmas_extreg_init()
825 dev_err(palmas->dev, "Resource reg 0x%02x update failed %d\n", in palmas_extreg_init()
830 if (reg_init->roof_floor) { in palmas_extreg_init()
836 dev_err(palmas->dev, in palmas_extreg_init()
851 struct palmas_pmic_driver_data *ddata = palmas->pmic_ddata; in palmas_enable_ldo8_track()
854 rinfo = &ddata->palmas_regs_info[PALMAS_REG_LDO8]; in palmas_enable_ldo8_track()
855 addr = rinfo->ctrl_addr; in palmas_enable_ldo8_track()
859 dev_err(palmas->dev, "Error in reading ldo8 control reg\n"); in palmas_enable_ldo8_track()
866 dev_err(palmas->dev, "Error in enabling tracking mode\n"); in palmas_enable_ldo8_track()
874 addr = rinfo->vsel_addr; in palmas_enable_ldo8_track()
877 dev_err(palmas->dev, "Error in reading ldo8 voltage reg\n"); in palmas_enable_ldo8_track()
884 dev_err(palmas->dev, "Error in setting ldo8 voltage reg\n"); in palmas_enable_ldo8_track()
889 static int palmas_ldo_registration(struct palmas_pmic *pmic, in palmas_ldo_registration() argument
901 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) { in palmas_ldo_registration()
902 if (pdata && pdata->reg_init[id]) in palmas_ldo_registration()
903 reg_init = pdata->reg_init[id]; in palmas_ldo_registration()
907 rinfo = &ddata->palmas_regs_info[id]; in palmas_ldo_registration()
913 desc = &pmic->desc[id]; in palmas_ldo_registration()
914 desc->name = rinfo->name; in palmas_ldo_registration()
915 desc->id = id; in palmas_ldo_registration()
916 desc->type = REGULATOR_VOLTAGE; in palmas_ldo_registration()
917 desc->owner = THIS_MODULE; in palmas_ldo_registration()
920 desc->n_voltages = PALMAS_LDO_NUM_VOLTAGES; in palmas_ldo_registration()
921 if (reg_init && reg_init->roof_floor) in palmas_ldo_registration()
922 desc->ops = &palmas_ops_ext_control_ldo; in palmas_ldo_registration()
924 desc->ops = &palmas_ops_ldo; in palmas_ldo_registration()
925 desc->min_uV = 900000; in palmas_ldo_registration()
926 desc->uV_step = 50000; in palmas_ldo_registration()
927 desc->linear_min_sel = 1; in palmas_ldo_registration()
928 desc->enable_time = 500; in palmas_ldo_registration()
929 desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, in palmas_ldo_registration()
930 rinfo->vsel_addr); in palmas_ldo_registration()
931 desc->vsel_mask = PALMAS_LDO1_VOLTAGE_VSEL_MASK; in palmas_ldo_registration()
932 desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, in palmas_ldo_registration()
933 rinfo->ctrl_addr); in palmas_ldo_registration()
934 desc->enable_mask = PALMAS_LDO1_CTRL_MODE_ACTIVE; in palmas_ldo_registration()
938 pdata->enable_ldo8_tracking) { in palmas_ldo_registration()
939 palmas_enable_ldo8_track(pmic->palmas); in palmas_ldo_registration()
940 desc->min_uV = 450000; in palmas_ldo_registration()
941 desc->uV_step = 25000; in palmas_ldo_registration()
944 /* LOD6 in vibrator mode will have enable time 2000us */ in palmas_ldo_registration()
945 if (pdata && pdata->ldo6_vibrator && in palmas_ldo_registration()
947 desc->enable_time = 2000; in palmas_ldo_registration()
950 desc->ops = &palmas_ops_ldo9; in palmas_ldo_registration()
951 desc->bypass_reg = desc->enable_reg; in palmas_ldo_registration()
952 desc->bypass_val_on = in palmas_ldo_registration()
954 desc->bypass_mask = in palmas_ldo_registration()
958 if (!ddata->has_regen3 && id == PALMAS_REG_REGEN3) in palmas_ldo_registration()
961 desc->n_voltages = 1; in palmas_ldo_registration()
962 if (reg_init && reg_init->roof_floor) in palmas_ldo_registration()
963 desc->ops = &palmas_ops_ext_control_extreg; in palmas_ldo_registration()
965 desc->ops = &palmas_ops_extreg; in palmas_ldo_registration()
966 desc->enable_reg = in palmas_ldo_registration()
968 rinfo->ctrl_addr); in palmas_ldo_registration()
969 desc->enable_mask = PALMAS_REGEN1_CTRL_MODE_ACTIVE; in palmas_ldo_registration()
973 config.init_data = pdata->reg_data[id]; in palmas_ldo_registration()
977 desc->supply_name = rinfo->sname; in palmas_ldo_registration()
978 config.of_node = ddata->palmas_matches[id].of_node; in palmas_ldo_registration()
980 rdev = devm_regulator_register(pmic->dev, desc, &config); in palmas_ldo_registration()
982 dev_err(pmic->dev, in palmas_ldo_registration()
990 reg_init = pdata->reg_init[id]; in palmas_ldo_registration()
992 if (id <= ddata->ldo_end) in palmas_ldo_registration()
993 ret = palmas_ldo_init(pmic->palmas, id, in palmas_ldo_registration()
996 ret = palmas_extreg_init(pmic->palmas, in palmas_ldo_registration()
1007 static int tps65917_ldo_registration(struct palmas_pmic *pmic, in tps65917_ldo_registration() argument
1019 for (id = ddata->ldo_begin; id < ddata->max_reg; id++) { in tps65917_ldo_registration()
1020 if (pdata && pdata->reg_init[id]) in tps65917_ldo_registration()
1021 reg_init = pdata->reg_init[id]; in tps65917_ldo_registration()
1028 rinfo = &ddata->palmas_regs_info[id]; in tps65917_ldo_registration()
1031 desc = &pmic->desc[id]; in tps65917_ldo_registration()
1032 desc->name = rinfo->name; in tps65917_ldo_registration()
1033 desc->id = id; in tps65917_ldo_registration()
1034 desc->type = REGULATOR_VOLTAGE; in tps65917_ldo_registration()
1035 desc->owner = THIS_MODULE; in tps65917_ldo_registration()
1038 desc->n_voltages = PALMAS_LDO_NUM_VOLTAGES; in tps65917_ldo_registration()
1039 if (reg_init && reg_init->roof_floor) in tps65917_ldo_registration()
1040 desc->ops = &palmas_ops_ext_control_ldo; in tps65917_ldo_registration()
1042 desc->ops = &tps65917_ops_ldo; in tps65917_ldo_registration()
1043 desc->min_uV = 900000; in tps65917_ldo_registration()
1044 desc->uV_step = 50000; in tps65917_ldo_registration()
1045 desc->linear_min_sel = 1; in tps65917_ldo_registration()
1046 desc->enable_time = 500; in tps65917_ldo_registration()
1047 desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, in tps65917_ldo_registration()
1048 rinfo->vsel_addr); in tps65917_ldo_registration()
1049 desc->vsel_mask = PALMAS_LDO1_VOLTAGE_VSEL_MASK; in tps65917_ldo_registration()
1050 desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, in tps65917_ldo_registration()
1051 rinfo->ctrl_addr); in tps65917_ldo_registration()
1052 desc->enable_mask = PALMAS_LDO1_CTRL_MODE_ACTIVE; in tps65917_ldo_registration()
1054 * To be confirmed. Discussion on going with PMIC Team. in tps65917_ldo_registration()
1057 desc->ramp_delay = 2500; in tps65917_ldo_registration()
1060 desc->ops = &tps65917_ops_ldo_1_2; in tps65917_ldo_registration()
1061 desc->bypass_reg = desc->enable_reg; in tps65917_ldo_registration()
1062 desc->bypass_val_on = in tps65917_ldo_registration()
1064 desc->bypass_mask = in tps65917_ldo_registration()
1068 desc->n_voltages = 1; in tps65917_ldo_registration()
1069 if (reg_init && reg_init->roof_floor) in tps65917_ldo_registration()
1070 desc->ops = &palmas_ops_ext_control_extreg; in tps65917_ldo_registration()
1072 desc->ops = &palmas_ops_extreg; in tps65917_ldo_registration()
1073 desc->enable_reg = in tps65917_ldo_registration()
1075 rinfo->ctrl_addr); in tps65917_ldo_registration()
1076 desc->enable_mask = PALMAS_REGEN1_CTRL_MODE_ACTIVE; in tps65917_ldo_registration()
1080 config.init_data = pdata->reg_data[id]; in tps65917_ldo_registration()
1084 desc->supply_name = rinfo->sname; in tps65917_ldo_registration()
1085 config.of_node = ddata->palmas_matches[id].of_node; in tps65917_ldo_registration()
1087 rdev = devm_regulator_register(pmic->dev, desc, &config); in tps65917_ldo_registration()
1089 dev_err(pmic->dev, in tps65917_ldo_registration()
1097 reg_init = pdata->reg_init[id]; in tps65917_ldo_registration()
1100 ret = palmas_ldo_init(pmic->palmas, in tps65917_ldo_registration()
1103 ret = palmas_extreg_init(pmic->palmas, in tps65917_ldo_registration()
1114 static int palmas_smps_registration(struct palmas_pmic *pmic, in palmas_smps_registration() argument
1127 for (id = ddata->smps_start; id <= ddata->smps_end; id++) { in palmas_smps_registration()
1137 if (pmic->smps123) in palmas_smps_registration()
1143 if (!pmic->smps123) in palmas_smps_registration()
1149 if (pmic->smps457) in palmas_smps_registration()
1155 if (!pmic->smps457) in palmas_smps_registration()
1161 if (!PALMAS_PMIC_HAS(pmic->palmas, SMPS10_BOOST)) in palmas_smps_registration()
1164 rinfo = &ddata->palmas_regs_info[id]; in palmas_smps_registration()
1165 desc = &pmic->desc[id]; in palmas_smps_registration()
1171 addr = rinfo->tstep_addr; in palmas_smps_registration()
1172 ret = palmas_smps_read(pmic->palmas, addr, ®); in palmas_smps_registration()
1174 dev_err(pmic->dev, in palmas_smps_registration()
1178 desc->ramp_delay = palmas_smps_ramp_delay[reg & 0x3]; in palmas_smps_registration()
1179 pmic->ramp_delay[id] = desc->ramp_delay; in palmas_smps_registration()
1183 if (pdata && pdata->reg_init[id]) { in palmas_smps_registration()
1184 reg_init = pdata->reg_init[id]; in palmas_smps_registration()
1185 ret = palmas_smps_init(pmic->palmas, id, reg_init); in palmas_smps_registration()
1193 desc->name = rinfo->name; in palmas_smps_registration()
1194 desc->id = id; in palmas_smps_registration()
1199 desc->n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; in palmas_smps_registration()
1200 desc->ops = &palmas_ops_smps10; in palmas_smps_registration()
1201 desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in palmas_smps_registration()
1203 desc->vsel_mask = SMPS10_VSEL; in palmas_smps_registration()
1204 desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in palmas_smps_registration()
1207 desc->enable_mask = SMPS10_SWITCH_EN; in palmas_smps_registration()
1209 desc->enable_mask = SMPS10_BOOST_EN; in palmas_smps_registration()
1210 desc->bypass_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in palmas_smps_registration()
1212 desc->bypass_val_on = SMPS10_BYPASS_EN; in palmas_smps_registration()
1213 desc->bypass_mask = SMPS10_BYPASS_EN; in palmas_smps_registration()
1214 desc->min_uV = 3750000; in palmas_smps_registration()
1215 desc->uV_step = 1250000; in palmas_smps_registration()
1224 addr = rinfo->vsel_addr; in palmas_smps_registration()
1225 desc->n_linear_ranges = 3; in palmas_smps_registration()
1227 ret = palmas_smps_read(pmic->palmas, addr, ®); in palmas_smps_registration()
1231 pmic->range[id] = 1; in palmas_smps_registration()
1232 if (pmic->range[id]) in palmas_smps_registration()
1233 desc->linear_ranges = smps_high_ranges; in palmas_smps_registration()
1235 desc->linear_ranges = smps_low_ranges; in palmas_smps_registration()
1237 if (reg_init && reg_init->roof_floor) in palmas_smps_registration()
1238 desc->ops = &palmas_ops_ext_control_smps; in palmas_smps_registration()
1240 desc->ops = &palmas_ops_smps; in palmas_smps_registration()
1241 desc->n_voltages = PALMAS_SMPS_NUM_VOLTAGES; in palmas_smps_registration()
1242 desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in palmas_smps_registration()
1243 rinfo->vsel_addr); in palmas_smps_registration()
1244 desc->vsel_mask = PALMAS_SMPS12_VOLTAGE_VSEL_MASK; in palmas_smps_registration()
1247 addr = rinfo->ctrl_addr; in palmas_smps_registration()
1248 ret = palmas_smps_read(pmic->palmas, addr, ®); in palmas_smps_registration()
1251 pmic->current_reg_mode[id] = reg & in palmas_smps_registration()
1254 desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in palmas_smps_registration()
1255 rinfo->ctrl_addr); in palmas_smps_registration()
1256 desc->enable_mask = PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; in palmas_smps_registration()
1258 desc->enable_val = SMPS_CTRL_MODE_ON; in palmas_smps_registration()
1261 desc->type = REGULATOR_VOLTAGE; in palmas_smps_registration()
1262 desc->owner = THIS_MODULE; in palmas_smps_registration()
1265 config.init_data = pdata->reg_data[id]; in palmas_smps_registration()
1269 desc->supply_name = rinfo->sname; in palmas_smps_registration()
1270 config.of_node = ddata->palmas_matches[id].of_node; in palmas_smps_registration()
1272 rdev = devm_regulator_register(pmic->dev, desc, &config); in palmas_smps_registration()
1274 dev_err(pmic->dev, in palmas_smps_registration()
1284 static int tps65917_smps_registration(struct palmas_pmic *pmic, in tps65917_smps_registration() argument
1297 for (id = ddata->smps_start; id <= ddata->smps_end; id++) { in tps65917_smps_registration()
1302 desc = &pmic->desc[id]; in tps65917_smps_registration()
1303 desc->n_linear_ranges = 3; in tps65917_smps_registration()
1305 pmic->smps12) in tps65917_smps_registration()
1309 if (pdata && pdata->reg_init[id]) { in tps65917_smps_registration()
1310 reg_init = pdata->reg_init[id]; in tps65917_smps_registration()
1311 ret = palmas_smps_init(pmic->palmas, id, reg_init); in tps65917_smps_registration()
1317 rinfo = &ddata->palmas_regs_info[id]; in tps65917_smps_registration()
1320 desc->name = rinfo->name; in tps65917_smps_registration()
1321 desc->id = id; in tps65917_smps_registration()
1329 addr = rinfo->vsel_addr; in tps65917_smps_registration()
1331 ret = palmas_smps_read(pmic->palmas, addr, ®); in tps65917_smps_registration()
1335 pmic->range[id] = 1; in tps65917_smps_registration()
1337 if (pmic->range[id]) in tps65917_smps_registration()
1338 desc->linear_ranges = smps_high_ranges; in tps65917_smps_registration()
1340 desc->linear_ranges = smps_low_ranges; in tps65917_smps_registration()
1342 if (reg_init && reg_init->roof_floor) in tps65917_smps_registration()
1343 desc->ops = &tps65917_ops_ext_control_smps; in tps65917_smps_registration()
1345 desc->ops = &tps65917_ops_smps; in tps65917_smps_registration()
1346 desc->n_voltages = PALMAS_SMPS_NUM_VOLTAGES; in tps65917_smps_registration()
1347 desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in tps65917_smps_registration()
1348 rinfo->vsel_addr); in tps65917_smps_registration()
1349 desc->vsel_mask = PALMAS_SMPS12_VOLTAGE_VSEL_MASK; in tps65917_smps_registration()
1350 desc->ramp_delay = 2500; in tps65917_smps_registration()
1353 addr = rinfo->ctrl_addr; in tps65917_smps_registration()
1354 ret = palmas_smps_read(pmic->palmas, addr, ®); in tps65917_smps_registration()
1357 pmic->current_reg_mode[id] = reg & in tps65917_smps_registration()
1359 desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, in tps65917_smps_registration()
1360 rinfo->ctrl_addr); in tps65917_smps_registration()
1361 desc->enable_mask = PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; in tps65917_smps_registration()
1363 desc->enable_val = SMPS_CTRL_MODE_ON; in tps65917_smps_registration()
1365 desc->type = REGULATOR_VOLTAGE; in tps65917_smps_registration()
1366 desc->owner = THIS_MODULE; in tps65917_smps_registration()
1369 config.init_data = pdata->reg_data[id]; in tps65917_smps_registration()
1373 desc->supply_name = rinfo->sname; in tps65917_smps_registration()
1374 config.of_node = ddata->palmas_matches[id].of_node; in tps65917_smps_registration()
1376 rdev = devm_regulator_register(pmic->dev, desc, &config); in tps65917_smps_registration()
1378 dev_err(pmic->dev, in tps65917_smps_registration()
1480 ret = of_regulator_match(dev, regulators, ddata->palmas_matches, in palmas_dt_to_pdata()
1481 ddata->max_reg); in palmas_dt_to_pdata()
1488 for (idx = 0; idx < ddata->max_reg; idx++) { in palmas_dt_to_pdata()
1493 match = &ddata->palmas_matches[idx]; in palmas_dt_to_pdata()
1494 np = match->of_node; in palmas_dt_to_pdata()
1496 if (!match->init_data || !np) in palmas_dt_to_pdata()
1501 return -ENOMEM; in palmas_dt_to_pdata()
1503 pdata->reg_data[idx] = match->init_data; in palmas_dt_to_pdata()
1504 pdata->reg_init[idx] = rinit; in palmas_dt_to_pdata()
1506 rinit->warm_reset = of_property_read_bool(np, "ti,warm-reset"); in palmas_dt_to_pdata()
1507 ret = of_property_read_u32(np, "ti,roof-floor", &prop); in palmas_dt_to_pdata()
1509 if (ret != -EINVAL) { in palmas_dt_to_pdata()
1528 "%s: Invalid roof-floor option: %u\n", in palmas_dt_to_pdata()
1529 match->name, prop); in palmas_dt_to_pdata()
1533 rinit->roof_floor = econtrol; in palmas_dt_to_pdata()
1536 ret = of_property_read_u32(np, "ti,mode-sleep", &prop); in palmas_dt_to_pdata()
1538 rinit->mode_sleep = prop; in palmas_dt_to_pdata()
1540 ret = of_property_read_bool(np, "ti,smps-range"); in palmas_dt_to_pdata()
1542 rinit->vsel = PALMAS_SMPS12_VOLTAGE_RANGE; in palmas_dt_to_pdata()
1545 pdata->enable_ldo8_tracking = of_property_read_bool( in palmas_dt_to_pdata()
1546 np, "ti,enable-ldo8-tracking"); in palmas_dt_to_pdata()
1549 pdata->ldo6_vibrator = of_property_read_bool(node, "ti,ldo6-vibrator"); in palmas_dt_to_pdata()
1556 .compatible = "ti,palmas-pmic",
1560 .compatible = "ti,twl6035-pmic",
1564 .compatible = "ti,twl6036-pmic",
1568 .compatible = "ti,twl6037-pmic",
1572 .compatible = "ti,tps65913-pmic",
1576 .compatible = "ti,tps65914-pmic",
1580 .compatible = "ti,tps80036-pmic",
1584 .compatible = "ti,tps659038-pmic",
1588 .compatible = "ti,tps65917-pmic",
1596 struct palmas *palmas = dev_get_drvdata(pdev->dev.parent); in palmas_regulators_probe()
1598 struct device_node *node = pdev->dev.of_node; in palmas_regulators_probe()
1601 struct palmas_pmic *pmic; in palmas_regulators_probe() local
1606 driver_data = (struct palmas_pmic_driver_data *)device_get_match_data(&pdev->dev); in palmas_regulators_probe()
1608 return -ENODATA; in palmas_regulators_probe()
1610 pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); in palmas_regulators_probe()
1612 return -ENOMEM; in palmas_regulators_probe()
1614 pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL); in palmas_regulators_probe()
1615 if (!pmic) in palmas_regulators_probe()
1616 return -ENOMEM; in palmas_regulators_probe()
1618 if (of_device_is_compatible(node, "ti,tps659038-pmic")) { in palmas_regulators_probe()
1624 pmic->dev = &pdev->dev; in palmas_regulators_probe()
1625 pmic->palmas = palmas; in palmas_regulators_probe()
1626 palmas->pmic = pmic; in palmas_regulators_probe()
1627 platform_set_drvdata(pdev, pmic); in palmas_regulators_probe()
1628 pmic->palmas->pmic_ddata = driver_data; in palmas_regulators_probe()
1630 ret = palmas_dt_to_pdata(&pdev->dev, node, pdata, driver_data); in palmas_regulators_probe()
1639 pmic->smps123 = 1; in palmas_regulators_probe()
1640 pmic->smps12 = 1; in palmas_regulators_probe()
1644 pmic->smps457 = 1; in palmas_regulators_probe()
1646 config.regmap = palmas->regmap[REGULATOR_SLAVE]; in palmas_regulators_probe()
1647 config.dev = &pdev->dev; in palmas_regulators_probe()
1648 config.driver_data = pmic; in palmas_regulators_probe()
1649 pdev_name = pdev->name; in palmas_regulators_probe()
1651 ret = driver_data->smps_register(pmic, driver_data, pdata, pdev_name, in palmas_regulators_probe()
1656 ret = driver_data->ldo_register(pmic, driver_data, pdata, pdev_name, in palmas_regulators_probe()
1664 .name = "palmas-pmic",
1686 MODULE_ALIAS("platform:palmas-pmic");