The range for the "Day of Week" field of the m41t62 RTC is 1 thru 7 while the range for tm_wday is 0 thru 6. The code didn't accommodate this difference in ranges. The patch takes it into account.
Signed-off-by: Paul VanGraafeiland <[EMAIL PROTECTED]> --- diff -up a/drivers/rtc/m41t62.c b/drivers/rtc/m41t62.c --- a/drivers/rtc/m41t62.c 2008-07-19 12:19:45.000000000 -0400 +++ b/drivers/rtc/m41t62.c 2008-07-19 12:07:08.000000000 -0400 @@ -80,7 +80,7 @@ int rtc_get(struct rtc_time *tm) tm->tm_min = BCD2BIN(buf[M41T62_REG_MIN] & 0x7f); tm->tm_hour = BCD2BIN(buf[M41T62_REG_HOUR] & 0x3f); tm->tm_mday = BCD2BIN(buf[M41T62_REG_DAY] & 0x3f); - tm->tm_wday = buf[M41T62_REG_WDAY] & 0x07; + tm->tm_wday = (buf[M41T62_REG_WDAY] - 1) & 0x07; tm->tm_mon = BCD2BIN(buf[M41T62_REG_MON] & 0x1f); /* assume 20YY not 19YY, and ignore the Century Bit */ @@ -115,7 +115,7 @@ void rtc_set(struct rtc_time *tm) buf[M41T62_REG_HOUR] = BIN2BCD(tm->tm_hour) | (buf[M41T62_REG_HOUR] & ~0x3f) ; buf[M41T62_REG_WDAY] = - (tm->tm_wday & 0x07) | (buf[M41T62_REG_WDAY] & ~0x07); + ((tm->tm_wday + 1) & 0x07) | (buf[M41T62_REG_WDAY] & ~0x07); buf[M41T62_REG_DAY] = BIN2BCD(tm->tm_mday) | (buf[M41T62_REG_DAY] & ~0x3f); buf[M41T62_REG_MON] = ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users