@ -37,6 +37,7 @@
/*
* RTC register addresses
*/
# if defined CONFIG_RTC_DS1337
# define RTC_SEC_REG_ADDR 0x0
# define RTC_MIN_REG_ADDR 0x1
# define RTC_HR_REG_ADDR 0x2
@ -47,6 +48,18 @@
# define RTC_CTL_REG_ADDR 0x0e
# define RTC_STAT_REG_ADDR 0x0f
# define RTC_TC_REG_ADDR 0x10
# elif defined CONFIG_RTC_DS1388
# define RTC_SEC_REG_ADDR 0x1
# define RTC_MIN_REG_ADDR 0x2
# define RTC_HR_REG_ADDR 0x3
# define RTC_DAY_REG_ADDR 0x4
# define RTC_DATE_REG_ADDR 0x5
# define RTC_MON_REG_ADDR 0x6
# define RTC_YR_REG_ADDR 0x7
# define RTC_CTL_REG_ADDR 0x0c
# define RTC_STAT_REG_ADDR 0x0b
# define RTC_TC_REG_ADDR 0x0a
# endif
/*
* RTC control register bits
@ -87,6 +100,11 @@ int rtc_get (struct rtc_time *tmp)
mon_cent = rtc_read ( RTC_MON_REG_ADDR ) ;
year = rtc_read ( RTC_YR_REG_ADDR ) ;
/* No century bit, assume year 2000 */
# ifdef CONFIG_RTC_DS1388
mon_cent | = 0x80 ;
# endif
debug ( " Get RTC year: %02x mon/cent: %02x mday: %02x wday: %02x "
" hr: %02x min: %02x sec: %02x control: %02x status: %02x \n " ,
year , mon_cent , mday , wday , hour , min , sec , control , status ) ;
@ -151,6 +169,7 @@ int rtc_set (struct rtc_time *tmp)
* 600 nA to 2u A . Define CONFIG_SYS_RTC_DS1337_NOOSC if you wish to turn
* off the OSC output .
*/
# ifdef CONFIG_SYS_RTC_DS1337_NOOSC
# define RTC_DS1337_RESET_VAL \
( RTC_CTL_BIT_INTCN | RTC_CTL_BIT_RS1 | RTC_CTL_BIT_RS2 )
@ -159,10 +178,17 @@ int rtc_set (struct rtc_time *tmp)
# endif
void rtc_reset ( void )
{
# ifdef CONFIG_SYS_RTC_DS1337
rtc_write ( RTC_CTL_REG_ADDR , RTC_DS1337_RESET_VAL ) ;
# elif defined CONFIG_SYS_RTC_DS1388
rtc_write ( RTC_CTL_REG_ADDR , 0x0 ) ; /* hw default */
# endif
# ifdef CONFIG_SYS_DS1339_TCR_VAL
rtc_write ( RTC_TC_REG_ADDR , CONFIG_SYS_DS1339_TCR_VAL ) ;
# endif
# ifdef CONFIG_SYS_DS1388_TCR_VAL
rtc_write ( RTC_TC_REG_ADDR , CONFIG_SYS_DS1388_TCR_VAL ) ;
# endif
}