hpet: make init return uspertick and add a gettick function

This commit is contained in:
Matheus
2023-04-22 21:26:31 -03:00
parent a3969eea54
commit e8c2feb8db
2 changed files with 8 additions and 2 deletions
+6 -1
View File
@@ -23,6 +23,10 @@ static void write64(int reg, uint64_t v) {
hpet[reg] = v;
}
time_t arch_hpet_ticks() {
return read64(HPET_REG_COUNTER);
}
void arch_hpet_waitticks(time_t ticks) {
uint64_t target = read64(HPET_REG_COUNTER) + ticks;
while (target > read64(HPET_REG_COUNTER)) asm volatile("pause");
@@ -36,7 +40,7 @@ bool arch_hpet_exists() {
return arch_acpi_findtable("HPET", 0) != NULL;
}
void arch_hpet_init() {
time_t arch_hpet_init() {
__assert(arch_hpet_exists());
hpet_t *table = arch_acpi_findtable("HPET", 0);
printf("hpet%lu: %lu bits %lu comparators\n", table->hpetnum, 32 + table->countersize * 32, table->comparatorcount);
@@ -52,4 +56,5 @@ void arch_hpet_init() {
write64(HPET_REG_CONFIG, 0);
write64(HPET_REG_COUNTER, 0);
write64(HPET_REG_CONFIG, 1);
return ticksperus;
}
+2 -1
View File
@@ -4,9 +4,10 @@
#include <stdbool.h>
#include <time.h>
time_t arch_hpet_ticks();
void arch_hpet_waitticks(time_t ticks);
void arch_hpet_waitus(time_t us);
bool arch_hpet_exists();
void arch_hpet_init();
time_t arch_hpet_init();
#endif