summaryrefslogtreecommitdiff
path: root/drivers/rtc
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-02-15 05:47:36 +0100
committerIngo Molnar <mingo@elte.hu>2011-02-15 05:47:36 +0100
commitccd982932ffde2a920383299b5df164a79a67faa (patch)
treefe84be5df4f53e6c8048597f96c9bd8c533e3941 /drivers/rtc
parentba085fe1a018ac816a49794533b403c8663609d6 (diff)
parent168202c7bf89d7a2abaf8deaf4bbed18a1f7b3a3 (diff)
Merge branch 'x86/platform' into auto-latest
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-mrst.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/rtc/rtc-mrst.c b/drivers/rtc/rtc-mrst.c
index bcd0cf63eb16..28e02e7580f4 100644
--- a/drivers/rtc/rtc-mrst.c
+++ b/drivers/rtc/rtc-mrst.c
@@ -62,6 +62,17 @@ static inline int is_intr(u8 rtc_intr)
return rtc_intr & RTC_IRQMASK;
}
+static inline unsigned char vrtc_is_updating(void)
+{
+ unsigned char uip;
+ unsigned long flags;
+
+ spin_lock_irqsave(&rtc_lock, flags);
+ uip = (vrtc_cmos_read(RTC_FREQ_SELECT) & RTC_UIP);
+ spin_unlock_irqrestore(&rtc_lock, flags);
+ return uip;
+}
+
/*
* rtc_time's year contains the increment over 1900, but vRTC's YEAR
* register can't be programmed to value larger than 0x64, so vRTC
@@ -76,7 +87,7 @@ static int mrst_read_time(struct device *dev, struct rtc_time *time)
{
unsigned long flags;
- if (rtc_is_updating())
+ if (vrtc_is_updating())
mdelay(20);
spin_lock_irqsave(&rtc_lock, flags);