]> git.sur5r.net Git - u-boot/blobdiff - drivers/rtc/pcf8563.c
Merge branch 'master' into next
[u-boot] / drivers / rtc / pcf8563.c
index 2d73d5d7ef965728dc6d4781d951ca0813351ce5..339e5f60801d8301cc93cb24ceccf2fbaf767c5f 100644 (file)
 #include <rtc.h>
 #include <i2c.h>
 
-#if defined(CONFIG_RTC_PCF8563) && defined(CONFIG_CMD_DATE)
+#if defined(CONFIG_CMD_DATE)
 
 static uchar rtc_read  (uchar reg);
 static void  rtc_write (uchar reg, uchar val);
-static uchar bin2bcd   (unsigned int n);
-static unsigned bcd2bin(uchar c);
 
 /* ------------------------------------------------------------------------- */
 
-void rtc_get (struct rtc_time *tmp)
+int rtc_get (struct rtc_time *tmp)
 {
+       int rel = 0;
        uchar sec, min, hour, mday, wday, mon_cent, year;
 
        sec     = rtc_read (0x02);
@@ -65,6 +64,7 @@ void rtc_get (struct rtc_time *tmp)
 
        if (sec & 0x80) {
                puts ("### Warning: RTC Low Voltage - date/time not reliable\n");
+               rel = -1;
        }
 
        tmp->tm_sec  = bcd2bin (sec  & 0x7F);
@@ -80,9 +80,11 @@ void rtc_get (struct rtc_time *tmp)
        debug ( "Get DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",
                tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
                tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+
+       return rel;
 }
 
-void rtc_set (struct rtc_time *tmp)
+int rtc_set (struct rtc_time *tmp)
 {
        uchar century;
 
@@ -100,6 +102,8 @@ void rtc_set (struct rtc_time *tmp)
        rtc_write (0x04, bin2bcd(tmp->tm_hour));
        rtc_write (0x03, bin2bcd(tmp->tm_min ));
        rtc_write (0x02, bin2bcd(tmp->tm_sec ));
+
+       return 0;
 }
 
 void rtc_reset (void)
@@ -123,22 +127,12 @@ void rtc_reset (void)
 
 static uchar rtc_read (uchar reg)
 {
-       return (i2c_reg_read (CFG_I2C_RTC_ADDR, reg));
+       return (i2c_reg_read (CONFIG_SYS_I2C_RTC_ADDR, reg));
 }
 
 static void rtc_write (uchar reg, uchar val)
 {
-       i2c_reg_write (CFG_I2C_RTC_ADDR, reg, val);
-}
-
-static unsigned bcd2bin (uchar n)
-{
-       return ((((n >> 4) & 0x0F) * 10) + (n & 0x0F));
-}
-
-static unsigned char bin2bcd (unsigned int n)
-{
-       return (((n / 10) << 4) | (n % 10));
+       i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);
 }
 
 #endif