X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclock.c;fp=src%2Fclock.c;h=d88515c45c482153144365c90b099c465b5076e8;hb=b29200c51beb1e75e7f844a4093da05b8394ad5e;hp=e8a48a13c1733bdd20b3f176dc829eeaabc1a6df;hpb=091dd17e8dc2ca242ae6839a6699dbc0ed52a3ed;p=seabios.git diff --git a/src/clock.c b/src/clock.c index e8a48a1..d88515c 100644 --- a/src/clock.c +++ b/src/clock.c @@ -81,6 +81,7 @@ calibrate_tsc(void) } // Setup "timer2" +#if 0 u8 orig = inb(PORT_PS2_CTRLB); outb((orig & ~PPCB_SPKR) | PPCB_T2GATE, PORT_PS2_CTRLB); /* binary, mode 0, LSB/MSB, Ch 2 */ @@ -104,6 +105,10 @@ calibrate_tsc(void) , (u32)start, (u32)end, (u32)diff); u32 hz = diff * PIT_TICK_RATE / CALIBRATE_COUNT; SET_GLOBAL(cpu_khz, hz / 1000); +#else + u32 hz = 800 * 1000000; + SET_GLOBAL(cpu_khz, hz / 1000); +#endif dprintf(1, "CPU Mhz=%u\n", hz / 1000000); } @@ -252,20 +257,34 @@ void timer_setup(void) { dprintf(3, "init timer\n"); +#if 1 calibrate_tsc(); +#endif + dprintf(3, "init timer: 01\n"); pit_setup(); + dprintf(3, "init timer: 02\n"); init_rtc(); + dprintf(3, "init timer: 03\n"); rtc_updating(); + dprintf(3, "init timer: 04\n"); u32 seconds = bcd2bin(inb_cmos(CMOS_RTC_SECONDS)); + dprintf(3, "init timer: 05\n"); u32 minutes = bcd2bin(inb_cmos(CMOS_RTC_MINUTES)); + dprintf(3, "init timer: 06\n"); u32 hours = bcd2bin(inb_cmos(CMOS_RTC_HOURS)); + dprintf(3, "init timer: 07\n"); u32 ticks = (hours * 60 + minutes) * 60 + seconds; + dprintf(3, "init timer: 08\n"); ticks = ((u64)ticks * PIT_TICK_RATE) / PIT_TICK_INTERVAL; + dprintf(3, "init timer: 09\n"); SET_BDA(timer_counter, ticks); + dprintf(3, "init timer: 10\n"); enable_hwirq(0, FUNC16(entry_08)); + dprintf(3, "init timer: 11\n"); enable_hwirq(8, FUNC16(entry_70)); + dprintf(3, "init timer: 12\n"); }