]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
rtc: pcf2127: report battery switch over
authorAlexandre Belloni <alexandre.belloni@bootlin.com>
Mon, 11 May 2020 14:03:35 +0000 (16:03 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Mon, 11 May 2020 14:04:44 +0000 (16:04 +0200)
Add support for the RTC_VL_BACKUP_SWITCH flag to report battery switch over
events.

Link: https://lore.kernel.org/r/20200511140335.799133-1-alexandre.belloni@bootlin.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-pcf2127.c

index 039078029bd42d53de9c1f983e1c18480a1cff40..e5e3cd128476b6b4875e5acc0c0ebedf8ddedb99 100644 (file)
@@ -188,18 +188,27 @@ static int pcf2127_rtc_ioctl(struct device *dev,
                                unsigned int cmd, unsigned long arg)
 {
        struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
-       int touser;
+       int val, touser = 0;
        int ret;
 
        switch (cmd) {
        case RTC_VL_READ:
-               ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &touser);
+               ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &val);
                if (ret)
                        return ret;
 
-               touser = touser & PCF2127_BIT_CTRL3_BLF ? RTC_VL_BACKUP_LOW : 0;
+               if (val & PCF2127_BIT_CTRL3_BLF)
+                       touser |= RTC_VL_BACKUP_LOW;
+
+               if (val & PCF2127_BIT_CTRL3_BF)
+                       touser |= RTC_VL_BACKUP_SWITCH;
 
                return put_user(touser, (unsigned int __user *)arg);
+
+       case RTC_VL_CLR:
+               return regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
+                                         PCF2127_BIT_CTRL3_BF, 0);
+
        default:
                return -ENOIOCTLCMD;
        }
@@ -493,7 +502,6 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
         */
        ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
                                 PCF2127_BIT_CTRL3_BTSE |
-                                PCF2127_BIT_CTRL3_BF |
                                 PCF2127_BIT_CTRL3_BIE |
                                 PCF2127_BIT_CTRL3_BLIE, 0);
        if (ret) {