diff options
Diffstat (limited to 'drivers/rtc/rx8025.c')
| -rw-r--r-- | drivers/rtc/rx8025.c | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/drivers/rtc/rx8025.c b/drivers/rtc/rx8025.c index 064138e9e..da87394a0 100644 --- a/drivers/rtc/rx8025.c +++ b/drivers/rtc/rx8025.c @@ -42,8 +42,8 @@  #endif  /*---------------------------------------------------------------------*/ -#ifndef CFG_I2C_RTC_ADDR -# define CFG_I2C_RTC_ADDR	0x32 +#ifndef CONFIG_SYS_I2C_RTC_ADDR +# define CONFIG_SYS_I2C_RTC_ADDR	0x32  #endif  /* @@ -102,7 +102,7 @@ int rtc_get (struct rtc_time *tmp)  	uchar sec, min, hour, mday, wday, mon, year, ctl2;  	uchar buf[16]; -	if (i2c_read(CFG_I2C_RTC_ADDR, 0, 0, buf, 16)) +	if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, 16))  		printf("Error reading from RTC\n");  	sec = rtc_read(RTC_SEC_REG_ADDR); @@ -136,7 +136,11 @@ int rtc_get (struct rtc_time *tmp)  	tmp->tm_sec  = bcd2bin (sec & 0x7F);  	tmp->tm_min  = bcd2bin (min & 0x7F); -	tmp->tm_hour = bcd2bin (hour & 0x3F); +	if (rtc_read(RTC_CTL1_REG_ADDR) & RTC_CTL1_BIT_2412) +		tmp->tm_hour = bcd2bin (hour & 0x3F); +	else +		tmp->tm_hour = bcd2bin (hour & 0x1F) % 12 + +			       ((hour & 0x20) ? 12 : 0);  	tmp->tm_mday = bcd2bin (mday & 0x3F);  	tmp->tm_mon  = bcd2bin (mon & 0x1F);  	tmp->tm_year = bcd2bin (year) + ( bcd2bin (year) >= 70 ? 1900 : 2000); @@ -154,7 +158,7 @@ int rtc_get (struct rtc_time *tmp)  /*   * 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, @@ -172,6 +176,8 @@ void rtc_set (struct rtc_time *tmp)  	rtc_write (RTC_SEC_REG_ADDR, bin2bcd (tmp->tm_sec));  	rtc_write (RTC_CTL1_REG_ADDR, RTC_CTL1_BIT_2412); + +	return 0;  }  /* @@ -183,7 +189,7 @@ void rtc_reset (void)  	uchar buf[16];  	uchar ctl2; -	if (i2c_read(CFG_I2C_RTC_ADDR, 0,    0,   buf, 16)) +	if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0,    0,   buf, 16))  		printf("Error reading from RTC\n");  	ctl2 = rtc_read(RTC_CTL2_REG_ADDR); @@ -215,7 +221,7 @@ static void rtc_write (uchar reg, uchar val)  	uchar buf[2];  	buf[0] = reg << 4;  	buf[1] = val; -	if (i2c_write(CFG_I2C_RTC_ADDR, 0, 0, buf, 2) != 0) +	if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, 2) != 0)  		printf("Error writing to RTC\n");  } |