]> git.sur5r.net Git - u-boot/blobdiff - drivers/rtc/isl1208.c
Merge branch 'sr@denx.de' of git://git.denx.de/u-boot-staging
[u-boot] / drivers / rtc / isl1208.c
index d87280229cc282abbd2c1b9add13b77e06141b88..07591b7dba790afc2fc5f871826c280a599b7e0c 100644 (file)
 
 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);
 
 /*
  * Get the current time from the RTC
  */
 
-void rtc_get (struct rtc_time *tmp)
+int rtc_get (struct rtc_time *tmp)
 {
+       int rel = 0;
        uchar sec, min, hour, mday, wday, mon, year, status;
 
        status = rtc_read (RTC_STAT_REG_ADDR);
@@ -94,6 +93,7 @@ void rtc_get (struct rtc_time *tmp)
                printf ("### Warning: RTC oscillator has stopped\n");
                rtc_write(RTC_STAT_REG_ADDR,
                        rtc_read(RTC_STAT_REG_ADDR) &~ (RTC_STAT_BIT_BAT|RTC_STAT_BIT_RTCF));
+               rel = -1;
        }
 
        tmp->tm_sec  = bcd2bin (sec & 0x7F);
@@ -109,12 +109,14 @@ void rtc_get (struct rtc_time *tmp)
        DEBUGR ("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;
 }
 
 /*
  * Set the RTC
  */
-void rtc_set (struct rtc_time *tmp)
+int rtc_set (struct rtc_time *tmp)
 {
        DEBUGR ("Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",
                tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
@@ -135,6 +137,8 @@ void rtc_set (struct rtc_time *tmp)
        /* disable write */
        rtc_write(RTC_STAT_REG_ADDR,
                rtc_read(RTC_STAT_REG_ADDR) & ~RTC_STAT_BIT_WRTC);
+
+       return 0;
 }
 
 void rtc_reset (void)
@@ -147,20 +151,10 @@ 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);
 }