rtc-m48t59: fix setting of a year on m48t08 and m48t02 rtcs
authorKrzysztof Helt <krzysztof.h1@wp.pl>
Mon, 8 Sep 2008 01:25:20 +0000 (18:25 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Sep 2008 01:25:20 +0000 (18:25 -0700)
Fix setting of a year in m48t08 and m48t02 clocks.
They do not have century bits and setting them
causes the year to overflow (bit 0x80 set).

Problem found by Robert Reif on Sun Sparcstation 20.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/rtc/rtc-m48t59.c

index 867c8a79a6a8dff395b92a73f24f98968757ac2d..761e9d7234fa072d1403c334017ab1bd2ff682b5 100644 (file)
@@ -126,7 +126,7 @@ static int m48t59_rtc_set_time(struct device *dev, struct rtc_time *tm)
        M48T59_WRITE((BIN2BCD(tm->tm_mon + 1) & 0x1F), M48T59_MONTH);
        M48T59_WRITE(BIN2BCD(tm->tm_year % 100), M48T59_YEAR);
 
-       if (tm->tm_year/100)
+       if (pdata->type == M48T59RTC_TYPE_M48T59 && (tm->tm_year / 100))
                val = (M48T59_WDAY_CEB | M48T59_WDAY_CB);
        val |= (BIN2BCD(tm->tm_wday) & 0x07);
        M48T59_WRITE(val, M48T59_WDAY);