Lines Matching full:max8952
2 * max8952.c - Voltage and current regulation for the Maxim 8952
28 #include <linux/regulator/max8952.h>
58 static int max8952_read_reg(struct max8952_data *max8952, u8 reg) in max8952_read_reg() argument
60 int ret = i2c_smbus_read_byte_data(max8952->client, reg); in max8952_read_reg()
68 static int max8952_write_reg(struct max8952_data *max8952, in max8952_write_reg() argument
71 return i2c_smbus_write_byte_data(max8952->client, reg, value); in max8952_write_reg()
77 struct max8952_data *max8952 = rdev_get_drvdata(rdev); in max8952_list_voltage() local
82 return (max8952->pdata->dvs_mode[selector] * 10 + 770) * 1000; in max8952_list_voltage()
87 struct max8952_data *max8952 = rdev_get_drvdata(rdev); in max8952_get_voltage_sel() local
90 if (max8952->vid0) in max8952_get_voltage_sel()
92 if (max8952->vid1) in max8952_get_voltage_sel()
101 struct max8952_data *max8952 = rdev_get_drvdata(rdev); in max8952_set_voltage_sel() local
103 if (!gpio_is_valid(max8952->pdata->gpio_vid0) || in max8952_set_voltage_sel()
104 !gpio_is_valid(max8952->pdata->gpio_vid1)) { in max8952_set_voltage_sel()
109 max8952->vid0 = selector & 0x1; in max8952_set_voltage_sel()
110 max8952->vid1 = (selector >> 1) & 0x1; in max8952_set_voltage_sel()
111 gpio_set_value(max8952->pdata->gpio_vid0, max8952->vid0); in max8952_set_voltage_sel()
112 gpio_set_value(max8952->pdata->gpio_vid1, max8952->vid1); in max8952_set_voltage_sel()
134 { .compatible = "maxim,max8952" },
150 pd->gpio_vid0 = of_get_named_gpio(np, "max8952,vid-gpios", 0); in max8952_parse_dt()
151 pd->gpio_vid1 = of_get_named_gpio(np, "max8952,vid-gpios", 1); in max8952_parse_dt()
153 if (of_property_read_u32(np, "max8952,default-mode", &pd->default_mode)) in max8952_parse_dt()
156 ret = of_property_read_u32_array(np, "max8952,dvs-mode-microvolt", in max8952_parse_dt()
159 dev_err(dev, "max8952,dvs-mode-microvolt property not specified"); in max8952_parse_dt()
171 if (of_property_read_u32(np, "max8952,sync-freq", &pd->sync_freq)) in max8952_parse_dt()
172 dev_warn(dev, "max8952,sync-freq property not specified, defaulting to 26MHz\n"); in max8952_parse_dt()
174 if (of_property_read_u32(np, "max8952,ramp-speed", &pd->ramp_speed)) in max8952_parse_dt()
175 dev_warn(dev, "max8952,ramp-speed property not specified, defaulting to 32mV/us\n"); in max8952_parse_dt()
198 struct max8952_data *max8952; in max8952_pmic_probe() local
216 max8952 = devm_kzalloc(&client->dev, sizeof(struct max8952_data), in max8952_pmic_probe()
218 if (!max8952) in max8952_pmic_probe()
221 max8952->client = client; in max8952_pmic_probe()
222 max8952->pdata = pdata; in max8952_pmic_probe()
226 config.driver_data = max8952; in max8952_pmic_probe()
234 "max8952,en", in max8952_pmic_probe()
248 max8952->vid0 = pdata->default_mode & 0x1; in max8952_pmic_probe()
249 max8952->vid1 = (pdata->default_mode >> 1) & 0x1; in max8952_pmic_probe()
255 gpio_flags = max8952->vid0 ? in max8952_pmic_probe()
258 gpio_flags, "MAX8952 VID0")) in max8952_pmic_probe()
261 gpio_flags = max8952->vid1 ? in max8952_pmic_probe()
264 gpio_flags, "MAX8952 VID1")) in max8952_pmic_probe()
272 max8952->vid0 = 0; in max8952_pmic_probe()
273 max8952->vid1 = 0; in max8952_pmic_probe()
279 max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60); in max8952_pmic_probe()
286 * leakage current of MAX8952 assuming that MAX8952 in max8952_pmic_probe()
292 max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x0); in max8952_pmic_probe()
295 max8952_write_reg(max8952, MAX8952_REG_MODE0, in max8952_pmic_probe()
296 (max8952_read_reg(max8952, in max8952_pmic_probe()
299 max8952_write_reg(max8952, MAX8952_REG_MODE1, in max8952_pmic_probe()
300 (max8952_read_reg(max8952, in max8952_pmic_probe()
303 max8952_write_reg(max8952, MAX8952_REG_MODE2, in max8952_pmic_probe()
304 (max8952_read_reg(max8952, in max8952_pmic_probe()
307 max8952_write_reg(max8952, MAX8952_REG_MODE3, in max8952_pmic_probe()
308 (max8952_read_reg(max8952, in max8952_pmic_probe()
312 max8952_write_reg(max8952, MAX8952_REG_SYNC, in max8952_pmic_probe()
313 (max8952_read_reg(max8952, MAX8952_REG_SYNC) & 0x3F) | in max8952_pmic_probe()
315 max8952_write_reg(max8952, MAX8952_REG_RAMP, in max8952_pmic_probe()
316 (max8952_read_reg(max8952, MAX8952_REG_RAMP) & 0x1F) | in max8952_pmic_probe()
319 i2c_set_clientdata(client, max8952); in max8952_pmic_probe()
325 { "max8952", 0 },
333 .name = "max8952",