diff options
-rw-r--r-- | drivers/rtc/rtc-vt8500.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/rtc/rtc-vt8500.c b/drivers/rtc/rtc-vt8500.c index 737addff7663..00c930f4b6f3 100644 --- a/drivers/rtc/rtc-vt8500.c +++ b/drivers/rtc/rtc-vt8500.c | |||
@@ -119,7 +119,7 @@ static int vt8500_rtc_read_time(struct device *dev, struct rtc_time *tm) | |||
119 | tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S); | 119 | tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S); |
120 | tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S); | 120 | tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S); |
121 | tm->tm_mday = bcd2bin(date & DATE_DAY_MASK); | 121 | tm->tm_mday = bcd2bin(date & DATE_DAY_MASK); |
122 | tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S); | 122 | tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S) - 1; |
123 | tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S) | 123 | tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S) |
124 | + ((date >> DATE_CENTURY_S) & 1 ? 200 : 100); | 124 | + ((date >> DATE_CENTURY_S) & 1 ? 200 : 100); |
125 | tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S; | 125 | tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S; |
@@ -138,8 +138,9 @@ static int vt8500_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
138 | } | 138 | } |
139 | 139 | ||
140 | writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) | 140 | writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) |
141 | | (bin2bcd(tm->tm_mon) << DATE_MONTH_S) | 141 | | (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) |
142 | | (bin2bcd(tm->tm_mday)), | 142 | | (bin2bcd(tm->tm_mday)) |
143 | | ((tm->tm_year >= 200) << DATE_CENTURY_S), | ||
143 | vt8500_rtc->regbase + VT8500_RTC_DS); | 144 | vt8500_rtc->regbase + VT8500_RTC_DS); |
144 | writel((bin2bcd(tm->tm_wday) << TIME_DOW_S) | 145 | writel((bin2bcd(tm->tm_wday) << TIME_DOW_S) |
145 | | (bin2bcd(tm->tm_hour) << TIME_HOUR_S) | 146 | | (bin2bcd(tm->tm_hour) << TIME_HOUR_S) |