mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Add a directory by kernel instead of a common root, add qnap-301w and rpi4 kernel 6.1 suppport
This commit is contained in:
parent
e910436a7a
commit
46837ec4c0
9459 changed files with 362648 additions and 116345 deletions
|
|
@ -0,0 +1,62 @@
|
|||
From d67997d9fa2aa0ebcdc85573db0ac094d67b4052 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 29 Oct 2018 14:45:45 +0000
|
||||
Subject: [PATCH 365/726] 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(-)
|
||||
|
||||
diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c
|
||||
index 6174b3fd4b98..3a4eaa2dbb58 100644
|
||||
--- a/drivers/rtc/rtc-pcf8523.c
|
||||
+++ b/drivers/rtc/rtc-pcf8523.c
|
||||
@@ -100,6 +100,7 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
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 device *dev, struct rtc_time *tm)
|
||||
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);
|
||||
--
|
||||
2.33.1
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue