From f3e85eedc434da973267f360abdbb79cb6f24100 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 1 Jul 2021 21:13:01 +0200 Subject: Timing is everything --- kernel/drivers/pit.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 kernel/drivers/pit.c (limited to 'kernel/drivers/pit.c') diff --git a/kernel/drivers/pit.c b/kernel/drivers/pit.c new file mode 100644 index 0000000..abba5e8 --- /dev/null +++ b/kernel/drivers/pit.c @@ -0,0 +1,20 @@ +// MIT License, Copyright (c) 2021 Marvin Borner + +#include +#include +#include +#include + +CLEAR static void pit_phase(u32 hz) +{ + u32 divisor = 3579545 / 3 / hz; + outb(0x43, 0x36); // 01 10 11 0b // CTR, RW, MODE, BCD + outb(0x40, (u8)(divisor & 0xFF)); + outb(0x40, (u8)(divisor >> 8)); +} + +CLEAR void pit_install(void) +{ + pit_phase(1000); + timer_install_handler(); +} -- cgit v1.2.3