From 1c7145dc2ec75c6daaf971dcdf00b09f7a827f00 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Fri, 5 Aug 2016 21:14:15 +0200 Subject: [PATCH] Defer HPET loading to after ACPI --- kernel/include/drivers/hpet.hpp | 1 + kernel/src/acpi.cpp | 7 +++++++ kernel/src/drivers/hpet.cpp | 10 +++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/kernel/include/drivers/hpet.hpp b/kernel/include/drivers/hpet.hpp index cb525383..42a24075 100644 --- a/kernel/include/drivers/hpet.hpp +++ b/kernel/include/drivers/hpet.hpp @@ -11,6 +11,7 @@ namespace hpet { bool install(); +void late_install(); } //end of namespace hpet diff --git a/kernel/src/acpi.cpp b/kernel/src/acpi.cpp index 77d56b35..10a4d129 100644 --- a/kernel/src/acpi.cpp +++ b/kernel/src/acpi.cpp @@ -16,6 +16,8 @@ #include "arch.hpp" #include "assert.hpp" +#include "drivers/hpet.hpp" + namespace { // This is copied from acexcep.h @@ -104,6 +106,11 @@ void initialize_acpica(){ acpi_initialized = true; logging::logf(logging::log_level::DEBUG, "acpi:: Finished initialization of ACPICA\n"); + + // Here we initialize the drivers that need ACPI + // TODO This is not good coupling: Find a better solution + + hpet::late_install(); } uint64_t acpi_read(const ACPI_GENERIC_ADDRESS& address){ diff --git a/kernel/src/drivers/hpet.cpp b/kernel/src/drivers/hpet.cpp index 5b73d640..bfb5d6cf 100644 --- a/kernel/src/drivers/hpet.cpp +++ b/kernel/src/drivers/hpet.cpp @@ -25,5 +25,13 @@ bool hpet::install(){ logging::logf(logging::log_level::TRACE, "hpet: Found ACPI HPET table\n"); - return false; + return true; +} + +void hpet::late_install(){ + if(hpet::install()){ + logging::logf(logging::log_level::TRACE, "hpet: Late install suceeded\n"); + + //TODO Register the timer to the timer system + } }