Lines Matching defs:da9150
19 #include <linux/mfd/da9150/core.h>
20 #include <linux/mfd/da9150/registers.h>
177 void da9150_read_qif(struct da9150 *da9150, u8 addr, int count, u8 *buf)
181 ret = da9150_i2c_read_device(da9150->core_qif, addr, count, buf);
183 dev_err(da9150->dev, "Failed to read from QIF 0x%x: %d\n",
188 void da9150_write_qif(struct da9150 *da9150, u8 addr, int count, const u8 *buf)
192 ret = da9150_i2c_write_device(da9150->core_qif, addr, count, buf);
194 dev_err(da9150->dev, "Failed to write to QIF 0x%x: %d\n",
199 u8 da9150_reg_read(struct da9150 *da9150, u16 reg)
203 ret = regmap_read(da9150->regmap, reg, &val);
205 dev_err(da9150->dev, "Failed to read from reg 0x%x: %d\n",
212 void da9150_reg_write(struct da9150 *da9150, u16 reg, u8 val)
216 ret = regmap_write(da9150->regmap, reg, val);
218 dev_err(da9150->dev, "Failed to write to reg 0x%x: %d\n",
223 void da9150_set_bits(struct da9150 *da9150, u16 reg, u8 mask, u8 val)
227 ret = regmap_update_bits(da9150->regmap, reg, mask, val);
229 dev_err(da9150->dev, "Failed to set bits in reg 0x%x: %d\n",
234 void da9150_bulk_read(struct da9150 *da9150, u16 reg, int count, u8 *buf)
238 ret = regmap_bulk_read(da9150->regmap, reg, buf, count);
240 dev_err(da9150->dev, "Failed to bulk read from reg 0x%x: %d\n",
245 void da9150_bulk_write(struct da9150 *da9150, u16 reg, int count, const u8 *buf)
249 ret = regmap_raw_write(da9150->regmap, reg, buf, count);
251 dev_err(da9150->dev, "Failed to bulk write to reg 0x%x %d\n",
376 .name = "da9150-gpadc",
377 .of_compatible = "dlg,da9150-gpadc",
382 .name = "da9150-charger",
383 .of_compatible = "dlg,da9150-charger",
388 .name = "da9150-fuel-gauge",
389 .of_compatible = "dlg,da9150-fuel-gauge",
397 struct da9150 *da9150;
402 da9150 = devm_kzalloc(&client->dev, sizeof(*da9150), GFP_KERNEL);
403 if (!da9150)
406 da9150->dev = &client->dev;
407 da9150->irq = client->irq;
408 i2c_set_clientdata(client, da9150);
410 da9150->regmap = devm_regmap_init_i2c(client, &da9150_regmap_config);
411 if (IS_ERR(da9150->regmap)) {
412 ret = PTR_ERR(da9150->regmap);
413 dev_err(da9150->dev, "Failed to allocate register map: %d\n",
419 qif_addr = da9150_reg_read(da9150, DA9150_CORE2WIRE_CTRL_A);
422 da9150->core_qif = i2c_new_dummy_device(client->adapter, qif_addr);
423 if (IS_ERR(da9150->core_qif)) {
424 dev_err(da9150->dev, "Failed to attach QIF client\n");
425 return PTR_ERR(da9150->core_qif);
428 i2c_set_clientdata(da9150->core_qif, da9150);
431 da9150->irq_base = pdata->irq_base;
437 da9150->irq_base = -1;
440 ret = regmap_add_irq_chip(da9150->regmap, da9150->irq,
442 da9150->irq_base, &da9150_regmap_irq_chip,
443 &da9150->regmap_irq_data);
445 dev_err(da9150->dev, "Failed to add regmap irq chip: %d\n",
451 da9150->irq_base = regmap_irq_chip_get_base(da9150->regmap_irq_data);
453 enable_irq_wake(da9150->irq);
455 ret = mfd_add_devices(da9150->dev, -1, da9150_devs,
457 da9150->irq_base, NULL);
459 dev_err(da9150->dev, "Failed to add child devices: %d\n", ret);
466 regmap_del_irq_chip(da9150->irq, da9150->regmap_irq_data);
468 i2c_unregister_device(da9150->core_qif);
475 struct da9150 *da9150 = i2c_get_clientdata(client);
477 regmap_del_irq_chip(da9150->irq, da9150->regmap_irq_data);
478 mfd_remove_devices(da9150->dev);
479 i2c_unregister_device(da9150->core_qif);
484 struct da9150 *da9150 = i2c_get_clientdata(client);
487 da9150_set_bits(da9150, DA9150_CONFIG_D,
492 da9150_set_bits(da9150, DA9150_CONTROL_C,
497 { "da9150", },
503 { .compatible = "dlg,da9150", },
510 .name = "da9150",