Commit 356a9ce118879664ff88b76055b8bba115c1cc5e

Authored by Matt Mackall
Committed by Linus Torvalds
1 parent 04cfbee0fc

[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);