Lines Matching +full:have +full:- +full:pmic
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Core driver for TI TPS65090 PMIC family
49 PMIC = 0, enumerator
54 [PMIC] = {
55 .name = "tps65090-pmic",
58 .name = "tps65090-charger",
61 .of_compatible = "ti,tps65090-charger",
134 /* Nearly all registers have status bits mixed in, except a few */ in is_volatile_reg()
167 struct tps65090_platform_data *pdata = dev_get_platdata(&client->dev); in tps65090_i2c_probe()
172 if (!pdata && !client->dev.of_node) { in tps65090_i2c_probe()
173 dev_err(&client->dev, in tps65090_i2c_probe()
175 return -EINVAL; in tps65090_i2c_probe()
179 irq_base = pdata->irq_base; in tps65090_i2c_probe()
181 tps65090 = devm_kzalloc(&client->dev, sizeof(*tps65090), GFP_KERNEL); in tps65090_i2c_probe()
183 return -ENOMEM; in tps65090_i2c_probe()
185 tps65090->dev = &client->dev; in tps65090_i2c_probe()
188 tps65090->rmap = devm_regmap_init_i2c(client, &tps65090_regmap_config); in tps65090_i2c_probe()
189 if (IS_ERR(tps65090->rmap)) { in tps65090_i2c_probe()
190 ret = PTR_ERR(tps65090->rmap); in tps65090_i2c_probe()
191 dev_err(&client->dev, "regmap_init failed with err: %d\n", ret); in tps65090_i2c_probe()
195 if (client->irq) { in tps65090_i2c_probe()
196 ret = regmap_add_irq_chip(tps65090->rmap, client->irq, in tps65090_i2c_probe()
198 &tps65090_irq_chip, &tps65090->irq_data); in tps65090_i2c_probe()
200 dev_err(&client->dev, in tps65090_i2c_probe()
205 /* Don't tell children they have an IRQ that'll never fire */ in tps65090_i2c_probe()
209 ret = mfd_add_devices(tps65090->dev, -1, tps65090s, in tps65090_i2c_probe()
211 0, regmap_irq_get_domain(tps65090->irq_data)); in tps65090_i2c_probe()
213 dev_err(&client->dev, "add mfd devices failed with err: %d\n", in tps65090_i2c_probe()
221 if (client->irq) in tps65090_i2c_probe()
222 regmap_del_irq_chip(client->irq, tps65090->irq_data); in tps65090_i2c_probe()