summaryrefslogtreecommitdiff
path: root/Kernel/ACPI/Definitions.h
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/ACPI/Definitions.h')
-rw-r--r--Kernel/ACPI/Definitions.h580
1 files changed, 290 insertions, 290 deletions
diff --git a/Kernel/ACPI/Definitions.h b/Kernel/ACPI/Definitions.h
index 0113dfafa3..e2cefe532d 100644
--- a/Kernel/ACPI/Definitions.h
+++ b/Kernel/ACPI/Definitions.h
@@ -35,315 +35,315 @@ namespace Kernel {
namespace ACPI {
- namespace FADTFlags {
- enum class FeatureFlags : u32 {
- WBINVD = 1 << 0,
- WBINVD_FLUSH = 1 << 1,
- PROC_C1 = 1 << 2,
- P_LVL2_UP = 1 << 3,
- PWR_BUTTON = 1 << 4,
- SLP_BUTTON = 1 << 5,
- FIX_RTC = 1 << 6,
- RTC_s4 = 1 << 7,
- TMR_VAL_EXT = 1 << 8,
- DCK_CAP = 1 << 9,
- RESET_REG_SUPPORTED = 1 << 10,
- SEALED_CASE = 1 << 11,
- HEADLESS = 1 << 12,
- CPU_SW_SLP = 1 << 13,
- PCI_EXP_WAK = 1 << 14,
- USE_PLATFORM_CLOCK = 1 << 15,
- S4_RTC_STS_VALID = 1 << 16,
- REMOTE_POWER_ON_CAPABLE = 1 << 17,
- FORCE_APIC_CLUSTER_MODEL = 1 << 18,
- FORCE_APIC_PHYSICAL_DESTINATION_MODE = 1 << 19,
- HW_REDUCED_ACPI = 1 << 20,
- LOW_POWER_S0_IDLE_CAPABLE = 1 << 21
- };
+namespace FADTFlags {
+enum class FeatureFlags : u32 {
+ WBINVD = 1 << 0,
+ WBINVD_FLUSH = 1 << 1,
+ PROC_C1 = 1 << 2,
+ P_LVL2_UP = 1 << 3,
+ PWR_BUTTON = 1 << 4,
+ SLP_BUTTON = 1 << 5,
+ FIX_RTC = 1 << 6,
+ RTC_s4 = 1 << 7,
+ TMR_VAL_EXT = 1 << 8,
+ DCK_CAP = 1 << 9,
+ RESET_REG_SUPPORTED = 1 << 10,
+ SEALED_CASE = 1 << 11,
+ HEADLESS = 1 << 12,
+ CPU_SW_SLP = 1 << 13,
+ PCI_EXP_WAK = 1 << 14,
+ USE_PLATFORM_CLOCK = 1 << 15,
+ S4_RTC_STS_VALID = 1 << 16,
+ REMOTE_POWER_ON_CAPABLE = 1 << 17,
+ FORCE_APIC_CLUSTER_MODEL = 1 << 18,
+ FORCE_APIC_PHYSICAL_DESTINATION_MODE = 1 << 19,
+ HW_REDUCED_ACPI = 1 << 20,
+ LOW_POWER_S0_IDLE_CAPABLE = 1 << 21
+};
- enum class IA_PC_Flags : u8 {
- Legacy_Devices = 1 << 0,
- PS2_8042 = 1 << 1,
- VGA_Not_Present = 1 << 2,
- MSI_Not_Supported = 1 << 3,
- PCIe_ASPM_Controls = 1 << 4,
- CMOS_RTC_Not_Present = 1 << 5
- };
+enum class IA_PC_Flags : u8 {
+ Legacy_Devices = 1 << 0,
+ PS2_8042 = 1 << 1,
+ VGA_Not_Present = 1 << 2,
+ MSI_Not_Supported = 1 << 3,
+ PCIe_ASPM_Controls = 1 << 4,
+ CMOS_RTC_Not_Present = 1 << 5
+};
- struct [[gnu::packed]] HardwareFeatures
- {
- bool wbinvd : 1;
- bool wbinvd_flush : 1;
- bool processor_c1 : 1;
- bool multiprocessor_c2 : 1;
- bool power_button : 1;
- bool sleep_button : 1;
- bool fix_rtc : 1;
- bool rtc_s4 : 1;
- bool timer_value_extension : 1;
- bool docking_capability : 1;
- bool reset_register_supported : 1;
- bool sealed_case : 1;
- bool headless : 1;
- bool cpu_software_sleep : 1;
- bool pci_express_wake : 1;
- bool use_platform_clock : 1;
- bool s4_rtc_status_valid : 1;
- bool remote_power_on_capable : 1;
- bool force_apic_cluster_model : 1;
- bool force_apic_physical_destination_mode : 1;
- bool hardware_reduced_acpi : 1;
- bool low_power_s0_idle_capable : 1;
- };
- struct [[gnu::packed]] x86_Specific_Flags
- {
- bool legacy_devices : 1;
- bool keyboard_8042 : 1;
- bool vga_not_present : 1;
- bool msi_not_supported : 1;
- bool cmos_rtc_not_present : 1;
- };
- };
+struct [[gnu::packed]] HardwareFeatures
+{
+ bool wbinvd : 1;
+ bool wbinvd_flush : 1;
+ bool processor_c1 : 1;
+ bool multiprocessor_c2 : 1;
+ bool power_button : 1;
+ bool sleep_button : 1;
+ bool fix_rtc : 1;
+ bool rtc_s4 : 1;
+ bool timer_value_extension : 1;
+ bool docking_capability : 1;
+ bool reset_register_supported : 1;
+ bool sealed_case : 1;
+ bool headless : 1;
+ bool cpu_software_sleep : 1;
+ bool pci_express_wake : 1;
+ bool use_platform_clock : 1;
+ bool s4_rtc_status_valid : 1;
+ bool remote_power_on_capable : 1;
+ bool force_apic_cluster_model : 1;
+ bool force_apic_physical_destination_mode : 1;
+ bool hardware_reduced_acpi : 1;
+ bool low_power_s0_idle_capable : 1;
+};
+struct [[gnu::packed]] x86_Specific_Flags
+{
+ bool legacy_devices : 1;
+ bool keyboard_8042 : 1;
+ bool vga_not_present : 1;
+ bool msi_not_supported : 1;
+ bool cmos_rtc_not_present : 1;
+};
+};
- namespace GenericAddressStructure {
- enum class AddressSpace {
- SystemMemory = 0,
- SystemIO = 1,
- PCIConfigurationSpace = 2,
- EmbeddedController = 3,
- SMBus = 4,
- PCC = 0xA,
- FunctionalFixedHardware = 0x7F
- };
- enum class AccessSize {
- Undefined = 0,
- Byte = 1,
- Word = 2,
- DWord = 3,
- QWord = 4
- };
- enum class BitWidth {
- Undefined = 0,
- Byte = 8,
- Word = 16,
- DWord = 32,
- QWord = 64
- };
- }
+namespace GenericAddressStructure {
+enum class AddressSpace {
+ SystemMemory = 0,
+ SystemIO = 1,
+ PCIConfigurationSpace = 2,
+ EmbeddedController = 3,
+ SMBus = 4,
+ PCC = 0xA,
+ FunctionalFixedHardware = 0x7F
+};
+enum class AccessSize {
+ Undefined = 0,
+ Byte = 1,
+ Word = 2,
+ DWord = 3,
+ QWord = 4
+};
+enum class BitWidth {
+ Undefined = 0,
+ Byte = 8,
+ Word = 16,
+ DWord = 32,
+ QWord = 64
+};
+}
- namespace Structures {
- struct [[gnu::packed]] RSDPDescriptor
- {
- char sig[8];
- u8 checksum;
- char oem_id[6];
- u8 revision;
- u32 rsdt_ptr;
- };
+namespace Structures {
+struct [[gnu::packed]] RSDPDescriptor
+{
+ char sig[8];
+ u8 checksum;
+ char oem_id[6];
+ u8 revision;
+ u32 rsdt_ptr;
+};
- struct [[gnu::packed]] RSDPDescriptor20
- {
- RSDPDescriptor base;
- u32 length;
- u64 xsdt_ptr;
- u8 ext_checksum;
- u8 reserved[3];
- };
+struct [[gnu::packed]] RSDPDescriptor20
+{
+ RSDPDescriptor base;
+ u32 length;
+ u64 xsdt_ptr;
+ u8 ext_checksum;
+ u8 reserved[3];
+};
- struct [[gnu::packed]] SDTHeader
- {
- char sig[4];
- u32 length;
- u8 revision;
- u8 checksum;
- char oem_id[6];
- char oem_table_id[8];
- u32 oem_revision;
- u32 creator_id;
- u32 creator_revision;
- };
+struct [[gnu::packed]] SDTHeader
+{
+ char sig[4];
+ u32 length;
+ u8 revision;
+ u8 checksum;
+ char oem_id[6];
+ char oem_table_id[8];
+ u32 oem_revision;
+ u32 creator_id;
+ u32 creator_revision;
+};
- struct [[gnu::packed]] RSDT
- {
- SDTHeader h;
- u32 table_ptrs[];
- };
+struct [[gnu::packed]] RSDT
+{
+ SDTHeader h;
+ u32 table_ptrs[];
+};
- struct [[gnu::packed]] XSDT
- {
- SDTHeader h;
- u64 table_ptrs[];
- };
+struct [[gnu::packed]] XSDT
+{
+ SDTHeader h;
+ u64 table_ptrs[];
+};
- struct [[gnu::packed]] GenericAddressStructure
- {
- u8 address_space;
- u8 bit_width;
- u8 bit_offset;
- u8 access_size;
- u64 address;
- };
+struct [[gnu::packed]] GenericAddressStructure
+{
+ u8 address_space;
+ u8 bit_width;
+ u8 bit_offset;
+ u8 access_size;
+ u64 address;
+};
- struct [[gnu::packed]] HPET
- {
- SDTHeader h;
- u8 hardware_revision_id;
- u8 attributes;
- u16 pci_vendor_id;
- GenericAddressStructure event_timer_block;
- u8 hpet_number;
- u16 mininum_clock_tick;
- u8 page_protection;
- };
+struct [[gnu::packed]] HPET
+{
+ SDTHeader h;
+ u8 hardware_revision_id;
+ u8 attributes;
+ u16 pci_vendor_id;
+ GenericAddressStructure event_timer_block;
+ u8 hpet_number;
+ u16 mininum_clock_tick;
+ u8 page_protection;
+};
- struct [[gnu::packed]] FADT
- {
- SDTHeader h;
- u32 firmware_ctrl;
- u32 dsdt_ptr;
- u8 reserved;
- u8 preferred_pm_profile;
- u16 sci_int;
- u32 smi_cmd;
- u8 acpi_enable_value;
- u8 acpi_disable_value;
- u8 s4bios_req;
- u8 pstate_cnt;
- u32 PM1a_EVT_BLK;
- u32 PM1b_EVT_BLK;
- u32 PM1a_CNT_BLK;
- u32 PM1b_CNT_BLK;
- u32 PM2_CNT_BLK;
- u32 PM_TMR_BLK;
- u32 GPE0_BLK;
- u32 GPE1_BLK;
- u8 PM1_EVT_LEN;
- u8 PM1_CNT_LEN;
- u8 PM2_CNT_LEN;
- u8 PM_TMR_LEN;
- u8 GPE0_BLK_LEN;
- u8 GPE1_BLK_LEN;
- u8 GPE1_BASE;
- u8 cst_cnt;
- u16 P_LVL2_LAT;
- u16 P_LVL3_LAT;
- u16 flush_size;
- u16 flush_stride;
- u8 duty_offset;
- u8 duty_width;
- u8 day_alrm;
- u8 mon_alrm;
- u8 century;
- u16 ia_pc_boot_arch_flags;
- u8 reserved2;
- u32 flags;
- GenericAddressStructure reset_reg;
- u8 reset_value;
- u16 arm_boot_arch;
- u8 fadt_minor_version;
- u64 x_firmware_ctrl;
- u64 x_dsdt;
- GenericAddressStructure x_pm1a_evt_blk;
- GenericAddressStructure x_pm1b_evt_blk;
- GenericAddressStructure x_pm1a_cnt_blk;
- GenericAddressStructure x_pm1b_cnt_blk;
- GenericAddressStructure x_pm2_cnt_blk;
- GenericAddressStructure x_pm_tmr_blk;
- GenericAddressStructure x_gpe0_blk;
- GenericAddressStructure x_gpe1_blk;
- GenericAddressStructure sleep_control;
- GenericAddressStructure sleep_status;
- u64 hypervisor_vendor_identity;
- };
- enum class MADTEntryType {
- LocalAPIC = 0x0,
- IOAPIC = 0x1,
- InterruptSourceOverride = 0x2,
- NMI_Source = 0x3,
- LocalAPIC_NMI = 0x4,
- LocalAPIC_Address_Override = 0x5,
- IO_SAPIC = 0x6,
- Local_SAPIC = 0x7,
- Platform_interrupt_Sources = 0x8,
- Local_x2APIC = 0x9,
- Local_x2APIC_NMI = 0xA,
- GIC_CPU = 0xB,
- GIC_Distributor = 0xC,
- GIC_MSI = 0xD,
- GIC_Redistrbutor = 0xE,
- GIC_Interrupt_Translation = 0xF
- };
+struct [[gnu::packed]] FADT
+{
+ SDTHeader h;
+ u32 firmware_ctrl;
+ u32 dsdt_ptr;
+ u8 reserved;
+ u8 preferred_pm_profile;
+ u16 sci_int;
+ u32 smi_cmd;
+ u8 acpi_enable_value;
+ u8 acpi_disable_value;
+ u8 s4bios_req;
+ u8 pstate_cnt;
+ u32 PM1a_EVT_BLK;
+ u32 PM1b_EVT_BLK;
+ u32 PM1a_CNT_BLK;
+ u32 PM1b_CNT_BLK;
+ u32 PM2_CNT_BLK;
+ u32 PM_TMR_BLK;
+ u32 GPE0_BLK;
+ u32 GPE1_BLK;
+ u8 PM1_EVT_LEN;
+ u8 PM1_CNT_LEN;
+ u8 PM2_CNT_LEN;
+ u8 PM_TMR_LEN;
+ u8 GPE0_BLK_LEN;
+ u8 GPE1_BLK_LEN;
+ u8 GPE1_BASE;
+ u8 cst_cnt;
+ u16 P_LVL2_LAT;
+ u16 P_LVL3_LAT;
+ u16 flush_size;
+ u16 flush_stride;
+ u8 duty_offset;
+ u8 duty_width;
+ u8 day_alrm;
+ u8 mon_alrm;
+ u8 century;
+ u16 ia_pc_boot_arch_flags;
+ u8 reserved2;
+ u32 flags;
+ GenericAddressStructure reset_reg;
+ u8 reset_value;
+ u16 arm_boot_arch;
+ u8 fadt_minor_version;
+ u64 x_firmware_ctrl;
+ u64 x_dsdt;
+ GenericAddressStructure x_pm1a_evt_blk;
+ GenericAddressStructure x_pm1b_evt_blk;
+ GenericAddressStructure x_pm1a_cnt_blk;
+ GenericAddressStructure x_pm1b_cnt_blk;
+ GenericAddressStructure x_pm2_cnt_blk;
+ GenericAddressStructure x_pm_tmr_blk;
+ GenericAddressStructure x_gpe0_blk;
+ GenericAddressStructure x_gpe1_blk;
+ GenericAddressStructure sleep_control;
+ GenericAddressStructure sleep_status;
+ u64 hypervisor_vendor_identity;
+};
+enum class MADTEntryType {
+ LocalAPIC = 0x0,
+ IOAPIC = 0x1,
+ InterruptSourceOverride = 0x2,
+ NMI_Source = 0x3,
+ LocalAPIC_NMI = 0x4,
+ LocalAPIC_Address_Override = 0x5,
+ IO_SAPIC = 0x6,
+ Local_SAPIC = 0x7,
+ Platform_interrupt_Sources = 0x8,
+ Local_x2APIC = 0x9,
+ Local_x2APIC_NMI = 0xA,
+ GIC_CPU = 0xB,
+ GIC_Distributor = 0xC,
+ GIC_MSI = 0xD,
+ GIC_Redistrbutor = 0xE,
+ GIC_Interrupt_Translation = 0xF
+};
- struct [[gnu::packed]] MADTEntryHeader
- {
- u8 type;
- u8 length;
- };
+struct [[gnu::packed]] MADTEntryHeader
+{
+ u8 type;
+ u8 length;
+};
- namespace MADTEntries {
- struct [[gnu::packed]] IOAPIC
- {
- MADTEntryHeader h;
- u8 ioapic_id;
- u8 reserved;
- u32 ioapic_address;
- u32 gsi_base;
- };
+namespace MADTEntries {
+struct [[gnu::packed]] IOAPIC
+{
+ MADTEntryHeader h;
+ u8 ioapic_id;
+ u8 reserved;
+ u32 ioapic_address;
+ u32 gsi_base;
+};
- struct [[gnu::packed]] InterruptSourceOverride
- {
- MADTEntryHeader h;
- u8 bus;
- u8 source;
- u32 global_system_interrupt;
- u16 flags;
- };
- }
+struct [[gnu::packed]] InterruptSourceOverride
+{
+ MADTEntryHeader h;
+ u8 bus;
+ u8 source;
+ u32 global_system_interrupt;
+ u16 flags;
+};
+}
- struct [[gnu::packed]] MADT
- {
- SDTHeader h;
- u32 lapic_address;
- u32 flags;
- MADTEntryHeader entries[];
- };
+struct [[gnu::packed]] MADT
+{
+ SDTHeader h;
+ u32 lapic_address;
+ u32 flags;
+ MADTEntryHeader entries[];
+};
- struct [[gnu::packed]] AMLTable
- {
- SDTHeader h;
- char aml_code[];
- };
+struct [[gnu::packed]] AMLTable
+{
+ SDTHeader h;
+ char aml_code[];
+};
- struct [[gnu::packed]] PCI_MMIO_Descriptor
- {
- u64 base_addr;
- u16 seg_group_number;
- u8 start_pci_bus;
- u8 end_pci_bus;
- u32 reserved;
- };
+struct [[gnu::packed]] PCI_MMIO_Descriptor
+{
+ u64 base_addr;
+ u16 seg_group_number;
+ u8 start_pci_bus;
+ u8 end_pci_bus;
+ u32 reserved;
+};
- struct [[gnu::packed]] MCFG
- {
- SDTHeader header;
- u64 reserved;
- PCI_MMIO_Descriptor descriptors[];
- };
- }
+struct [[gnu::packed]] MCFG
+{
+ SDTHeader header;
+ u64 reserved;
+ PCI_MMIO_Descriptor descriptors[];
+};
+}
- class StaticParser;
- class DynamicParser;
- class Parser;
+class StaticParser;
+class DynamicParser;
+class Parser;
- namespace StaticParsing {
- PhysicalAddress search_rsdp_in_ebda(u16 ebda_segment);
- PhysicalAddress search_rsdp_in_bios_area();
- PhysicalAddress search_rsdp();
- bool match_table_signature(PhysicalAddress table_header, const char*);
- PhysicalAddress search_table(PhysicalAddress rsdp, const char*);
- PhysicalAddress search_table_in_xsdt(PhysicalAddress xsdt, const char*);
- PhysicalAddress search_table_in_rsdt(PhysicalAddress rsdt, const char*);
- inline bool validate_table(Structures::SDTHeader&, size_t length);
- };
+namespace StaticParsing {
+PhysicalAddress search_rsdp_in_ebda(u16 ebda_segment);
+PhysicalAddress search_rsdp_in_bios_area();
+PhysicalAddress search_rsdp();
+bool match_table_signature(PhysicalAddress table_header, const char*);
+PhysicalAddress search_table(PhysicalAddress rsdp, const char*);
+PhysicalAddress search_table_in_xsdt(PhysicalAddress xsdt, const char*);
+PhysicalAddress search_table_in_rsdt(PhysicalAddress rsdt, const char*);
+inline bool validate_table(Structures::SDTHeader&, size_t length);
+};
}
}