diff options
author | Damien Zammit <damien@zamaudio.com> | 2024-02-07 05:02:15 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2024-02-08 00:27:18 +0100 |
commit | caa07fdb903c6d533ce6dad1a66907d862e162ad (patch) | |
tree | 923709e5ea823d461f3a53433f0cdd21c9cabf9f /i386/i386at/acpi_parse_apic.h | |
parent | 69477710c88420603f32e84511d9adc2923d0503 (diff) | |
download | gnumach-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.h | 23 |
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); |