Hi,
On 01/02/2017 at 13:45:25 +0100, Sean Nyekjaer wrote:
> 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 <[email protected]>
> ---
> 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
--
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
---
You received this message because you are subscribed to the Google Groups
"rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.