staticbool is_volatile_reg(struct device *dev, unsignedint reg)
{ /* Nearly all registers have status bits mixed in, except a few */ switch (reg) { case TPS65090_REG_INTR_MASK: case TPS65090_REG_INTR_MASK2: case TPS65090_REG_CG_CTRL0: case TPS65090_REG_CG_CTRL1: case TPS65090_REG_CG_CTRL2: case TPS65090_REG_CG_CTRL3: case TPS65090_REG_CG_CTRL4: case TPS65090_REG_CG_CTRL5: returnfalse;
} returntrue;
}
tps65090->rmap = devm_regmap_init_i2c(client, &tps65090_regmap_config); if (IS_ERR(tps65090->rmap)) {
ret = PTR_ERR(tps65090->rmap);
dev_err(&client->dev, "regmap_init failed with err: %d\n", ret); return ret;
}
if (client->irq) {
ret = regmap_add_irq_chip(tps65090->rmap, client->irq,
IRQF_ONESHOT | IRQF_TRIGGER_LOW, irq_base,
&tps65090_irq_chip, &tps65090->irq_data); if (ret) {
dev_err(&client->dev, "IRQ init failed with err: %d\n", ret); return ret;
}
} else { /* Don't tell children they have an IRQ that'll never fire */
tps65090s[CHARGER].num_resources = 0;
}
ret = mfd_add_devices(tps65090->dev, -1, tps65090s,
ARRAY_SIZE(tps65090s), NULL,
0, regmap_irq_get_domain(tps65090->irq_data)); if (ret) {
dev_err(&client->dev, "add mfd devices failed with err: %d\n",
ret); goto err_irq_exit;
}
return 0;
err_irq_exit: if (client->irq)
regmap_del_irq_chip(client->irq, tps65090->irq_data); return ret;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.