regulator (max5970): Fix IRQ handler
authorPatrick Rudolph <patrick.rudolph@9elements.com>
Tue, 30 Jan 2024 15:02:56 +0000 (20:32 +0530)
committerMark Brown <broonie@kernel.org>
Tue, 30 Jan 2024 15:27:16 +0000 (15:27 +0000)
The max5970 datasheet gives the impression that IRQ status bits must
be cleared by writing a one to set bits, as those are marked with 'R/C',
however tests showed that a zero must be written.

Fixes an IRQ storm as the interrupt handler actually clears the IRQ
status bits.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Naresh Solanki <naresh.solanki@9elements.com>
Link: https://msgid.link/r/20240130150257.3643657-1-naresh.solanki@9elements.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/max5970-regulator.c

index bc88a40a88d4cac0bbe61efc4725703b1136654e..830a1c4cd705784687fb424f3bfd23fdc7743fcf 100644 (file)
@@ -392,7 +392,7 @@ static int max597x_regmap_read_clear(struct regmap *map, unsigned int reg,
                return ret;
 
        if (*val)
-               return regmap_write(map, reg, *val);
+               return regmap_write(map, reg, 0);
 
        return 0;
 }