drivers: rtc: correctly set week day for mc146818
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 21 Jul 2018 16:40:20 +0000 (18:40 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 28 Jul 2018 15:58:09 +0000 (11:58 -0400)
The driver sets the weekday incorrectly when called by the
'date set' command.

Sunday is 1, Saturday is 7 unlike in U-Boot (see data sheet
https://www.nxp.com/docs/en/data-sheet/MC146818.pdf, table 3).

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
drivers/rtc/mc146818.c

index ee29c711aaacb15fe4295c2ed3d16bd38d1feddb..4df443d84aa931b27b7dfe3a39244fbe0f04c8df 100644 (file)
@@ -145,7 +145,8 @@ static int mc146818_set(struct rtc_time *tmp)
 
        mc146818_write8(RTC_YEAR, bin2bcd(tmp->tm_year % 100));
        mc146818_write8(RTC_MONTH, bin2bcd(tmp->tm_mon));
-       mc146818_write8(RTC_DAY_OF_WEEK, bin2bcd(tmp->tm_wday));
+       /* Sunday = 1, Saturday = 7 */
+       mc146818_write8(RTC_DAY_OF_WEEK, bin2bcd(tmp->tm_wday + 1));
        mc146818_write8(RTC_DATE_OF_MONTH, bin2bcd(tmp->tm_mday));
        mc146818_write8(RTC_HOURS, bin2bcd(tmp->tm_hour));
        mc146818_write8(RTC_MINUTES, bin2bcd(tmp->tm_min));