diff options
| author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-12-17 16:53:07 +0100 | 
|---|---|---|
| committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-12-17 16:53:07 +0100 | 
| commit | cb5473205206c7f14cbb1e747f28ec75b48826e2 (patch) | |
| tree | 8f4808d60917100b18a10b05230f7638a0a9bbcc /drivers/rtc/bfin_rtc.c | |
| parent | baf449fc5ff96f071bb0e3789fd3265f6d4fd9a0 (diff) | |
| parent | 92c78a3bbcb2ce508b4bf1c4a1e0940406a024bb (diff) | |
| download | olio-uboot-2014.01-cb5473205206c7f14cbb1e747f28ec75b48826e2.tar.xz olio-uboot-2014.01-cb5473205206c7f14cbb1e747f28ec75b48826e2.zip | |
Merge branch 'fixes' into cleanups
Conflicts:
	board/atmel/atngw100/atngw100.c
	board/atmel/atstk1000/atstk1000.c
	cpu/at32ap/at32ap700x/gpio.c
	include/asm-avr32/arch-at32ap700x/clk.h
	include/configs/atngw100.h
	include/configs/atstk1002.h
	include/configs/atstk1003.h
	include/configs/atstk1004.h
	include/configs/atstk1006.h
	include/configs/favr-32-ezkit.h
	include/configs/hammerhead.h
	include/configs/mimc200.h
Diffstat (limited to 'drivers/rtc/bfin_rtc.c')
| -rw-r--r-- | drivers/rtc/bfin_rtc.c | 25 | 
1 files changed, 14 insertions, 11 deletions
| 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 */ |