Lines Matching +full:max14577 +full:- +full:regulator

1 // SPDX-License-Identifier: GPL-2.0+
3 // max14577.c - Regulator driver for the Maxim 14577/77836
10 #include <linux/regulator/driver.h>
11 #include <linux/mfd/max14577.h>
12 #include <linux/mfd/max14577-private.h>
13 #include <linux/regulator/of_regulator.h>
18 struct regmap *rmap = rdev->regmap; in max14577_reg_is_enabled()
32 return -EINVAL; in max14577_reg_is_enabled()
39 struct regmap *rmap = rdev->regmap; in max14577_reg_get_current_limit()
40 struct max14577 *max14577 = rdev_get_drvdata(rdev); in max14577_reg_get_current_limit() local
42 &maxim_charger_currents[max14577->dev_type]; in max14577_reg_get_current_limit()
46 return -EINVAL; in max14577_reg_get_current_limit()
53 return limits->min; in max14577_reg_get_current_limit()
57 return limits->high_start + reg_data * limits->high_step; in max14577_reg_get_current_limit()
65 struct max14577 *max14577 = rdev_get_drvdata(rdev); in max14577_reg_set_current_limit() local
67 &maxim_charger_currents[max14577->dev_type]; in max14577_reg_set_current_limit()
70 return -EINVAL; in max14577_reg_set_current_limit()
76 return max14577_update_reg(rdev->regmap, MAX14577_CHG_REG_CHG_CTRL4, in max14577_reg_set_current_limit()
165 * Returns proper regmap for accessing regulator passed by id.
167 static struct regmap *max14577_get_regmap(struct max14577 *max14577, in max14577_get_regmap() argument
170 switch (max14577->dev_type) { in max14577_get_regmap()
174 return max14577->regmap; in max14577_get_regmap()
177 return max14577->regmap_pmic; in max14577_get_regmap()
182 return max14577->regmap; in max14577_get_regmap()
188 struct max14577 *max14577 = dev_get_drvdata(pdev->dev.parent); in max14577_regulator_probe() local
189 struct max14577_platform_data *pdata = dev_get_platdata(max14577->dev); in max14577_regulator_probe()
194 enum maxim_device_type dev_type = max14577->dev_type; in max14577_regulator_probe()
207 config.dev = max14577->dev; in max14577_regulator_probe()
208 config.driver_data = max14577; in max14577_regulator_probe()
211 struct regulator_dev *regulator; in max14577_regulator_probe() local
214 * match index of pdata->regulators[]. in max14577_regulator_probe()
216 if (pdata && pdata->regulators) { in max14577_regulator_probe()
217 config.init_data = pdata->regulators[i].initdata; in max14577_regulator_probe()
218 config.of_node = pdata->regulators[i].of_node; in max14577_regulator_probe()
220 config.regmap = max14577_get_regmap(max14577, in max14577_regulator_probe()
223 regulator = devm_regulator_register(&pdev->dev, in max14577_regulator_probe()
225 if (IS_ERR(regulator)) { in max14577_regulator_probe()
226 ret = PTR_ERR(regulator); in max14577_regulator_probe()
227 dev_err(&pdev->dev, in max14577_regulator_probe()
228 "Regulator init failed for %d/%s with error: %d\n", in max14577_regulator_probe()
238 { "max14577-regulator", MAXIM_DEVICE_TYPE_MAX14577, },
239 { "max77836-regulator", MAXIM_DEVICE_TYPE_MAX77836, },
246 .name = "max14577-regulator",
260 (MAX77836_REGULATOR_LDO_VOLTAGE_STEPS_NUM - 1)) != in max14577_regulator_init()
274 MODULE_DESCRIPTION("Maxim 14577/77836 regulator driver");