X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/287a5f7ae6a3bec3d679a5de394e915b56c7367d..b91be0033265b5b6bd716bd39cb0971da41906c4:/lunaix-os/includes/hal/acpi/acpi.h diff --git a/lunaix-os/includes/hal/acpi/acpi.h b/lunaix-os/includes/hal/acpi/acpi.h index 326a8d0..f5ef523 100644 --- a/lunaix-os/includes/hal/acpi/acpi.h +++ b/lunaix-os/includes/hal/acpi/acpi.h @@ -1,41 +1,53 @@ #ifndef __LUNAIX_ACPI_ACPI_H #define __LUNAIX_ACPI_ACPI_H -#include +#include #include -#include +#include -#include "sdt.h" +#include "fadt.h" #include "madt.h" +#include "mcfg.h" +#include "sdt.h" + +// * for quick conversion from a table name into ACPI favoured signature +// * use `echo | xxd -eg4` -#define ACPI_RSDP_SIG_L 0x20445352 // 'RSD ' -#define ACPI_RSDP_SIG_H 0x20525450 // 'PTR ' +#define ACPI_RSDP_SIG_L 0x20445352 // 'RSD ' +#define ACPI_RSDP_SIG_H 0x20525450 // 'PTR ' -#define ACPI_MADT_SIG 0x43495041 // 'APIC' +#define ACPI_MADT_SIG 0x43495041 // 'APIC' +#define ACPI_FADT_SIG 0x50434146 // 'FACP' Notice that it is not 'FADT'. -typedef struct { - uint32_t signature_l; - uint32_t signature_h; - uint8_t chksum; +// 'MCFG' (Not part of ACPI standard. See PCI Firmware Spec.) +#define ACPI_MCFG_SIG 0x4746434d + +typedef struct +{ + u32_t signature_l; + u32_t signature_h; + u8_t chksum; char oem_id[6]; // Revision - uint8_t rev; + u8_t rev; acpi_rsdt_t* rsdt; - uint32_t length; + u32_t length; acpi_sdthdr_t* xsdt; - uint8_t x_chksum; - char reserved[3]; // Reserved field + u8_t x_chksum; + char reserved[3]; // Reserved field } __attribute__((packed)) acpi_rsdp_t; /** * @brief Main TOC of ACPI tables, provide hassle-free access of ACPI info. - * + * */ typedef struct { // Make it as null terminated char oem_id[7]; acpi_madt_toc_t madt; + acpi_fadt_t fadt; + struct acpi_mcfg_toc mcfg; } acpi_context; int @@ -44,4 +56,7 @@ acpi_init(multiboot_info_t* mb_info); acpi_context* acpi_get_context(); +u8_t +acpi_gistranslate(u8_t old_irq); + #endif /* __LUNAIX_ACPI_ACPI_H */