Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rtc: pcf2127: bulk read only date and time registers.

Read control registers one by one and bulk read time registers.
This fixes when the clock is read, the watchdog counter register is zeroed.

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

authored by

Sean Nyekjaer and committed by
Alexandre Belloni
3769a375 34f54f57

+13 -2
+13 -2
drivers/rtc/rtc-pcf2127.c
··· 52 52 struct pcf2127 *pcf2127 = dev_get_drvdata(dev); 53 53 unsigned char buf[10]; 54 54 int ret; 55 + int i; 55 56 56 - ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_CTRL1, buf, 57 - sizeof(buf)); 57 + for (i = 0; i <= PCF2127_REG_CTRL3; i++) { 58 + ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL1 + i, 59 + (unsigned int *)(buf + i)); 60 + if (ret) { 61 + dev_err(dev, "%s: read error\n", __func__); 62 + return ret; 63 + } 64 + } 65 + 66 + ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_SC, 67 + (buf + PCF2127_REG_SC), 68 + ARRAY_SIZE(buf) - PCF2127_REG_SC); 58 69 if (ret) { 59 70 dev_err(dev, "%s: read error\n", __func__); 60 71 return ret;