|
@@ -25,6 +25,7 @@
|
|
|
#include <asm/geode.h>
|
|
|
#include <asm/apic.h>
|
|
|
#include <asm/intel-family.h>
|
|
|
+#include <asm/i8259.h>
|
|
|
|
|
|
unsigned int __read_mostly cpu_khz; /* TSC clocks / usec, not used here */
|
|
|
EXPORT_SYMBOL(cpu_khz);
|
|
@@ -363,6 +364,20 @@ static unsigned long pit_calibrate_tsc(u32 latch, unsigned long ms, int loopmin)
|
|
|
unsigned long tscmin, tscmax;
|
|
|
int pitcnt;
|
|
|
|
|
|
+ if (!has_legacy_pic()) {
|
|
|
+ /*
|
|
|
+ * Relies on tsc_early_delay_calibrate() to have given us semi
|
|
|
+ * usable udelay(), wait for the same 50ms we would have with
|
|
|
+ * the PIT loop below.
|
|
|
+ */
|
|
|
+ udelay(10 * USEC_PER_MSEC);
|
|
|
+ udelay(10 * USEC_PER_MSEC);
|
|
|
+ udelay(10 * USEC_PER_MSEC);
|
|
|
+ udelay(10 * USEC_PER_MSEC);
|
|
|
+ udelay(10 * USEC_PER_MSEC);
|
|
|
+ return ULONG_MAX;
|
|
|
+ }
|
|
|
+
|
|
|
/* Set the Gate high, disable speaker */
|
|
|
outb((inb(0x61) & ~0x02) | 0x01, 0x61);
|
|
|
|
|
@@ -487,6 +502,9 @@ static unsigned long quick_pit_calibrate(void)
|
|
|
u64 tsc, delta;
|
|
|
unsigned long d1, d2;
|
|
|
|
|
|
+ if (!has_legacy_pic())
|
|
|
+ return 0;
|
|
|
+
|
|
|
/* Set the Gate high, disable speaker */
|
|
|
outb((inb(0x61) & ~0x02) | 0x01, 0x61);
|
|
|
|