rtc: pcf2127: Disable Power-On Reset Override
authorPhilipp Rosenberger <p.rosenberger@kunbus.com>
Mon, 18 Jan 2021 08:57:51 +0000 (09:57 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Mon, 25 Jan 2021 23:26:16 +0000 (00:26 +0100)
To resume normal operation after a total power loss (no or empty
battery) the "Power-On Reset Override (PORO)" facility needs to be
disabled.

The register reset value sets the PORO enabled and the data sheet
recommends setting it to disabled for normal operation.

From what I've seen on the PCF2127 and PCF2129 there is no event
generated at the interrupt pin (INT), as long the PORO bit is set. This
behavior is not documented in the manual.

Signed-off-by: Philipp Rosenberger <p.rosenberger@kunbus.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20210118085752.5759-2-p.rosenberger@kunbus.com
drivers/rtc/rtc-pcf2127.c

index 68160d857ac1ce286bf13fc35a54a1fe9a56a3e9..9cfc869b4f21c811ac40b5ae00481da5336b226e 100644 (file)
@@ -26,6 +26,7 @@
 
 /* Control register 1 */
 #define PCF2127_REG_CTRL1              0x00
+#define PCF2127_BIT_CTRL1_POR_OVRD             BIT(3)
 #define PCF2127_BIT_CTRL1_TSF1                 BIT(4)
 /* Control register 2 */
 #define PCF2127_REG_CTRL2              0x01
@@ -607,6 +608,13 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
                ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg);
        }
 
+       /*
+        * The "Power-On Reset Override" facility prevents the RTC to do a reset
+        * after power on. For normal operation the PORO must be disabled.
+        */
+       regmap_clear_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
+                               PCF2127_BIT_CTRL1_POR_OVRD);
+
        /*
         * Watchdog timer enabled and reset pin /RST activated when timed out.
         * Select 1Hz clock source for watchdog timer.