Lines Matching full:pmic
99 static int max77620_regulator_get_fps_src(struct max77620_regulator *pmic,
102 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
106 ret = regmap_read(pmic->rmap, rinfo->fps_addr, &val);
108 dev_err(pmic->dev, "Reg 0x%02x read failed %d\n",
116 static int max77620_regulator_set_fps_src(struct max77620_regulator *pmic,
119 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
134 ret = regmap_read(pmic->rmap, rinfo->fps_addr, &val);
136 dev_err(pmic->dev, "Reg 0x%02x read failed %d\n",
141 pmic->active_fps_src[id] = ret;
145 dev_err(pmic->dev, "Invalid FPS %d for regulator %d\n",
150 ret = regmap_update_bits(pmic->rmap, rinfo->fps_addr,
154 dev_err(pmic->dev, "Reg 0x%02x update failed %d\n",
158 pmic->active_fps_src[id] = fps_src;
163 static int max77620_regulator_set_fps_slots(struct max77620_regulator *pmic,
166 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[id];
167 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
195 ret = regmap_update_bits(pmic->rmap, rinfo->fps_addr,
198 dev_err(pmic->dev, "Reg 0x%02x update failed: %d\n",
207 static int max77620_regulator_set_power_mode(struct max77620_regulator *pmic,
210 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
225 ret = regmap_update_bits(pmic->rmap, addr, mask, power_mode << shift);
227 dev_err(pmic->dev, "Regulator %d mode set failed: %d\n",
231 pmic->current_power_mode[id] = power_mode;
236 static int max77620_regulator_get_power_mode(struct max77620_regulator *pmic,
239 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
254 ret = regmap_read(pmic->rmap, addr, &val);
256 dev_err(pmic->dev, "Regulator %d: Reg 0x%02x read failed: %d\n",
264 static int max77620_read_slew_rate(struct max77620_regulator *pmic, int id)
266 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
271 ret = regmap_read(pmic->rmap, rinfo->cfg_addr, &rval);
273 dev_err(pmic->dev, "Register 0x%02x read failed: %d\n",
314 static int max77620_set_slew_rate(struct max77620_regulator *pmic, int id,
317 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
341 ret = regmap_update_bits(pmic->rmap, rinfo->cfg_addr, mask, val);
343 dev_err(pmic->dev, "Regulator %d slew rate set failed: %d\n",
351 static int max77620_config_power_ok(struct max77620_regulator *pmic, int id)
353 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[id];
354 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
355 struct max77620_chip *chip = dev_get_drvdata(pmic->dev->parent);
369 ret = regmap_update_bits(pmic->rmap, rinfo->cfg_addr,
372 dev_err(pmic->dev, "Reg 0x%02x update failed %d\n",
386 static int max77620_init_pmic(struct max77620_regulator *pmic, int id)
388 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[id];
391 max77620_config_power_ok(pmic, id);
394 ret = max77620_regulator_get_power_mode(pmic, id);
398 pmic->current_power_mode[id] = ret;
399 pmic->enable_power_mode[id] = MAX77620_POWER_MODE_NORMAL;
402 ret = max77620_regulator_get_fps_src(pmic, id);
410 ret = max77620_regulator_set_power_mode(pmic,
411 pmic->enable_power_mode[id], id);
415 if (pmic->current_power_mode[id] !=
416 pmic->enable_power_mode[id]) {
417 ret = max77620_regulator_set_power_mode(pmic,
418 pmic->enable_power_mode[id], id);
424 ret = max77620_regulator_set_fps_src(pmic, rpdata->active_fps_src, id);
428 ret = max77620_regulator_set_fps_slots(pmic, id, false);
433 ret = max77620_set_slew_rate(pmic, id,
444 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
447 if (pmic->active_fps_src[id] != MAX77620_FPS_SRC_NONE)
450 return max77620_regulator_set_power_mode(pmic,
451 pmic->enable_power_mode[id], id);
456 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
459 if (pmic->active_fps_src[id] != MAX77620_FPS_SRC_NONE)
462 return max77620_regulator_set_power_mode(pmic,
468 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
472 if (pmic->active_fps_src[id] != MAX77620_FPS_SRC_NONE)
475 ret = max77620_regulator_get_power_mode(pmic, id);
488 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
490 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
491 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[id];
512 dev_err(pmic->dev, "Regulator %d mode %d is invalid\n",
521 ret = regmap_update_bits(pmic->rmap, rinfo->cfg_addr,
524 dev_err(pmic->dev, "Reg 0x%02x update failed: %d\n",
531 ret = max77620_regulator_set_power_mode(pmic, power_mode, id);
535 pmic->enable_power_mode[id] = power_mode;
542 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
544 struct max77620_regulator_info *rinfo = pmic->rinfo[id];
550 ret = max77620_regulator_get_power_mode(pmic, id);
557 ret = regmap_read(pmic->rmap, rinfo->cfg_addr, &val);
559 dev_err(pmic->dev, "Reg 0x%02x read failed: %d\n",
588 struct max77620_regulator *pmic = rdev_get_drvdata(rdev);
590 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[id];
599 return max77620_set_slew_rate(pmic, id, ramp_delay);
606 struct max77620_regulator *pmic = config->driver_data;
607 struct max77620_regulator_pdata *rpdata = &pmic->reg_pdata[desc->id];
641 return max77620_init_pmic(pmic, desc->id);
785 struct max77620_regulator *pmic;
789 pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL);
790 if (!pmic)
793 platform_set_drvdata(pdev, pmic);
794 pmic->dev = dev;
795 pmic->rmap = max77620_chip->rmap;
813 config.regmap = pmic->rmap;
815 config.driver_data = pmic;
820 * Otherwise PMIC driver will fail to re-probe.
833 pmic->rinfo[id] = &rinfo[id];
834 pmic->enable_power_mode[id] = MAX77620_POWER_MODE_NORMAL;
835 pmic->reg_pdata[id].active_fps_src = -1;
836 pmic->reg_pdata[id].active_fps_pd_slot = -1;
837 pmic->reg_pdata[id].active_fps_pu_slot = -1;
838 pmic->reg_pdata[id].suspend_fps_src = -1;
839 pmic->reg_pdata[id].suspend_fps_pd_slot = -1;
840 pmic->reg_pdata[id].suspend_fps_pu_slot = -1;
841 pmic->reg_pdata[id].power_ok = -1;
842 pmic->reg_pdata[id].ramp_rate_setting = -1;
844 ret = max77620_read_slew_rate(pmic, id);
861 struct max77620_regulator *pmic = dev_get_drvdata(dev);
866 reg_pdata = &pmic->reg_pdata[id];
868 max77620_regulator_set_fps_slots(pmic, id, true);
872 max77620_regulator_set_fps_src(pmic, reg_pdata->suspend_fps_src,
881 struct max77620_regulator *pmic = dev_get_drvdata(dev);
886 reg_pdata = &pmic->reg_pdata[id];
888 max77620_config_power_ok(pmic, id);
890 max77620_regulator_set_fps_slots(pmic, id, false);
893 max77620_regulator_set_fps_src(pmic, reg_pdata->active_fps_src,
907 { .name = "max77620-pmic", },
908 { .name = "max20024-pmic", },
909 { .name = "max77663-pmic", },
918 .name = "max77620-pmic",