#ifndef __LUNAIX_FADT_H #define __LUNAIX_FADT_H #include "sdt.h" // Pulled from ACPI Specification (v6.4) section 5.2.9 enum PMProfile { Desktop = 1, Mobile = 2, Workstation = 3, EnterpriseServer = 4, SOHOServer = 5, AppliancePC = 6, PerformanceServer = 7, Tablet = 8, }; #define IPM1AEVT_BLK_PORT 0 #define IPM1BEVT_BLK_PORT 1 #define IPM1ACNT_BLK_PORT 2 #define IPM1BCNT_BLK_PORT 3 #define IPM2CNT_BLK_PORT 4 #define IPMTMR_BLK_PORT 5 #define IPM1EVT_BLK_LEN 0 #define IPM1CNT_BLK_LEN 1 #define IPM2CNT_BLK_LEN 2 #define IPMTMR_BLK_LEN 3 #define ITIME_DAY_ALARM 0 #define ITIME_MON_ALARM 1 #define ITIME_CENTURY 2 #define IAPC_ARCH_LEGACY 0x1 #define IAPC_ARCH_8042 0x2 #define IAPC_ARCH_NO_VGA 0x4 #define IAPC_ARCH_NO_MSI 0x8 #define IAPC_ARCH_ASPM 0x10 #define IAPC_ARCH_NO_RTC 0x20 typedef struct acpi_fadt { acpi_sdthdr_t header; uint32_t firmware_controller_addr; uint32_t dsdt_addr; uint8_t reserved; uint8_t pm_profile; uint16_t sci_int; uint32_t smi_cmd_port_addr; uint8_t smi_acpi_enable; uint8_t smi_acpi_disable; uint8_t smi_s4bios_state; uint8_t smi_pstate; uint32_t pm_reg_ports[6]; uint32_t gpe0_port_addr; uint32_t gpe1_port_addr; uint8_t pm_reg_lens[4]; uint8_t gpe0_len; uint8_t gpe1_len; uint8_t gpe1_base; uint8_t cst_cnt; uint16_t p_lvl2_lat; uint16_t p_lvl3_lat; uint16_t flush_size; uint16_t flush_stride; uint8_t duty_offset; uint8_t duty_width; uint8_t time_info[3]; uint16_t boot_arch; } ACPI_TABLE_PACKED acpi_fadt_t; // TODO: FADT parser & support #endif /* __LUNAIX_FADT_H */