rtc: as3722: correct month value
authorBibek Basu <bbasu@nvidia.com>
Fri, 14 Aug 2015 18:44:02 +0000 (20:44 +0200)
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>
Sat, 5 Sep 2015 17:37:18 +0000 (19:37 +0200)
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: Bibek Basu <bbasu@nvidia.com>
Signed-off-by: Felix Janda <felix.janda@posteo.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
drivers/rtc/rtc-as3722.c

index 9f38eda..56cc582 100644 (file)
@@ -45,7 +45,7 @@ static void as3722_time_to_reg(u8 *rbuff, struct rtc_time *tm)
        rbuff[1] = bin2bcd(tm->tm_min);
        rbuff[2] = bin2bcd(tm->tm_hour);
        rbuff[3] = bin2bcd(tm->tm_mday);
-       rbuff[4] = bin2bcd(tm->tm_mon);
+       rbuff[4] = bin2bcd(tm->tm_mon + 1);
        rbuff[5] = bin2bcd(tm->tm_year - (AS3722_RTC_START_YEAR - 1900));
 }
 
@@ -55,7 +55,7 @@ static void as3722_reg_to_time(u8 *rbuff, struct rtc_time *tm)
        tm->tm_min = bcd2bin(rbuff[1] & 0x7F);
        tm->tm_hour = bcd2bin(rbuff[2] & 0x3F);
        tm->tm_mday = bcd2bin(rbuff[3] & 0x3F);
-       tm->tm_mon = bcd2bin(rbuff[4] & 0x1F);
+       tm->tm_mon = bcd2bin(rbuff[4] & 0x1F) - 1;
        tm->tm_year = (AS3722_RTC_START_YEAR - 1900) + bcd2bin(rbuff[5] & 0x7F);
        return;
 }