regulator: da9210: Mask all interrupt sources to deassert interrupt line
After boot-up, some events may be set, and cause the da9210 interrupt line to be asserted. As the da9210 driver doesn't have interrupt support yet, this causes havoc on systems where the interrupt line is shared among multiple devices. This is the case on e.g. r8a7791/koelsch, where the interrupt line is shared with a da9063 regulator, and the following events are set: EVENT_A = 0x00000011 (GPI0 | GPI4) EVENT_B = 0x00000002 (NPWRGOOD) Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bfa76d4957
commit
4d9cbff5aa
|
@ -152,6 +152,15 @@ static int da9210_i2c_probe(struct i2c_client *i2c,
|
|||
config.regmap = chip->regmap;
|
||||
config.of_node = dev->of_node;
|
||||
|
||||
/* Mask all interrupt sources to deassert interrupt line */
|
||||
error = regmap_write(chip->regmap, DA9210_REG_MASK_A, ~0);
|
||||
if (!error)
|
||||
error = regmap_write(chip->regmap, DA9210_REG_MASK_B, ~0);
|
||||
if (error) {
|
||||
dev_err(&i2c->dev, "Failed to write to mask reg: %d\n", error);
|
||||
return error;
|
||||
}
|
||||
|
||||
rdev = devm_regulator_register(&i2c->dev, &da9210_reg, &config);
|
||||
if (IS_ERR(rdev)) {
|
||||
dev_err(&i2c->dev, "Failed to register DA9210 regulator\n");
|
||||
|
|
Loading…
Reference in New Issue