aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/resources/rsinfo.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2005-11-02 00:00:00 -0500
committerLen Brown <len.brown@intel.com>2005-12-10 00:26:05 -0500
commit96db255c8f014ae3497507104e8df809785a619f (patch)
tree79d2c506644370fd6c10d94bd40c419cd3bad148 /drivers/acpi/resources/rsinfo.c
parent0897831bb54eb36fd9e2a22da7f0f64be1b20d09 (diff)
[ACPI] ACPICA 20051102
Modified the subsystem initialization sequence to improve GPE support. The GPE initialization has been split into two parts in order to defer execution of the _PRW methods (Power Resources for Wake) until after the hardware is fully initialized and the SCI handler is installed. This allows the _PRW methods to access fields protected by the Global Lock. This will fix systems where a NO_GLOBAL_LOCK exception has been seen during initialization. Fixed a regression with the ConcatenateResTemplate() ASL operator introduced in the 20051021 release. Implemented support for "local" internal ACPI object types within the debugger "Object" command and the acpi_walk_namespace() external interfaces. These local types include RegionFields, BankFields, IndexFields, Alias, and reference objects. Moved common AML resource handling code into a new file, "utresrc.c". This code is shared by both the Resource Manager and the AML Debugger. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/resources/rsinfo.c')
-rw-r--r--drivers/acpi/resources/rsinfo.c97
1 files changed, 37 insertions, 60 deletions
diff --git a/drivers/acpi/resources/rsinfo.c b/drivers/acpi/resources/rsinfo.c
index 973fc2834cbb..623b06689336 100644
--- a/drivers/acpi/resources/rsinfo.c
+++ b/drivers/acpi/resources/rsinfo.c
@@ -80,7 +80,9 @@ struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[] = {
80 80
81/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ 81/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
82 82
83struct acpi_rsconvert_info *acpi_gbl_sm_get_resource_dispatch[] = { 83struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = {
84 /* Small descriptors */
85
84 NULL, /* 0x00, Reserved */ 86 NULL, /* 0x00, Reserved */
85 NULL, /* 0x01, Reserved */ 87 NULL, /* 0x01, Reserved */
86 NULL, /* 0x02, Reserved */ 88 NULL, /* 0x02, Reserved */
@@ -96,10 +98,10 @@ struct acpi_rsconvert_info *acpi_gbl_sm_get_resource_dispatch[] = {
96 NULL, /* 0x0C, Reserved */ 98 NULL, /* 0x0C, Reserved */
97 NULL, /* 0x0D, Reserved */ 99 NULL, /* 0x0D, Reserved */
98 acpi_rs_get_vendor_small, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */ 100 acpi_rs_get_vendor_small, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */
99 acpi_rs_convert_end_tag /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */ 101 acpi_rs_convert_end_tag, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */
100}; 102
103 /* Large descriptors */
101 104
102struct acpi_rsconvert_info *acpi_gbl_lg_get_resource_dispatch[] = {
103 NULL, /* 0x00, Reserved */ 105 NULL, /* 0x00, Reserved */
104 acpi_rs_convert_memory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */ 106 acpi_rs_convert_memory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */
105 acpi_rs_convert_generic_reg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ 107 acpi_rs_convert_generic_reg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */
@@ -138,7 +140,6 @@ struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[] = {
138 acpi_rs_dump_ext_irq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 140 acpi_rs_dump_ext_irq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
139 acpi_rs_dump_generic_reg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 141 acpi_rs_dump_generic_reg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
140}; 142};
141
142#endif 143#endif
143#endif /* ACPI_FUTURE_USAGE */ 144#endif /* ACPI_FUTURE_USAGE */
144/* 145/*
@@ -166,62 +167,38 @@ const u8 acpi_gbl_aml_resource_sizes[] = {
166 sizeof(struct aml_resource_generic_register) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 167 sizeof(struct aml_resource_generic_register) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
167}; 168};
168 169
169/* Macros used in the tables below */ 170const u8 acpi_gbl_resource_struct_sizes[] = {
171 /* Small descriptors */
170 172
171#define ACPI_RLARGE(r) (sizeof (r) - sizeof (struct aml_resource_large_header)) 173 0,
172#define ACPI_RSMALL(r) (sizeof (r) - sizeof (struct aml_resource_small_header)) 174 0,
175 0,
176 0,
177 ACPI_RS_SIZE(struct acpi_resource_irq),
178 ACPI_RS_SIZE(struct acpi_resource_dma),
179 ACPI_RS_SIZE(struct acpi_resource_start_dependent),
180 ACPI_RS_SIZE_MIN,
181 ACPI_RS_SIZE(struct acpi_resource_io),
182 ACPI_RS_SIZE(struct acpi_resource_fixed_io),
183 0,
184 0,
185 0,
186 0,
187 ACPI_RS_SIZE(struct acpi_resource_vendor),
188 ACPI_RS_SIZE_MIN,
173 189
174/* 190 /* Large descriptors */
175 * Base sizes of resource descriptors, both the AML stream resource length
176 * (minus size of header and length fields),and the size of the internal
177 * struct representation.
178 */
179struct acpi_resource_info acpi_gbl_sm_resource_info[] = {
180 {0, 0, 0},
181 {0, 0, 0},
182 {0, 0, 0},
183 {0, 0, 0},
184 {2, ACPI_RSMALL(struct aml_resource_irq),
185 ACPI_RS_SIZE(struct acpi_resource_irq)},
186 {0, ACPI_RSMALL(struct aml_resource_dma),
187 ACPI_RS_SIZE(struct acpi_resource_dma)},
188 {2, ACPI_RSMALL(struct aml_resource_start_dependent),
189 ACPI_RS_SIZE(struct acpi_resource_start_dependent)},
190 {0, ACPI_RSMALL(struct aml_resource_end_dependent), ACPI_RS_SIZE_MIN},
191 {0, ACPI_RSMALL(struct aml_resource_io),
192 ACPI_RS_SIZE(struct acpi_resource_io)},
193 {0, ACPI_RSMALL(struct aml_resource_fixed_io),
194 ACPI_RS_SIZE(struct acpi_resource_fixed_io)},
195 {0, 0, 0},
196 {0, 0, 0},
197 {0, 0, 0},
198 {0, 0, 0},
199 {1, ACPI_RSMALL(struct aml_resource_vendor_small),
200 ACPI_RS_SIZE(struct acpi_resource_vendor)},
201 {0, ACPI_RSMALL(struct aml_resource_end_tag), ACPI_RS_SIZE_MIN}
202};
203 191
204struct acpi_resource_info acpi_gbl_lg_resource_info[] = { 192 0,
205 {0, 0, 0}, 193 ACPI_RS_SIZE(struct acpi_resource_memory24),
206 {0, ACPI_RLARGE(struct aml_resource_memory24), 194 ACPI_RS_SIZE(struct acpi_resource_generic_register),
207 ACPI_RS_SIZE(struct acpi_resource_memory24)}, 195 0,
208 {0, ACPI_RLARGE(struct aml_resource_generic_register), 196 ACPI_RS_SIZE(struct acpi_resource_vendor),
209 ACPI_RS_SIZE(struct acpi_resource_generic_register)}, 197 ACPI_RS_SIZE(struct acpi_resource_memory32),
210 {0, 0, 0}, 198 ACPI_RS_SIZE(struct acpi_resource_fixed_memory32),
211 {1, ACPI_RLARGE(struct aml_resource_vendor_large), 199 ACPI_RS_SIZE(struct acpi_resource_address32),
212 ACPI_RS_SIZE(struct acpi_resource_vendor)}, 200 ACPI_RS_SIZE(struct acpi_resource_address16),
213 {0, ACPI_RLARGE(struct aml_resource_memory32), 201 ACPI_RS_SIZE(struct acpi_resource_extended_irq),
214 ACPI_RS_SIZE(struct acpi_resource_memory32)}, 202 ACPI_RS_SIZE(struct acpi_resource_address64),
215 {0, ACPI_RLARGE(struct aml_resource_fixed_memory32), 203 ACPI_RS_SIZE(struct acpi_resource_extended_address64)
216 ACPI_RS_SIZE(struct acpi_resource_fixed_memory32)},
217 {1, ACPI_RLARGE(struct aml_resource_address32),
218 ACPI_RS_SIZE(struct acpi_resource_address32)},
219 {1, ACPI_RLARGE(struct aml_resource_address16),
220 ACPI_RS_SIZE(struct acpi_resource_address16)},
221 {1, ACPI_RLARGE(struct aml_resource_extended_irq),
222 ACPI_RS_SIZE(struct acpi_resource_extended_irq)},
223 {1, ACPI_RLARGE(struct aml_resource_address64),
224 ACPI_RS_SIZE(struct acpi_resource_address64)},
225 {0, ACPI_RLARGE(struct aml_resource_extended_address64),
226 ACPI_RS_SIZE(struct acpi_resource_extended_address64)}
227}; 204};