OSDN Git Service

rtc: em3027: correct month value
authorIlya Ledvich <ilya@compulab.co.il>
Fri, 1 Nov 2019 09:54:22 +0000 (11:54 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 8 Nov 2019 15:14:09 +0000 (16:14 +0100)
The RTC month value is 1-indexed, but the kernel assumes it is 0-indexed.
This may result in the RTC not rolling over correctly.

Signed-off-by: Ilya Ledvich <ilya@compulab.co.il>
Reviewed-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Link: https://lore.kernel.org/r/20191101095422.14787-1-ilya@compulab.co.il
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-em3027.c

index 77cca13..9f176bc 100644 (file)
@@ -71,7 +71,7 @@ static int em3027_get_time(struct device *dev, struct rtc_time *tm)
        tm->tm_hour     = bcd2bin(buf[2]);
        tm->tm_mday     = bcd2bin(buf[3]);
        tm->tm_wday     = bcd2bin(buf[4]);
-       tm->tm_mon      = bcd2bin(buf[5]);
+       tm->tm_mon      = bcd2bin(buf[5]) - 1;
        tm->tm_year     = bcd2bin(buf[6]) + 100;
 
        return 0;
@@ -94,7 +94,7 @@ static int em3027_set_time(struct device *dev, struct rtc_time *tm)
        buf[3] = bin2bcd(tm->tm_hour);
        buf[4] = bin2bcd(tm->tm_mday);
        buf[5] = bin2bcd(tm->tm_wday);
-       buf[6] = bin2bcd(tm->tm_mon);
+       buf[6] = bin2bcd(tm->tm_mon + 1);
        buf[7] = bin2bcd(tm->tm_year % 100);
 
        /* write time/date registers */