brcm2708: organize kernel patches
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0381-rtc-rv3028-Add-backup-switchover-mode-support.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0381-rtc-rv3028-Add-backup-switchover-mode-support.patch b/target/linux/brcm2708/patches-4.19/950-0381-rtc-rv3028-Add-backup-switchover-mode-support.patch
new file mode 100644 (file)
index 0000000..7eac710
--- /dev/null
@@ -0,0 +1,50 @@
+From fb4e195012c405a04b1a7a86e240ceada0c8aa65 Mon Sep 17 00:00:00 2001
+From: Phil Howard <phil@gadgetoid.com>
+Date: Fri, 29 Mar 2019 10:53:14 +0000
+Subject: [PATCH] rtc: rv3028: Add backup switchover mode support
+
+Signed-off-by: Phil Howard <phil@pimoroni.com>
+---
+ drivers/rtc/rtc-rv3028.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+--- a/drivers/rtc/rtc-rv3028.c
++++ b/drivers/rtc/rtc-rv3028.c
+@@ -74,6 +74,7 @@
+ #define RV3028_BACKUP_TCE             BIT(5)
+ #define RV3028_BACKUP_TCR_MASK                GENMASK(1,0)
++#define RV3028_BACKUP_BSM_MASK                0x0C
+ #define OFFSET_STEP_PPT                       953674
+@@ -601,6 +602,7 @@ static int rv3028_probe(struct i2c_clien
+       struct rv3028_data *rv3028;
+       int ret, status;
+       u32 ohms;
++      u8 bsm;
+       struct nvmem_config nvmem_cfg = {
+               .name = "rv3028_nvram",
+               .word_size = 1,
+@@ -671,6 +673,21 @@ static int rv3028_probe(struct i2c_clien
+       if (ret)
+               return ret;
++      /* setup backup switchover mode */
++      if (!device_property_read_u8(&client->dev, "backup-switchover-mode",
++                                   &bsm))  {
++              if (bsm <= 3) {
++                      ret = regmap_update_bits(rv3028->regmap, RV3028_BACKUP,
++                              RV3028_BACKUP_BSM_MASK,
++                              (bsm & 0x03) << 2);
++
++                      if (ret)
++                              return ret;
++              } else {
++                      dev_warn(&client->dev, "invalid backup switchover mode value\n");
++              }
++      }
++
+       /* setup trickle charger */
+       if (!device_property_read_u32(&client->dev, "trickle-resistor-ohms",
+                                     &ohms)) {