Commit 87064da2 authored by Bruno Thomsen's avatar Bruno Thomsen Committed by Alexandre Belloni
Browse files

rtc: pcf2127: fix watchdog interrupt mask on pcf2131



When using interrupt pin (INT A) as watchdog output all other
interrupt sources need to be disabled to avoid additional
resets. Resulting INT_A_MASK1 value is 55 (0x37).

Signed-off-by: default avatarBruno Thomsen <bruno.thomsen@gmail.com>
Link: https://lore.kernel.org/r/20250902182235.6825-1-bruno.thomsen@gmail.com


Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
parent e22f4d13
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -608,6 +608,21 @@ static int pcf2127_watchdog_init(struct device *dev, struct pcf2127 *pcf2127)
			set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status);
	}

	/*
	 * When using interrupt pin (INT A) as watchdog output, only allow
	 * watchdog interrupt (PCF2131_BIT_INT_WD_CD) and disable (mask) all
	 * other interrupts.
	 */
	if (pcf2127->cfg->type == PCF2131) {
		ret = regmap_write(pcf2127->regmap,
				   PCF2131_REG_INT_A_MASK1,
				   PCF2131_BIT_INT_BLIE |
				   PCF2131_BIT_INT_BIE |
				   PCF2131_BIT_INT_AIE |
				   PCF2131_BIT_INT_SI |
				   PCF2131_BIT_INT_MI);
	}

	return devm_watchdog_register_device(dev, &pcf2127->wdd);
}