Lines Matching +full:- +full:pvs
1 // SPDX-License-Identifier: GPL-2.0+
3 // pv88060-regulator.c - Regulator device driver for PV88060
17 #include "pv88060-regulator.h"
74 ret = regmap_read(rdev->regmap, info->conf, &data); in pv88060_buck_get_mode()
110 return -EINVAL; in pv88060_buck_set_mode()
113 return regmap_update_bits(rdev->regmap, info->conf, in pv88060_buck_set_mode()
157 .n_voltages = ((max) - (min))/(step) + 1,\
182 .n_voltages = (step) ? ((max - min) / step + 1) : 1, \
230 err = regmap_read(chip->regmap, PV88060_REG_EVENT_A, ®_val); in pv88060_irq_handler()
236 if (chip->rdev[i] != NULL) in pv88060_irq_handler()
237 regulator_notifier_call_chain(chip->rdev[i], in pv88060_irq_handler()
242 err = regmap_write(chip->regmap, PV88060_REG_EVENT_A, in pv88060_irq_handler()
252 if (chip->rdev[i] != NULL) in pv88060_irq_handler()
253 regulator_notifier_call_chain(chip->rdev[i], in pv88060_irq_handler()
258 err = regmap_write(chip->regmap, PV88060_REG_EVENT_A, in pv88060_irq_handler()
269 dev_err(chip->dev, "I2C error : %d\n", err); in pv88060_irq_handler()
278 struct regulator_init_data *init_data = dev_get_platdata(&i2c->dev); in pv88060_i2c_probe()
283 chip = devm_kzalloc(&i2c->dev, sizeof(struct pv88060), GFP_KERNEL); in pv88060_i2c_probe()
285 return -ENOMEM; in pv88060_i2c_probe()
287 chip->dev = &i2c->dev; in pv88060_i2c_probe()
288 chip->regmap = devm_regmap_init_i2c(i2c, &pv88060_regmap_config); in pv88060_i2c_probe()
289 if (IS_ERR(chip->regmap)) { in pv88060_i2c_probe()
290 error = PTR_ERR(chip->regmap); in pv88060_i2c_probe()
291 dev_err(chip->dev, "Failed to allocate register map: %d\n", in pv88060_i2c_probe()
298 if (i2c->irq != 0) { in pv88060_i2c_probe()
299 ret = regmap_write(chip->regmap, PV88060_REG_MASK_A, 0xFF); in pv88060_i2c_probe()
301 dev_err(chip->dev, in pv88060_i2c_probe()
306 ret = regmap_write(chip->regmap, PV88060_REG_MASK_B, 0xFF); in pv88060_i2c_probe()
308 dev_err(chip->dev, in pv88060_i2c_probe()
313 ret = regmap_write(chip->regmap, PV88060_REG_MASK_C, 0xFF); in pv88060_i2c_probe()
315 dev_err(chip->dev, in pv88060_i2c_probe()
320 ret = devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL, in pv88060_i2c_probe()
325 dev_err(chip->dev, "Failed to request IRQ: %d\n", in pv88060_i2c_probe()
326 i2c->irq); in pv88060_i2c_probe()
330 ret = regmap_update_bits(chip->regmap, PV88060_REG_MASK_A, in pv88060_i2c_probe()
333 dev_err(chip->dev, in pv88060_i2c_probe()
339 dev_warn(chip->dev, "No IRQ configured\n"); in pv88060_i2c_probe()
342 config.dev = chip->dev; in pv88060_i2c_probe()
343 config.regmap = chip->regmap; in pv88060_i2c_probe()
350 chip->rdev[i] = devm_regulator_register(chip->dev, in pv88060_i2c_probe()
352 if (IS_ERR(chip->rdev[i])) { in pv88060_i2c_probe()
353 dev_err(chip->dev, in pv88060_i2c_probe()
355 return PTR_ERR(chip->rdev[i]); in pv88060_i2c_probe()
370 { .compatible = "pvs,pv88060", .data = &pv88060_i2c_id[0] },