Commit 356a9ce118879664ff88b76055b8bba115c1cc5e
Committed by
Linus Torvalds
1 parent
04cfbee0fc
Exists in
master
and in
4 other branches
[PATCH] RTC: Remove RTC UIP synchronization on SH MPC1211
Signed-off-by: Matt Mackall <mpm@selenic.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Kazumoto Kojima <kkojima@rr.iij4u.or.jp> Cc: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 1 changed file with 3 additions and 15 deletions Side-by-side Diff
arch/sh/boards/mpc1211/rtc.c
| ... | ... | @@ -19,26 +19,13 @@ |
| 19 | 19 | #define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10) |
| 20 | 20 | #endif |
| 21 | 21 | |
| 22 | -/* arc/i386/kernel/time.c */ | |
| 23 | 22 | unsigned long get_cmos_time(void) |
| 24 | 23 | { |
| 25 | 24 | unsigned int year, mon, day, hour, min, sec; |
| 26 | - int i; | |
| 27 | 25 | |
| 28 | 26 | spin_lock(&rtc_lock); |
| 29 | - /* The Linux interpretation of the CMOS clock register contents: | |
| 30 | - * When the Update-In-Progress (UIP) flag goes from 1 to 0, the | |
| 31 | - * RTC registers show the second which has precisely just started. | |
| 32 | - * Let's hope other operating systems interpret the RTC the same way. | |
| 33 | - */ | |
| 34 | - /* read RTC exactly on falling edge of update flag */ | |
| 35 | - for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */ | |
| 36 | - if (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP) | |
| 37 | - break; | |
| 38 | - for (i = 0 ; i < 1000000 ; i++) /* must try at least 2.228 ms */ | |
| 39 | - if (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP)) | |
| 40 | - break; | |
| 41 | - do { /* Isn't this overkill ? UIP above should guarantee consistency */ | |
| 27 | + | |
| 28 | + do { | |
| 42 | 29 | sec = CMOS_READ(RTC_SECONDS); |
| 43 | 30 | min = CMOS_READ(RTC_MINUTES); |
| 44 | 31 | hour = CMOS_READ(RTC_HOURS); |
| ... | ... | @@ -46,6 +33,7 @@ |
| 46 | 33 | mon = CMOS_READ(RTC_MONTH); |
| 47 | 34 | year = CMOS_READ(RTC_YEAR); |
| 48 | 35 | } while (sec != CMOS_READ(RTC_SECONDS)); |
| 36 | + | |
| 49 | 37 | if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) |
| 50 | 38 | { |
| 51 | 39 | BCD_TO_BIN(sec); |