]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/rtc/ds1307.c
Merge branch 'master' of git://git.denx.de/u-boot-marvell
[karo-tx-uboot.git] / drivers / rtc / ds1307.c
index c882d7989a097ba7a62599d5ad028d1c728c71d8..079aa99e8b94bafe173b1d12fac93421eab3086e 100644 (file)
@@ -35,8 +35,7 @@
 #include <rtc.h>
 #include <i2c.h>
 
-#if (defined(CONFIG_RTC_DS1307) || defined(CONFIG_RTC_DS1338) ) && \
-    defined(CONFIG_CMD_DATE)
+#if defined(CONFIG_CMD_DATE)
 
 /*---------------------------------------------------------------------*/
 #undef DEBUG_RTC
 #endif
 /*---------------------------------------------------------------------*/
 
-#ifndef CFG_I2C_RTC_ADDR
-# define CFG_I2C_RTC_ADDR      0x68
+#ifndef CONFIG_SYS_I2C_RTC_ADDR
+# define CONFIG_SYS_I2C_RTC_ADDR       0x68
 #endif
 
-#if defined(CONFIG_RTC_DS1307) && (CFG_I2C_SPEED > 100000)
+#if defined(CONFIG_RTC_DS1307) && (CONFIG_SYS_I2C_SPEED > 100000)
 # error The DS1307 is specified only up to 100kHz!
 #endif
 
 
 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;
 
        sec = rtc_read (RTC_SEC_REG_ADDR);
@@ -104,6 +102,7 @@ void rtc_get (struct rtc_time *tmp)
                /* clear the CH flag */
                rtc_write (RTC_SEC_REG_ADDR,
                           rtc_read (RTC_SEC_REG_ADDR) & ~RTC_SEC_BIT_CH);
+               rel = -1;
        }
 
        tmp->tm_sec  = bcd2bin (sec & 0x7F);
@@ -119,13 +118,15 @@ 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,
@@ -141,6 +142,8 @@ void rtc_set (struct rtc_time *tmp)
        rtc_write (RTC_HR_REG_ADDR, bin2bcd (tmp->tm_hour));
        rtc_write (RTC_MIN_REG_ADDR, bin2bcd (tmp->tm_min));
        rtc_write (RTC_SEC_REG_ADDR, bin2bcd (tmp->tm_sec));
+
+       return 0;
 }
 
 
@@ -182,23 +185,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));
+       i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);
 }
-
-static unsigned char bin2bcd (unsigned int n)
-{
-       return (((n / 10) << 4) | (n % 10));
-}
-
 #endif