Chameleon

Chameleon Svn Source Tree

Root/branches/Bungo/i386/libsaio/acpi.h

1#ifndef __LIBSAIO_ACPI_H
2#define __LIBSAIO_ACPI_H
3
4#define ACPI_RANGE_START 0x0E0000
5#define ACPI_RANGE_END 0x0FFFFF
6#define EBDA_RANGE_MIN 0x080000
7#define EBDA_RANGE_END 0x09FFFF
8#define BDA_EBDA_START 0x00040E
9
10#define UINT64_LE_FROM_CHARS(a,b,c,d,e,f,g,h) \
11( ((uint64_t)h << 56) \
12| ((uint64_t)g << 48) \
13| ((uint64_t)f << 40) \
14| ((uint64_t)e << 32) \
15| ((uint64_t)d << 24) \
16| ((uint64_t)c << 16) \
17| ((uint64_t)b << 8) \
18| ((uint64_t)a << 0) \
19)
20
21#define ACPI_SIGNATURE_UINT64_LE UINT64_LE_FROM_CHARS('R','S','D',' ','P','T','R',' ')
22
23#define swapUint16(x) ((((uint16_t)x & 0xFF00) >> 8) | \
24 (((uint16_t)x & 0x00FF) << 8))
25
26#define swapUint32(x) ((((uint32_t)x & 0xFF000000) >> 24) | \
27 (((uint32_t)x & 0x00FF0000) >> 16) | \
28 (((uint32_t)x & 0x0000FF00) >> 8) | \
29 (((uint32_t)x & 0x000000FF) << 24))
30
31/* Per ACPI 3.0a spec */
32
33// TODO Migrate
34struct acpi_2_rsdp
35{
36 // 1.0
37charSignature[8];
38uint8_tChecksum;
39charOEMID[6];
40uint8_tRevision;
41uint32_tRsdtAddress;
42 // 2.0
43uint32_tLength;
44uint64_tXsdtAddress;
45uint8_tExtendedChecksum;
46charReserved[3];
47} __attribute__((packed));
48
49struct acpi_2_header
50{
51charSignature[4];
52uint32_tLength;
53uint8_tRevision;
54uint8_tChecksum;
55charOEMID[6];
56charOEMTableId[8];
57uint32_tOEMRevision;
58uint32_tCreatorId;
59uint32_tCreatorRevision;
60} __attribute__((packed));
61
62// TODO Migrate
63struct acpi_2_rsdt
64{
65charSignature[4];
66uint32_tLength;
67uint8_tRevision;
68uint8_tChecksum;
69charOEMID[6];
70charOEMTableId[8];
71uint32_tOEMRevision;
72uint32_tCreatorId;
73uint32_tCreatorRevision;
74} __attribute__((packed));
75
76// TODO Migrate
77struct acpi_2_xsdt
78{
79charSignature[4];
80uint32_tLength;
81uint8_tRevision;
82uint8_tChecksum;
83charOEMID[6];
84charOEMTableId[8];
85uint32_tOEMRevision;
86uint32_tCreatorId;
87uint32_tCreatorRevision;
88} __attribute__((packed));
89
90// TODO Migrate
91struct acpi_2_ssdt
92{
93charSignature[4];
94uint32_tLength;
95uint8_tRevision;
96uint8_tChecksum;
97charOEMID[6];
98charOEMTableId[8];
99uint32_tOEMRevision;
100uint32_tCreatorId;
101uint32_tCreatorRevision;
102} __attribute__((packed));
103
104struct ssdt_pmref {
105 char oemTabID[9];
106 char byte1;
107 uint32_t addr;
108 char byte2;
109 uint32_t length;
110 char byte3;
111} __attribute__((packed));
112
113// TODO Migrate
114struct acpi_2_dsdt
115{
116charSignature[4];
117uint32_tLength;
118uint8_tRevision;
119uint8_tChecksum;
120charOEMID[6];
121charOEMTableId[8];
122uint32_tOEMRevision;
123uint32_tCreatorId;
124uint32_tCreatorRevision;
125} __attribute__((packed));
126
127// TODO Migrate
128struct acpi_2_fadt
129{
130charSignature[4];
131uint32_tLength;
132uint8_tRevision;
133uint8_tChecksum;
134charOEMID[6];
135charOEMTableId[8];
136uint32_tOEMRevision;
137uint32_tCreatorId;
138uint32_tCreatorRevision;
139uint32_tFACS;
140uint32_tDSDT;
141uint8_tModel;// JrCs
142uint8_tPM_Profile;// JrCs
143uint16_tSCI_Interrupt;
144uint32_tSMI_Command_Port;
145uint8_tACPI_Enable;
146uint8_tACPI_Disable;
147uint8_tS4BIOS_Command;
148uint8_tPState_Control;
149uint32_tPM1A_Event_Block_Address;
150uint32_tPM1B_Event_Block_Address;
151uint32_tPM1A_Control_Block_Address;
152uint32_tPM1B_Control_Block_Address;
153uint32_tPM2_Control_Block_Address;
154uint32_tPM_Timer_Block_Address;
155uint32_tGPE0_Block_Address;
156uint32_tGPE1_Block_Address;
157uint8_tPM1_Event_Block_Length;
158uint8_tPM1_Control_Block_Length;
159uint8_tPM2_Control_Block_Length;
160uint8_tPM_Timer_Block_Length;
161uint8_tGPE0_Block_Length;
162uint8_tGPE1_Block_Length;
163uint8_tGPE1_Base_Offset;
164uint8_tCST_Support;
165uint16_tC2_Latency;
166uint16_tC3_Latency;
167uint16_tCPU_Cache_Size;
168uint16_tCache_Flush_Stride;
169uint8_tDuty_Cycle_Offset;
170uint8_tDuty_Cycle_Width;
171uint8_tRTC_Day_Alarm_Index;
172uint8_tRTC_Month_Alarm_Index;
173uint8_tRTC_Century_Index;
174uint16_tBoot_Flags;
175uint8_tReserved0;
176/* Begin Asere */
177//Reset Fix
178uint32_t Flags;
179 // Reset Register
180uint8_t Reset_SpaceID;
181uint8_t Reset_BitWidth;
182uint8_t Reset_BitOffset;
183uint8_t Reset_AccessWidth;
184uint64_t Reset_Address;
185uint8_t Reset_Value;
186uint8_t Reserved[3];
187uint64_t X_FACS;
188uint64_t X_DSDT;
189/* End Asere */
190/*We absolutely don't care about theese fields*/
191uint8_t notimp2[96];
192} __attribute__((packed));
193
194struct acpi_2_facs {
195 charSignature[4];
196uint32_tLength;
197 uint32_t HWSignature;
198 uint32_t FWWakingVector32;
199 uint32_t GlobalLock;
200 uint32_t Flags;
201 uint64_t FWWakingVector64;
202 uint8_t Version;
203 uint8_t Reserved[31];
204} __attribute__((packed));
205
206#endif /* !__LIBSAIO_ACPI_H */
207

Archive Download this file

Revision: 2537