b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | From c91a8597734d13ebb5ac7393fa6f100d70f15664 Mon Sep 17 00:00:00 2001 |
| 2 | From: Phil Howard <phil@gadgetoid.com> |
| 3 | Date: Fri, 29 Mar 2019 10:53:14 +0000 |
| 4 | Subject: [PATCH] rtc: rv3028: Add backup switchover mode support |
| 5 | |
| 6 | Signed-off-by: Phil Howard <phil@pimoroni.com> |
| 7 | --- |
| 8 | drivers/rtc/rtc-rv3028.c | 17 +++++++++++++++++ |
| 9 | 1 file changed, 17 insertions(+) |
| 10 | |
| 11 | --- a/drivers/rtc/rtc-rv3028.c |
| 12 | +++ b/drivers/rtc/rtc-rv3028.c |
| 13 | @@ -73,6 +73,7 @@ |
| 14 | |
| 15 | #define RV3028_BACKUP_TCE BIT(5) |
| 16 | #define RV3028_BACKUP_TCR_MASK GENMASK(1,0) |
| 17 | +#define RV3028_BACKUP_BSM_MASK 0x0C |
| 18 | |
| 19 | #define OFFSET_STEP_PPT 953674 |
| 20 | |
| 21 | @@ -600,6 +601,7 @@ static int rv3028_probe(struct i2c_clien |
| 22 | struct rv3028_data *rv3028; |
| 23 | int ret, status; |
| 24 | u32 ohms; |
| 25 | + u8 bsm; |
| 26 | struct nvmem_config nvmem_cfg = { |
| 27 | .name = "rv3028_nvram", |
| 28 | .word_size = 1, |
| 29 | @@ -671,6 +673,21 @@ static int rv3028_probe(struct i2c_clien |
| 30 | if (ret) |
| 31 | return ret; |
| 32 | |
| 33 | + /* setup backup switchover mode */ |
| 34 | + if (!device_property_read_u8(&client->dev, "backup-switchover-mode", |
| 35 | + &bsm)) { |
| 36 | + if (bsm <= 3) { |
| 37 | + ret = regmap_update_bits(rv3028->regmap, RV3028_BACKUP, |
| 38 | + RV3028_BACKUP_BSM_MASK, |
| 39 | + (bsm & 0x03) << 2); |
| 40 | + |
| 41 | + if (ret) |
| 42 | + return ret; |
| 43 | + } else { |
| 44 | + dev_warn(&client->dev, "invalid backup switchover mode value\n"); |
| 45 | + } |
| 46 | + } |
| 47 | + |
| 48 | /* setup trickle charger */ |
| 49 | if (!device_property_read_u32(&client->dev, "trickle-resistor-ohms", |
| 50 | &ohms)) { |