@ -11,21 +11,21 @@
# include <i2c.h>
# include <rtc.h>
# define PCF2127_REG_CTRL1 ( 0x00)
# define PCF2127_REG_CTRL2 ( 0x01)
# define PCF2127_REG_CTRL3 ( 0x02)
# define PCF2127_REG_SC ( 0x03) /* datetime */
# define PCF2127_REG_MN ( 0x04)
# define PCF2127_REG_HR ( 0x05)
# define PCF2127_REG_DM ( 0x06)
# define PCF2127_REG_DW ( 0x07)
# define PCF2127_REG_MO ( 0x08)
# define PCF2127_REG_YR ( 0x09)
# define PCF2127_REG_CTRL1 0x00
# define PCF2127_REG_CTRL2 0x01
# define PCF2127_REG_CTRL3 0x02
# define PCF2127_REG_SC 0x03
# define PCF2127_REG_MN 0x04
# define PCF2127_REG_HR 0x05
# define PCF2127_REG_DM 0x06
# define PCF2127_REG_DW 0x07
# define PCF2127_REG_MO 0x08
# define PCF2127_REG_YR 0x09
static int pcf2127_rtc_set ( struct udevice * dev , const struct rtc_time * tm )
{
uchar buf [ 8 ] ;
int i = 0 ;
int i = 0 , ret ;
/* start register address */
buf [ i + + ] = PCF2127_REG_SC ;
@ -44,21 +44,22 @@ static int pcf2127_rtc_set(struct udevice *dev, const struct rtc_time *tm)
buf [ i + + ] = bin2bcd ( tm - > tm_year % 100 ) ;
/* write register's data */
if ( dm_i2c_write ( dev , PCF2127_REG_CTRL1 , buf , sizeof ( buf ) ) < 0 )
return - 1 ;
ret = dm_i2c_write ( dev , PCF2127_REG_CTRL1 , buf , sizeof ( buf ) ) ;
return 0 ;
return ret ;
}
static int pcf2127_rtc_get ( struct udevice * dev , struct rtc_time * tm )
{
int rel = 0 ;
int ret = 0 ;
uchar buf [ 10 ] = { PCF2127_REG_CTRL1 } ;
if ( dm_i2c_write ( dev , PCF2127_REG_CTRL1 , buf , 1 ) < 0 )
return - 1 ;
if ( dm_i2c_read ( dev , PCF2127_REG_CTRL1 , buf , sizeof ( buf ) ) < 0 )
return - 1 ;
ret = dm_i2c_write ( dev , PCF2127_REG_CTRL1 , buf , 1 ) ;
if ( ret < 0 )
return ret ;
ret = dm_i2c_read ( dev , PCF2127_REG_CTRL1 , buf , sizeof ( buf ) ) ;
if ( ret < 0 )
return ret ;
if ( buf [ PCF2127_REG_CTRL3 ] & 0x04 )
puts ( " ### Warning: RTC Low Voltage - date/time not reliable \n " ) ;
@ -79,12 +80,13 @@ static int pcf2127_rtc_get(struct udevice *dev, struct rtc_time *tm)
tm - > tm_year , tm - > tm_mon , tm - > tm_mday , tm - > tm_wday ,
tm - > tm_hour , tm - > tm_min , tm - > tm_sec ) ;
return rel ;
return ret ;
}
static int pcf2127_rtc_reset ( struct udevice * dev )
{
/*Doing nothing here*/
return 0 ;
}