1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef QEMU_ACPI_DEFS_H
16#define QEMU_ACPI_DEFS_H
17
18enum {
19 ACPI_FADT_F_WBINVD,
20 ACPI_FADT_F_WBINVD_FLUSH,
21 ACPI_FADT_F_PROC_C1,
22 ACPI_FADT_F_P_LVL2_UP,
23 ACPI_FADT_F_PWR_BUTTON,
24 ACPI_FADT_F_SLP_BUTTON,
25 ACPI_FADT_F_FIX_RTC,
26 ACPI_FADT_F_RTC_S4,
27 ACPI_FADT_F_TMR_VAL_EXT,
28 ACPI_FADT_F_DCK_CAP,
29 ACPI_FADT_F_RESET_REG_SUP,
30 ACPI_FADT_F_SEALED_CASE,
31 ACPI_FADT_F_HEADLESS,
32 ACPI_FADT_F_CPU_SW_SLP,
33 ACPI_FADT_F_PCI_EXP_WAK,
34 ACPI_FADT_F_USE_PLATFORM_CLOCK,
35 ACPI_FADT_F_S4_RTC_STS_VALID,
36 ACPI_FADT_F_REMOTE_POWER_ON_CAPABLE,
37 ACPI_FADT_F_FORCE_APIC_CLUSTER_MODEL,
38 ACPI_FADT_F_FORCE_APIC_PHYSICAL_DESTINATION_MODE,
39 ACPI_FADT_F_HW_REDUCED_ACPI,
40 ACPI_FADT_F_LOW_POWER_S0_IDLE_CAPABLE,
41};
42
43typedef struct AcpiRsdpData {
44 char *oem_id;
45 uint8_t revision;
46
47 unsigned *rsdt_tbl_offset;
48 unsigned *xsdt_tbl_offset;
49} AcpiRsdpData;
50
51struct AcpiGenericAddress {
52 uint8_t space_id;
53 uint8_t bit_width;
54 uint8_t bit_offset;
55 uint8_t access_width;
56
57 uint64_t address;
58};
59
60typedef struct AcpiFadtData {
61 struct AcpiGenericAddress pm1a_cnt;
62 struct AcpiGenericAddress pm1a_evt;
63 struct AcpiGenericAddress pm_tmr;
64 struct AcpiGenericAddress gpe0_blk;
65 struct AcpiGenericAddress reset_reg;
66 struct AcpiGenericAddress sleep_ctl;
67 struct AcpiGenericAddress sleep_sts;
68 uint8_t reset_val;
69 uint8_t rev;
70 uint32_t flags;
71 uint32_t smi_cmd;
72 uint16_t sci_int;
73 uint8_t int_model;
74 uint8_t acpi_enable_cmd;
75 uint8_t acpi_disable_cmd;
76 uint8_t rtc_century;
77 uint16_t plvl2_lat;
78 uint16_t plvl3_lat;
79 uint16_t arm_boot_arch;
80 uint8_t minor_ver;
81
82
83
84
85
86
87 unsigned *facs_tbl_offset;
88 unsigned *dsdt_tbl_offset;
89 unsigned *xdsdt_tbl_offset;
90} AcpiFadtData;
91
92#define ACPI_FADT_ARM_PSCI_COMPLIANT (1 << 0)
93#define ACPI_FADT_ARM_PSCI_USE_HVC (1 << 1)
94
95#endif
96