MOS Source Code
Loading...
Searching...
No Matches
acpi_types.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#pragma once
4
5#include <mos/types.hpp>
6
15
16MOS_STATIC_ASSERT(sizeof(acpi_rsdp_v1_t) == 20, "acpi_rsdp_v1_t is not 20 bytes");
17
18typedef struct
19{
21
22 // below fields are only available in ACPI 2.0+
28
29#define ACPI_SIGNATURE_RSDP "RSD PTR "
31
44
45typedef struct
46{
48 ptr32_t sdts[]; // 32-bit physical addresses of other SDTs
50
51typedef struct
52{
54 ptr64_t sdts[]; // 64-bit physical addresses of other SDTs
56
57#define ACPI_SIGNATURE_RSDT "RSDT" // Root System Description Table
58
67
68typedef struct
69{
73
74 // field used in ACPI 1.0; no longer in use, for compatibility only
76
109
110 // reserved in ACPI 1.0; used since ACPI 2.0+
112
115
116 // 12 byte structure; see below for details
118
121
122 // 64bit pointers - Available on ACPI 2.0+
125
135
136#define ACPI_SIGNATURE_FADT "FACP" // Fixed ACPI Description Table
137
143
144// Type 0 - Processor Local APIC
152
153// Type 1 - I/O APIC
162
163// Type 2 - IO/APIC Interrupt Source Override
172
173// Type 3 - IO/APIC Non-maskable interrupt source
182
183// Type 4 - Local APIC Non-maskable interrupts
191
192// Type 5 - Local APIC Address Override
199
200// Type 9 - Processor Local x2APIC
209
216
217#define ACPI_SIGNATURE_MADT "APIC" // Multiple APIC Description Table
218
219#define madt_type_is_valid(var) (var->record_length && ((var->type >= 0 && var->type <= 5) || var->type == 9))
220#define madt_entry_foreach(var, madt) \
221 for (auto var = (acpi_madt_header_t *) ((char *) madt + sizeof(acpi_madt_t)); madt_type_is_valid(var); \
222 var = (acpi_madt_header_t *) ((char *) var + var->record_length))
223
238
239#define ACPI_SIGNATURE_HPET "HPET" // High Precision Event Timer Description Table
240
acpi_rsdp_v2_t acpi_rsdp_t
#define __packed
Definition mos_global.h:29
#define MOS_STATIC_ASSERT
Definition mos_global.h:14
generic_addr_t reset_reg
generic_addr_t X_GPE1Block
generic_addr_t X_PM1aEventBlock
generic_addr_t X_PM1bControlBlock
generic_addr_t X_GPE0Block
u32 pm2_control_block
u32 pm1b_control_block
u32 pm1a_control_block
generic_addr_t X_PM1bEventBlock
u32 smi_command_port
generic_addr_t X_PM1aControlBlock
u32 pm1b_event_block
generic_addr_t X_PM2ControlBlock
u8 preferred_power_management_profile
u64 X_FirmwareControl
acpi_sdt_header_t sdt_header
u32 pm1a_event_block
generic_addr_t X_PMTimerBlock
generic_addr_t addr
acpi_sdt_header_t sdt_header
acpi_madt_header_t header
acpi_madt_header_t header
acpi_madt_header_t header
acpi_madt_header_t header
acpi_madt_header_t header
acpi_madt_header_t header
acpi_sdt_header_t sdt_header
char signature[8]
Definition acpi_types.hpp:9
acpi_rsdp_v1_t v1
ptr32_t sdts[]
acpi_sdt_header_t sdt_header
ptr64_t sdts[]
acpi_sdt_header_t sdt_header
u8 * definition_block
bool valid
acpi_sdt_header_t header
unsigned int u32
Definition types.h:17
unsigned short u16
Definition types.h:16
unsigned int ptr32_t
Definition types.h:22
unsigned long long u64
Definition types.h:19
unsigned long long ptr64_t
Definition types.h:23
unsigned char u8
Definition types.h:15