33 #include "drivers/legacy_pc/pic.h"
34 #include "drivers/legacy_pc/pit.h"
36 #include "interrupt.h"
39 #define PIT_CONTROL_PORT 0x43
40 #define PIT_COUNTER0_PORT 0x40
41 #define PIT_CLOCK_FREQUENCY 1193182
43 #define PIT_INT PIC_INT(PIT_IRQ)
45 static pit_int_callback interrupt_cb;
56 pit_init(uint32_t ticks_rate, pit_int_callback cb)
58 SET_INTERRUPT_HANDLER(PIT_INT, 0, pit_int_handler);
68 uint16_t divisor = rint(PIT_CLOCK_FREQUENCY / ticks_rate);
74 outb(PIT_CONTROL_PORT, flags);
76 outb(PIT_COUNTER0_PORT, divisor & 0xFF);
77 outb(PIT_COUNTER0_PORT, (divisor >> 8) & 0xFF);
79 pic_unmask_irq(PIT_IRQ);