/** * ========================================================================= * File : acpi.h * Project : 0 A.D. * Description : minimal subset of ACPI * ========================================================================= */ // license: GPL; see lib/license.txt #ifndef INCLUDED_ACPI #define INCLUDED_ACPI #pragma pack(push, 1) // common header for all ACPI tables struct AcpiTable { char signature[4]; u32 size; // table size [bytes], including header u8 revision; u8 checksum; // to make sum of entire table == 0 char oemId[6]; char oemTableId[8]; u32 oemRevision; char creatorId[4]; u32 creatorRevision; }; enum AcpiAddressSpace { // (these are not generally powers-of-two - some values have been omitted.) ACPI_AS_MEMORY = 0, ACPI_AS_IO = 1, ACPI_AS_PCI_CONFIG = 2, ACPI_AS_SMBUS = 4, }; // address of a struct or register struct AcpiGenericAddress { u8 addressSpaceId; u8 registerBitWidth; u8 registerBitOffset; u8 accessSize; u64 address; }; #pragma pack(pop) extern bool acpi_Init(); extern void acpi_Shutdown(); extern const AcpiTable* acpi_GetTable(const char* signature); #endif // #ifndef INCLUDED_ACPI