diff options
author | jhb <jhb@FreeBSD.org> | 2005-02-03 19:06:03 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-02-03 19:06:03 +0000 |
commit | 5daaea8f220befa71deab75f7a9a650afde34bd6 (patch) | |
tree | 74525ec3aa6ba8e3dec6659d9fdb5236cd6b1486 /sys/isa | |
parent | a1edfec034f2234b245ae11324271d376a93396e (diff) | |
download | FreeBSD-src-5daaea8f220befa71deab75f7a9a650afde34bd6.zip FreeBSD-src-5daaea8f220befa71deab75f7a9a650afde34bd6.tar.gz |
Anytime we write to the RTC's status B register to possibly enable
interrupts, read from the interrupt status register to clear any pending
interrupts. Otherwise in some rare cases the RTC would never fire any
interrupts as it constantly thinks it has an interrupt pending.
PR: i386/17800
PR: kern/76776
Submitted by: Jose M. Alcaide jose at we dot lc dot ehu dot es
MFC after: 2 weeks
Diffstat (limited to 'sys/isa')
-rw-r--r-- | sys/isa/atrtc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/isa/atrtc.c b/sys/isa/atrtc.c index 1c82ffa..20763b2 100644 --- a/sys/isa/atrtc.c +++ b/sys/isa/atrtc.c @@ -712,6 +712,7 @@ rtc_restore(void) writertc(RTC_STATUSB, RTCSB_24HR); writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, rtc_statusb); + rtcin(RTC_INTR); } /* @@ -911,6 +912,7 @@ resettodr() /* Reenable RTC updates and interrupts. */ writertc(RTC_STATUSB, rtc_statusb); + rtcin(RTC_INTR); } @@ -957,6 +959,7 @@ cpu_initclocks() INTR_TYPE_CLK | INTR_FAST, NULL); writertc(RTC_STATUSB, rtc_statusb); + rtcin(RTC_INTR); } init_TSC_tc(); |