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

Reply via email to