diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-01-15 12:27:20 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-01-15 12:27:20 -0500 |
commit | c0106d72b8d71696dbe9dc80e2c77d4ac63f7531 (patch) | |
tree | ca96d2baecb0555e36219ed6968dc8e306e530ca /include/acpi/acrestyp.h | |
parent | 5852973c129cf7c7e6c229abb7250673fc2a50c9 (diff) | |
parent | eff317d0834ad1ff03f747f6bc2d76b9a9c95160 (diff) |
Merge branch 'topic/asoc' into next/asoc
Diffstat (limited to 'include/acpi/acrestyp.h')
-rw-r--r-- | include/acpi/acrestyp.h | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/include/acpi/acrestyp.h b/include/acpi/acrestyp.h new file mode 100644 index 000000000000..9ffe00feada6 --- /dev/null +++ b/include/acpi/acrestyp.h | |||
@@ -0,0 +1,405 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: acrestyp.h - Defines, types, and structures for resource descriptors | ||
4 | * | ||
5 | *****************************************************************************/ | ||
6 | |||
7 | /* | ||
8 | * Copyright (C) 2000 - 2008, Intel Corp. | ||
9 | * All rights reserved. | ||
10 | * | ||
11 | * Redistribution and use in source and binary forms, with or without | ||
12 | * modification, are permitted provided that the following conditions | ||
13 | * are met: | ||
14 | * 1. Redistributions of source code must retain the above copyright | ||
15 | * notice, this list of conditions, and the following disclaimer, | ||
16 | * without modification. | ||
17 | * 2. Redistributions in binary form must reproduce at minimum a disclaimer | ||
18 | * substantially similar to the "NO WARRANTY" disclaimer below | ||
19 | * ("Disclaimer") and any redistribution must be conditioned upon | ||
20 | * including a substantially similar Disclaimer requirement for further | ||
21 | * binary redistribution. | ||
22 | * 3. Neither the names of the above-listed copyright holders nor the names | ||
23 | * of any contributors may be used to endorse or promote products derived | ||
24 | * from this software without specific prior written permission. | ||
25 | * | ||
26 | * Alternatively, this software may be distributed under the terms of the | ||
27 | * GNU General Public License ("GPL") version 2 as published by the Free | ||
28 | * Software Foundation. | ||
29 | * | ||
30 | * NO WARRANTY | ||
31 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
32 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
33 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR | ||
34 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
35 | * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
36 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
37 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
38 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
39 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||
40 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
41 | * POSSIBILITY OF SUCH DAMAGES. | ||
42 | */ | ||
43 | |||
44 | #ifndef __ACRESTYP_H__ | ||
45 | #define __ACRESTYP_H__ | ||
46 | |||
47 | /* | ||
48 | * Definitions for Resource Attributes | ||
49 | */ | ||
50 | typedef u16 acpi_rs_length; /* Resource Length field is fixed at 16 bits */ | ||
51 | typedef u32 acpi_rsdesc_size; /* Max Resource Descriptor size is (Length+3) = (64_k-1)+3 */ | ||
52 | |||
53 | /* | ||
54 | * Memory Attributes | ||
55 | */ | ||
56 | #define ACPI_READ_ONLY_MEMORY (u8) 0x00 | ||
57 | #define ACPI_READ_WRITE_MEMORY (u8) 0x01 | ||
58 | |||
59 | #define ACPI_NON_CACHEABLE_MEMORY (u8) 0x00 | ||
60 | #define ACPI_CACHABLE_MEMORY (u8) 0x01 | ||
61 | #define ACPI_WRITE_COMBINING_MEMORY (u8) 0x02 | ||
62 | #define ACPI_PREFETCHABLE_MEMORY (u8) 0x03 | ||
63 | |||
64 | /* | ||
65 | * IO Attributes | ||
66 | * The ISA IO ranges are: n000-n0_fFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh. | ||
67 | * The non-ISA IO ranges are: n100-n3_fFh, n500-n7_fFh, n900-n_bFFh, n_cd0-n_fFFh. | ||
68 | */ | ||
69 | #define ACPI_NON_ISA_ONLY_RANGES (u8) 0x01 | ||
70 | #define ACPI_ISA_ONLY_RANGES (u8) 0x02 | ||
71 | #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) | ||
72 | |||
73 | /* Type of translation - 1=Sparse, 0=Dense */ | ||
74 | |||
75 | #define ACPI_SPARSE_TRANSLATION (u8) 0x01 | ||
76 | |||
77 | /* | ||
78 | * IO Port Descriptor Decode | ||
79 | */ | ||
80 | #define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */ | ||
81 | #define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */ | ||
82 | |||
83 | /* | ||
84 | * IRQ Attributes | ||
85 | */ | ||
86 | #define ACPI_LEVEL_SENSITIVE (u8) 0x00 | ||
87 | #define ACPI_EDGE_SENSITIVE (u8) 0x01 | ||
88 | |||
89 | #define ACPI_ACTIVE_HIGH (u8) 0x00 | ||
90 | #define ACPI_ACTIVE_LOW (u8) 0x01 | ||
91 | |||
92 | #define ACPI_EXCLUSIVE (u8) 0x00 | ||
93 | #define ACPI_SHARED (u8) 0x01 | ||
94 | |||
95 | /* | ||
96 | * DMA Attributes | ||
97 | */ | ||
98 | #define ACPI_COMPATIBILITY (u8) 0x00 | ||
99 | #define ACPI_TYPE_A (u8) 0x01 | ||
100 | #define ACPI_TYPE_B (u8) 0x02 | ||
101 | #define ACPI_TYPE_F (u8) 0x03 | ||
102 | |||
103 | #define ACPI_NOT_BUS_MASTER (u8) 0x00 | ||
104 | #define ACPI_BUS_MASTER (u8) 0x01 | ||
105 | |||
106 | #define ACPI_TRANSFER_8 (u8) 0x00 | ||
107 | #define ACPI_TRANSFER_8_16 (u8) 0x01 | ||
108 | #define ACPI_TRANSFER_16 (u8) 0x02 | ||
109 | |||
110 | /* | ||
111 | * Start Dependent Functions Priority definitions | ||
112 | */ | ||
113 | #define ACPI_GOOD_CONFIGURATION (u8) 0x00 | ||
114 | #define ACPI_ACCEPTABLE_CONFIGURATION (u8) 0x01 | ||
115 | #define ACPI_SUB_OPTIMAL_CONFIGURATION (u8) 0x02 | ||
116 | |||
117 | /* | ||
118 | * 16, 32 and 64-bit Address Descriptor resource types | ||
119 | */ | ||
120 | #define ACPI_MEMORY_RANGE (u8) 0x00 | ||
121 | #define ACPI_IO_RANGE (u8) 0x01 | ||
122 | #define ACPI_BUS_NUMBER_RANGE (u8) 0x02 | ||
123 | |||
124 | #define ACPI_ADDRESS_NOT_FIXED (u8) 0x00 | ||
125 | #define ACPI_ADDRESS_FIXED (u8) 0x01 | ||
126 | |||
127 | #define ACPI_POS_DECODE (u8) 0x00 | ||
128 | #define ACPI_SUB_DECODE (u8) 0x01 | ||
129 | |||
130 | #define ACPI_PRODUCER (u8) 0x00 | ||
131 | #define ACPI_CONSUMER (u8) 0x01 | ||
132 | |||
133 | /* | ||
134 | * If possible, pack the following structures to byte alignment | ||
135 | */ | ||
136 | #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED | ||
137 | #pragma pack(1) | ||
138 | #endif | ||
139 | |||
140 | /* UUID data structures for use in vendor-defined resource descriptors */ | ||
141 | |||
142 | struct acpi_uuid { | ||
143 | u8 data[ACPI_UUID_LENGTH]; | ||
144 | }; | ||
145 | |||
146 | struct acpi_vendor_uuid { | ||
147 | u8 subtype; | ||
148 | u8 data[ACPI_UUID_LENGTH]; | ||
149 | }; | ||
150 | |||
151 | /* | ||
152 | * Structures used to describe device resources | ||
153 | */ | ||
154 | struct acpi_resource_irq { | ||
155 | u8 descriptor_length; | ||
156 | u8 triggering; | ||
157 | u8 polarity; | ||
158 | u8 sharable; | ||
159 | u8 interrupt_count; | ||
160 | u8 interrupts[1]; | ||
161 | }; | ||
162 | |||
163 | struct acpi_resource_dma { | ||
164 | u8 type; | ||
165 | u8 bus_master; | ||
166 | u8 transfer; | ||
167 | u8 channel_count; | ||
168 | u8 channels[1]; | ||
169 | }; | ||
170 | |||
171 | struct acpi_resource_start_dependent { | ||
172 | u8 descriptor_length; | ||
173 | u8 compatibility_priority; | ||
174 | u8 performance_robustness; | ||
175 | }; | ||
176 | |||
177 | /* | ||
178 | * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not | ||
179 | * needed because it has no fields | ||
180 | */ | ||
181 | |||
182 | struct acpi_resource_io { | ||
183 | u8 io_decode; | ||
184 | u8 alignment; | ||
185 | u8 address_length; | ||
186 | u16 minimum; | ||
187 | u16 maximum; | ||
188 | }; | ||
189 | |||
190 | struct acpi_resource_fixed_io { | ||
191 | u16 address; | ||
192 | u8 address_length; | ||
193 | }; | ||
194 | |||
195 | struct acpi_resource_vendor { | ||
196 | u16 byte_length; | ||
197 | u8 byte_data[1]; | ||
198 | }; | ||
199 | |||
200 | /* Vendor resource with UUID info (introduced in ACPI 3.0) */ | ||
201 | |||
202 | struct acpi_resource_vendor_typed { | ||
203 | u16 byte_length; | ||
204 | u8 uuid_subtype; | ||
205 | u8 uuid[ACPI_UUID_LENGTH]; | ||
206 | u8 byte_data[1]; | ||
207 | }; | ||
208 | |||
209 | struct acpi_resource_end_tag { | ||
210 | u8 checksum; | ||
211 | }; | ||
212 | |||
213 | struct acpi_resource_memory24 { | ||
214 | u8 write_protect; | ||
215 | u16 minimum; | ||
216 | u16 maximum; | ||
217 | u16 alignment; | ||
218 | u16 address_length; | ||
219 | }; | ||
220 | |||
221 | struct acpi_resource_memory32 { | ||
222 | u8 write_protect; | ||
223 | u32 minimum; | ||
224 | u32 maximum; | ||
225 | u32 alignment; | ||
226 | u32 address_length; | ||
227 | }; | ||
228 | |||
229 | struct acpi_resource_fixed_memory32 { | ||
230 | u8 write_protect; | ||
231 | u32 address; | ||
232 | u32 address_length; | ||
233 | }; | ||
234 | |||
235 | struct acpi_memory_attribute { | ||
236 | u8 write_protect; | ||
237 | u8 caching; | ||
238 | u8 range_type; | ||
239 | u8 translation; | ||
240 | }; | ||
241 | |||
242 | struct acpi_io_attribute { | ||
243 | u8 range_type; | ||
244 | u8 translation; | ||
245 | u8 translation_type; | ||
246 | u8 reserved1; | ||
247 | }; | ||
248 | |||
249 | union acpi_resource_attribute { | ||
250 | struct acpi_memory_attribute mem; | ||
251 | struct acpi_io_attribute io; | ||
252 | |||
253 | /* Used for the *word_space macros */ | ||
254 | |||
255 | u8 type_specific; | ||
256 | }; | ||
257 | |||
258 | struct acpi_resource_source { | ||
259 | u8 index; | ||
260 | u16 string_length; | ||
261 | char *string_ptr; | ||
262 | }; | ||
263 | |||
264 | /* Fields common to all address descriptors, 16/32/64 bit */ | ||
265 | |||
266 | #define ACPI_RESOURCE_ADDRESS_COMMON \ | ||
267 | u8 resource_type; \ | ||
268 | u8 producer_consumer; \ | ||
269 | u8 decode; \ | ||
270 | u8 min_address_fixed; \ | ||
271 | u8 max_address_fixed; \ | ||
272 | union acpi_resource_attribute info; | ||
273 | |||
274 | struct acpi_resource_address { | ||
275 | ACPI_RESOURCE_ADDRESS_COMMON}; | ||
276 | |||
277 | struct acpi_resource_address16 { | ||
278 | ACPI_RESOURCE_ADDRESS_COMMON u16 granularity; | ||
279 | u16 minimum; | ||
280 | u16 maximum; | ||
281 | u16 translation_offset; | ||
282 | u16 address_length; | ||
283 | struct acpi_resource_source resource_source; | ||
284 | }; | ||
285 | |||
286 | struct acpi_resource_address32 { | ||
287 | ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; | ||
288 | u32 minimum; | ||
289 | u32 maximum; | ||
290 | u32 translation_offset; | ||
291 | u32 address_length; | ||
292 | struct acpi_resource_source resource_source; | ||
293 | }; | ||
294 | |||
295 | struct acpi_resource_address64 { | ||
296 | ACPI_RESOURCE_ADDRESS_COMMON u64 granularity; | ||
297 | u64 minimum; | ||
298 | u64 maximum; | ||
299 | u64 translation_offset; | ||
300 | u64 address_length; | ||
301 | struct acpi_resource_source resource_source; | ||
302 | }; | ||
303 | |||
304 | struct acpi_resource_extended_address64 { | ||
305 | ACPI_RESOURCE_ADDRESS_COMMON u8 revision_iD; | ||
306 | u64 granularity; | ||
307 | u64 minimum; | ||
308 | u64 maximum; | ||
309 | u64 translation_offset; | ||
310 | u64 address_length; | ||
311 | u64 type_specific; | ||
312 | }; | ||
313 | |||
314 | struct acpi_resource_extended_irq { | ||
315 | u8 producer_consumer; | ||
316 | u8 triggering; | ||
317 | u8 polarity; | ||
318 | u8 sharable; | ||
319 | u8 interrupt_count; | ||
320 | struct acpi_resource_source resource_source; | ||
321 | u32 interrupts[1]; | ||
322 | }; | ||
323 | |||
324 | struct acpi_resource_generic_register { | ||
325 | u8 space_id; | ||
326 | u8 bit_width; | ||
327 | u8 bit_offset; | ||
328 | u8 access_size; | ||
329 | u64 address; | ||
330 | }; | ||
331 | |||
332 | /* ACPI_RESOURCE_TYPEs */ | ||
333 | |||
334 | #define ACPI_RESOURCE_TYPE_IRQ 0 | ||
335 | #define ACPI_RESOURCE_TYPE_DMA 1 | ||
336 | #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 | ||
337 | #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 | ||
338 | #define ACPI_RESOURCE_TYPE_IO 4 | ||
339 | #define ACPI_RESOURCE_TYPE_FIXED_IO 5 | ||
340 | #define ACPI_RESOURCE_TYPE_VENDOR 6 | ||
341 | #define ACPI_RESOURCE_TYPE_END_TAG 7 | ||
342 | #define ACPI_RESOURCE_TYPE_MEMORY24 8 | ||
343 | #define ACPI_RESOURCE_TYPE_MEMORY32 9 | ||
344 | #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 | ||
345 | #define ACPI_RESOURCE_TYPE_ADDRESS16 11 | ||
346 | #define ACPI_RESOURCE_TYPE_ADDRESS32 12 | ||
347 | #define ACPI_RESOURCE_TYPE_ADDRESS64 13 | ||
348 | #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ | ||
349 | #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 | ||
350 | #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 | ||
351 | #define ACPI_RESOURCE_TYPE_MAX 16 | ||
352 | |||
353 | /* Master union for resource descriptors */ | ||
354 | |||
355 | union acpi_resource_data { | ||
356 | struct acpi_resource_irq irq; | ||
357 | struct acpi_resource_dma dma; | ||
358 | struct acpi_resource_start_dependent start_dpf; | ||
359 | struct acpi_resource_io io; | ||
360 | struct acpi_resource_fixed_io fixed_io; | ||
361 | struct acpi_resource_vendor vendor; | ||
362 | struct acpi_resource_vendor_typed vendor_typed; | ||
363 | struct acpi_resource_end_tag end_tag; | ||
364 | struct acpi_resource_memory24 memory24; | ||
365 | struct acpi_resource_memory32 memory32; | ||
366 | struct acpi_resource_fixed_memory32 fixed_memory32; | ||
367 | struct acpi_resource_address16 address16; | ||
368 | struct acpi_resource_address32 address32; | ||
369 | struct acpi_resource_address64 address64; | ||
370 | struct acpi_resource_extended_address64 ext_address64; | ||
371 | struct acpi_resource_extended_irq extended_irq; | ||
372 | struct acpi_resource_generic_register generic_reg; | ||
373 | |||
374 | /* Common fields */ | ||
375 | |||
376 | struct acpi_resource_address address; /* Common 16/32/64 address fields */ | ||
377 | }; | ||
378 | |||
379 | /* Common resource header */ | ||
380 | |||
381 | struct acpi_resource { | ||
382 | u32 type; | ||
383 | u32 length; | ||
384 | union acpi_resource_data data; | ||
385 | }; | ||
386 | |||
387 | /* restore default alignment */ | ||
388 | |||
389 | #pragma pack() | ||
390 | |||
391 | #define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ | ||
392 | #define ACPI_RS_SIZE_MIN (u32) ACPI_ROUND_UP_TO_NATIVE_WORD (12) | ||
393 | #define ACPI_RS_SIZE(type) (u32) (ACPI_RS_SIZE_NO_DATA + sizeof (type)) | ||
394 | |||
395 | #define ACPI_NEXT_RESOURCE(res) (struct acpi_resource *)((u8 *) res + res->length) | ||
396 | |||
397 | struct acpi_pci_routing_table { | ||
398 | u32 length; | ||
399 | u32 pin; | ||
400 | acpi_integer address; /* here for 64-bit alignment */ | ||
401 | u32 source_index; | ||
402 | char source[4]; /* pad to 64 bits so sizeof() works in all cases */ | ||
403 | }; | ||
404 | |||
405 | #endif /* __ACRESTYP_H__ */ | ||