summaryrefslogtreecommitdiffstats
path: root/sys/isa/atrtc.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-02-03 19:06:03 +0000
committerjhb <jhb@FreeBSD.org>2005-02-03 19:06:03 +0000
commit5daaea8f220befa71deab75f7a9a650afde34bd6 (patch)
tree74525ec3aa6ba8e3dec6659d9fdb5236cd6b1486 /sys/isa/atrtc.c
parenta1edfec034f2234b245ae11324271d376a93396e (diff)
downloadFreeBSD-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/atrtc.c')
-rw-r--r--sys/isa/atrtc.c3
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();
OpenPOWER on IntegriCloud