[PATCH v2 09/14] rtc: pcf2127: set PWRMNG value for PCF2131

From: Hugo Villeneuve
Date: Fri Feb 11 2022 - 15:51:21 EST


From: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>

Default PWRMNG[2:0] bits are set to 000b for PCF2127/29, but to
111b for PCF2131.

Set these bits to 000b to select same mode as PCF2127/29.

Signed-off-by: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>
---
drivers/rtc/rtc-pcf2127.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)

diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
index ee1e9d8285bb..09b3d0ef4eff 100644
--- a/drivers/rtc/rtc-pcf2127.c
+++ b/drivers/rtc/rtc-pcf2127.c
@@ -53,6 +53,7 @@
#define PCF2127_BIT_CTRL3_BLF BIT(2)
#define PCF2127_BIT_CTRL3_BF BIT(3)
#define PCF2127_BIT_CTRL3_BTSE BIT(4)
+#define PCF2127_CTRL3_PWRMNG_MASK GENMASK(7, 5)
/* Control register 4 */
#define PCF2131_REG_CTRL4 0x03
#define PCF2131_BIT_CTRL4_TSF4 BIT(4)
@@ -1128,6 +1129,20 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
regmap_clear_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
PCF2127_BIT_CTRL1_POR_OVRD);

+ /* Make sure PWRMNG[2:0] is set to 000b. This is the default for
+ * PCF2127/29, but not for PCF2131 (default of 111b).
+ *
+ * PWRMNG[2:0] = 000b:
+ * battery switch-over function is enabled in standard mode;
+ * battery low detection function is enabled
+ */
+ ret = regmap_clear_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
+ PCF2127_CTRL3_PWRMNG_MASK);
+ if (ret < 0) {
+ dev_err(dev, "PWRMNG config failed\n");
+ return ret;
+ }
+
ret = regmap_read(pcf2127->regmap, pcf2127->cfg->reg_clkout, &val);
if (ret < 0)
return ret;
--
2.30.2