aboutsummaryrefslogtreecommitdiff
path: root/i386/i386at/acpi_parse_apic.h
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2024-02-07 05:02:15 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-02-08 00:27:18 +0100
commitcaa07fdb903c6d533ce6dad1a66907d862e162ad (patch)
tree923709e5ea823d461f3a53433f0cdd21c9cabf9f /i386/i386at/acpi_parse_apic.h
parent69477710c88420603f32e84511d9adc2923d0503 (diff)
downloadgnumach-caa07fdb903c6d533ce6dad1a66907d862e162ad.tar.gz
gnumach-caa07fdb903c6d533ce6dad1a66907d862e162ad.tar.bz2
gnumach-caa07fdb903c6d533ce6dad1a66907d862e162ad.zip
Add HPET timer for small accurate delays
TESTED: This works in qemu correctly TESTED: This works on an AMD board with ACPI v2.0 correctly Message-ID: <20240207050158.1640853-3-damien@zamaudio.com>
Diffstat (limited to 'i386/i386at/acpi_parse_apic.h')
-rw-r--r--i386/i386at/acpi_parse_apic.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/i386/i386at/acpi_parse_apic.h b/i386/i386at/acpi_parse_apic.h
index df36bb31..85e01170 100644
--- a/i386/i386at/acpi_parse_apic.h
+++ b/i386/i386at/acpi_parse_apic.h
@@ -91,6 +91,14 @@ struct acpi_xsdt {
uint64_t entry[0];
} __attribute__((__packed__));
+struct acpi_address {
+ uint8_t is_io;
+ uint8_t reg_width;
+ uint8_t reg_offset;
+ uint8_t reserved;
+ uint64_t addr64;
+} __attribute__((__packed__));
+
/* APIC table signature. */
#define ACPI_APIC_SIG "APIC"
@@ -170,6 +178,21 @@ struct acpi_apic_irq_override {
uint16_t flags;
} __attribute__((__packed__));
+
+#define ACPI_HPET_SIG "HPET"
+
+/*
+ * HPET High Precision Event Timer structure
+ */
+struct acpi_hpet {
+ struct acpi_dhdr header;
+ uint32_t id;
+ struct acpi_address address;
+ uint8_t sequence;
+ uint16_t minimum_tick;
+ uint8_t flags;
+} __attribute__((__packed__));
+
int acpi_apic_init(void);
void acpi_print_info(phys_addr_t rsdp, void *rsdt, int acpi_rsdt_n);