Thread (4 messages) read the whole thread 4 messages, 2 authors, 2017-02-21

Re: [rtc-linux] [PATCH] rtc: pcf2127: bulk read only date and time registers.

From: Alexandre Belloni <hidden>
Date: 2017-02-11 23:21:35

Hi,

On 01/02/2017 at 13:45:25 +0100, Sean Nyekjaer wrote:
quoted hunk ↗ jump to hunk
Read control registers one by one and bulk read time registers.
This fixes when the clock is read, the watchdog counter register is zeroed.

The problem is latent without the watchdog patch

Signed-off-by: Sean Nyekjaer <redacted>
---
Only tested on pcf2127.
I think the pcf2127 have an issue when the register auto-incr is used,
when bulk reading the time the watchdog counter is zeroed and stopped.

 drivers/rtc/rtc-pcf2127.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
index 8abc4eb8f289..f54a42b419b5 100644
--- a/drivers/rtc/rtc-pcf2127.c
+++ b/drivers/rtc/rtc-pcf2127.c
@@ -403,9 +403,21 @@ static int pcf2127_rtc_read_time(struct device *dev, struct rtc_time *tm)
 	struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
 	unsigned char buf[10];
 	int ret;
+	int i;
+
+	for (i = 0; i < 3; i++) {
+		ret =
+		    regmap_read(pcf2127->regmap, PCF2127_REG_CTRL1 + i,
+				(unsigned int *)(buf + i));
+		if (ret) {
+			dev_err(dev, "%s: read error\n", __func__);
+			return ret;
+		}
+	}

CTRL1 and CTRL2 are not used so it is probably enough to only read CTRL3
 
-	ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_CTRL1, buf,
-				sizeof(buf));
+	ret =
+	    regmap_bulk_read(pcf2127->regmap, PCF2127_REG_CTRL1 + 3, (buf + 3),
+			     7);
This is weirdly indented/wrapped. Also, you can probably make buf a
char[7] and continue using sizeof() or even better, ARRAY_SIZE()
 	if (ret) {
 		dev_err(dev, "%s: read error\n", __func__);
 		return ret;
-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help