Lines Matching +full:- +full:pvs

1 // SPDX-License-Identifier: GPL-2.0+
3 // pv88090-regulator.c - Regulator device driver for PV88090
17 #include "pv88090-regulator.h"
96 ret = regmap_read(rdev->regmap, info->conf, &data); in pv88090_buck_get_mode()
132 return -EINVAL; in pv88090_buck_set_mode()
135 return regmap_update_bits(rdev->regmap, info->conf, in pv88090_buck_set_mode()
173 .n_voltages = ((max) - (min))/(step) + 1, \
199 .n_voltages = ((max) - (min))/(step) + 1, \
223 err = regmap_read(chip->regmap, PV88090_REG_EVENT_A, &reg_val); in pv88090_irq_handler()
229 if (chip->rdev[i] != NULL) in pv88090_irq_handler()
230 regulator_notifier_call_chain(chip->rdev[i], in pv88090_irq_handler()
235 err = regmap_write(chip->regmap, PV88090_REG_EVENT_A, in pv88090_irq_handler()
245 if (chip->rdev[i] != NULL) in pv88090_irq_handler()
246 regulator_notifier_call_chain(chip->rdev[i], in pv88090_irq_handler()
251 err = regmap_write(chip->regmap, PV88090_REG_EVENT_A, in pv88090_irq_handler()
262 dev_err(chip->dev, "I2C error : %d\n", err); in pv88090_irq_handler()
271 struct regulator_init_data *init_data = dev_get_platdata(&i2c->dev); in pv88090_i2c_probe()
277 chip = devm_kzalloc(&i2c->dev, sizeof(struct pv88090), GFP_KERNEL); in pv88090_i2c_probe()
279 return -ENOMEM; in pv88090_i2c_probe()
281 chip->dev = &i2c->dev; in pv88090_i2c_probe()
282 chip->regmap = devm_regmap_init_i2c(i2c, &pv88090_regmap_config); in pv88090_i2c_probe()
283 if (IS_ERR(chip->regmap)) { in pv88090_i2c_probe()
284 error = PTR_ERR(chip->regmap); in pv88090_i2c_probe()
285 dev_err(chip->dev, "Failed to allocate register map: %d\n", in pv88090_i2c_probe()
292 if (i2c->irq != 0) { in pv88090_i2c_probe()
293 ret = regmap_write(chip->regmap, PV88090_REG_MASK_A, 0xFF); in pv88090_i2c_probe()
295 dev_err(chip->dev, in pv88090_i2c_probe()
300 ret = regmap_write(chip->regmap, PV88090_REG_MASK_B, 0xFF); in pv88090_i2c_probe()
302 dev_err(chip->dev, in pv88090_i2c_probe()
307 ret = devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL, in pv88090_i2c_probe()
312 dev_err(chip->dev, "Failed to request IRQ: %d\n", in pv88090_i2c_probe()
313 i2c->irq); in pv88090_i2c_probe()
317 ret = regmap_update_bits(chip->regmap, PV88090_REG_MASK_A, in pv88090_i2c_probe()
320 dev_err(chip->dev, in pv88090_i2c_probe()
326 dev_warn(chip->dev, "No IRQ configured\n"); in pv88090_i2c_probe()
329 config.dev = chip->dev; in pv88090_i2c_probe()
330 config.regmap = chip->regmap; in pv88090_i2c_probe()
337 ret = regmap_read(chip->regmap, in pv88090_i2c_probe()
345 ret = regmap_read(chip->regmap, in pv88090_i2c_probe()
351 (PV88090_BUCK_VRANGE_GAIN_SHIFT + i - 1)) & in pv88090_i2c_probe()
355 dev_err(chip->dev, in pv88090_i2c_probe()
357 return -EINVAL; in pv88090_i2c_probe()
366 - (pv88090_buck_vol[index].min_uV)) in pv88090_i2c_probe()
371 chip->rdev[i] = devm_regulator_register(chip->dev, in pv88090_i2c_probe()
373 if (IS_ERR(chip->rdev[i])) { in pv88090_i2c_probe()
374 dev_err(chip->dev, in pv88090_i2c_probe()
376 return PTR_ERR(chip->rdev[i]); in pv88090_i2c_probe()
391 { .compatible = "pvs,pv88090", .data = &pv88090_i2c_id[0] },