@@ -124,6 +124,7 @@ enum ds_type {
#define RX8130_REG_CONTROL0_AIE BIT(3)
#define RX8130_REG_CONTROL1 0x1f
#define RX8130_REG_CONTROL1_INIEN BIT(4)
+#define RX8130_REG_CONTROL1_CHGEN BIT(5)
#define MCP794XX_REG_CONTROL 0x07
# define MCP794XX_BIT_ALM0_EN 0x10
@@ -1708,6 +1709,7 @@ static int ds1307_probe(struct i2c_client *client,
const struct chip_desc *chip;
bool want_irq;
bool ds1307_can_wakeup_device = false;
+ bool enable_bb_charging = false;
unsigned char regs[8];
struct ds1307_platform_data *pdata = dev_get_platdata(&client->dev);
u8 trickle_charger_setup = 0;
@@ -1774,6 +1776,9 @@ static int ds1307_probe(struct i2c_client *client,
if (chip->alarm && of_property_read_bool(client->dev.of_node,
"wakeup-source"))
ds1307_can_wakeup_device = true;
+
+ enable_bb_charging = of_property_read_bool(client->dev.of_node,
+ "aux-voltage-chargeable");
#endif
switch (ds1307->type) {
@@ -1879,8 +1884,13 @@ static int ds1307_probe(struct i2c_client *client,
break;
case rx_8130:
/* make sure that the backup battery is enabled */
- regmap_write(ds1307->regmap, RX8130_REG_CONTROL1,
- RX8130_REG_CONTROL1_INIEN);
+ regs[0] = RX8130_REG_CONTROL1_INIEN;
+
+ /* set chargeable flag */
+ if (enable_bb_charging)
+ regs[0] |= RX8130_REG_CONTROL1_CHGEN;
+
+ regmap_write(ds1307->regmap, RX8130_REG_CONTROL1, regs[0]);
break;
default:
break;
RX8130_REG_CONTROL1_CHGEN decides whether the battery or the supercap should be charged or not. Introduce a new dt binding for that. Signed-off-by: Bastian Krause <bst@pengutronix.de> --- drivers/rtc/rtc-ds1307.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)