48 #define _COMPONENT ACPI_RESOURCES
50 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
52 static void acpi_rs_out_string(
char *title,
char *
value);
54 static void acpi_rs_out_integer8(
char *title,
u8 value);
56 static void acpi_rs_out_integer16(
char *title,
u16 value);
58 static void acpi_rs_out_integer32(
char *title,
u32 value);
60 static void acpi_rs_out_integer64(
char *title,
u64 value);
62 static void acpi_rs_out_title(
char *title);
80 #define ACPI_RSD_OFFSET(f) (u8) ACPI_OFFSET (union acpi_resource_data,f)
81 #define ACPI_PRT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_pci_routing_table,f)
82 #define ACPI_RSD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_rsdump_info))
96 "Descriptor Length",
NULL},
102 acpi_gbl_shr_decode},
104 "Interrupt Count",
NULL},
106 "Interrupt List",
NULL}
112 acpi_gbl_typ_decode},
116 acpi_gbl_siz_decode},
125 "Start-Dependent-Functions",
NULL},
127 "Descriptor Length",
NULL},
129 "Compatibility Priority", acpi_gbl_config_decode},
131 "Performance/Robustness", acpi_gbl_config_decode}
136 "End-Dependent-Functions",
NULL}
155 "Address Length",
NULL}
160 "Vendor Specific",
NULL},
167 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_end_tag),
"EndTag",
173 "24-Bit Memory Range",
NULL},
175 "Write Protect", acpi_gbl_rw_decode},
176 {
ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.minimum),
"Address Minimum",
178 {
ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.maximum),
"Address Maximum",
183 "Address Length",
NULL}
188 "32-Bit Memory Range",
NULL},
190 "Write Protect", acpi_gbl_rw_decode},
191 {
ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.minimum),
"Address Minimum",
193 {
ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.maximum),
"Address Maximum",
198 "Address Length",
NULL}
202 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_memory32),
203 "32-Bit Fixed Memory Range",
NULL},
205 "Write Protect", acpi_gbl_rw_decode},
209 "Address Length",
NULL}
214 "16-Bit WORD Address Space",
NULL},
216 {
ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.granularity),
"Granularity",
218 {
ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.minimum),
"Address Minimum",
220 {
ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.maximum),
"Address Maximum",
223 "Translation Offset",
NULL},
225 "Address Length",
NULL},
231 "32-Bit DWORD Address Space",
NULL},
233 {
ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.granularity),
"Granularity",
235 {
ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.minimum),
"Address Minimum",
237 {
ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.maximum),
"Address Maximum",
240 "Translation Offset",
NULL},
242 "Address Length",
NULL},
248 "64-Bit QWORD Address Space",
NULL},
250 {
ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.granularity),
"Granularity",
252 {
ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.minimum),
"Address Minimum",
254 {
ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.maximum),
"Address Maximum",
257 "Translation Offset",
NULL},
259 "Address Length",
NULL},
265 "64-Bit Extended Address Space",
NULL},
268 "Granularity",
NULL},
270 "Address Minimum",
NULL},
272 "Address Maximum",
NULL},
274 "Translation Offset",
NULL},
276 "Address Length",
NULL},
278 "Type-Specific Attribute",
NULL}
283 "Extended IRQ",
NULL},
285 "Type", acpi_gbl_consume_decode},
287 "Triggering", acpi_gbl_he_decode},
291 acpi_gbl_shr_decode},
295 "Interrupt Count",
NULL},
297 "Interrupt List",
NULL}
302 "Generic Register",
NULL},
303 {
ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.space_id),
"Space ID",
305 {
ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_width),
"Bit Width",
307 {
ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_offset),
"Bit Offset",
310 "Access Size",
NULL},
318 "ConnectionType", acpi_gbl_ct_decode},
320 "ProducerConsumer", acpi_gbl_consume_decode},
322 acpi_gbl_ppc_decode},
324 acpi_gbl_shr_decode},
326 "IoRestriction", acpi_gbl_ior_decode},
334 "DebounceTimeout",
NULL},
336 "ResourceSource",
NULL},
338 "PinTableLength",
NULL},
350 "RequestLines",
NULL},
353 {
ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width),
"TransferWidth",
354 acpi_gbl_dts_decode},
357 #define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
358 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.revision_id), "RevisionId", NULL}, \
359 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type), "Type", acpi_gbl_sbt_decode}, \
360 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer", acpi_gbl_consume_decode}, \
361 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode), "SlaveMode", acpi_gbl_sm_decode}, \
362 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId", NULL}, \
363 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength", NULL}, \
364 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource", NULL}, \
365 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.vendor_length), "VendorLength", NULL}, \
366 {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data), "VendorData", NULL},
369 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus),
370 "Common Serial Bus",
NULL},
371 ACPI_RS_DUMP_COMMON_SERIAL_BUS
375 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
376 "I2C Serial Bus",
NULL},
378 ACPI_RSD_OFFSET(i2c_serial_bus.
380 "AccessMode", acpi_gbl_am_decode},
382 "ConnectionSpeed",
NULL},
384 "SlaveAddress",
NULL},
388 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
389 "Spi Serial Bus",
NULL},
391 ACPI_RSD_OFFSET(spi_serial_bus.
392 wire_mode),
"WireMode",
395 "DevicePolarity", acpi_gbl_dp_decode},
397 "DataBitLength",
NULL},
399 "ClockPhase", acpi_gbl_cph_decode},
401 "ClockPolarity", acpi_gbl_cpo_decode},
403 "DeviceSelection",
NULL},
405 "ConnectionSpeed",
NULL},
409 {
ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
410 "Uart Serial Bus",
NULL},
412 ACPI_RSD_OFFSET(uart_serial_bus.
414 "FlowControl", acpi_gbl_fc_decode},
416 "StopBits", acpi_gbl_sb_decode},
418 "DataBits", acpi_gbl_bpb_decode},
421 {
ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity),
"Parity",
424 "LinesEnabled",
NULL},
430 "ConnectionSpeed",
NULL},
440 "Consumer/Producer", acpi_gbl_consume_decode},
442 acpi_gbl_dec_decode},
444 "Min Relocatability", acpi_gbl_min_decode},
446 "Max Relocatability", acpi_gbl_max_decode}
451 "Resource Type", (
void *)
"Memory Range"},
453 "Write Protect", acpi_gbl_rw_decode},
455 "Caching", acpi_gbl_mem_decode},
457 "Range Type", acpi_gbl_mtp_decode},
459 "Translation", acpi_gbl_ttp_decode}
464 "Resource Type", (
void *)
"I/O Range"},
466 "Range Type", acpi_gbl_rng_decode},
468 "Translation", acpi_gbl_ttp_decode},
470 "Translation Type", acpi_gbl_trs_decode}
526 acpi_rs_out_string(name,
543 acpi_rs_out_integer8(name,
ACPI_GET8(target));
548 acpi_rs_out_integer16(name,
ACPI_GET16(target));
552 acpi_rs_out_integer32(name,
ACPI_GET32(target));
556 acpi_rs_out_integer64(name,
ACPI_GET64(target));
587 if (previous_target) {
588 acpi_rs_out_title(name);
589 acpi_rs_dump_short_byte_list(*previous_target,
599 if (previous_target) {
600 acpi_rs_out_title(name);
601 acpi_rs_dump_short_byte_list(*previous_target,
613 if (previous_target) {
625 if (previous_target) {
626 acpi_rs_dump_dword_list(*previous_target,
637 if (previous_target) {
638 acpi_rs_dump_word_list(*previous_target,
691 if (resource_source->
index == 0xFF) {
695 acpi_rs_out_integer8(
"Resource Source Index", resource_source->
index);
697 acpi_rs_out_string(
"Resource Source",
699 resource_source->
string_ptr :
"[Not Specified]");
721 switch (resource->
address.resource_type) {
724 acpi_rs_dump_descriptor(resource, acpi_rs_dump_memory_flags);
729 acpi_rs_dump_descriptor(resource, acpi_rs_dump_io_flags);
734 acpi_rs_out_string(
"Resource Type",
"Bus Number Range");
739 acpi_rs_out_integer8(
"Resource Type",
746 acpi_rs_dump_descriptor(resource, acpi_rs_dump_general_flags);
781 type = resource_list->
type;
784 (
"Invalid descriptor type (%X) in resource list\n",
785 resource_list->
type);
792 acpi_rs_dump_descriptor(&resource_list->
data,
793 acpi_gbl_dump_serial_bus_dispatch
794 [resource_list->
data.
795 common_serial_bus.type]);
797 acpi_rs_dump_descriptor(&resource_list->
data,
798 acpi_gbl_dump_resource_dispatch
839 for (count = 0; prt_element->
length; count++) {
842 acpi_rs_dump_descriptor(prt_element, acpi_rs_dump_prt);
845 prt_element, prt_element->
length);
863 static void acpi_rs_out_string(
char *title,
char *
value)
872 static void acpi_rs_out_integer8(
char *title,
u8 value)
877 static void acpi_rs_out_integer16(
char *title,
u16 value)
882 static void acpi_rs_out_integer32(
char *title,
u32 value)
887 static void acpi_rs_out_integer64(
char *title,
u64 value)
892 static void acpi_rs_out_title(
char *title)
914 for (i = 0; i <
length; i++) {
919 static void acpi_rs_dump_short_byte_list(
u8 length,
u8 * data)
923 for (i = 0; i <
length; i++) {
929 static void acpi_rs_dump_dword_list(
u8 length,
u32 * data)
933 for (i = 0; i <
length; i++) {
938 static void acpi_rs_dump_word_list(
u16 length,
u16 *data)
942 for (i = 0; i <
length; i++) {