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.

Reply via email to