blob: fd4208415fe36468addba4296fccb39bd5c8f0b0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <comus/asm.h>
#include <comus/drivers/pit.h>
#define CHAN_0 0x40
#define CHAN_1 0x41
#define CHAN_2 0x42
#define CMD 0x43
uint64_t ticks = 0;
uint16_t pit_read_divider(void)
{
uint16_t count = 0;
cli();
outb(CMD, 0); // clear bits
count = inb(CHAN_0); // low byte
count |= inb(CHAN_0) << 8; // highbyte
return count;
}
void pit_set_divider(uint16_t count)
{
outb(CHAN_0, count & 0xFF); // low byte
outb(CHAN_0, (count & 0xFF00) >> 8); // high byte
}
|