summaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch')
-rw-r--r--target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch57
1 files changed, 0 insertions, 57 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch b/target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch
deleted file mode 100644
index ab98d4ea36..0000000000
--- a/target/linux/bcm27xx/patches-6.1/950-0356-rtc-pcf8523-Fix-oscillator-stop-bit-handling.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From d4caec563cc89319516a29a9b3c40ec302925d7a Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Mon, 29 Oct 2018 14:45:45 +0000
-Subject: [PATCH] rtc: pcf8523: Fix oscillator stop bit handling
-
-See: https://github.com/raspberrypi/firmware/issues/1065
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.com>
----
- drivers/rtc/rtc-pcf8523.c | 29 +++++++++++++++++++++++++++--
- 1 file changed, 27 insertions(+), 2 deletions(-)
-
---- a/drivers/rtc/rtc-pcf8523.c
-+++ b/drivers/rtc/rtc-pcf8523.c
-@@ -100,6 +100,7 @@ static int pcf8523_rtc_read_time(struct
- {
- struct pcf8523 *pcf8523 = dev_get_drvdata(dev);
- u8 regs[7];
-+ u32 value;
- int err;
-
- err = regmap_bulk_read(pcf8523->regmap, PCF8523_REG_SECONDS, regs,
-@@ -107,8 +108,32 @@ static int pcf8523_rtc_read_time(struct
- if (err < 0)
- return err;
-
-- if (regs[0] & PCF8523_SECONDS_OS)
-- return -EINVAL;
-+ if (regs[0] & PCF8523_SECONDS_OS) {
-+ /*
-+ * If the oscillator was stopped, try to clear the flag. Upon
-+ * power-up the flag is always set, but if we cannot clear it
-+ * the oscillator isn't running properly for some reason. The
-+ * sensible thing therefore is to return an error, signalling
-+ * that the clock cannot be assumed to be correct.
-+ */
-+
-+ regs[0] &= ~PCF8523_SECONDS_OS;
-+
-+ err = regmap_write(pcf8523->regmap, PCF8523_REG_SECONDS,
-+ regs[0]);
-+ if (err < 0)
-+ return err;
-+
-+ err = regmap_read(pcf8523->regmap, PCF8523_REG_SECONDS,
-+ &value);
-+ if (err < 0)
-+ return err;
-+
-+ if (value & PCF8523_SECONDS_OS)
-+ return -EAGAIN;
-+
-+ regs[0] = value;
-+ }
-
- tm->tm_sec = bcd2bin(regs[0] & 0x7f);
- tm->tm_min = bcd2bin(regs[1] & 0x7f);