Deleted Added
sdiff udiff text old ( 151937 ) new ( 167802 )
full compact
1
2/******************************************************************************
3 *
4 * Module Name: amlresrc.h - AML resource descriptors
5 * $Revision: 1.40 $
6 *
7 *****************************************************************************/
8
9/******************************************************************************
10 *
11 * 1. Copyright Notice
12 *
13 * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
14 * All rights reserved.
15 *
16 * 2. License
17 *
18 * 2.1. This is your license from Intel Corp. under its intellectual property
19 * rights. You may have additional license terms from the party that provided
20 * you this software, covering your right to use that party's intellectual
21 * property rights.

--- 88 unchanged lines hidden (view full) ---

110 * any of its subsidiaries will export/re-export any technical data, process,
111 * software, or service, directly or indirectly, to any country for which the
112 * United States government or any agency thereof requires an export license,
113 * other governmental approval, or letter of assurance, without first obtaining
114 * such license, approval or letter.
115 *
116 *****************************************************************************/
117
118/* acpisrc:StructDefs -- for acpisrc conversion */
119
120#ifndef __AMLRESRC_H
121#define __AMLRESRC_H
122
123
124/*
125 * Resource descriptor tags, as defined in the ACPI specification.
126 * Used to symbolically reference fields within a descriptor.
127 */
128#define ACPI_RESTAG_ADDRESS "_ADR"
129#define ACPI_RESTAG_ALIGNMENT "_ALN"
130#define ACPI_RESTAG_ADDRESSSPACE "_ASI"
131#define ACPI_RESTAG_ACCESSSIZE "_ASZ"
132#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"
133#define ACPI_RESTAG_BASEADDRESS "_BAS"
134#define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */
135#define ACPI_RESTAG_DECODE "_DEC"
136#define ACPI_RESTAG_DMA "_DMA"
137#define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
138#define ACPI_RESTAG_GRANULARITY "_GRA"
139#define ACPI_RESTAG_INTERRUPT "_INT"
140#define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */
141#define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */
142#define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
143#define ACPI_RESTAG_LENGTH "_LEN"
144#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
145#define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
146#define ACPI_RESTAG_MAXADDR "_MAX"
147#define ACPI_RESTAG_MINADDR "_MIN"
148#define ACPI_RESTAG_MAXTYPE "_MAF"
149#define ACPI_RESTAG_MINTYPE "_MIF"
150#define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"
151#define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"
152#define ACPI_RESTAG_RANGETYPE "_RNG"
153#define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */
154#define ACPI_RESTAG_TRANSLATION "_TRA"
155#define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
156#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */
157#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */
158
159
160/* Default sizes for "small" resource descriptors */
161
162#define ASL_RDESC_IRQ_SIZE 0x02
163#define ASL_RDESC_DMA_SIZE 0x02
164#define ASL_RDESC_ST_DEPEND_SIZE 0x00
165#define ASL_RDESC_END_DEPEND_SIZE 0x00
166#define ASL_RDESC_IO_SIZE 0x07
167#define ASL_RDESC_FIXED_IO_SIZE 0x03
168#define ASL_RDESC_END_TAG_SIZE 0x01
169
170
171typedef struct asl_resource_node
172{
173 UINT32 BufferLength;
174 void *Buffer;
175 struct asl_resource_node *Next;
176
177} ASL_RESOURCE_NODE;
178
179
180/* Macros used to generate AML resource length fields */
181
182#define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
183#define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
184
185/*
186 * Resource descriptors defined in the ACPI specification.
187 *
188 * Packing/alignment must be BYTE because these descriptors
189 * are used to overlay the raw AML byte stream.
190 */
191#pragma pack(1)
192
193/*
194 * SMALL descriptors
195 */
196#define AML_RESOURCE_SMALL_HEADER_COMMON \
197 UINT8 DescriptorType;
198
199typedef struct aml_resource_small_header
200{
201 AML_RESOURCE_SMALL_HEADER_COMMON
202
203} AML_RESOURCE_SMALL_HEADER;
204
205
206typedef struct aml_resource_irq
207{
208 AML_RESOURCE_SMALL_HEADER_COMMON
209 UINT16 IrqMask;
210 UINT8 Flags;
211
212} AML_RESOURCE_IRQ;
213
214
215typedef struct aml_resource_irq_noflags
216{
217 AML_RESOURCE_SMALL_HEADER_COMMON
218 UINT16 IrqMask;
219
220} AML_RESOURCE_IRQ_NOFLAGS;
221
222
223typedef struct aml_resource_dma
224{
225 AML_RESOURCE_SMALL_HEADER_COMMON
226 UINT8 DmaChannelMask;
227 UINT8 Flags;
228
229} AML_RESOURCE_DMA;
230
231
232typedef struct aml_resource_start_dependent
233{
234 AML_RESOURCE_SMALL_HEADER_COMMON
235 UINT8 Flags;
236
237} AML_RESOURCE_START_DEPENDENT;
238
239
240typedef struct aml_resource_start_dependent_noprio
241{
242 AML_RESOURCE_SMALL_HEADER_COMMON
243

--- 5 unchanged lines hidden (view full) ---

249 AML_RESOURCE_SMALL_HEADER_COMMON
250
251} AML_RESOURCE_END_DEPENDENT;
252
253
254typedef struct aml_resource_io
255{
256 AML_RESOURCE_SMALL_HEADER_COMMON
257 UINT8 Flags;
258 UINT16 Minimum;
259 UINT16 Maximum;
260 UINT8 Alignment;
261 UINT8 AddressLength;
262
263} AML_RESOURCE_IO;
264
265
266typedef struct aml_resource_fixed_io
267{
268 AML_RESOURCE_SMALL_HEADER_COMMON
269 UINT16 Address;
270 UINT8 AddressLength;
271
272} AML_RESOURCE_FIXED_IO;
273
274
275typedef struct aml_resource_vendor_small
276{
277 AML_RESOURCE_SMALL_HEADER_COMMON
278
279} AML_RESOURCE_VENDOR_SMALL;
280
281
282typedef struct aml_resource_end_tag
283{
284 AML_RESOURCE_SMALL_HEADER_COMMON
285 UINT8 Checksum;
286
287} AML_RESOURCE_END_TAG;
288
289
290/*
291 * LARGE descriptors
292 */
293#define AML_RESOURCE_LARGE_HEADER_COMMON \
294 UINT8 DescriptorType;\
295 UINT16 ResourceLength;
296
297typedef struct aml_resource_large_header
298{
299 AML_RESOURCE_LARGE_HEADER_COMMON
300
301} AML_RESOURCE_LARGE_HEADER;
302
303
304typedef struct aml_resource_memory24
305{
306 AML_RESOURCE_LARGE_HEADER_COMMON
307 UINT8 Flags;
308 UINT16 Minimum;
309 UINT16 Maximum;
310 UINT16 Alignment;
311 UINT16 AddressLength;
312
313} AML_RESOURCE_MEMORY24;
314
315
316typedef struct aml_resource_vendor_large
317{
318 AML_RESOURCE_LARGE_HEADER_COMMON
319
320} AML_RESOURCE_VENDOR_LARGE;
321
322
323typedef struct aml_resource_memory32
324{
325 AML_RESOURCE_LARGE_HEADER_COMMON
326 UINT8 Flags;
327 UINT32 Minimum;
328 UINT32 Maximum;
329 UINT32 Alignment;
330 UINT32 AddressLength;
331
332} AML_RESOURCE_MEMORY32;
333
334
335typedef struct aml_resource_fixed_memory32
336{
337 AML_RESOURCE_LARGE_HEADER_COMMON
338 UINT8 Flags;
339 UINT32 Address;
340 UINT32 AddressLength;
341
342} AML_RESOURCE_FIXED_MEMORY32;
343
344
345#define AML_RESOURCE_ADDRESS_COMMON \
346 UINT8 ResourceType; \
347 UINT8 Flags; \
348 UINT8 SpecificFlags;
349
350
351typedef struct aml_resource_address
352{
353 AML_RESOURCE_LARGE_HEADER_COMMON
354 AML_RESOURCE_ADDRESS_COMMON
355
356} AML_RESOURCE_ADDRESS;
357
358
359typedef struct aml_resource_extended_address64
360{
361 AML_RESOURCE_LARGE_HEADER_COMMON
362 AML_RESOURCE_ADDRESS_COMMON
363 UINT8 RevisionID;
364 UINT8 Reserved;
365 UINT64 Granularity;
366 UINT64 Minimum;
367 UINT64 Maximum;
368 UINT64 TranslationOffset;
369 UINT64 AddressLength;
370 UINT64 TypeSpecific;
371
372} AML_RESOURCE_EXTENDED_ADDRESS64;
373
374#define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */
375
376
377typedef struct aml_resource_address64
378{
379 AML_RESOURCE_LARGE_HEADER_COMMON
380 AML_RESOURCE_ADDRESS_COMMON
381 UINT64 Granularity;
382 UINT64 Minimum;
383 UINT64 Maximum;
384 UINT64 TranslationOffset;
385 UINT64 AddressLength;
386
387} AML_RESOURCE_ADDRESS64;
388
389
390typedef struct aml_resource_address32
391{
392 AML_RESOURCE_LARGE_HEADER_COMMON
393 AML_RESOURCE_ADDRESS_COMMON
394 UINT32 Granularity;
395 UINT32 Minimum;
396 UINT32 Maximum;
397 UINT32 TranslationOffset;
398 UINT32 AddressLength;
399
400} AML_RESOURCE_ADDRESS32;
401
402
403typedef struct aml_resource_address16
404{
405 AML_RESOURCE_LARGE_HEADER_COMMON
406 AML_RESOURCE_ADDRESS_COMMON
407 UINT16 Granularity;
408 UINT16 Minimum;
409 UINT16 Maximum;
410 UINT16 TranslationOffset;
411 UINT16 AddressLength;
412
413} AML_RESOURCE_ADDRESS16;
414
415
416typedef struct aml_resource_extended_irq
417{
418 AML_RESOURCE_LARGE_HEADER_COMMON
419 UINT8 Flags;
420 UINT8 InterruptCount;
421 UINT32 Interrupts[1];
422 /* ResSourceIndex, ResSource optional fields follow */
423
424} AML_RESOURCE_EXTENDED_IRQ;
425
426
427typedef struct aml_resource_generic_register
428{
429 AML_RESOURCE_LARGE_HEADER_COMMON
430 UINT8 AddressSpaceId;
431 UINT8 BitWidth;
432 UINT8 BitOffset;
433 UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */
434 UINT64 Address;
435
436} AML_RESOURCE_GENERIC_REGISTER;
437
438/* restore default alignment */
439
440#pragma pack()
441
442/* Union of all resource descriptors, so we can allocate the worst case */
443
444typedef union aml_resource
445{
446 /* Descriptor headers */
447
448 UINT8 DescriptorType;
449 AML_RESOURCE_SMALL_HEADER SmallHeader;
450 AML_RESOURCE_LARGE_HEADER LargeHeader;
451
452 /* Small resource descriptors */
453
454 AML_RESOURCE_IRQ Irq;
455 AML_RESOURCE_DMA Dma;
456 AML_RESOURCE_START_DEPENDENT StartDpf;
457 AML_RESOURCE_END_DEPENDENT EndDpf;
458 AML_RESOURCE_IO Io;
459 AML_RESOURCE_FIXED_IO FixedIo;
460 AML_RESOURCE_VENDOR_SMALL VendorSmall;
461 AML_RESOURCE_END_TAG EndTag;
462
463 /* Large resource descriptors */
464
465 AML_RESOURCE_MEMORY24 Memory24;
466 AML_RESOURCE_GENERIC_REGISTER GenericReg;
467 AML_RESOURCE_VENDOR_LARGE VendorLarge;
468 AML_RESOURCE_MEMORY32 Memory32;
469 AML_RESOURCE_FIXED_MEMORY32 FixedMemory32;
470 AML_RESOURCE_ADDRESS16 Address16;
471 AML_RESOURCE_ADDRESS32 Address32;
472 AML_RESOURCE_ADDRESS64 Address64;
473 AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64;
474 AML_RESOURCE_EXTENDED_IRQ ExtendedIrq;
475
476 /* Utility overlays */
477
478 AML_RESOURCE_ADDRESS Address;
479 UINT32 DwordItem;
480 UINT16 WordItem;
481 UINT8 ByteItem;
482
483} AML_RESOURCE;
484
485#endif
486