Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rtc: rx8111: handle VLOW flag

Allow userspace to get battery status information and be able to warn when
battery is low and has to be replaced.

Tested-by: Waqar Hameed <waqar.hameed@axis.com>
Reviewed-by: Waqar Hameed <waqar.hameed@axis.com>
Link: https://lore.kernel.org/r/20240417191937.33790-2-alexandre.belloni@bootlin.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>

+12
+12
drivers/rtc/rtc-rx8111.c
··· 95 95 RX8111_REGF_INIEN, 96 96 RX8111_REGF_CHGEN, 97 97 98 + /* RX8111_REG_STATUS_MON. */ 99 + RX8111_REGF_VLOW, 100 + 98 101 /* Sentinel value. */ 99 102 RX8111_REGF_MAX 100 103 }; ··· 132 129 [RX8111_REGF_SWSEL1] = REG_FIELD(RX8111_REG_PWR_SWITCH_CTRL, 3, 3), 133 130 [RX8111_REGF_INIEN] = REG_FIELD(RX8111_REG_PWR_SWITCH_CTRL, 6, 6), 134 131 [RX8111_REGF_CHGEN] = REG_FIELD(RX8111_REG_PWR_SWITCH_CTRL, 7, 7), 132 + 133 + [RX8111_REGF_VLOW] = REG_FIELD(RX8111_REG_STATUS_MON, 1, 1), 135 134 }; 136 135 137 136 static const struct regmap_config rx8111_regmap_config = { ··· 280 275 return ret; 281 276 282 277 vlval = regval ? RTC_VL_DATA_INVALID : 0; 278 + 279 + ret = regmap_field_read(data->regfields[RX8111_REGF_VLOW], 280 + &regval); 281 + if (ret) 282 + return ret; 283 + 284 + vlval |= regval ? RTC_VL_BACKUP_LOW : 0; 283 285 284 286 return put_user(vlval, (typeof(vlval) __user *)arg); 285 287 default: