diff options
Diffstat (limited to 'include/acpi')
-rw-r--r-- | include/acpi/acconfig.h | 2 | ||||
-rw-r--r-- | include/acpi/acdisasm.h | 40 | ||||
-rw-r--r-- | include/acpi/acglobal.h | 9 | ||||
-rw-r--r-- | include/acpi/aclocal.h | 79 | ||||
-rw-r--r-- | include/acpi/acmacros.h | 58 | ||||
-rw-r--r-- | include/acpi/acpi_drivers.h | 4 | ||||
-rw-r--r-- | include/acpi/acpixf.h | 3 | ||||
-rw-r--r-- | include/acpi/acresrc.h | 313 | ||||
-rw-r--r-- | include/acpi/actypes.h | 152 | ||||
-rw-r--r-- | include/acpi/amlresrc.h | 242 |
10 files changed, 535 insertions, 367 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h index 1427c5cf4304..cb59b018c84c 100644 --- a/include/acpi/acconfig.h +++ b/include/acpi/acconfig.h | |||
@@ -63,7 +63,7 @@ | |||
63 | 63 | ||
64 | /* Current ACPICA subsystem version in YYYYMMDD format */ | 64 | /* Current ACPICA subsystem version in YYYYMMDD format */ |
65 | 65 | ||
66 | #define ACPI_CA_VERSION 0x20050916 | 66 | #define ACPI_CA_VERSION 0x20050930 |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, | 69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, |
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h index 759b4cff4f88..b2921b869bb4 100644 --- a/include/acpi/acdisasm.h +++ b/include/acpi/acdisasm.h | |||
@@ -187,73 +187,67 @@ void acpi_dm_decode_attribute(u8 attribute); | |||
187 | * dmresrcl | 187 | * dmresrcl |
188 | */ | 188 | */ |
189 | void | 189 | void |
190 | acpi_dm_word_descriptor(union asl_resource_desc *resource, | 190 | acpi_dm_word_descriptor(union aml_resource *resource, u32 length, u32 level); |
191 | u32 length, u32 level); | ||
192 | 191 | ||
193 | void | 192 | void |
194 | acpi_dm_dword_descriptor(union asl_resource_desc *resource, | 193 | acpi_dm_dword_descriptor(union aml_resource *resource, u32 length, u32 level); |
195 | u32 length, u32 level); | ||
196 | 194 | ||
197 | void | 195 | void |
198 | acpi_dm_extended_descriptor(union asl_resource_desc *resource, | 196 | acpi_dm_extended_descriptor(union aml_resource *resource, |
199 | u32 length, u32 level); | 197 | u32 length, u32 level); |
200 | 198 | ||
201 | void | 199 | void |
202 | acpi_dm_qword_descriptor(union asl_resource_desc *resource, | 200 | acpi_dm_qword_descriptor(union aml_resource *resource, u32 length, u32 level); |
203 | u32 length, u32 level); | ||
204 | 201 | ||
205 | void | 202 | void |
206 | acpi_dm_memory24_descriptor(union asl_resource_desc *resource, | 203 | acpi_dm_memory24_descriptor(union aml_resource *resource, |
207 | u32 length, u32 level); | 204 | u32 length, u32 level); |
208 | 205 | ||
209 | void | 206 | void |
210 | acpi_dm_memory32_descriptor(union asl_resource_desc *resource, | 207 | acpi_dm_memory32_descriptor(union aml_resource *resource, |
211 | u32 length, u32 level); | 208 | u32 length, u32 level); |
212 | 209 | ||
213 | void | 210 | void |
214 | acpi_dm_fixed_memory32_descriptor(union asl_resource_desc *resource, | 211 | acpi_dm_fixed_memory32_descriptor(union aml_resource *resource, |
215 | u32 length, u32 level); | 212 | u32 length, u32 level); |
216 | 213 | ||
217 | void | 214 | void |
218 | acpi_dm_generic_register_descriptor(union asl_resource_desc *resource, | 215 | acpi_dm_generic_register_descriptor(union aml_resource *resource, |
219 | u32 length, u32 level); | 216 | u32 length, u32 level); |
220 | 217 | ||
221 | void | 218 | void |
222 | acpi_dm_interrupt_descriptor(union asl_resource_desc *resource, | 219 | acpi_dm_interrupt_descriptor(union aml_resource *resource, |
223 | u32 length, u32 level); | 220 | u32 length, u32 level); |
224 | 221 | ||
225 | void | 222 | void |
226 | acpi_dm_vendor_large_descriptor(union asl_resource_desc *resource, | 223 | acpi_dm_vendor_large_descriptor(union aml_resource *resource, |
227 | u32 length, u32 level); | 224 | u32 length, u32 level); |
228 | 225 | ||
229 | /* | 226 | /* |
230 | * dmresrcs | 227 | * dmresrcs |
231 | */ | 228 | */ |
232 | void | 229 | void |
233 | acpi_dm_irq_descriptor(union asl_resource_desc *resource, | 230 | acpi_dm_irq_descriptor(union aml_resource *resource, u32 length, u32 level); |
234 | u32 length, u32 level); | ||
235 | 231 | ||
236 | void | 232 | void |
237 | acpi_dm_dma_descriptor(union asl_resource_desc *resource, | 233 | acpi_dm_dma_descriptor(union aml_resource *resource, u32 length, u32 level); |
238 | u32 length, u32 level); | ||
239 | 234 | ||
240 | void | 235 | void acpi_dm_io_descriptor(union aml_resource *resource, u32 length, u32 level); |
241 | acpi_dm_io_descriptor(union asl_resource_desc *resource, u32 length, u32 level); | ||
242 | 236 | ||
243 | void | 237 | void |
244 | acpi_dm_fixed_io_descriptor(union asl_resource_desc *resource, | 238 | acpi_dm_fixed_io_descriptor(union aml_resource *resource, |
245 | u32 length, u32 level); | 239 | u32 length, u32 level); |
246 | 240 | ||
247 | void | 241 | void |
248 | acpi_dm_start_dependent_descriptor(union asl_resource_desc *resource, | 242 | acpi_dm_start_dependent_descriptor(union aml_resource *resource, |
249 | u32 length, u32 level); | 243 | u32 length, u32 level); |
250 | 244 | ||
251 | void | 245 | void |
252 | acpi_dm_end_dependent_descriptor(union asl_resource_desc *resource, | 246 | acpi_dm_end_dependent_descriptor(union aml_resource *resource, |
253 | u32 length, u32 level); | 247 | u32 length, u32 level); |
254 | 248 | ||
255 | void | 249 | void |
256 | acpi_dm_vendor_small_descriptor(union asl_resource_desc *resource, | 250 | acpi_dm_vendor_small_descriptor(union aml_resource *resource, |
257 | u32 length, u32 level); | 251 | u32 length, u32 level); |
258 | 252 | ||
259 | /* | 253 | /* |
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h index e9c2790139ec..cef51b1ddf94 100644 --- a/include/acpi/acglobal.h +++ b/include/acpi/acglobal.h | |||
@@ -80,6 +80,15 @@ extern u32 acpi_dbg_layer; | |||
80 | 80 | ||
81 | extern u32 acpi_gbl_nesting_level; | 81 | extern u32 acpi_gbl_nesting_level; |
82 | 82 | ||
83 | /* Support for dynamic control method tracing mechanism */ | ||
84 | |||
85 | ACPI_EXTERN u32 acpi_gbl_original_dbg_level; | ||
86 | ACPI_EXTERN u32 acpi_gbl_original_dbg_layer; | ||
87 | ACPI_EXTERN acpi_name acpi_gbl_trace_method_name; | ||
88 | ACPI_EXTERN u32 acpi_gbl_trace_dbg_level; | ||
89 | ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer; | ||
90 | ACPI_EXTERN u32 acpi_gbl_trace_flags; | ||
91 | |||
83 | /***************************************************************************** | 92 | /***************************************************************************** |
84 | * | 93 | * |
85 | * Runtime configuration (static defaults that can be overriden at runtime) | 94 | * Runtime configuration (static defaults that can be overriden at runtime) |
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h index 76ac1533c405..dca0d40ea395 100644 --- a/include/acpi/aclocal.h +++ b/include/acpi/aclocal.h | |||
@@ -735,59 +735,52 @@ struct acpi_bit_register_info { | |||
735 | 735 | ||
736 | /* resource_type values */ | 736 | /* resource_type values */ |
737 | 737 | ||
738 | #define ACPI_RESOURCE_TYPE_MEMORY_RANGE 0 | 738 | #define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0 |
739 | #define ACPI_RESOURCE_TYPE_IO_RANGE 1 | 739 | #define ACPI_ADDRESS_TYPE_IO_RANGE 1 |
740 | #define ACPI_RESOURCE_TYPE_BUS_NUMBER_RANGE 2 | 740 | #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2 |
741 | 741 | ||
742 | /* Resource descriptor types and masks */ | 742 | /* Resource descriptor types and masks */ |
743 | 743 | ||
744 | #define ACPI_RDESC_TYPE_LARGE 0x80 | 744 | #define ACPI_RESOURCE_NAME_LARGE 0x80 |
745 | #define ACPI_RDESC_TYPE_SMALL 0x00 | 745 | #define ACPI_RESOURCE_NAME_SMALL 0x00 |
746 | 746 | ||
747 | #define ACPI_RDESC_SMALL_MASK 0x78 /* Bits 6:3 contain the type */ | 747 | #define ACPI_RESOURCE_NAME_SMALL_MASK 0x78 /* Bits 6:3 contain the type */ |
748 | #define ACPI_RDESC_SMALL_LENGTH_MASK 0x07 /* Bits 2:0 contain the length */ | 748 | #define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07 /* Bits 2:0 contain the length */ |
749 | #define ACPI_RDESC_LARGE_MASK 0x7F /* Bits 6:0 contain the type */ | 749 | #define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F /* Bits 6:0 contain the type */ |
750 | 750 | ||
751 | /* | 751 | /* |
752 | * Small resource descriptor types | 752 | * Small resource descriptor "names" as defined by the ACPI specification. |
753 | * Note: Bits 2:0 are used for the descriptor length | 753 | * Note: Bits 2:0 are used for the descriptor length |
754 | */ | 754 | */ |
755 | #define ACPI_RDESC_TYPE_IRQ_FORMAT 0x20 | 755 | #define ACPI_RESOURCE_NAME_IRQ 0x20 |
756 | #define ACPI_RDESC_TYPE_DMA_FORMAT 0x28 | 756 | #define ACPI_RESOURCE_NAME_DMA 0x28 |
757 | #define ACPI_RDESC_TYPE_START_DEPENDENT 0x30 | 757 | #define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30 |
758 | #define ACPI_RDESC_TYPE_END_DEPENDENT 0x38 | 758 | #define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38 |
759 | #define ACPI_RDESC_TYPE_IO_PORT 0x40 | 759 | #define ACPI_RESOURCE_NAME_IO 0x40 |
760 | #define ACPI_RDESC_TYPE_FIXED_IO_PORT 0x48 | 760 | #define ACPI_RESOURCE_NAME_FIXED_IO 0x48 |
761 | #define ACPI_RDESC_TYPE_RESERVED_S1 0x50 | 761 | #define ACPI_RESOURCE_NAME_RESERVED_S1 0x50 |
762 | #define ACPI_RDESC_TYPE_RESERVED_S2 0x58 | 762 | #define ACPI_RESOURCE_NAME_RESERVED_S2 0x58 |
763 | #define ACPI_RDESC_TYPE_RESERVED_S3 0x60 | 763 | #define ACPI_RESOURCE_NAME_RESERVED_S3 0x60 |
764 | #define ACPI_RDESC_TYPE_RESERVED_S4 0x68 | 764 | #define ACPI_RESOURCE_NAME_RESERVED_S4 0x68 |
765 | #define ACPI_RDESC_TYPE_SMALL_VENDOR 0x70 | 765 | #define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70 |
766 | #define ACPI_RDESC_TYPE_END_TAG 0x78 | 766 | #define ACPI_RESOURCE_NAME_END_TAG 0x78 |
767 | 767 | ||
768 | /* | 768 | /* |
769 | * Large resource descriptor types | 769 | * Large resource descriptor "names" as defined by the ACPI specification. |
770 | * Note: includes the Large Descriptor bit in bit[7] | ||
770 | */ | 771 | */ |
771 | #define ACPI_RDESC_TYPE_MEMORY_24 0x81 | 772 | #define ACPI_RESOURCE_NAME_MEMORY24 0x81 |
772 | #define ACPI_RDESC_TYPE_GENERIC_REGISTER 0x82 | 773 | #define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82 |
773 | #define ACPI_RDESC_TYPE_RESERVED_L1 0x83 | 774 | #define ACPI_RESOURCE_NAME_RESERVED_L1 0x83 |
774 | #define ACPI_RDESC_TYPE_LARGE_VENDOR 0x84 | 775 | #define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84 |
775 | #define ACPI_RDESC_TYPE_MEMORY_32 0x85 | 776 | #define ACPI_RESOURCE_NAME_MEMORY32 0x85 |
776 | #define ACPI_RDESC_TYPE_FIXED_MEMORY_32 0x86 | 777 | #define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86 |
777 | #define ACPI_RDESC_TYPE_DWORD_ADDRESS_SPACE 0x87 | 778 | #define ACPI_RESOURCE_NAME_ADDRESS32 0x87 |
778 | #define ACPI_RDESC_TYPE_WORD_ADDRESS_SPACE 0x88 | 779 | #define ACPI_RESOURCE_NAME_ADDRESS16 0x88 |
779 | #define ACPI_RDESC_TYPE_EXTENDED_XRUPT 0x89 | 780 | #define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89 |
780 | #define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A | 781 | #define ACPI_RESOURCE_NAME_ADDRESS64 0x8A |
781 | #define ACPI_RDESC_TYPE_EXTENDED_ADDRESS_SPACE 0x8B | 782 | #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B |
782 | #define ACPI_RDESC_LARGE_MAX 0x8B | 783 | #define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B |
783 | |||
784 | /* | ||
785 | * Minimum lengths for descriptors with optional fields | ||
786 | */ | ||
787 | #define ACPI_RDESC_QWORD_MIN 43 | ||
788 | #define ACPI_RDESC_DWORD_MIN 23 | ||
789 | #define ACPI_RDESC_WORD_MIN 13 | ||
790 | #define ACPI_RDESC_EXT_XRUPT_MIN 6 | ||
791 | 784 | ||
792 | /***************************************************************************** | 785 | /***************************************************************************** |
793 | * | 786 | * |
@@ -795,7 +788,7 @@ struct acpi_bit_register_info { | |||
795 | * | 788 | * |
796 | ****************************************************************************/ | 789 | ****************************************************************************/ |
797 | 790 | ||
798 | #define ACPI_ASCII_ZERO 0x30 | 791 | #define ACPI_ASCII_ZERO 0x30 |
799 | 792 | ||
800 | /***************************************************************************** | 793 | /***************************************************************************** |
801 | * | 794 | * |
diff --git a/include/acpi/acmacros.h b/include/acpi/acmacros.h index 702cc4e57f5f..258cfe5e2aac 100644 --- a/include/acpi/acmacros.h +++ b/include/acpi/acmacros.h | |||
@@ -525,6 +525,9 @@ | |||
525 | * bad form, but having a separate exit macro is very ugly and difficult to maintain. | 525 | * bad form, but having a separate exit macro is very ugly and difficult to maintain. |
526 | * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros | 526 | * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros |
527 | * so that "_acpi_function_name" is defined. | 527 | * so that "_acpi_function_name" is defined. |
528 | * | ||
529 | * Note: the DO_WHILE0 macro is used to prevent some compilers from complaining | ||
530 | * about these constructs. | ||
528 | */ | 531 | */ |
529 | #ifdef ACPI_USE_DO_WHILE_0 | 532 | #ifdef ACPI_USE_DO_WHILE_0 |
530 | #define ACPI_DO_WHILE0(a) do a while(0) | 533 | #define ACPI_DO_WHILE0(a) do a while(0) |
@@ -532,10 +535,55 @@ | |||
532 | #define ACPI_DO_WHILE0(a) a | 535 | #define ACPI_DO_WHILE0(a) a |
533 | #endif | 536 | #endif |
534 | 537 | ||
535 | #define return_VOID ACPI_DO_WHILE0 ({acpi_ut_exit(ACPI_DEBUG_PARAMETERS);return;}) | 538 | #define return_VOID ACPI_DO_WHILE0 ({ \ |
536 | #define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({acpi_ut_status_exit(ACPI_DEBUG_PARAMETERS,(s));return((s));}) | 539 | acpi_ut_exit (ACPI_DEBUG_PARAMETERS); \ |
537 | #define return_VALUE(s) ACPI_DO_WHILE0 ({acpi_ut_value_exit(ACPI_DEBUG_PARAMETERS,(acpi_integer)(s));return((s));}) | 540 | return;}) |
538 | #define return_PTR(s) ACPI_DO_WHILE0 ({acpi_ut_ptr_exit(ACPI_DEBUG_PARAMETERS,(u8 *)(s));return((s));}) | 541 | /* |
542 | * There are two versions of most of the return macros. The default version is | ||
543 | * safer, since it avoids side-effects by guaranteeing that the argument will | ||
544 | * not be evaluated twice. | ||
545 | * | ||
546 | * A less-safe version of the macros is provided for optional use if the | ||
547 | * compiler uses excessive CPU stack (for example, this may happen in the | ||
548 | * debug case if code optimzation is disabled.) | ||
549 | */ | ||
550 | #ifndef ACPI_SIMPLE_RETURN_MACROS | ||
551 | |||
552 | #define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \ | ||
553 | register acpi_status _s = (s); \ | ||
554 | acpi_ut_status_exit (ACPI_DEBUG_PARAMETERS, _s); \ | ||
555 | return (_s); }) | ||
556 | #define return_PTR(s) ACPI_DO_WHILE0 ({ \ | ||
557 | register void *_s = (void *) (s); \ | ||
558 | acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) _s); \ | ||
559 | return (_s); }) | ||
560 | #define return_VALUE(s) ACPI_DO_WHILE0 ({ \ | ||
561 | register acpi_integer _s = (s); \ | ||
562 | acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, _s); \ | ||
563 | return (_s); }) | ||
564 | #define return_UINT8(s) ACPI_DO_WHILE0 ({ \ | ||
565 | register u8 _s = (u8) (s); \ | ||
566 | acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, _s); \ | ||
567 | return (_s); }) | ||
568 | #define return_UINT32(s) ACPI_DO_WHILE0 ({ \ | ||
569 | register u32 _s = (u32) (s); \ | ||
570 | acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, _s); \ | ||
571 | return (_s); }) | ||
572 | #else /* Use original less-safe macros */ | ||
573 | |||
574 | #define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \ | ||
575 | acpi_ut_status_exit (ACPI_DEBUG_PARAMETERS, (s)); \ | ||
576 | return((s)); }) | ||
577 | #define return_PTR(s) ACPI_DO_WHILE0 ({ \ | ||
578 | acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) (s)); \ | ||
579 | return((s)); }) | ||
580 | #define return_VALUE(s) ACPI_DO_WHILE0 ({ \ | ||
581 | acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (acpi_integer) (s)); \ | ||
582 | return((s)); }) | ||
583 | #define return_UINT8(s) return_VALUE(s) | ||
584 | #define return_UINT32(s) return_VALUE(s) | ||
585 | |||
586 | #endif /* ACPI_SIMPLE_RETURN_MACROS */ | ||
539 | 587 | ||
540 | /* Conditional execution */ | 588 | /* Conditional execution */ |
541 | 589 | ||
@@ -612,6 +660,8 @@ | |||
612 | #define return_VOID return | 660 | #define return_VOID return |
613 | #define return_ACPI_STATUS(s) return(s) | 661 | #define return_ACPI_STATUS(s) return(s) |
614 | #define return_VALUE(s) return(s) | 662 | #define return_VALUE(s) return(s) |
663 | #define return_UINT8(s) return(s) | ||
664 | #define return_UINT32(s) return(s) | ||
615 | #define return_PTR(s) return(s) | 665 | #define return_PTR(s) return(s) |
616 | 666 | ||
617 | #endif | 667 | #endif |
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h index c1b4e1f882e4..b425f9bb6d43 100644 --- a/include/acpi/acpi_drivers.h +++ b/include/acpi/acpi_drivers.h | |||
@@ -52,8 +52,8 @@ | |||
52 | /* ACPI PCI Interrupt Link (pci_link.c) */ | 52 | /* ACPI PCI Interrupt Link (pci_link.c) */ |
53 | 53 | ||
54 | int acpi_irq_penalty_init(void); | 54 | int acpi_irq_penalty_init(void); |
55 | int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *edge_level, | 55 | int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *triggering, |
56 | int *active_high_low, char **name); | 56 | int *polarity, char **name); |
57 | int acpi_pci_link_free_irq(acpi_handle handle); | 57 | int acpi_pci_link_free_irq(acpi_handle handle); |
58 | 58 | ||
59 | /* ACPI PCI Interrupt Routing (pci_irq.c) */ | 59 | /* ACPI PCI Interrupt Routing (pci_irq.c) */ |
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index 2a9dbc13b0f2..02f00a8fee03 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h | |||
@@ -149,6 +149,9 @@ acpi_detach_data(acpi_handle obj_handle, acpi_object_handler handler); | |||
149 | acpi_status | 149 | acpi_status |
150 | acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data); | 150 | acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data); |
151 | 151 | ||
152 | acpi_status | ||
153 | acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags); | ||
154 | |||
152 | /* | 155 | /* |
153 | * Object manipulation and enumeration | 156 | * Object manipulation and enumeration |
154 | */ | 157 | */ |
diff --git a/include/acpi/acresrc.h b/include/acpi/acresrc.h index ce2cf72fd4c8..b66994e9e4ee 100644 --- a/include/acpi/acresrc.h +++ b/include/acpi/acresrc.h | |||
@@ -44,6 +44,51 @@ | |||
44 | #ifndef __ACRESRC_H__ | 44 | #ifndef __ACRESRC_H__ |
45 | #define __ACRESRC_H__ | 45 | #define __ACRESRC_H__ |
46 | 46 | ||
47 | /* Need the AML resource descriptor structs */ | ||
48 | |||
49 | #include "amlresrc.h" | ||
50 | |||
51 | /* | ||
52 | * Resource dispatch and info tables | ||
53 | */ | ||
54 | struct acpi_resource_info { | ||
55 | u8 length_type; | ||
56 | u8 minimum_aml_resource_length; | ||
57 | u8 minimum_internal_struct_length; | ||
58 | }; | ||
59 | |||
60 | /* Types for length_type above */ | ||
61 | |||
62 | #define ACPI_FIXED_LENGTH 0 | ||
63 | #define ACPI_VARIABLE_LENGTH 1 | ||
64 | #define ACPI_SMALL_VARIABLE_LENGTH 2 | ||
65 | |||
66 | /* Handlers */ | ||
67 | |||
68 | typedef acpi_status(*ACPI_SET_RESOURCE_HANDLER) (struct acpi_resource * | ||
69 | resource, | ||
70 | union aml_resource * aml); | ||
71 | |||
72 | typedef acpi_status(*ACPI_GET_RESOURCE_HANDLER) (union aml_resource * aml, | ||
73 | u16 aml_resource_length, | ||
74 | struct acpi_resource * | ||
75 | resource); | ||
76 | |||
77 | typedef void (*ACPI_DUMP_RESOURCE_HANDLER) (union acpi_resource_data * data); | ||
78 | |||
79 | /* Tables indexed by internal resource type */ | ||
80 | |||
81 | extern u8 acpi_gbl_aml_resource_sizes[]; | ||
82 | extern ACPI_SET_RESOURCE_HANDLER acpi_gbl_set_resource_dispatch[]; | ||
83 | extern ACPI_DUMP_RESOURCE_HANDLER acpi_gbl_dump_resource_dispatch[]; | ||
84 | |||
85 | /* Tables indexed by raw AML resource descriptor type */ | ||
86 | |||
87 | extern struct acpi_resource_info acpi_gbl_sm_resource_info[]; | ||
88 | extern struct acpi_resource_info acpi_gbl_lg_resource_info[]; | ||
89 | extern ACPI_GET_RESOURCE_HANDLER acpi_gbl_sm_get_resource_dispatch[]; | ||
90 | extern ACPI_GET_RESOURCE_HANDLER acpi_gbl_lg_get_resource_dispatch[]; | ||
91 | |||
47 | /* | 92 | /* |
48 | * Function prototypes called from Acpi* APIs | 93 | * Function prototypes called from Acpi* APIs |
49 | */ | 94 | */ |
@@ -66,12 +111,12 @@ acpi_status | |||
66 | acpi_rs_set_srs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); | 111 | acpi_rs_set_srs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); |
67 | 112 | ||
68 | acpi_status | 113 | acpi_status |
69 | acpi_rs_create_resource_list(union acpi_operand_object *byte_stream_buffer, | 114 | acpi_rs_create_resource_list(union acpi_operand_object *aml_buffer, |
70 | struct acpi_buffer *output_buffer); | 115 | struct acpi_buffer *output_buffer); |
71 | 116 | ||
72 | acpi_status | 117 | acpi_status |
73 | acpi_rs_create_byte_stream(struct acpi_resource *linked_list_buffer, | 118 | acpi_rs_create_aml_resources(struct acpi_resource *linked_list_buffer, |
74 | struct acpi_buffer *output_buffer); | 119 | struct acpi_buffer *output_buffer); |
75 | 120 | ||
76 | acpi_status | 121 | acpi_status |
77 | acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object, | 122 | acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object, |
@@ -90,184 +135,240 @@ void acpi_rs_dump_irq_list(u8 * route_table); | |||
90 | * rscalc | 135 | * rscalc |
91 | */ | 136 | */ |
92 | acpi_status | 137 | acpi_status |
93 | acpi_rs_get_byte_stream_start(u8 * byte_stream_buffer, | 138 | acpi_rs_get_list_length(u8 * aml_buffer, |
94 | u8 ** byte_stream_start, u32 * size); | 139 | u32 aml_buffer_length, acpi_size * size_needed); |
95 | |||
96 | acpi_status | ||
97 | acpi_rs_get_list_length(u8 * byte_stream_buffer, | ||
98 | u32 byte_stream_buffer_length, acpi_size * size_needed); | ||
99 | 140 | ||
100 | acpi_status | 141 | acpi_status |
101 | acpi_rs_get_byte_stream_length(struct acpi_resource *linked_list_buffer, | 142 | acpi_rs_get_aml_length(struct acpi_resource *linked_list_buffer, |
102 | acpi_size * size_needed); | 143 | acpi_size * size_needed); |
103 | 144 | ||
104 | acpi_status | 145 | acpi_status |
105 | acpi_rs_get_pci_routing_table_length(union acpi_operand_object *package_object, | 146 | acpi_rs_get_pci_routing_table_length(union acpi_operand_object *package_object, |
106 | acpi_size * buffer_size_needed); | 147 | acpi_size * buffer_size_needed); |
107 | 148 | ||
108 | acpi_status | 149 | acpi_status |
109 | acpi_rs_byte_stream_to_list(u8 * byte_stream_buffer, | 150 | acpi_rs_convert_aml_to_resources(u8 * aml_buffer, |
110 | u32 byte_stream_buffer_length, u8 * output_buffer); | 151 | u32 aml_buffer_length, u8 * output_buffer); |
111 | 152 | ||
112 | acpi_status | 153 | acpi_status |
113 | acpi_rs_list_to_byte_stream(struct acpi_resource *resource, | 154 | acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, |
114 | acpi_size byte_stream_size_needed, | 155 | acpi_size aml_size_needed, u8 * output_buffer); |
115 | u8 * output_buffer); | ||
116 | 156 | ||
157 | /* | ||
158 | * rsio | ||
159 | */ | ||
117 | acpi_status | 160 | acpi_status |
118 | acpi_rs_io_resource(u8 * byte_stream_buffer, | 161 | acpi_rs_get_io(union aml_resource *aml, |
119 | acpi_size * bytes_consumed, | 162 | u16 aml_resource_length, struct acpi_resource *resource); |
120 | u8 ** output_buffer, acpi_size * structure_size); | ||
121 | 163 | ||
122 | acpi_status | 164 | acpi_status |
123 | acpi_rs_fixed_io_resource(u8 * byte_stream_buffer, | 165 | acpi_rs_set_io(struct acpi_resource *resource, union aml_resource *aml); |
124 | acpi_size * bytes_consumed, | ||
125 | u8 ** output_buffer, acpi_size * structure_size); | ||
126 | 166 | ||
127 | acpi_status | 167 | acpi_status |
128 | acpi_rs_io_stream(struct acpi_resource *resource, | 168 | acpi_rs_get_fixed_io(union aml_resource *aml, |
129 | u8 ** output_buffer, acpi_size * bytes_consumed); | 169 | u16 aml_resource_length, struct acpi_resource *resource); |
130 | 170 | ||
131 | acpi_status | 171 | acpi_status |
132 | acpi_rs_fixed_io_stream(struct acpi_resource *resource, | 172 | acpi_rs_set_fixed_io(struct acpi_resource *resource, union aml_resource *aml); |
133 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
134 | 173 | ||
135 | acpi_status | 174 | acpi_status |
136 | acpi_rs_irq_resource(u8 * byte_stream_buffer, | 175 | acpi_rs_get_dma(union aml_resource *aml, |
137 | acpi_size * bytes_consumed, | 176 | u16 aml_resource_length, struct acpi_resource *resource); |
138 | u8 ** output_buffer, acpi_size * structure_size); | ||
139 | 177 | ||
140 | acpi_status | 178 | acpi_status |
141 | acpi_rs_irq_stream(struct acpi_resource *resource, | 179 | acpi_rs_set_dma(struct acpi_resource *resource, union aml_resource *aml); |
142 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
143 | 180 | ||
181 | /* | ||
182 | * rsirq | ||
183 | */ | ||
144 | acpi_status | 184 | acpi_status |
145 | acpi_rs_dma_resource(u8 * byte_stream_buffer, | 185 | acpi_rs_get_irq(union aml_resource *aml, |
146 | acpi_size * bytes_consumed, | 186 | u16 aml_resource_length, struct acpi_resource *resource); |
147 | u8 ** output_buffer, acpi_size * structure_size); | ||
148 | 187 | ||
149 | acpi_status | 188 | acpi_status |
150 | acpi_rs_dma_stream(struct acpi_resource *resource, | 189 | acpi_rs_set_irq(struct acpi_resource *resource, union aml_resource *aml); |
151 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
152 | 190 | ||
153 | acpi_status | 191 | acpi_status |
154 | acpi_rs_address16_resource(u8 * byte_stream_buffer, | 192 | acpi_rs_get_ext_irq(union aml_resource *aml, |
155 | acpi_size * bytes_consumed, | 193 | u16 aml_resource_length, struct acpi_resource *resource); |
156 | u8 ** output_buffer, acpi_size * structure_size); | ||
157 | 194 | ||
158 | acpi_status | 195 | acpi_status |
159 | acpi_rs_address16_stream(struct acpi_resource *resource, | 196 | acpi_rs_set_ext_irq(struct acpi_resource *resource, union aml_resource *aml); |
160 | u8 ** output_buffer, acpi_size * bytes_consumed); | 197 | |
198 | /* | ||
199 | * rsaddr | ||
200 | */ | ||
201 | acpi_status | ||
202 | acpi_rs_get_address16(union aml_resource *aml, | ||
203 | u16 aml_resource_length, struct acpi_resource *resource); | ||
161 | 204 | ||
162 | acpi_status | 205 | acpi_status |
163 | acpi_rs_address32_resource(u8 * byte_stream_buffer, | 206 | acpi_rs_set_address16(struct acpi_resource *resource, union aml_resource *aml); |
164 | acpi_size * bytes_consumed, | ||
165 | u8 ** output_buffer, acpi_size * structure_size); | ||
166 | 207 | ||
167 | acpi_status | 208 | acpi_status |
168 | acpi_rs_address32_stream(struct acpi_resource *resource, | 209 | acpi_rs_get_address32(union aml_resource *aml, |
169 | u8 ** output_buffer, acpi_size * bytes_consumed); | 210 | u16 aml_resource_length, struct acpi_resource *resource); |
170 | 211 | ||
171 | acpi_status | 212 | acpi_status |
172 | acpi_rs_address64_resource(u8 * byte_stream_buffer, | 213 | acpi_rs_set_address32(struct acpi_resource *resource, union aml_resource *aml); |
173 | acpi_size * bytes_consumed, | ||
174 | u8 ** output_buffer, acpi_size * structure_size); | ||
175 | 214 | ||
176 | acpi_status | 215 | acpi_status |
177 | acpi_rs_address64_stream(struct acpi_resource *resource, | 216 | acpi_rs_get_address64(union aml_resource *aml, |
178 | u8 ** output_buffer, acpi_size * bytes_consumed); | 217 | u16 aml_resource_length, struct acpi_resource *resource); |
179 | 218 | ||
180 | acpi_status | 219 | acpi_status |
181 | acpi_rs_start_depend_fns_resource(u8 * byte_stream_buffer, | 220 | acpi_rs_set_address64(struct acpi_resource *resource, union aml_resource *aml); |
182 | acpi_size * bytes_consumed, | 221 | |
183 | u8 ** output_buffer, | 222 | acpi_status |
184 | acpi_size * structure_size); | 223 | acpi_rs_get_ext_address64(union aml_resource *aml, |
224 | u16 aml_resource_length, | ||
225 | struct acpi_resource *resource); | ||
226 | |||
227 | acpi_status | ||
228 | acpi_rs_set_ext_address64(struct acpi_resource *resource, | ||
229 | union aml_resource *aml); | ||
230 | |||
231 | /* | ||
232 | * rsmemory | ||
233 | */ | ||
234 | acpi_status | ||
235 | acpi_rs_get_memory24(union aml_resource *aml, | ||
236 | u16 aml_resource_length, struct acpi_resource *resource); | ||
185 | 237 | ||
186 | acpi_status | 238 | acpi_status |
187 | acpi_rs_end_depend_fns_resource(u8 * byte_stream_buffer, | 239 | acpi_rs_set_memory24(struct acpi_resource *resource, union aml_resource *aml); |
188 | acpi_size * bytes_consumed, | ||
189 | u8 ** output_buffer, | ||
190 | acpi_size * structure_size); | ||
191 | 240 | ||
192 | acpi_status | 241 | acpi_status |
193 | acpi_rs_start_depend_fns_stream(struct acpi_resource *resource, | 242 | acpi_rs_get_memory32(union aml_resource *aml, |
194 | u8 ** output_buffer, | 243 | u16 aml_resource_length, struct acpi_resource *resource); |
195 | acpi_size * bytes_consumed); | ||
196 | 244 | ||
197 | acpi_status | 245 | acpi_status |
198 | acpi_rs_end_depend_fns_stream(struct acpi_resource *resource, | 246 | acpi_rs_set_memory32(struct acpi_resource *resource, union aml_resource *aml); |
199 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
200 | 247 | ||
201 | acpi_status | 248 | acpi_status |
202 | acpi_rs_memory24_resource(u8 * byte_stream_buffer, | 249 | acpi_rs_get_fixed_memory32(union aml_resource *aml, |
203 | acpi_size * bytes_consumed, | 250 | u16 aml_resource_length, |
204 | u8 ** output_buffer, acpi_size * structure_size); | 251 | struct acpi_resource *resource); |
205 | 252 | ||
206 | acpi_status | 253 | acpi_status |
207 | acpi_rs_memory24_stream(struct acpi_resource *resource, | 254 | acpi_rs_set_fixed_memory32(struct acpi_resource *resource, |
208 | u8 ** output_buffer, acpi_size * bytes_consumed); | 255 | union aml_resource *aml); |
209 | 256 | ||
257 | /* | ||
258 | * rsmisc | ||
259 | */ | ||
210 | acpi_status | 260 | acpi_status |
211 | acpi_rs_memory32_range_resource(u8 * byte_stream_buffer, | 261 | acpi_rs_get_generic_reg(union aml_resource *aml, |
212 | acpi_size * bytes_consumed, | 262 | u16 aml_resource_length, |
213 | u8 ** output_buffer, | 263 | struct acpi_resource *resource); |
214 | acpi_size * structure_size); | ||
215 | 264 | ||
216 | acpi_status | 265 | acpi_status |
217 | acpi_rs_fixed_memory32_resource(u8 * byte_stream_buffer, | 266 | acpi_rs_set_generic_reg(struct acpi_resource *resource, |
218 | acpi_size * bytes_consumed, | 267 | union aml_resource *aml); |
219 | u8 ** output_buffer, | ||
220 | acpi_size * structure_size); | ||
221 | 268 | ||
222 | acpi_status | 269 | acpi_status |
223 | acpi_rs_memory32_range_stream(struct acpi_resource *resource, | 270 | acpi_rs_get_vendor(union aml_resource *aml, |
224 | u8 ** output_buffer, acpi_size * bytes_consumed); | 271 | u16 aml_resource_length, struct acpi_resource *resource); |
225 | 272 | ||
226 | acpi_status | 273 | acpi_status |
227 | acpi_rs_fixed_memory32_stream(struct acpi_resource *resource, | 274 | acpi_rs_set_vendor(struct acpi_resource *resource, union aml_resource *aml); |
228 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
229 | 275 | ||
230 | acpi_status | 276 | acpi_status |
231 | acpi_rs_extended_irq_resource(u8 * byte_stream_buffer, | 277 | acpi_rs_get_start_dpf(union aml_resource *aml, |
232 | acpi_size * bytes_consumed, | 278 | u16 aml_resource_length, struct acpi_resource *resource); |
233 | u8 ** output_buffer, acpi_size * structure_size); | ||
234 | 279 | ||
235 | acpi_status | 280 | acpi_status |
236 | acpi_rs_extended_irq_stream(struct acpi_resource *resource, | 281 | acpi_rs_set_start_dpf(struct acpi_resource *resource, union aml_resource *aml); |
237 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
238 | 282 | ||
239 | acpi_status | 283 | acpi_status |
240 | acpi_rs_end_tag_resource(u8 * byte_stream_buffer, | 284 | acpi_rs_get_end_dpf(union aml_resource *aml, |
241 | acpi_size * bytes_consumed, | 285 | u16 aml_resource_length, struct acpi_resource *resource); |
242 | u8 ** output_buffer, acpi_size * structure_size); | ||
243 | 286 | ||
244 | acpi_status | 287 | acpi_status |
245 | acpi_rs_end_tag_stream(struct acpi_resource *resource, | 288 | acpi_rs_set_end_dpf(struct acpi_resource *resource, union aml_resource *aml); |
246 | u8 ** output_buffer, acpi_size * bytes_consumed); | ||
247 | 289 | ||
248 | acpi_status | 290 | acpi_status |
249 | acpi_rs_vendor_resource(u8 * byte_stream_buffer, | 291 | acpi_rs_get_end_tag(union aml_resource *aml, |
250 | acpi_size * bytes_consumed, | 292 | u16 aml_resource_length, struct acpi_resource *resource); |
251 | u8 ** output_buffer, acpi_size * structure_size); | ||
252 | 293 | ||
253 | acpi_status | 294 | acpi_status |
254 | acpi_rs_vendor_stream(struct acpi_resource *resource, | 295 | acpi_rs_set_end_tag(struct acpi_resource *resource, union aml_resource *aml); |
255 | u8 ** output_buffer, acpi_size * bytes_consumed); | 296 | |
297 | /* | ||
298 | * rsutils | ||
299 | */ | ||
300 | void | ||
301 | acpi_rs_move_data(void *destination, | ||
302 | void *source, u16 item_count, u8 move_type); | ||
303 | |||
304 | /* Types used in move_type above */ | ||
305 | |||
306 | #define ACPI_MOVE_TYPE_16_TO_32 0 | ||
307 | #define ACPI_MOVE_TYPE_32_TO_16 1 | ||
308 | #define ACPI_MOVE_TYPE_32_TO_32 2 | ||
309 | #define ACPI_MOVE_TYPE_64_TO_64 3 | ||
310 | |||
311 | u16 | ||
312 | acpi_rs_get_resource_source(u16 resource_length, | ||
313 | acpi_size minimum_length, | ||
314 | struct acpi_resource_source *resource_source, | ||
315 | union aml_resource *aml, char *string_ptr); | ||
316 | |||
317 | acpi_size | ||
318 | acpi_rs_set_resource_source(union aml_resource *aml, | ||
319 | acpi_size minimum_length, | ||
320 | struct acpi_resource_source *resource_source); | ||
256 | 321 | ||
257 | u8 acpi_rs_get_resource_type(u8 resource_start_byte); | 322 | u8 acpi_rs_get_resource_type(u8 resource_start_byte); |
258 | 323 | ||
324 | u32 acpi_rs_get_descriptor_length(union aml_resource *aml); | ||
325 | |||
326 | u16 acpi_rs_get_resource_length(union aml_resource *aml); | ||
327 | |||
328 | void | ||
329 | acpi_rs_set_resource_header(u8 descriptor_type, | ||
330 | acpi_size total_length, union aml_resource *aml); | ||
331 | |||
332 | struct acpi_resource_info *acpi_rs_get_resource_info(u8 resource_type); | ||
333 | |||
334 | #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) | ||
259 | /* | 335 | /* |
260 | * rsmisc | 336 | * rsdump |
261 | */ | 337 | */ |
262 | acpi_status | 338 | void acpi_rs_dump_irq(union acpi_resource_data *resource); |
263 | acpi_rs_generic_register_resource(u8 * byte_stream_buffer, | ||
264 | acpi_size * bytes_consumed, | ||
265 | u8 ** output_buffer, | ||
266 | acpi_size * structure_size); | ||
267 | 339 | ||
268 | acpi_status | 340 | void acpi_rs_dump_address16(union acpi_resource_data *resource); |
269 | acpi_rs_generic_register_stream(struct acpi_resource *resource, | 341 | |
270 | u8 ** output_buffer, | 342 | void acpi_rs_dump_address32(union acpi_resource_data *resource); |
271 | acpi_size * bytes_consumed); | 343 | |
344 | void acpi_rs_dump_address64(union acpi_resource_data *resource); | ||
345 | |||
346 | void acpi_rs_dump_ext_address64(union acpi_resource_data *resource); | ||
347 | |||
348 | void acpi_rs_dump_dma(union acpi_resource_data *resource); | ||
349 | |||
350 | void acpi_rs_dump_io(union acpi_resource_data *resource); | ||
351 | |||
352 | void acpi_rs_dump_ext_irq(union acpi_resource_data *resource); | ||
353 | |||
354 | void acpi_rs_dump_fixed_io(union acpi_resource_data *resource); | ||
355 | |||
356 | void acpi_rs_dump_fixed_memory32(union acpi_resource_data *resource); | ||
357 | |||
358 | void acpi_rs_dump_memory24(union acpi_resource_data *resource); | ||
359 | |||
360 | void acpi_rs_dump_memory32(union acpi_resource_data *resource); | ||
361 | |||
362 | void acpi_rs_dump_start_dpf(union acpi_resource_data *resource); | ||
363 | |||
364 | void acpi_rs_dump_vendor(union acpi_resource_data *resource); | ||
365 | |||
366 | void acpi_rs_dump_generic_reg(union acpi_resource_data *resource); | ||
367 | |||
368 | void acpi_rs_dump_end_dpf(union acpi_resource_data *resource); | ||
369 | |||
370 | void acpi_rs_dump_end_tag(union acpi_resource_data *resource); | ||
371 | |||
372 | #endif | ||
272 | 373 | ||
273 | #endif /* __ACRESRC_H__ */ | 374 | #endif /* __ACRESRC_H__ */ |
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 1dfa64fae4ec..43f7c509317a 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h | |||
@@ -978,10 +978,10 @@ struct acpi_mem_space_context { | |||
978 | * Structures used to describe device resources | 978 | * Structures used to describe device resources |
979 | */ | 979 | */ |
980 | struct acpi_resource_irq { | 980 | struct acpi_resource_irq { |
981 | u32 edge_level; | 981 | u32 triggering; |
982 | u32 active_high_low; | 982 | u32 polarity; |
983 | u32 shared_exclusive; | 983 | u32 sharable; |
984 | u32 number_of_interrupts; | 984 | u32 interrupt_count; |
985 | u32 interrupts[1]; | 985 | u32 interrupts[1]; |
986 | }; | 986 | }; |
987 | 987 | ||
@@ -989,11 +989,11 @@ struct acpi_resource_dma { | |||
989 | u32 type; | 989 | u32 type; |
990 | u32 bus_master; | 990 | u32 bus_master; |
991 | u32 transfer; | 991 | u32 transfer; |
992 | u32 number_of_channels; | 992 | u32 channel_count; |
993 | u32 channels[1]; | 993 | u32 channels[1]; |
994 | }; | 994 | }; |
995 | 995 | ||
996 | struct acpi_resource_start_dpf { | 996 | struct acpi_resource_start_dependent { |
997 | u32 compatibility_priority; | 997 | u32 compatibility_priority; |
998 | u32 performance_robustness; | 998 | u32 performance_robustness; |
999 | }; | 999 | }; |
@@ -1005,46 +1005,46 @@ struct acpi_resource_start_dpf { | |||
1005 | 1005 | ||
1006 | struct acpi_resource_io { | 1006 | struct acpi_resource_io { |
1007 | u32 io_decode; | 1007 | u32 io_decode; |
1008 | u32 min_base_address; | 1008 | u32 minimum; |
1009 | u32 max_base_address; | 1009 | u32 maximum; |
1010 | u32 alignment; | 1010 | u32 alignment; |
1011 | u32 range_length; | 1011 | u32 address_length; |
1012 | }; | 1012 | }; |
1013 | 1013 | ||
1014 | struct acpi_resource_fixed_io { | 1014 | struct acpi_resource_fixed_io { |
1015 | u32 base_address; | 1015 | u32 address; |
1016 | u32 range_length; | 1016 | u32 address_length; |
1017 | }; | 1017 | }; |
1018 | 1018 | ||
1019 | struct acpi_resource_vendor { | 1019 | struct acpi_resource_vendor { |
1020 | u32 length; | 1020 | u32 byte_length; |
1021 | u8 reserved[1]; | 1021 | u8 byte_data[1]; |
1022 | }; | 1022 | }; |
1023 | 1023 | ||
1024 | struct acpi_resource_end_tag { | 1024 | struct acpi_resource_end_tag { |
1025 | u8 checksum; | 1025 | u8 checksum; |
1026 | }; | 1026 | }; |
1027 | 1027 | ||
1028 | struct acpi_resource_mem24 { | 1028 | struct acpi_resource_memory24 { |
1029 | u32 read_write_attribute; | 1029 | u32 read_write_attribute; |
1030 | u32 min_base_address; | 1030 | u32 minimum; |
1031 | u32 max_base_address; | 1031 | u32 maximum; |
1032 | u32 alignment; | 1032 | u32 alignment; |
1033 | u32 range_length; | 1033 | u32 address_length; |
1034 | }; | 1034 | }; |
1035 | 1035 | ||
1036 | struct acpi_resource_mem32 { | 1036 | struct acpi_resource_memory32 { |
1037 | u32 read_write_attribute; | 1037 | u32 read_write_attribute; |
1038 | u32 min_base_address; | 1038 | u32 minimum; |
1039 | u32 max_base_address; | 1039 | u32 maximum; |
1040 | u32 alignment; | 1040 | u32 alignment; |
1041 | u32 range_length; | 1041 | u32 address_length; |
1042 | }; | 1042 | }; |
1043 | 1043 | ||
1044 | struct acpi_resource_fixed_mem32 { | 1044 | struct acpi_resource_fixed_memory32 { |
1045 | u32 read_write_attribute; | 1045 | u32 read_write_attribute; |
1046 | u32 range_base_address; | 1046 | u32 address; |
1047 | u32 range_length; | 1047 | u32 address_length; |
1048 | }; | 1048 | }; |
1049 | 1049 | ||
1050 | struct acpi_memory_attribute { | 1050 | struct acpi_memory_attribute { |
@@ -1089,93 +1089,105 @@ ACPI_RESOURCE_ADDRESS_COMMON}; | |||
1089 | 1089 | ||
1090 | struct acpi_resource_address16 { | 1090 | struct acpi_resource_address16 { |
1091 | ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; | 1091 | ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; |
1092 | u32 min_address_range; | 1092 | u32 minimum; |
1093 | u32 max_address_range; | 1093 | u32 maximum; |
1094 | u32 address_translation_offset; | 1094 | u32 translation_offset; |
1095 | u32 address_length; | 1095 | u32 address_length; |
1096 | struct acpi_resource_source resource_source; | 1096 | struct acpi_resource_source resource_source; |
1097 | }; | 1097 | }; |
1098 | 1098 | ||
1099 | struct acpi_resource_address32 { | 1099 | struct acpi_resource_address32 { |
1100 | ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; | 1100 | ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; |
1101 | u32 min_address_range; | 1101 | u32 minimum; |
1102 | u32 max_address_range; | 1102 | u32 maximum; |
1103 | u32 address_translation_offset; | 1103 | u32 translation_offset; |
1104 | u32 address_length; | 1104 | u32 address_length; |
1105 | struct acpi_resource_source resource_source; | 1105 | struct acpi_resource_source resource_source; |
1106 | }; | 1106 | }; |
1107 | 1107 | ||
1108 | struct acpi_resource_address64 { | 1108 | struct acpi_resource_address64 { |
1109 | ACPI_RESOURCE_ADDRESS_COMMON u64 granularity; | 1109 | ACPI_RESOURCE_ADDRESS_COMMON u64 granularity; |
1110 | u64 min_address_range; | 1110 | u64 minimum; |
1111 | u64 max_address_range; | 1111 | u64 maximum; |
1112 | u64 address_translation_offset; | 1112 | u64 translation_offset; |
1113 | u64 address_length; | 1113 | u64 address_length; |
1114 | u64 type_specific_attributes; | ||
1115 | struct acpi_resource_source resource_source; | 1114 | struct acpi_resource_source resource_source; |
1116 | }; | 1115 | }; |
1117 | 1116 | ||
1118 | struct acpi_resource_ext_irq { | 1117 | struct acpi_resource_extended_address64 { |
1118 | ACPI_RESOURCE_ADDRESS_COMMON u64 granularity; | ||
1119 | u64 minimum; | ||
1120 | u64 maximum; | ||
1121 | u64 translation_offset; | ||
1122 | u64 address_length; | ||
1123 | u64 type_specific_attributes; | ||
1124 | u8 revision_iD; | ||
1125 | }; | ||
1126 | |||
1127 | struct acpi_resource_extended_irq { | ||
1119 | u32 producer_consumer; | 1128 | u32 producer_consumer; |
1120 | u32 edge_level; | 1129 | u32 triggering; |
1121 | u32 active_high_low; | 1130 | u32 polarity; |
1122 | u32 shared_exclusive; | 1131 | u32 sharable; |
1123 | u32 number_of_interrupts; | 1132 | u32 interrupt_count; |
1124 | struct acpi_resource_source resource_source; | 1133 | struct acpi_resource_source resource_source; |
1125 | u32 interrupts[1]; | 1134 | u32 interrupts[1]; |
1126 | }; | 1135 | }; |
1127 | 1136 | ||
1128 | struct acpi_resource_generic_reg { | 1137 | struct acpi_resource_generic_register { |
1129 | u32 space_id; | 1138 | u32 space_id; |
1130 | u32 bit_width; | 1139 | u32 bit_width; |
1131 | u32 bit_offset; | 1140 | u32 bit_offset; |
1132 | u32 address_size; | 1141 | u32 access_size; |
1133 | u64 address; | 1142 | u64 address; |
1134 | }; | 1143 | }; |
1135 | 1144 | ||
1136 | /* ACPI_RESOURCE_TYPEs */ | 1145 | /* ACPI_RESOURCE_TYPEs */ |
1137 | 1146 | ||
1138 | #define ACPI_RSTYPE_IRQ 0 | 1147 | #define ACPI_RESOURCE_TYPE_IRQ 0 |
1139 | #define ACPI_RSTYPE_DMA 1 | 1148 | #define ACPI_RESOURCE_TYPE_DMA 1 |
1140 | #define ACPI_RSTYPE_START_DPF 2 | 1149 | #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 |
1141 | #define ACPI_RSTYPE_END_DPF 3 | 1150 | #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 |
1142 | #define ACPI_RSTYPE_IO 4 | 1151 | #define ACPI_RESOURCE_TYPE_IO 4 |
1143 | #define ACPI_RSTYPE_FIXED_IO 5 | 1152 | #define ACPI_RESOURCE_TYPE_FIXED_IO 5 |
1144 | #define ACPI_RSTYPE_VENDOR 6 | 1153 | #define ACPI_RESOURCE_TYPE_VENDOR 6 |
1145 | #define ACPI_RSTYPE_END_TAG 7 | 1154 | #define ACPI_RESOURCE_TYPE_END_TAG 7 |
1146 | #define ACPI_RSTYPE_MEM24 8 | 1155 | #define ACPI_RESOURCE_TYPE_MEMORY24 8 |
1147 | #define ACPI_RSTYPE_MEM32 9 | 1156 | #define ACPI_RESOURCE_TYPE_MEMORY32 9 |
1148 | #define ACPI_RSTYPE_FIXED_MEM32 10 | 1157 | #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 |
1149 | #define ACPI_RSTYPE_ADDRESS16 11 | 1158 | #define ACPI_RESOURCE_TYPE_ADDRESS16 11 |
1150 | #define ACPI_RSTYPE_ADDRESS32 12 | 1159 | #define ACPI_RESOURCE_TYPE_ADDRESS32 12 |
1151 | #define ACPI_RSTYPE_ADDRESS64 13 | 1160 | #define ACPI_RESOURCE_TYPE_ADDRESS64 13 |
1152 | #define ACPI_RSTYPE_EXT_IRQ 14 | 1161 | #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ |
1153 | #define ACPI_RSTYPE_GENERIC_REG 15 | 1162 | #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 |
1154 | #define ACPI_RSTYPE_MAX 15 | 1163 | #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 |
1155 | 1164 | #define ACPI_RESOURCE_TYPE_MAX 16 | |
1156 | typedef u32 acpi_resource_type; | ||
1157 | 1165 | ||
1158 | union acpi_resource_data { | 1166 | union acpi_resource_data { |
1159 | struct acpi_resource_irq irq; | 1167 | struct acpi_resource_irq irq; |
1160 | struct acpi_resource_dma dma; | 1168 | struct acpi_resource_dma dma; |
1161 | struct acpi_resource_start_dpf start_dpf; | 1169 | struct acpi_resource_start_dependent start_dpf; |
1162 | struct acpi_resource_io io; | 1170 | struct acpi_resource_io io; |
1163 | struct acpi_resource_fixed_io fixed_io; | 1171 | struct acpi_resource_fixed_io fixed_io; |
1164 | struct acpi_resource_vendor vendor_specific; | 1172 | struct acpi_resource_vendor vendor; |
1165 | struct acpi_resource_end_tag end_tag; | 1173 | struct acpi_resource_end_tag end_tag; |
1166 | struct acpi_resource_mem24 memory24; | 1174 | struct acpi_resource_memory24 memory24; |
1167 | struct acpi_resource_mem32 memory32; | 1175 | struct acpi_resource_memory32 memory32; |
1168 | struct acpi_resource_fixed_mem32 fixed_memory32; | 1176 | struct acpi_resource_fixed_memory32 fixed_memory32; |
1169 | struct acpi_resource_address address; /* Common 16/32/64 address fields */ | ||
1170 | struct acpi_resource_address16 address16; | 1177 | struct acpi_resource_address16 address16; |
1171 | struct acpi_resource_address32 address32; | 1178 | struct acpi_resource_address32 address32; |
1172 | struct acpi_resource_address64 address64; | 1179 | struct acpi_resource_address64 address64; |
1173 | struct acpi_resource_ext_irq extended_irq; | 1180 | struct acpi_resource_extended_address64 ext_address64; |
1174 | struct acpi_resource_generic_reg generic_reg; | 1181 | struct acpi_resource_extended_irq extended_irq; |
1182 | struct acpi_resource_generic_register generic_reg; | ||
1183 | |||
1184 | /* Common fields */ | ||
1185 | |||
1186 | struct acpi_resource_address address; /* Common 16/32/64 address fields */ | ||
1175 | }; | 1187 | }; |
1176 | 1188 | ||
1177 | struct acpi_resource { | 1189 | struct acpi_resource { |
1178 | acpi_resource_type type; | 1190 | u32 type; |
1179 | u32 length; | 1191 | u32 length; |
1180 | union acpi_resource_data data; | 1192 | union acpi_resource_data data; |
1181 | }; | 1193 | }; |
@@ -1183,7 +1195,7 @@ struct acpi_resource { | |||
1183 | #define ACPI_RESOURCE_LENGTH 12 | 1195 | #define ACPI_RESOURCE_LENGTH 12 |
1184 | #define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ | 1196 | #define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ |
1185 | 1197 | ||
1186 | #define ACPI_SIZEOF_RESOURCE(type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (type)) | 1198 | #define ACPI_SIZEOF_RESOURCE(type) (u32) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (type)) |
1187 | 1199 | ||
1188 | #define ACPI_NEXT_RESOURCE(res) (struct acpi_resource *)((u8 *) res + res->length) | 1200 | #define ACPI_NEXT_RESOURCE(res) (struct acpi_resource *)((u8 *) res + res->length) |
1189 | 1201 | ||
diff --git a/include/acpi/amlresrc.h b/include/acpi/amlresrc.h index a3c46ba6358d..103aff07db18 100644 --- a/include/acpi/amlresrc.h +++ b/include/acpi/amlresrc.h | |||
@@ -96,165 +96,159 @@ struct asl_resource_node { | |||
96 | * Resource descriptors defined in the ACPI specification. | 96 | * Resource descriptors defined in the ACPI specification. |
97 | * | 97 | * |
98 | * Packing/alignment must be BYTE because these descriptors | 98 | * Packing/alignment must be BYTE because these descriptors |
99 | * are used to overlay the AML byte stream. | 99 | * are used to overlay the raw AML byte stream. |
100 | */ | 100 | */ |
101 | #pragma pack(1) | 101 | #pragma pack(1) |
102 | 102 | ||
103 | struct asl_irq_format_desc { | 103 | /* |
104 | u8 descriptor_type; | 104 | * SMALL descriptors |
105 | u16 irq_mask; | 105 | */ |
106 | #define AML_RESOURCE_SMALL_HEADER_COMMON \ | ||
107 | u8 descriptor_type; | ||
108 | |||
109 | struct aml_resource_small_header { | ||
110 | AML_RESOURCE_SMALL_HEADER_COMMON}; | ||
111 | |||
112 | struct aml_resource_irq { | ||
113 | AML_RESOURCE_SMALL_HEADER_COMMON u16 irq_mask; | ||
106 | u8 flags; | 114 | u8 flags; |
107 | }; | 115 | }; |
108 | 116 | ||
109 | struct asl_irq_noflags_desc { | 117 | struct aml_resource_irq_noflags { |
110 | u8 descriptor_type; | 118 | AML_RESOURCE_SMALL_HEADER_COMMON u16 irq_mask; |
111 | u16 irq_mask; | ||
112 | }; | 119 | }; |
113 | 120 | ||
114 | struct asl_dma_format_desc { | 121 | struct aml_resource_dma { |
115 | u8 descriptor_type; | 122 | AML_RESOURCE_SMALL_HEADER_COMMON u8 dma_channel_mask; |
116 | u8 dma_channel_mask; | ||
117 | u8 flags; | 123 | u8 flags; |
118 | }; | 124 | }; |
119 | 125 | ||
120 | struct asl_start_dependent_desc { | 126 | struct aml_resource_start_dependent { |
121 | u8 descriptor_type; | 127 | AML_RESOURCE_SMALL_HEADER_COMMON u8 flags; |
122 | u8 flags; | ||
123 | }; | 128 | }; |
124 | 129 | ||
125 | struct asl_start_dependent_noprio_desc { | 130 | struct aml_resource_start_dependent_noprio { |
126 | u8 descriptor_type; | 131 | AML_RESOURCE_SMALL_HEADER_COMMON}; |
127 | }; | ||
128 | 132 | ||
129 | struct asl_end_dependent_desc { | 133 | struct aml_resource_end_dependent { |
130 | u8 descriptor_type; | 134 | AML_RESOURCE_SMALL_HEADER_COMMON}; |
131 | }; | ||
132 | 135 | ||
133 | struct asl_io_port_desc { | 136 | struct aml_resource_io { |
134 | u8 descriptor_type; | 137 | AML_RESOURCE_SMALL_HEADER_COMMON u8 information; |
135 | u8 information; | 138 | u16 minimum; |
136 | u16 address_min; | 139 | u16 maximum; |
137 | u16 address_max; | ||
138 | u8 alignment; | 140 | u8 alignment; |
139 | u8 length; | 141 | u8 address_length; |
140 | }; | 142 | }; |
141 | 143 | ||
142 | struct asl_fixed_io_port_desc { | 144 | struct aml_resource_fixed_io { |
143 | u8 descriptor_type; | 145 | AML_RESOURCE_SMALL_HEADER_COMMON u16 address; |
144 | u16 base_address; | 146 | u8 address_length; |
145 | u8 length; | ||
146 | }; | 147 | }; |
147 | 148 | ||
148 | struct asl_small_vendor_desc { | 149 | struct aml_resource_vendor_small { |
149 | u8 descriptor_type; | 150 | AML_RESOURCE_SMALL_HEADER_COMMON}; |
150 | u8 vendor_defined[7]; | ||
151 | }; | ||
152 | 151 | ||
153 | struct asl_end_tag_desc { | 152 | struct aml_resource_end_tag { |
154 | u8 descriptor_type; | 153 | AML_RESOURCE_SMALL_HEADER_COMMON u8 checksum; |
155 | u8 checksum; | ||
156 | }; | 154 | }; |
157 | 155 | ||
158 | /* LARGE descriptors */ | 156 | /* |
159 | 157 | * LARGE descriptors | |
160 | #define ASL_LARGE_HEADER_COMMON \ | 158 | */ |
159 | #define AML_RESOURCE_LARGE_HEADER_COMMON \ | ||
161 | u8 descriptor_type;\ | 160 | u8 descriptor_type;\ |
162 | u16 length; | 161 | u16 resource_length; |
163 | 162 | ||
164 | struct asl_large_header { | 163 | struct aml_resource_large_header { |
165 | ASL_LARGE_HEADER_COMMON}; | 164 | AML_RESOURCE_LARGE_HEADER_COMMON}; |
166 | 165 | ||
167 | struct asl_memory_24_desc { | 166 | struct aml_resource_memory24 { |
168 | ASL_LARGE_HEADER_COMMON u8 information; | 167 | AML_RESOURCE_LARGE_HEADER_COMMON u8 information; |
169 | u16 address_min; | 168 | u16 minimum; |
170 | u16 address_max; | 169 | u16 maximum; |
171 | u16 alignment; | 170 | u16 alignment; |
172 | u16 range_length; | 171 | u16 address_length; |
173 | }; | 172 | }; |
174 | 173 | ||
175 | struct asl_large_vendor_desc { | 174 | struct aml_resource_vendor_large { |
176 | ASL_LARGE_HEADER_COMMON u8 vendor_defined[1]; | 175 | AML_RESOURCE_LARGE_HEADER_COMMON}; |
177 | }; | ||
178 | 176 | ||
179 | struct asl_memory_32_desc { | 177 | struct aml_resource_memory32 { |
180 | ASL_LARGE_HEADER_COMMON u8 information; | 178 | AML_RESOURCE_LARGE_HEADER_COMMON u8 information; |
181 | u32 address_min; | 179 | u32 minimum; |
182 | u32 address_max; | 180 | u32 maximum; |
183 | u32 alignment; | 181 | u32 alignment; |
184 | u32 range_length; | 182 | u32 address_length; |
185 | }; | 183 | }; |
186 | 184 | ||
187 | struct asl_fixed_memory_32_desc { | 185 | struct aml_resource_fixed_memory32 { |
188 | ASL_LARGE_HEADER_COMMON u8 information; | 186 | AML_RESOURCE_LARGE_HEADER_COMMON u8 information; |
189 | u32 base_address; | 187 | u32 address; |
190 | u32 range_length; | 188 | u32 address_length; |
191 | }; | 189 | }; |
192 | 190 | ||
193 | struct asl_extended_address_desc { | 191 | #define AML_RESOURCE_ADDRESS_COMMON \ |
194 | ASL_LARGE_HEADER_COMMON u8 resource_type; | 192 | u8 resource_type; \ |
195 | u8 flags; | 193 | u8 flags; \ |
196 | u8 specific_flags; | 194 | u8 specific_flags; |
197 | u8 revision_iD; | 195 | |
196 | struct aml_resource_address { | ||
197 | AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON}; | ||
198 | |||
199 | struct aml_resource_extended_address64 { | ||
200 | AML_RESOURCE_LARGE_HEADER_COMMON | ||
201 | AML_RESOURCE_ADDRESS_COMMON u8 revision_iD; | ||
198 | u8 reserved; | 202 | u8 reserved; |
199 | u64 granularity; | 203 | u64 granularity; |
200 | u64 address_min; | 204 | u64 minimum; |
201 | u64 address_max; | 205 | u64 maximum; |
202 | u64 translation_offset; | 206 | u64 translation_offset; |
203 | u64 address_length; | 207 | u64 address_length; |
204 | u64 type_specific_attributes; | 208 | u64 type_specific_attributes; |
205 | u8 optional_fields[2]; /* Used for length calculation only */ | ||
206 | }; | 209 | }; |
207 | 210 | ||
208 | #define ASL_EXTENDED_ADDRESS_DESC_REVISION 1 /* ACPI 3.0 */ | 211 | #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ |
209 | 212 | ||
210 | struct asl_qword_address_desc { | 213 | struct aml_resource_address64 { |
211 | ASL_LARGE_HEADER_COMMON u8 resource_type; | 214 | AML_RESOURCE_LARGE_HEADER_COMMON |
212 | u8 flags; | 215 | AML_RESOURCE_ADDRESS_COMMON u64 granularity; |
213 | u8 specific_flags; | 216 | u64 minimum; |
214 | u64 granularity; | 217 | u64 maximum; |
215 | u64 address_min; | ||
216 | u64 address_max; | ||
217 | u64 translation_offset; | 218 | u64 translation_offset; |
218 | u64 address_length; | 219 | u64 address_length; |
219 | u8 optional_fields[2]; | ||
220 | }; | 220 | }; |
221 | 221 | ||
222 | struct asl_dword_address_desc { | 222 | struct aml_resource_address32 { |
223 | ASL_LARGE_HEADER_COMMON u8 resource_type; | 223 | AML_RESOURCE_LARGE_HEADER_COMMON |
224 | u8 flags; | 224 | AML_RESOURCE_ADDRESS_COMMON u32 granularity; |
225 | u8 specific_flags; | 225 | u32 minimum; |
226 | u32 granularity; | 226 | u32 maximum; |
227 | u32 address_min; | ||
228 | u32 address_max; | ||
229 | u32 translation_offset; | 227 | u32 translation_offset; |
230 | u32 address_length; | 228 | u32 address_length; |
231 | u8 optional_fields[2]; | ||
232 | }; | 229 | }; |
233 | 230 | ||
234 | struct asl_word_address_desc { | 231 | struct aml_resource_address16 { |
235 | ASL_LARGE_HEADER_COMMON u8 resource_type; | 232 | AML_RESOURCE_LARGE_HEADER_COMMON |
236 | u8 flags; | 233 | AML_RESOURCE_ADDRESS_COMMON u16 granularity; |
237 | u8 specific_flags; | 234 | u16 minimum; |
238 | u16 granularity; | 235 | u16 maximum; |
239 | u16 address_min; | ||
240 | u16 address_max; | ||
241 | u16 translation_offset; | 236 | u16 translation_offset; |
242 | u16 address_length; | 237 | u16 address_length; |
243 | u8 optional_fields[2]; | ||
244 | }; | 238 | }; |
245 | 239 | ||
246 | struct asl_extended_xrupt_desc { | 240 | struct aml_resource_extended_irq { |
247 | ASL_LARGE_HEADER_COMMON u8 flags; | 241 | AML_RESOURCE_LARGE_HEADER_COMMON u8 flags; |
248 | u8 table_length; | 242 | u8 table_length; |
249 | u32 interrupt_number[1]; | 243 | u32 interrupt_number[1]; |
250 | /* res_source_index, res_source optional fields follow */ | 244 | /* res_source_index, res_source optional fields follow */ |
251 | }; | 245 | }; |
252 | 246 | ||
253 | struct asl_generic_register_desc { | 247 | struct aml_resource_generic_register { |
254 | ASL_LARGE_HEADER_COMMON u8 address_space_id; | 248 | AML_RESOURCE_LARGE_HEADER_COMMON u8 address_space_id; |
255 | u8 bit_width; | 249 | u8 bit_width; |
256 | u8 bit_offset; | 250 | u8 bit_offset; |
257 | u8 access_size; /* ACPI 3.0, was Reserved */ | 251 | u8 access_size; /* ACPI 3.0, was previously Reserved */ |
258 | u64 address; | 252 | u64 address; |
259 | }; | 253 | }; |
260 | 254 | ||
@@ -264,27 +258,39 @@ struct asl_generic_register_desc { | |||
264 | 258 | ||
265 | /* Union of all resource descriptors, so we can allocate the worst case */ | 259 | /* Union of all resource descriptors, so we can allocate the worst case */ |
266 | 260 | ||
267 | union asl_resource_desc { | 261 | union aml_resource { |
268 | struct asl_irq_format_desc irq; | 262 | /* Descriptor headers */ |
269 | struct asl_dma_format_desc dma; | 263 | |
270 | struct asl_io_port_desc iop; | 264 | struct aml_resource_small_header small_header; |
271 | struct asl_fixed_io_port_desc fio; | 265 | struct aml_resource_large_header large_header; |
272 | struct asl_start_dependent_desc std; | 266 | |
273 | struct asl_end_dependent_desc end; | 267 | /* Small resource descriptors */ |
274 | struct asl_small_vendor_desc smv; | 268 | |
275 | struct asl_end_tag_desc et; | 269 | struct aml_resource_irq irq; |
276 | 270 | struct aml_resource_dma dma; | |
277 | struct asl_large_header lhd; | 271 | struct aml_resource_start_dependent start_dpf; |
278 | struct asl_memory_24_desc M24; | 272 | struct aml_resource_end_dependent end_dpf; |
279 | struct asl_large_vendor_desc lgv; | 273 | struct aml_resource_io io; |
280 | struct asl_memory_32_desc M32; | 274 | struct aml_resource_fixed_io fixed_io; |
281 | struct asl_fixed_memory_32_desc F32; | 275 | struct aml_resource_vendor_small vendor_small; |
282 | struct asl_qword_address_desc qas; | 276 | struct aml_resource_end_tag end_tag; |
283 | struct asl_dword_address_desc das; | 277 | |
284 | struct asl_word_address_desc was; | 278 | /* Large resource descriptors */ |
285 | struct asl_extended_address_desc eas; | 279 | |
286 | struct asl_extended_xrupt_desc exx; | 280 | struct aml_resource_memory24 memory24; |
287 | struct asl_generic_register_desc grg; | 281 | struct aml_resource_generic_register generic_reg; |
282 | struct aml_resource_vendor_large vendor_large; | ||
283 | struct aml_resource_memory32 memory32; | ||
284 | struct aml_resource_fixed_memory32 fixed_memory32; | ||
285 | struct aml_resource_address16 address16; | ||
286 | struct aml_resource_address32 address32; | ||
287 | struct aml_resource_address64 address64; | ||
288 | struct aml_resource_extended_address64 ext_address64; | ||
289 | struct aml_resource_extended_irq extended_irq; | ||
290 | |||
291 | /* Utility overlays */ | ||
292 | |||
293 | struct aml_resource_address address; | ||
288 | u32 u32_item; | 294 | u32 u32_item; |
289 | u16 u16_item; | 295 | u16 u16_item; |
290 | u8 U8item; | 296 | u8 U8item; |