mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct rtc_time
commit 2f90b68309
upstream.
tm_mon is 0..11, whereas vt8500 expects 1..12 for the month field,
causing invalid date errors for January, and causing the day field to
roll over incorrectly.
The century flag is only handled in vt8500_rtc_read_time, but not set in
vt8500_rtc_set_time. This patch corrects the behaviour of the century
flag.
Signed-off-by: Edgar Toernig <froese@gmx.de>
Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8f4d9c2f74
commit
e0996e3502
1 changed files with 4 additions and 3 deletions
|
@ -118,7 +118,7 @@ static int vt8500_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
|||
tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S);
|
||||
tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S);
|
||||
tm->tm_mday = bcd2bin(date & DATE_DAY_MASK);
|
||||
tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S);
|
||||
tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S) - 1;
|
||||
tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S)
|
||||
+ ((date >> DATE_CENTURY_S) & 1 ? 200 : 100);
|
||||
tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S;
|
||||
|
@ -137,8 +137,9 @@ static int vt8500_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
|||
}
|
||||
|
||||
writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S)
|
||||
| (bin2bcd(tm->tm_mon) << DATE_MONTH_S)
|
||||
| (bin2bcd(tm->tm_mday)),
|
||||
| (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S)
|
||||
| (bin2bcd(tm->tm_mday))
|
||||
| ((tm->tm_year >= 200) << DATE_CENTURY_S),
|
||||
vt8500_rtc->regbase + VT8500_RTC_DS);
|
||||
writel((bin2bcd(tm->tm_wday) << TIME_DOW_S)
|
||||
| (bin2bcd(tm->tm_hour) << TIME_HOUR_S)
|
||||
|
|
Loading…
Reference in a new issue