diff options
Diffstat (limited to 'drivers/rtc')
30 files changed, 227 insertions, 161 deletions
| diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index f41f33d6e..94bc518a5 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -32,8 +32,8 @@ COBJS-y += date.o  COBJS-$(CONFIG_RTC_DS12887) += ds12887.o  COBJS-$(CONFIG_RTC_DS1302) += ds1302.o  COBJS-$(CONFIG_RTC_DS1306) += ds1306.o -COBJS-$(CONFIG_RTC_DS1307)$(CONFIG_RTC_DS1338) += ds1307.o -COBJS-y += $(COBJS-yy) +COBJS-$(CONFIG_RTC_DS1307) += ds1307.o +COBJS-$(CONFIG_RTC_DS1338) += ds1307.o  COBJS-$(CONFIG_RTC_DS1337) += ds1337.o  COBJS-$(CONFIG_RTC_DS1374) += ds1374.o  COBJS-$(CONFIG_RTC_DS1556) += ds1556.o @@ -59,7 +59,7 @@ COBJS-$(CONFIG_RTC_RX8025) += rx8025.o  COBJS-$(CONFIG_RTC_S3C24X0) += s3c24x0_rtc.o  COBJS-$(CONFIG_RTC_X1205) += x1205.o -COBJS	:= $(COBJS-y) +COBJS	:= $(sort $(COBJS-y))  SRCS	:= $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(COBJS)) diff --git a/drivers/rtc/bfin_rtc.c b/drivers/rtc/bfin_rtc.c index ee8acd359..5de695384 100644 --- a/drivers/rtc/bfin_rtc.c +++ b/drivers/rtc/bfin_rtc.c @@ -26,10 +26,17 @@  #define NUM_SECS_IN_HR    HRS_TO_SECS(1)  #define NUM_SECS_IN_DAY   DAYS_TO_SECS(1) +/* Enable the RTC prescaler enable register */ +static void rtc_init(void) +{ +	if (!(bfin_read_RTC_PREN() & 0x1)) +		bfin_write_RTC_PREN(0x1); +} +  /* Our on-chip RTC has no notion of "reset" */  void rtc_reset(void)  { -	return; +	rtc_init();  }  /* Wait for pending writes to complete */ @@ -42,18 +49,10 @@ static void wait_for_complete(void)  	bfin_write_RTC_ISTAT(WRITE_COMPLETE);  } -/* Enable the RTC prescaler enable register */ -int rtc_init(void) -{ -	pr_stamp(); -	bfin_write_RTC_PREN(0x1); -	return 0; -} -  /* Set the time. Get the time_in_secs which is the number of seconds since Jan 1970 and set the RTC registers   * based on this value.   */ -void rtc_set(struct rtc_time *tmp) +int rtc_set(struct rtc_time *tmp)  {  	unsigned long remain, days, hrs, mins, secs; @@ -61,9 +60,10 @@ void rtc_set(struct rtc_time *tmp)  	if (tmp == NULL) {  		puts("Error setting the date/time\n"); -		return; +		return -1;  	} +	rtc_init();  	wait_for_complete();  	/* Calculate number of seconds this incoming time represents */ @@ -82,6 +82,8 @@ void rtc_set(struct rtc_time *tmp)  	/* Encode these time values into our RTC_STAT register */  	bfin_write_RTC_STAT(SET_ALARM(days, hrs, mins, secs)); + +	return 0;  }  /* Read the time from the RTC_STAT. time_in_seconds is seconds since Jan 1970 */ @@ -98,6 +100,7 @@ int rtc_get(struct rtc_time *tmp)  		return -1;  	} +	rtc_init();  	wait_for_complete();  	/* Read the RTC_STAT register */ diff --git a/drivers/rtc/ds12887.c b/drivers/rtc/ds12887.c index fb1825bf1..25ca1333e 100644 --- a/drivers/rtc/ds12887.c +++ b/drivers/rtc/ds12887.c @@ -154,7 +154,7 @@ else  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	uchar save_ctrl_b;  	uchar sec, min, hour, mday, wday, mon, year; @@ -202,6 +202,8 @@ void rtc_set (struct rtc_time *tmp)  	/* enables the RTC to update the regs */  	save_ctrl_b &= ~RTC_CB_SET;  	rtc_write(RTC_CONTROL_B, save_ctrl_b); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/ds1302.c b/drivers/rtc/ds1302.c index d28a9fd72..87ddd0191 100644 --- a/drivers/rtc/ds1302.c +++ b/drivers/rtc/ds1302.c @@ -287,8 +287,7 @@ rtc_get(struct rtc_time *tmp)  	return rel;  } -void -rtc_set(struct rtc_time *tmp) +int rtc_set(struct rtc_time *tmp)  {  	struct ds1302_st bbclk;  	unsigned char b=0; @@ -326,6 +325,8 @@ rtc_set(struct rtc_time *tmp)  	write_ser_drv(0x8e,&b,1);           /* disable write protect */  	write_ser_drv(0xbe,(unsigned char *)&bbclk, 8);     /* write burst */ + +	return 0;  }  #endif diff --git a/drivers/rtc/ds1306.c b/drivers/rtc/ds1306.c index 12528ed1c..75f88a9a5 100644 --- a/drivers/rtc/ds1306.c +++ b/drivers/rtc/ds1306.c @@ -86,7 +86,7 @@ static void init_spi (void);  /* read clock time from DS1306 and return it in *tmp */  int rtc_get (struct rtc_time *tmp)  { -	volatile immap_t *immap = (immap_t *) CFG_IMMR; +	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;  	unsigned char spi_byte;	/* Data Byte */  	init_spi ();		/* set port B for software SPI */ @@ -141,9 +141,9 @@ int rtc_get (struct rtc_time *tmp)  /* ------------------------------------------------------------------------- */  /* set clock time in DS1306 RTC and in MPC8xx RTC */ -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  { -	volatile immap_t *immap = (immap_t *) CFG_IMMR; +	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;  	init_spi ();		/* set port B for software SPI */ @@ -209,6 +209,8 @@ void rtc_set (struct rtc_time *tmp)  	debug ("Set 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 0;  }  /* ------------------------------------------------------------------------- */ @@ -216,7 +218,7 @@ void rtc_set (struct rtc_time *tmp)  /* Initialize Port B for software SPI */  static void init_spi (void)  { -	volatile immap_t *immap = (immap_t *) CFG_IMMR; +	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;  	/* Force output pins to begin at logic 0 */  	immap->im_cpm.cp_pbdat &= ~(PB_SPI_CE | PB_SPIMOSI | PB_SPISCK); @@ -233,7 +235,7 @@ static void init_spi (void)  /* NOTE: soft_spi_send() assumes that the I/O lines are configured already */  static void soft_spi_send (unsigned char n)  { -	volatile immap_t *immap = (immap_t *) CFG_IMMR; +	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;  	unsigned char bitpos;	/* bit position to receive */  	unsigned char i;	/* Loop Control */ @@ -262,7 +264,7 @@ static void soft_spi_send (unsigned char n)  /* NOTE: soft_spi_read() assumes that the I/O lines are configured already */  static unsigned char soft_spi_read (void)  { -	volatile immap_t *immap = (immap_t *) CFG_IMMR; +	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;  	unsigned char spi_byte = 0;	/* Return value, assume success */  	unsigned char bitpos;	/* bit position to receive */ @@ -312,7 +314,7 @@ int rtc_get (struct rtc_time *tmp)  	 * step just once.  	 */  	if (!slave) { -		slave = spi_setup_slave(0, CFG_SPI_RTC_DEVID, 600000, +		slave = spi_setup_slave(0, CONFIG_SYS_SPI_RTC_DEVID, 600000,  				SPI_MODE_3 | SPI_CS_HIGH);  		if (!slave)  			return; @@ -371,11 +373,11 @@ int rtc_get (struct rtc_time *tmp)  /* ------------------------------------------------------------------------- */  /* set clock time from *tmp in DS1306 RTC */ -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	/* Assuming Vcc = 2.0V (lowest speed) */  	if (!slave) { -		slave = spi_setup_slave(0, CFG_SPI_RTC_DEVID, 600000, +		slave = spi_setup_slave(0, CONFIG_SYS_SPI_RTC_DEVID, 600000,  				SPI_MODE_3 | SPI_CS_HIGH);  		if (!slave)  			return; @@ -406,7 +408,7 @@ void rtc_reset (void)  {  	/* Assuming Vcc = 2.0V (lowest speed) */  	if (!slave) { -		slave = spi_setup_slave(0, CFG_SPI_RTC_DEVID, 600000, +		slave = spi_setup_slave(0, CONFIG_SYS_SPI_RTC_DEVID, 600000,  				SPI_MODE_3 | SPI_CS_HIGH);  		if (!slave)  			return; diff --git a/drivers/rtc/ds1307.c b/drivers/rtc/ds1307.c index 11fc14f3f..0650d915a 100644 --- a/drivers/rtc/ds1307.c +++ b/drivers/rtc/ds1307.c @@ -47,11 +47,11 @@  #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 @@ -128,7 +128,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, @@ -144,6 +144,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;  } @@ -185,13 +187,13 @@ 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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/ds1337.c b/drivers/rtc/ds1337.c index df1132a1f..58e3966ec 100644 --- a/drivers/rtc/ds1337.c +++ b/drivers/rtc/ds1337.c @@ -132,7 +132,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)  {  	uchar century; @@ -150,6 +150,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;  } @@ -158,10 +160,10 @@ void rtc_set (struct rtc_time *tmp)   * SQW/INTB* pin and program it for 32,768 Hz output. Note that   * according to the datasheet, turning on the square wave output   * increases the current drain on the backup battery from about - * 600 nA to 2uA. Define CFG_RTC_DS1337_NOOSC if you wish to turn + * 600 nA to 2uA. Define CONFIG_SYS_RTC_DS1337_NOOSC if you wish to turn   * off the OSC output.   */ -#ifdef CFG_RTC_DS1337_NOOSC +#ifdef CONFIG_SYS_RTC_DS1337_NOOSC   #define RTC_DS1337_RESET_VAL \  	(RTC_CTL_BIT_INTCN | RTC_CTL_BIT_RS1 | RTC_CTL_BIT_RS2)  #else @@ -180,13 +182,13 @@ 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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/ds1374.c b/drivers/rtc/ds1374.c index 130588ca1..d61a2289f 100644 --- a/drivers/rtc/ds1374.c +++ b/drivers/rtc/ds1374.c @@ -48,11 +48,11 @@  #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_DS1374) && (CFG_I2C_SPEED > 400000) +#if defined(CONFIG_RTC_DS1374) && (CONFIG_SYS_I2C_SPEED > 400000)  # error The DS1374 is specified up to 400kHz in fast mode!  #endif @@ -160,7 +160,7 @@ int rtc_get (struct rtc_time *tm){  /*   * Set the RTC   */ -void rtc_set (struct rtc_time *tmp){ +int rtc_set (struct rtc_time *tmp){  	unsigned long time;  	unsigned i; @@ -186,6 +186,8 @@ void rtc_set (struct rtc_time *tmp){  	/* Start clock */  	rtc_write(RTC_CTL_ADDR, RTC_CTL_BIT_EN_OSC, FALSE); + +	return 0;  }  /* @@ -237,22 +239,22 @@ 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, boolean_t set)  {  	if (set == TRUE) { -		val |= i2c_reg_read (CFG_I2C_RTC_ADDR, reg); -		i2c_reg_write (CFG_I2C_RTC_ADDR, reg, val); +		val |= i2c_reg_read (CONFIG_SYS_I2C_RTC_ADDR, reg); +		i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  	} else { -		val = i2c_reg_read (CFG_I2C_RTC_ADDR, reg) & ~val; -		i2c_reg_write (CFG_I2C_RTC_ADDR, reg, val); +		val = i2c_reg_read (CONFIG_SYS_I2C_RTC_ADDR, reg) & ~val; +		i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  	}  }  static void rtc_write_raw (uchar reg, uchar val)  { -		i2c_reg_write (CFG_I2C_RTC_ADDR, reg, val); +		i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  #endif diff --git a/drivers/rtc/ds1556.c b/drivers/rtc/ds1556.c index f95f28ed4..763d22a03 100644 --- a/drivers/rtc/ds1556.c +++ b/drivers/rtc/ds1556.c @@ -43,7 +43,7 @@ static void  rtc_write( unsigned int addr, uchar val);  static uchar bin2bcd   (unsigned int n);  static unsigned bcd2bin(uchar c); -#define RTC_BASE		( CFG_NVRAM_SIZE + CFG_NVRAM_BASE_ADDR ) +#define RTC_BASE		( CONFIG_SYS_NVRAM_SIZE + CONFIG_SYS_NVRAM_BASE_ADDR )  #define RTC_YEAR		( RTC_BASE + 0xf )  #define RTC_MONTH		( RTC_BASE + 0xe ) @@ -120,7 +120,7 @@ int rtc_get( struct rtc_time *tmp )  	return 0;  } -void rtc_set( struct rtc_time *tmp ) +int rtc_set( struct rtc_time *tmp )  {  	uchar reg_a;  #ifdef RTC_DEBUG @@ -146,6 +146,8 @@ void rtc_set( struct rtc_time *tmp )  	/* unlock clock registers after read */  	rtc_write( RTC_CONTROLA, ( reg_a  & ~RTC_CA_WRITE )); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/ds164x.c b/drivers/rtc/ds164x.c index c621a9eb8..1e96679de 100644 --- a/drivers/rtc/ds164x.c +++ b/drivers/rtc/ds164x.c @@ -49,7 +49,7 @@ static unsigned bcd2bin(uchar c);  /*   * DS164x registers layout   */ -#define RTC_BASE		( CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE ) +#define RTC_BASE		( CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE )  #define RTC_YEAR		( RTC_BASE + 0x07 )  #define RTC_MONTH		( RTC_BASE + 0x06 ) @@ -119,7 +119,7 @@ int rtc_get( struct rtc_time *tmp )  	return 0;  } -void rtc_set( struct rtc_time *tmp ) +int rtc_set( struct rtc_time *tmp )  {  	uchar reg_a; @@ -145,6 +145,8 @@ void rtc_set( struct rtc_time *tmp )  	/* unlock clock registers after read */  	rtc_write( RTC_CONTROLA, ( reg_a  & ~RTC_CA_WRITE )); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/ds174x.c b/drivers/rtc/ds174x.c index 3f486b1b4..738d1185c 100644 --- a/drivers/rtc/ds174x.c +++ b/drivers/rtc/ds174x.c @@ -40,7 +40,7 @@ static void  rtc_write( unsigned int addr, uchar val);  static uchar bin2bcd   (unsigned int n);  static unsigned bcd2bin(uchar c); -#define RTC_BASE		( CFG_NVRAM_SIZE + CFG_NVRAM_BASE_ADDR ) +#define RTC_BASE		( CONFIG_SYS_NVRAM_SIZE + CONFIG_SYS_NVRAM_BASE_ADDR )  #define RTC_YEAR		( RTC_BASE + 7 )  #define RTC_MONTH		( RTC_BASE + 6 ) @@ -117,7 +117,7 @@ int rtc_get( struct rtc_time *tmp )  	return 0;  } -void rtc_set( struct rtc_time *tmp ) +int rtc_set( struct rtc_time *tmp )  {  	uchar reg_a;  #ifdef RTC_DEBUG @@ -143,6 +143,8 @@ void rtc_set( struct rtc_time *tmp )  	/* unlock clock registers after read */  	rtc_write( RTC_CONTROLA, ( reg_a  & ~RTC_CA_WRITE )); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/ds3231.c b/drivers/rtc/ds3231.c index d8cd47dac..ef033588a 100644 --- a/drivers/rtc/ds3231.c +++ b/drivers/rtc/ds3231.c @@ -134,7 +134,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)  {  	uchar century; @@ -152,6 +152,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;  } @@ -175,13 +177,13 @@ 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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/isl1208.c b/drivers/rtc/isl1208.c index 3d46fd065..71f63d5fa 100644 --- a/drivers/rtc/isl1208.c +++ b/drivers/rtc/isl1208.c @@ -118,7 +118,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, @@ -139,6 +139,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) @@ -151,12 +153,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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/m41t11.c b/drivers/rtc/m41t11.c index 372731005..3a77c1b63 100644 --- a/drivers/rtc/m41t11.c +++ b/drivers/rtc/m41t11.c @@ -35,15 +35,15 @@  	is what should be done.  #define CONFIG_RTC_M41T11 1 -#define CFG_I2C_RTC_ADDR 0x68 +#define CONFIG_SYS_I2C_RTC_ADDR 0x68  #if 0 -#define CFG_M41T11_EXT_CENTURY_DATA +#define CONFIG_SYS_M41T11_EXT_CENTURY_DATA  #else -#define CFG_M41T11_BASE_YEAR 2000 +#define CONFIG_SYS_M41T11_BASE_YEAR 2000  #endif  */ -#if defined(CFG_I2C_RTC_ADDR) && defined(CONFIG_CMD_DATE) +#if defined(CONFIG_SYS_I2C_RTC_ADDR) && defined(CONFIG_CMD_DATE)  static unsigned bcd2bin (uchar n)  { @@ -75,7 +75,7 @@ static unsigned char bin2bcd (unsigned int n)  #define RTC_CONTROL_ADDR   0x7 -#ifndef CFG_M41T11_EXT_CENTURY_DATA +#ifndef CONFIG_SYS_M41T11_EXT_CENTURY_DATA  #define REG_CNT            (RTC_REG_CNT+1) @@ -83,8 +83,8 @@ static unsigned char bin2bcd (unsigned int n)    you only get 00-99 for the year we will asume you    want from the year 2000 if you don't set the config  */ -#ifndef CFG_M41T11_BASE_YEAR -#define CFG_M41T11_BASE_YEAR 2000 +#ifndef CONFIG_SYS_M41T11_BASE_YEAR +#define CONFIG_SYS_M41T11_BASE_YEAR 2000  #endif  #else @@ -101,7 +101,7 @@ int rtc_get (struct rtc_time *tmp)  	int rel = 0;  	uchar data[RTC_REG_CNT]; -	i2c_read(CFG_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, data, RTC_REG_CNT); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, data, RTC_REG_CNT);  	if( data[RTC_SEC_ADDR] & 0x80 ){  		printf( "m41t11 RTC Clock stopped!!!\n" ); @@ -112,14 +112,14 @@ int rtc_get (struct rtc_time *tmp)  	tmp->tm_hour = bcd2bin (data[RTC_HOUR_ADDR] & 0x3F);  	tmp->tm_mday = bcd2bin (data[RTC_DATE_ADDR] & 0x3F);  	tmp->tm_mon  = bcd2bin (data[RTC_MONTH_ADDR]& 0x1F); -#ifndef CFG_M41T11_EXT_CENTURY_DATA -	tmp->tm_year = CFG_M41T11_BASE_YEAR +#ifndef CONFIG_SYS_M41T11_EXT_CENTURY_DATA +	tmp->tm_year = CONFIG_SYS_M41T11_BASE_YEAR  		+ bcd2bin(data[RTC_YEARS_ADDR])  		+ ((data[RTC_HOUR_ADDR]&0x40) ? 100 : 0);  #else  	{  		unsigned char cent; -		i2c_read(CFG_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE); +		i2c_read(CONFIG_SYS_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE);  		if( !(data[RTC_HOUR_ADDR] & 0x80) ){  			printf( "m41t11 RTC: cann't keep track of years without CEB set\n" );  			rel = -1; @@ -127,7 +127,7 @@ int rtc_get (struct rtc_time *tmp)  		if( (cent & 0x1) != ((data[RTC_HOUR_ADDR]&0x40)>>7) ){  			/*century flip store off new year*/  			cent += 1; -			i2c_write(CFG_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE); +			i2c_write(CONFIG_SYS_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE);  		}  		tmp->tm_year =((int)cent*100)+bcd2bin(data[RTC_YEARS_ADDR]);  	} @@ -143,7 +143,7 @@ int rtc_get (struct rtc_time *tmp)  	return rel;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	uchar data[RTC_REG_CNT]; @@ -161,34 +161,36 @@ void rtc_set (struct rtc_time *tmp)  	data[RTC_HOUR_ADDR]   |= 0x80;/*we will always use CEB*/  	data[RTC_YEARS_ADDR]  = bin2bcd(tmp->tm_year%100);/*same thing either way*/ -#ifndef CFG_M41T11_EXT_CENTURY_DATA -	if( ((tmp->tm_year - CFG_M41T11_BASE_YEAR) > 200) || -	    (tmp->tm_year < CFG_M41T11_BASE_YEAR) ){ +#ifndef CONFIG_SYS_M41T11_EXT_CENTURY_DATA +	if( ((tmp->tm_year - CONFIG_SYS_M41T11_BASE_YEAR) > 200) || +	    (tmp->tm_year < CONFIG_SYS_M41T11_BASE_YEAR) ){  		printf( "m41t11 RTC setting year out of range!!need recompile\n" );  	} -	data[RTC_HOUR_ADDR] |= (tmp->tm_year - CFG_M41T11_BASE_YEAR) > 100 ? 0x40 : 0; +	data[RTC_HOUR_ADDR] |= (tmp->tm_year - CONFIG_SYS_M41T11_BASE_YEAR) > 100 ? 0x40 : 0;  #else  	{  		unsigned char cent;  		cent = tmp->tm_year ? tmp->tm_year / 100 : 0;  		data[RTC_HOUR_ADDR] |= (cent & 0x1) ? 0x40 : 0; -		i2c_write(CFG_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE); +		i2c_write(CONFIG_SYS_I2C_RTC_ADDR, M41T11_YEAR_DATA, 1, ¢, M41T11_YEAR_SIZE);  	}  #endif -	i2c_write(CFG_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, data, RTC_REG_CNT); +	i2c_write(CONFIG_SYS_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, data, RTC_REG_CNT); + +	return 0;  }  void rtc_reset (void)  {  	unsigned char val;  	/* clear all control & status registers */ -	i2c_read(CFG_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, &val, 1); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, &val, 1);  	val = val & 0x7F;/*make sure we are running*/ -	i2c_write(CFG_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, &val, RTC_REG_CNT); +	i2c_write(CONFIG_SYS_I2C_RTC_ADDR, RTC_SEC_ADDR, 1, &val, RTC_REG_CNT); -	i2c_read(CFG_I2C_RTC_ADDR, RTC_CONTROL_ADDR, 1, &val, 1); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, RTC_CONTROL_ADDR, 1, &val, 1);  	val = val & 0x3F;/*turn off freq test keep calibration*/ -	i2c_write(CFG_I2C_RTC_ADDR, RTC_CONTROL_ADDR, 1, &val, 1); +	i2c_write(CONFIG_SYS_I2C_RTC_ADDR, RTC_CONTROL_ADDR, 1, &val, 1);  }  int rtc_store(int addr, unsigned char* data, int size) @@ -196,12 +198,12 @@ int rtc_store(int addr, unsigned char* data, int size)  	/*don't let things wrap onto the time on a write*/  	if( (addr+size) >= M41T11_STORAGE_SZ )  		return 1; -	return i2c_write( CFG_I2C_RTC_ADDR, REG_CNT+addr, 1, data, size ); +	return i2c_write( CONFIG_SYS_I2C_RTC_ADDR, REG_CNT+addr, 1, data, size );  }  int rtc_recall(int addr, unsigned char* data, int size)  { -	return i2c_read( CFG_I2C_RTC_ADDR, REG_CNT+addr, 1, data, size ); +	return i2c_read( CONFIG_SYS_I2C_RTC_ADDR, REG_CNT+addr, 1, data, size );  }  #endif diff --git a/drivers/rtc/m41t60.c b/drivers/rtc/m41t60.c index 402a8c829..e34a5f478 100644 --- a/drivers/rtc/m41t60.c +++ b/drivers/rtc/m41t60.c @@ -34,7 +34,7 @@  #include <rtc.h>  #include <i2c.h> -#if defined(CFG_I2C_RTC_ADDR) && defined(CONFIG_CMD_DATE) +#if defined(CONFIG_SYS_I2C_RTC_ADDR) && defined(CONFIG_CMD_DATE)  static unsigned bcd2bin(uchar n)  { @@ -85,7 +85,7 @@ static void rtc_dump(char const *const label)  {  	uchar data[8]; -	if (i2c_read(CFG_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { +	if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) {  		printf("I2C read failed in rtc_dump()\n");  		return;  	} @@ -114,7 +114,7 @@ static uchar *rtc_validate(void)  	uchar min, date, month, years;  	rtc_dump("begin validate"); -	if (i2c_read(CFG_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { +	if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) {  		printf("I2C read failed in rtc_validate()\n");  		return 0;  	} @@ -125,7 +125,7 @@ static uchar *rtc_validate(void)  	if (0x00 != (data[RTC_CTRL] & 0x80)) {  		printf("M41T60 RTC clock lost power.\n");  		data[RTC_SEC] = 0x80; -		if (i2c_write(CFG_I2C_RTC_ADDR, RTC_SEC, 1, data, 1)) { +		if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, RTC_SEC, 1, data, 1)) {  			printf("I2C write failed in rtc_validate()\n");  			return 0;  		} @@ -161,7 +161,7 @@ static uchar *rtc_validate(void)  		data[RTC_YEAR] = 0x00;  		data[RTC_CTRL] &= 0x7F;	/* reset OUT bit */ -		if (i2c_write(CFG_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { +		if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) {  			printf("I2C write failed in rtc_validate()\n");  			return 0;  		} @@ -193,12 +193,12 @@ int rtc_get(struct rtc_time *tmp)  	return 0;  } -void rtc_set(struct rtc_time *tmp) +int rtc_set(struct rtc_time *tmp)  {  	uchar *const data = rtc_validate();  	if (!data) -		return; +		return -1;  	debug("Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",  	      tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday, @@ -212,10 +212,12 @@ void rtc_set(struct rtc_time *tmp)  	data[RTC_YEAR] = bin2bcd(tmp->tm_year % 100);  	data[RTC_MONTH] |= year2cb(tmp->tm_year) << 6;  	data[RTC_DAY] = bin2bcd(tmp->tm_wday + 1) & 0x07; -	if (i2c_write(CFG_I2C_RTC_ADDR, 0, 1, data, RTC_REG_CNT)) { +	if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, RTC_REG_CNT)) {  		printf("I2C write failed in rtc_set()\n"); -		return; +		return -1;  	} + +	return 0;  }  void rtc_reset(void) @@ -253,10 +255,10 @@ void rtc_reset(void)  	 * Turn off frequency test.  	 */  	data[RTC_CTRL] &= 0xBF; -	if (i2c_write(CFG_I2C_RTC_ADDR, RTC_CTRL, 1, data + RTC_CTRL, 1)) { +	if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, RTC_CTRL, 1, data + RTC_CTRL, 1)) {  		printf("I2C write failed in rtc_reset()\n");  		return;  	}  	rtc_dump("end reset");  } -#endif /* CONFIG_RTC_M41T60 && CFG_I2C_RTC_ADDR && CONFIG_CMD_DATE */ +#endif /* CONFIG_RTC_M41T60 && CONFIG_SYS_I2C_RTC_ADDR && CONFIG_CMD_DATE */ diff --git a/drivers/rtc/m41t62.c b/drivers/rtc/m41t62.c index 89d4ccdb2..cfe84f926 100644 --- a/drivers/rtc/m41t62.c +++ b/drivers/rtc/m41t62.c @@ -68,7 +68,7 @@ int rtc_get(struct rtc_time *tm)  {  	u8 buf[M41T62_DATETIME_REG_SIZE]; -	i2c_read(CFG_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE);  	debug("%s: raw read data - sec=%02x, min=%02x, hr=%02x, "  	      "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n", @@ -96,7 +96,7 @@ int rtc_get(struct rtc_time *tm)  	return 0;  } -void rtc_set(struct rtc_time *tm) +int rtc_set(struct rtc_time *tm)  {  	u8 buf[M41T62_DATETIME_REG_SIZE]; @@ -104,7 +104,7 @@ void rtc_set(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); -	i2c_read(CFG_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE);  	/* Merge time-data and register flags into buf[0..7] */  	buf[M41T62_REG_SSEC] = 0; @@ -123,8 +123,12 @@ void rtc_set(struct rtc_time *tm)  	/* assume 20YY not 19YY */  	buf[M41T62_REG_YEAR] = BIN2BCD(tm->tm_year % 100); -	if (i2c_write(CFG_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE)) +	if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, buf, M41T62_DATETIME_REG_SIZE)) {  		printf("I2C write failed in %s()\n", __func__); +		return -1; +	} + +	return 0;  }  void rtc_reset(void) diff --git a/drivers/rtc/m48t35ax.c b/drivers/rtc/m48t35ax.c index 353a30e1f..1482edd60 100644 --- a/drivers/rtc/m48t35ax.c +++ b/drivers/rtc/m48t35ax.c @@ -87,7 +87,7 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	uchar ccr;			/* Clock control register */  	uchar century; @@ -116,6 +116,8 @@ void rtc_set (struct rtc_time *tmp)  	ccr = rtc_read(0);  	ccr = ccr & 0x7F;  	rtc_write(0, ccr); + +	return 0;  }  void rtc_reset (void) @@ -145,14 +147,14 @@ static uchar rtc_read (uchar reg)  {  	uchar val;  	val = *(unsigned char *) -		((CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE - 8) + reg); +		((CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE - 8) + reg);  	return val;  }  static void rtc_write (uchar reg, uchar val)  {  	*(unsigned char *) -		((CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE - 8) + reg) = val; +		((CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE - 8) + reg) = val;  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/max6900.c b/drivers/rtc/max6900.c index 4cfc5de3d..7c99c5e5b 100644 --- a/drivers/rtc/max6900.c +++ b/drivers/rtc/max6900.c @@ -34,20 +34,20 @@  #if defined(CONFIG_CMD_DATE) -#ifndef	CFG_I2C_RTC_ADDR -#define	CFG_I2C_RTC_ADDR	0x50 +#ifndef	CONFIG_SYS_I2C_RTC_ADDR +#define	CONFIG_SYS_I2C_RTC_ADDR	0x50  #endif  /* ------------------------------------------------------------------------- */  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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  	udelay(2500);  } @@ -107,7 +107,7 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	debug ( "Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n", @@ -124,6 +124,8 @@ void rtc_set (struct rtc_time *tmp)  	rtc_write (0x84, bin2bcd(tmp->tm_hour));  	rtc_write (0x82, bin2bcd(tmp->tm_min ));  	rtc_write (0x80, bin2bcd(tmp->tm_sec )); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/mc13783-rtc.c b/drivers/rtc/mc13783-rtc.c index b6e15014b..05db2f1d4 100644 --- a/drivers/rtc/mc13783-rtc.c +++ b/drivers/rtc/mc13783-rtc.c @@ -34,7 +34,8 @@ int rtc_get(struct rtc_time *rtc)  	if (!slave) {  		/* FIXME: Verify the max SCK rate */ -		slave = spi_setup_slave(1, 0, 1000000, +		slave = spi_setup_slave(CONFIG_MC13783_SPI_BUS, +				CONFIG_MC13783_SPI_CS, 1000000,  				SPI_MODE_2 | SPI_CS_HIGH);  		if (!slave)  			return -1; @@ -77,16 +78,17 @@ int rtc_get(struct rtc_time *rtc)  	return 0;  } -void rtc_set(struct rtc_time *rtc) +int rtc_set(struct rtc_time *rtc)  {  	u32 time, day, reg;  	if (!slave) {  		/* FIXME: Verify the max SCK rate */ -		slave = spi_setup_slave(1, 0, 1000000, +		slave = spi_setup_slave(CONFIG_MC13783_SPI_BUS, +				CONFIG_MC13783_SPI_CS, 1000000,  				SPI_MODE_2 | SPI_CS_HIGH);  		if (!slave) -			return; +			return -1;  	}  	time = mktime(rtc->tm_year, rtc->tm_mon, rtc->tm_mday, @@ -95,7 +97,7 @@ void rtc_set(struct rtc_time *rtc)  	time %= 86400;  	if (spi_claim_bus(slave)) -		return; +		return -1;  	reg = 0x2c000000 | day | 0x80000000;  	spi_xfer(slave, 32, (uchar *)®, (uchar *)&day, @@ -106,6 +108,8 @@ void rtc_set(struct rtc_time *rtc)  			SPI_XFER_BEGIN | SPI_XFER_END);  	spi_release_bus(slave); + +	return -1;  }  void rtc_reset(void) diff --git a/drivers/rtc/mc146818.c b/drivers/rtc/mc146818.c index 460a0e6c5..38484ce26 100644 --- a/drivers/rtc/mc146818.c +++ b/drivers/rtc/mc146818.c @@ -38,7 +38,7 @@ static void  rtc_write (uchar reg, uchar val);  static uchar bin2bcd   (unsigned int n);  static unsigned bcd2bin(uchar c); -#define RTC_PORT_MC146818	CFG_ISA_IO_BASE_ADDRESS +  0x70 +#define RTC_PORT_MC146818	CONFIG_SYS_ISA_IO_BASE_ADDRESS +  0x70  #define RTC_SECONDS		0x00  #define RTC_SECONDS_ALARM	0x01  #define RTC_MINUTES		0x02 @@ -105,7 +105,7 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  #ifdef RTC_DEBUG  	printf ( "Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n", @@ -127,6 +127,7 @@ void rtc_set (struct rtc_time *tmp)  	rtc_write (RTC_SECONDS, bin2bcd(tmp->tm_sec ));  	rtc_write(RTC_CONFIG_B,0x02); /* enables the RTC to update the regs */ +	return 0;  }  void rtc_reset (void) @@ -140,18 +141,18 @@ void rtc_reset (void)  /* ------------------------------------------------------------------------- */ -#ifdef CFG_RTC_REG_BASE_ADDR +#ifdef CONFIG_SYS_RTC_REG_BASE_ADDR  /*   * use direct memory access   */  static uchar rtc_read (uchar reg)  { -	return(in8(CFG_RTC_REG_BASE_ADDR+reg)); +	return(in8(CONFIG_SYS_RTC_REG_BASE_ADDR+reg));  }  static void rtc_write (uchar reg, uchar val)  { -	out8(CFG_RTC_REG_BASE_ADDR+reg, val); +	out8(CONFIG_SYS_RTC_REG_BASE_ADDR+reg, val);  }  #else  static uchar rtc_read (uchar reg) diff --git a/drivers/rtc/mcfrtc.c b/drivers/rtc/mcfrtc.c index 30b2a8198..979c46651 100644 --- a/drivers/rtc/mcfrtc.c +++ b/drivers/rtc/mcfrtc.c @@ -32,7 +32,7 @@  #undef RTC_DEBUG -#ifndef CFG_MCFRTC_BASE +#ifndef CONFIG_SYS_MCFRTC_BASE  #error RTC_BASE is not defined!  #endif @@ -41,7 +41,7 @@  int rtc_get(struct rtc_time *tmp)  { -	volatile rtc_t *rtc = (rtc_t *) (CFG_MCFRTC_BASE); +	volatile rtc_t *rtc = (rtc_t *) (CONFIG_SYS_MCFRTC_BASE);  	int rtc_days, rtc_hrs, rtc_mins;  	int tim; @@ -68,9 +68,9 @@ int rtc_get(struct rtc_time *tmp)  	return 0;  } -void rtc_set(struct rtc_time *tmp) +int rtc_set(struct rtc_time *tmp)  { -	volatile rtc_t *rtc = (rtc_t *) (CFG_MCFRTC_BASE); +	volatile rtc_t *rtc = (rtc_t *) (CONFIG_SYS_MCFRTC_BASE);  	static int month_days[12] = {  		31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 @@ -106,11 +106,13 @@ void rtc_set(struct rtc_time *tmp)  	rtc->days = days;  	rtc->hourmin = (tmp->tm_hour << 8) | tmp->tm_min;  	rtc->seconds = tmp->tm_sec; + +	return 0;  }  void rtc_reset(void)  { -	volatile rtc_t *rtc = (rtc_t *) (CFG_MCFRTC_BASE); +	volatile rtc_t *rtc = (rtc_t *) (CONFIG_SYS_MCFRTC_BASE);  	if ((rtc->cr & RTC_CR_EN) == 0) {  		printf("real-time-clock was stopped. Now starting...\n"); diff --git a/drivers/rtc/mk48t59.c b/drivers/rtc/mk48t59.c index 918c291a0..dabf3222b 100644 --- a/drivers/rtc/mk48t59.c +++ b/drivers/rtc/mk48t59.c @@ -185,7 +185,7 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	uchar save_ctrl_a; @@ -210,6 +210,8 @@ void rtc_set (struct rtc_time *tmp)  	save_ctrl_a &= ~RTC_CA_WRITE;  	rtc_write(RTC_CONTROLA, save_ctrl_a); /* enables the RTC to update the regs */ + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/mpc5xxx.c b/drivers/rtc/mpc5xxx.c index 145064995..ec0b0ef68 100644 --- a/drivers/rtc/mpc5xxx.c +++ b/drivers/rtc/mpc5xxx.c @@ -57,7 +57,7 @@ typedef struct rtc5200 {   *****************************************************************************/  int rtc_get (struct rtc_time *tmp)  { -	RTC5200	*rtc = (RTC5200 *) (CFG_MBAR+0x800); +	RTC5200	*rtc = (RTC5200 *) (CONFIG_SYS_MBAR+0x800);  	ulong time, date, time2;  	/* read twice to avoid getting a funny time when the second is just changing */ @@ -88,9 +88,9 @@ int rtc_get (struct rtc_time *tmp)  /*****************************************************************************   * set time   *****************************************************************************/ -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  { -	RTC5200	*rtc = (RTC5200 *) (CFG_MBAR+0x800); +	RTC5200	*rtc = (RTC5200 *) (CONFIG_SYS_MBAR+0x800);  	ulong time, date, year;  	debug ( "Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n", @@ -129,6 +129,8 @@ void rtc_set (struct rtc_time *tmp)  	udelay (1000);  	rtc->tsr = time;  	udelay (1000); + +	return 0;  }  /***************************************************************************** diff --git a/drivers/rtc/mpc8xx.c b/drivers/rtc/mpc8xx.c index 943506975..1c24e59e4 100644 --- a/drivers/rtc/mpc8xx.c +++ b/drivers/rtc/mpc8xx.c @@ -37,7 +37,7 @@  int rtc_get (struct rtc_time *tmp)  { -	volatile immap_t *immr = (immap_t *)CFG_IMMR; +	volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;  	ulong tim;  	tim = immr->im_sit.sit_rtc; @@ -51,9 +51,9 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  { -	volatile immap_t *immr = (immap_t *)CFG_IMMR; +	volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;  	ulong tim;  	debug ( "Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n", @@ -65,6 +65,8 @@ void rtc_set (struct rtc_time *tmp)  	immr->im_sitk.sitk_rtck = KAPWR_KEY;  	immr->im_sit.sit_rtc = tim; + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/pcf8563.c b/drivers/rtc/pcf8563.c index 1274ffaf0..cd9fb65c3 100644 --- a/drivers/rtc/pcf8563.c +++ b/drivers/rtc/pcf8563.c @@ -86,7 +86,7 @@ int rtc_get (struct rtc_time *tmp)  	return rel;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	uchar century; @@ -104,6 +104,8 @@ void rtc_set (struct rtc_time *tmp)  	rtc_write (0x04, bin2bcd(tmp->tm_hour));  	rtc_write (0x03, bin2bcd(tmp->tm_min ));  	rtc_write (0x02, bin2bcd(tmp->tm_sec )); + +	return 0;  }  void rtc_reset (void) @@ -127,12 +129,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); +	i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, reg, val);  }  static unsigned bcd2bin (uchar n) diff --git a/drivers/rtc/pl031.c b/drivers/rtc/pl031.c index 276c18421..8b2b174ae 100755..100644 --- a/drivers/rtc/pl031.c +++ b/drivers/rtc/pl031.c @@ -29,8 +29,8 @@  #if defined(CONFIG_CMD_DATE) -#ifndef CFG_RTC_PL031_BASE -#error CFG_RTC_PL031_BASE is not defined! +#ifndef CONFIG_SYS_RTC_PL031_BASE +#error CONFIG_SYS_RTC_PL031_BASE is not defined!  #endif  /* @@ -48,9 +48,9 @@  #define RTC_CR_START	(1 << 0)  #define	RTC_WRITE_REG(addr, val) \ -			(*(volatile unsigned int *)(CFG_RTC_PL031_BASE + (addr)) = (val)) +			(*(volatile unsigned int *)(CONFIG_SYS_RTC_PL031_BASE + (addr)) = (val))  #define	RTC_READ_REG(addr)	\ -			(*(volatile unsigned int *)(CFG_RTC_PL031_BASE + (addr))) +			(*(volatile unsigned int *)(CONFIG_SYS_RTC_PL031_BASE + (addr)))  static int pl031_initted = 0; @@ -75,7 +75,7 @@ void rtc_reset(void)  /*   * Set the RTC  */ -void rtc_set(struct rtc_time *tmp) +int rtc_set(struct rtc_time *tmp)  {  	unsigned long tim; @@ -84,7 +84,7 @@ void rtc_set(struct rtc_time *tmp)  	if (tmp == NULL) {  		puts("Error setting the date/time\n"); -		return; +		return -1;  	}  	/* Calculate number of seconds this incoming time represents */ @@ -92,6 +92,8 @@ void rtc_set(struct rtc_time *tmp)  	                tmp->tm_hour, tmp->tm_min, tmp->tm_sec);  	RTC_WRITE_REG(RTC_LR, tim); + +	return -1;  }  /* diff --git a/drivers/rtc/rs5c372.c b/drivers/rtc/rs5c372.c index 38db19929..d6cd7c825 100644 --- a/drivers/rtc/rs5c372.c +++ b/drivers/rtc/rs5c372.c @@ -50,8 +50,8 @@ static unsigned int rtc_debug = DEBUG;  #define rtc_debug 0	/* gcc will remove all the debug code for us */  #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  #define RS5C372_RAM_SIZE 0x10 @@ -77,7 +77,7 @@ rs5c372_readram(unsigned char *buf, int len)  {  	int ret; -	ret = i2c_read(CFG_I2C_RTC_ADDR, 0, 0, buf, len); +	ret = i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, len);  	if (ret != 0) {  		printf("%s: failed to read\n", __FUNCTION__);  		return ret; @@ -117,7 +117,7 @@ rs5c372_enable(void)  	buf[14] = 0; /* reg. 13 */  	buf[15] = 0; /* reg. 14 */  	buf[16] = USE_24HOUR_MODE; /* reg. 15 */ -	ret = i2c_write(CFG_I2C_RTC_ADDR, 0, 0, buf, RS5C372_RAM_SIZE+1); +	ret = i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, RS5C372_RAM_SIZE+1);  	if (ret != 0) {  		printf("%s: failed\n", __FUNCTION__);  		return; @@ -195,8 +195,7 @@ rtc_get (struct rtc_time *tmp)  /*   * Set the RTC   */ -void -rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	unsigned char buf[8], reg15;  	int ret; @@ -205,7 +204,7 @@ rtc_set (struct rtc_time *tmp)  		rs5c372_enable();  	if (!setup_done) -		return; +		return -1;  	if(rtc_debug > 2) {  		printf("rtc_set: tm_year = %d\n", tmp->tm_year); @@ -219,7 +218,7 @@ rtc_set (struct rtc_time *tmp)  	memset(buf, 0, sizeof(buf));  	/* only read register 15 */ -	ret = i2c_read(CFG_I2C_RTC_ADDR, 0, 0, buf, 1); +	ret = i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, 1);  	if (ret == 0) {  		/* need to save register 15 */ @@ -248,12 +247,16 @@ rtc_set (struct rtc_time *tmp)  			printf("WARNING: year should be between 1970 and 2069!\n");  		buf[7] = bin2bcd(tmp->tm_year % 100); -		ret = i2c_write(CFG_I2C_RTC_ADDR, 0, 0, buf, 8); -		if (ret != 0) +		ret = i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 0, buf, 8); +		if (ret != 0) {  			printf("rs5c372_set_datetime(), i2c_master_send() returned %d\n",ret); +			return -1; +		} +	} else { +		return -1;  	} -	return; +	return 0;  }  /* 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");  } diff --git a/drivers/rtc/s3c24x0_rtc.c b/drivers/rtc/s3c24x0_rtc.c index 13d077b64..0d3372fac 100644 --- a/drivers/rtc/s3c24x0_rtc.c +++ b/drivers/rtc/s3c24x0_rtc.c @@ -135,7 +135,7 @@ int rtc_get (struct rtc_time *tmp)  	return 0;  } -void rtc_set (struct rtc_time *tmp) +int rtc_set (struct rtc_time *tmp)  {  	S3C24X0_RTC * const rtc = S3C24X0_GetBase_RTC();  	uchar sec, min, hour, mday, wday, mon, year; @@ -167,6 +167,8 @@ void rtc_set (struct rtc_time *tmp)  	/* disable access to RTC registers */  	SetRTC_Access(RTC_DISABLE); + +	return 0;  }  void rtc_reset (void) diff --git a/drivers/rtc/x1205.c b/drivers/rtc/x1205.c index 7025cf463..56115b032 100644 --- a/drivers/rtc/x1205.c +++ b/drivers/rtc/x1205.c @@ -96,7 +96,7 @@  static void rtc_write(int reg, u8 val)  { -	i2c_write(CFG_I2C_RTC_ADDR, reg, 2, &val, 1); +	i2c_write(CONFIG_SYS_I2C_RTC_ADDR, reg, 2, &val, 1);  }  /* @@ -108,7 +108,7 @@ int rtc_get(struct rtc_time *tm)  {  	u8 buf[8]; -	i2c_read(CFG_I2C_RTC_ADDR, X1205_CCR_BASE, 2, buf, 8); +	i2c_read(CONFIG_SYS_I2C_RTC_ADDR, X1205_CCR_BASE, 2, buf, 8);  	debug("%s: raw read data - sec=%02x, min=%02x, hr=%02x, "  	      "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n", @@ -134,7 +134,7 @@ int rtc_get(struct rtc_time *tm)  	return 0;  } -void rtc_set(struct rtc_time *tm) +int rtc_set(struct rtc_time *tm)  {  	int i;  	u8 buf[8]; @@ -168,6 +168,8 @@ void rtc_set(struct rtc_time *tm)  		rtc_write(X1205_CCR_BASE + i, buf[i]);  	rtc_write(X1205_REG_SR, 0); + +	return 0;  }  void rtc_reset(void) |