diff options
Diffstat (limited to 'drivers/acpi/resources/rsdump.c')
-rw-r--r-- | drivers/acpi/resources/rsdump.c | 1284 |
1 files changed, 612 insertions, 672 deletions
diff --git a/drivers/acpi/resources/rsdump.c b/drivers/acpi/resources/rsdump.c index 75bd34d1783..9d93ee5f006 100644 --- a/drivers/acpi/resources/rsdump.c +++ b/drivers/acpi/resources/rsdump.c @@ -49,1021 +49,967 @@ ACPI_MODULE_NAME("rsdump") #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* Local prototypes */ -static void acpi_rs_dump_irq(union acpi_resource_data *data); +static void acpi_rs_dump_irq(union acpi_resource_data *resource); -static void acpi_rs_dump_address16(union acpi_resource_data *data); +static void acpi_rs_dump_address16(union acpi_resource_data *resource); -static void acpi_rs_dump_address32(union acpi_resource_data *data); +static void acpi_rs_dump_address32(union acpi_resource_data *resource); -static void acpi_rs_dump_address64(union acpi_resource_data *data); +static void acpi_rs_dump_address64(union acpi_resource_data *resource); -static void acpi_rs_dump_dma(union acpi_resource_data *data); +static void acpi_rs_dump_dma(union acpi_resource_data *resource); -static void acpi_rs_dump_io(union acpi_resource_data *data); +static void acpi_rs_dump_io(union acpi_resource_data *resource); -static void acpi_rs_dump_extended_irq(union acpi_resource_data *data); +static void acpi_rs_dump_extended_irq(union acpi_resource_data *resource); -static void acpi_rs_dump_fixed_io(union acpi_resource_data *data); +static void acpi_rs_dump_fixed_io(union acpi_resource_data *resource); -static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *data); +static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *resource); -static void acpi_rs_dump_memory24(union acpi_resource_data *data); +static void acpi_rs_dump_memory24(union acpi_resource_data *resource); -static void acpi_rs_dump_memory32(union acpi_resource_data *data); +static void acpi_rs_dump_memory32(union acpi_resource_data *resource); -static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *data); +static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *resource); -static void acpi_rs_dump_vendor_specific(union acpi_resource_data *data); +static void acpi_rs_dump_vendor_specific(union acpi_resource_data *resource); + +static void acpi_rs_dump_generic_reg(union acpi_resource_data *resource); + +static void acpi_rs_dump_end_depend_fns(union acpi_resource_data *resource); + +static void acpi_rs_dump_end_tag(union acpi_resource_data *resource); + +static void acpi_rs_out_string(char *title, char *value); + +static void acpi_rs_out_integer8(char *title, u8 value); + +static void acpi_rs_out_integer16(char *title, u16 value); + +static void acpi_rs_out_integer32(char *title, u32 value); + +static void acpi_rs_out_integer64(char *title, u64 value); + +static void acpi_rs_out_title(char *title); + +static void acpi_rs_dump_byte_list(u32 length, u8 * data); + +static void acpi_rs_dump_dword_list(u32 length, u32 * data); + +static void acpi_rs_dump_short_byte_list(u32 length, u32 * data); + +static void +acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source); + +static void acpi_rs_dump_address_common(union acpi_resource_data *resource); + +/* Dispatch table for resource dump functions */ + +typedef +void (*ACPI_DUMP_RESOURCE) (union acpi_resource_data * data); + +static ACPI_DUMP_RESOURCE acpi_gbl_dump_resource_dispatch[] = { + acpi_rs_dump_irq, /* ACPI_RSTYPE_IRQ */ + acpi_rs_dump_dma, /* ACPI_RSTYPE_DMA */ + acpi_rs_dump_start_depend_fns, /* ACPI_RSTYPE_START_DPF */ + acpi_rs_dump_end_depend_fns, /* ACPI_RSTYPE_END_DPF */ + acpi_rs_dump_io, /* ACPI_RSTYPE_IO */ + acpi_rs_dump_fixed_io, /* ACPI_RSTYPE_FIXED_IO */ + acpi_rs_dump_vendor_specific, /* ACPI_RSTYPE_VENDOR */ + acpi_rs_dump_end_tag, /* ACPI_RSTYPE_END_TAG */ + acpi_rs_dump_memory24, /* ACPI_RSTYPE_MEM24 */ + acpi_rs_dump_memory32, /* ACPI_RSTYPE_MEM32 */ + acpi_rs_dump_fixed_memory32, /* ACPI_RSTYPE_FIXED_MEM32 */ + acpi_rs_dump_address16, /* ACPI_RSTYPE_ADDRESS16 */ + acpi_rs_dump_address32, /* ACPI_RSTYPE_ADDRESS32 */ + acpi_rs_dump_address64, /* ACPI_RSTYPE_ADDRESS64 */ + acpi_rs_dump_extended_irq, /* ACPI_RSTYPE_EXT_IRQ */ + acpi_rs_dump_generic_reg /* ACPI_RSTYPE_GENERIC_REG */ +}; /******************************************************************************* * - * FUNCTION: acpi_rs_dump_irq + * FUNCTION: acpi_rs_out* + * + * PARAMETERS: Title - Name of the resource field + * Value - Value of the resource field + * + * RETURN: None + * + * DESCRIPTION: Miscellaneous helper functions to consistently format the + * output of the resource dump routines + * + ******************************************************************************/ + +static void acpi_rs_out_string(char *title, char *value) +{ + acpi_os_printf("%30s : %s\n", title, value); +} + +static void acpi_rs_out_integer8(char *title, u8 value) +{ + acpi_os_printf("%30s : %2.2X\n", title, value); +} + +static void acpi_rs_out_integer16(char *title, u16 value) +{ + acpi_os_printf("%30s : %4.4X\n", title, value); +} + +static void acpi_rs_out_integer32(char *title, u32 value) +{ + acpi_os_printf("%30s : %8.8X\n", title, value); +} + +static void acpi_rs_out_integer64(char *title, u64 value) +{ + acpi_os_printf("%30s : %8.8X%8.8X\n", title, ACPI_FORMAT_UINT64(value)); +} + +static void acpi_rs_out_title(char *title) +{ + acpi_os_printf("%30s : ", title); +} + +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump*List + * + * PARAMETERS: Length - Number of elements in the list + * Data - Start of the list + * + * RETURN: None + * + * DESCRIPTION: Miscellaneous functions to dump lists of raw data + * + ******************************************************************************/ + +static void acpi_rs_dump_byte_list(u32 length, u8 * data) +{ + u32 i; + + for (i = 0; i < length; i++) { + acpi_os_printf("%28s%2.2X : %2.2X\n", "Byte", i, data[i]); + } +} + +static void acpi_rs_dump_dword_list(u32 length, u32 * data) +{ + u32 i; + + for (i = 0; i < length; i++) { + acpi_os_printf("%28s%2.2X : %8.8X\n", "Dword", i, data[i]); + } +} + +static void acpi_rs_dump_short_byte_list(u32 length, u32 * data) +{ + u32 i; + + for (i = 0; i < length; i++) { + acpi_os_printf("%X ", data[i]); + } + acpi_os_printf("\n"); +} + +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_resource_source * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: resource_source - Pointer to a Resource Source struct * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Common routine for dumping the optional resource_source and the + * corresponding resource_source_index. * ******************************************************************************/ -static void acpi_rs_dump_irq(union acpi_resource_data *data) +static void +acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source) { - struct acpi_resource_irq *irq_data = (struct acpi_resource_irq *)data; - u8 index = 0; + if (resource_source->index == 0xFF) { + return; + } + + acpi_rs_out_integer8("Resource Source Index", + (u8) resource_source->index); + + acpi_rs_out_string("Resource Source", + resource_source->string_ptr ? + resource_source->string_ptr : "[Not Specified]"); +} + +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_address_common + * + * PARAMETERS: Resource - Pointer to an internal resource descriptor + * + * RETURN: None + * + * DESCRIPTION: Dump the fields that are common to all Address resource + * descriptors + * + ******************************************************************************/ + +static void acpi_rs_dump_address_common(union acpi_resource_data *resource) +{ ACPI_FUNCTION_ENTRY(); - acpi_os_printf("IRQ Resource\n"); + /* Decode the type-specific flags */ + + switch (resource->address.resource_type) { + case ACPI_MEMORY_RANGE: - acpi_os_printf(" %s Triggered\n", - ACPI_LEVEL_SENSITIVE == - irq_data->edge_level ? "Level" : "Edge"); + acpi_rs_out_string("Resource Type", "Memory Range"); + + acpi_rs_out_title("Type-Specific Flags"); + + switch (resource->address.attribute.memory.cache_attribute) { + case ACPI_NON_CACHEABLE_MEMORY: + acpi_os_printf("Noncacheable memory\n"); + break; - acpi_os_printf(" Active %s\n", - ACPI_ACTIVE_LOW == - irq_data->active_high_low ? "Low" : "High"); + case ACPI_CACHABLE_MEMORY: + acpi_os_printf("Cacheable memory\n"); + break; - acpi_os_printf(" %s\n", - ACPI_SHARED == - irq_data->shared_exclusive ? "Shared" : "Exclusive"); + case ACPI_WRITE_COMBINING_MEMORY: + acpi_os_printf("Write-combining memory\n"); + break; - acpi_os_printf(" %X Interrupts ( ", irq_data->number_of_interrupts); + case ACPI_PREFETCHABLE_MEMORY: + acpi_os_printf("Prefetchable memory\n"); + break; + + default: + acpi_os_printf("Invalid cache attribute\n"); + break; + } + + acpi_rs_out_string("Read/Write Attribute", + ACPI_READ_WRITE_MEMORY == + resource->address.attribute.memory. + read_write_attribute ? "Read/Write" : + "Read Only"); + break; + + case ACPI_IO_RANGE: + + acpi_rs_out_string("Resource Type", "I/O Range"); + + acpi_rs_out_title("Type-Specific Flags"); + + switch (resource->address.attribute.io.range_attribute) { + case ACPI_NON_ISA_ONLY_RANGES: + acpi_os_printf("Non-ISA I/O Addresses\n"); + break; - for (index = 0; index < irq_data->number_of_interrupts; index++) { - acpi_os_printf("%X ", irq_data->interrupts[index]); + case ACPI_ISA_ONLY_RANGES: + acpi_os_printf("ISA I/O Addresses\n"); + break; + + case ACPI_ENTIRE_RANGE: + acpi_os_printf("ISA and non-ISA I/O Addresses\n"); + break; + + default: + acpi_os_printf("Invalid range attribute\n"); + break; + } + + acpi_rs_out_string("Translation Attribute", + ACPI_SPARSE_TRANSLATION == + resource->address.attribute.io. + translation_attribute ? "Sparse Translation" + : "Dense Translation"); + break; + + case ACPI_BUS_NUMBER_RANGE: + + acpi_rs_out_string("Resource Type", "Bus Number Range"); + break; + + default: + + acpi_rs_out_integer8("Resource Type", + (u8) resource->address.resource_type); + break; } - acpi_os_printf(")\n"); - return; + /* Decode the general flags */ + + acpi_rs_out_string("Resource", + ACPI_CONSUMER == + resource->address. + producer_consumer ? "Consumer" : "Producer"); + + acpi_rs_out_string("Decode", + ACPI_SUB_DECODE == resource->address.decode ? + "Subtractive" : "Positive"); + + acpi_rs_out_string("Min Address", + ACPI_ADDRESS_FIXED == + resource->address. + min_address_fixed ? "Fixed" : "Not Fixed"); + + acpi_rs_out_string("Max Address", + ACPI_ADDRESS_FIXED == + resource->address. + max_address_fixed ? "Fixed" : "Not Fixed"); } /******************************************************************************* * - * FUNCTION: acpi_rs_dump_dma + * FUNCTION: acpi_rs_dump_resource_list * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: resource_list - Pointer to a resource descriptor list * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dispatches the structure to the correct dump routine. * ******************************************************************************/ -static void acpi_rs_dump_dma(union acpi_resource_data *data) +void acpi_rs_dump_resource_list(struct acpi_resource *resource_list) { - struct acpi_resource_dma *dma_data = (struct acpi_resource_dma *)data; - u8 index = 0; + u32 count = 0; ACPI_FUNCTION_ENTRY(); + if (!(acpi_dbg_level & ACPI_LV_RESOURCES) + || !(_COMPONENT & acpi_dbg_layer)) { + return; + } + + /* Dump all resource descriptors in the list */ + + while (resource_list) { + acpi_os_printf("\n[%02X] ", count); + + /* Validate Type before dispatch */ + + if (resource_list->type > ACPI_RSTYPE_MAX) { + acpi_os_printf + ("Invalid descriptor type (%X) in resource list\n", + resource_list->type); + return; + } + + /* Dump the resource descriptor */ + + acpi_gbl_dump_resource_dispatch[resource_list-> + type] (&resource_list->data); + + /* Exit on end tag */ + + if (resource_list->type == ACPI_RSTYPE_END_TAG) { + return; + } + + /* Get the next resource structure */ + + resource_list = + ACPI_PTR_ADD(struct acpi_resource, resource_list, + resource_list->length); + count++; + } +} + +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_irq + * + * PARAMETERS: Resource - Pointer to an internal resource descriptor + * + * RETURN: None + * + * DESCRIPTION: Dump the field names and values of the resource descriptor + * + ******************************************************************************/ + +static void acpi_rs_dump_irq(union acpi_resource_data *resource) +{ + ACPI_FUNCTION_ENTRY(); + + acpi_os_printf("IRQ Resource\n"); + + acpi_rs_out_string("Triggering", + ACPI_LEVEL_SENSITIVE == + resource->irq.edge_level ? "Level" : "Edge"); + + acpi_rs_out_string("Active", + ACPI_ACTIVE_LOW == + resource->irq.active_high_low ? "Low" : "High"); + + acpi_rs_out_string("Sharing", + ACPI_SHARED == + resource->irq. + shared_exclusive ? "Shared" : "Exclusive"); + + acpi_rs_out_integer8("Interrupt Count", + (u8) resource->irq.number_of_interrupts); + + acpi_rs_out_title("Interrupt List"); + acpi_rs_dump_short_byte_list(resource->irq.number_of_interrupts, + resource->irq.interrupts); +} + +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_dma + * + * PARAMETERS: Resource - Pointer to an internal resource descriptor + * + * RETURN: None + * + * DESCRIPTION: Dump the field names and values of the resource descriptor + * + ******************************************************************************/ + +static void acpi_rs_dump_dma(union acpi_resource_data *resource) +{ + ACPI_FUNCTION_ENTRY(); + acpi_os_printf("DMA Resource\n"); - switch (dma_data->type) { + acpi_rs_out_title("DMA Type"); + switch (resource->dma.type) { case ACPI_COMPATIBILITY: - acpi_os_printf(" Compatibility mode\n"); + acpi_os_printf("Compatibility mode\n"); break; case ACPI_TYPE_A: - acpi_os_printf(" Type A\n"); + acpi_os_printf("Type A\n"); break; case ACPI_TYPE_B: - acpi_os_printf(" Type B\n"); + acpi_os_printf("Type B\n"); break; case ACPI_TYPE_F: - acpi_os_printf(" Type F\n"); + acpi_os_printf("Type F\n"); break; default: - acpi_os_printf(" Invalid DMA type\n"); + acpi_os_printf("**** Invalid DMA type\n"); break; } - acpi_os_printf(" %sBus Master\n", - ACPI_BUS_MASTER == dma_data->bus_master ? "" : "Not a "); + acpi_rs_out_string("Bus Master", + ACPI_BUS_MASTER == + resource->dma.bus_master ? "Yes" : "No"); - switch (dma_data->transfer) { + acpi_rs_out_title("Transfer Type"); + switch (resource->dma.transfer) { case ACPI_TRANSFER_8: - acpi_os_printf(" 8-bit only transfer\n"); + acpi_os_printf("8-bit transfers only\n"); break; case ACPI_TRANSFER_8_16: - acpi_os_printf(" 8 and 16-bit transfer\n"); + acpi_os_printf("8-bit and 16-bit transfers\n"); break; case ACPI_TRANSFER_16: - acpi_os_printf(" 16 bit only transfer\n"); + acpi_os_printf("16-bit transfers only\n"); break; default: - acpi_os_printf(" Invalid transfer preference\n"); + acpi_os_printf("**** Invalid transfer preference\n"); break; } - acpi_os_printf(" Number of Channels: %X ( ", - dma_data->number_of_channels); - - for (index = 0; index < dma_data->number_of_channels; index++) { - acpi_os_printf("%X ", dma_data->channels[index]); - } + acpi_rs_out_integer8("DMA Channel Count", + (u8) resource->dma.number_of_channels); - acpi_os_printf(")\n"); - return; + acpi_rs_out_title("Channel List"); + acpi_rs_dump_short_byte_list(resource->dma.number_of_channels, + resource->dma.channels); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_start_depend_fns * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *data) +static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *resource) { - struct acpi_resource_start_dpf *sdf_data = - (struct acpi_resource_start_dpf *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("Start Dependent Functions Resource\n"); - switch (sdf_data->compatibility_priority) { + acpi_rs_out_title("Compatibility Priority"); + switch (resource->start_dpf.compatibility_priority) { case ACPI_GOOD_CONFIGURATION: - acpi_os_printf(" Good configuration\n"); + acpi_os_printf("Good configuration\n"); break; case ACPI_ACCEPTABLE_CONFIGURATION: - acpi_os_printf(" Acceptable configuration\n"); + acpi_os_printf("Acceptable configuration\n"); break; case ACPI_SUB_OPTIMAL_CONFIGURATION: - acpi_os_printf(" Sub-optimal configuration\n"); + acpi_os_printf("Sub-optimal configuration\n"); break; default: - acpi_os_printf(" Invalid compatibility priority\n"); + acpi_os_printf("**** Invalid compatibility priority\n"); break; } - switch (sdf_data->performance_robustness) { + acpi_rs_out_title("Performance/Robustness"); + switch (resource->start_dpf.performance_robustness) { case ACPI_GOOD_CONFIGURATION: - acpi_os_printf(" Good configuration\n"); + acpi_os_printf("Good configuration\n"); break; case ACPI_ACCEPTABLE_CONFIGURATION: - acpi_os_printf(" Acceptable configuration\n"); + acpi_os_printf("Acceptable configuration\n"); break; case ACPI_SUB_OPTIMAL_CONFIGURATION: - acpi_os_printf(" Sub-optimal configuration\n"); + acpi_os_printf("Sub-optimal configuration\n"); break; default: - acpi_os_printf(" Invalid performance robustness preference\n"); + acpi_os_printf + ("**** Invalid performance robustness preference\n"); break; } - - return; } /******************************************************************************* * * FUNCTION: acpi_rs_dump_io * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_io(union acpi_resource_data *data) +static void acpi_rs_dump_io(union acpi_resource_data *resource) { - struct acpi_resource_io *io_data = (struct acpi_resource_io *)data; - ACPI_FUNCTION_ENTRY(); - acpi_os_printf("Io Resource\n"); + acpi_os_printf("I/O Resource\n"); - acpi_os_printf(" %d bit decode\n", - ACPI_DECODE_16 == io_data->io_decode ? 16 : 10); + acpi_rs_out_string("Decode", + ACPI_DECODE_16 == + resource->io.io_decode ? "16-bit" : "10-bit"); - acpi_os_printf(" Range minimum base: %08X\n", - io_data->min_base_address); + acpi_rs_out_integer32("Range Minimum Base", + resource->io.min_base_address); - acpi_os_printf(" Range maximum base: %08X\n", - io_data->max_base_address); + acpi_rs_out_integer32("Range Maximum Base", + resource->io.max_base_address); - acpi_os_printf(" Alignment: %08X\n", io_data->alignment); + acpi_rs_out_integer32("Alignment", resource->io.alignment); - acpi_os_printf(" Range Length: %08X\n", io_data->range_length); - - return; + acpi_rs_out_integer32("Range Length", resource->io.range_length); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_fixed_io * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_fixed_io(union acpi_resource_data *data) +static void acpi_rs_dump_fixed_io(union acpi_resource_data *resource) { - struct acpi_resource_fixed_io *fixed_io_data = - (struct acpi_resource_fixed_io *)data; - ACPI_FUNCTION_ENTRY(); - acpi_os_printf("Fixed Io Resource\n"); - acpi_os_printf(" Range base address: %08X", - fixed_io_data->base_address); + acpi_os_printf("Fixed I/O Resource\n"); - acpi_os_printf(" Range length: %08X", fixed_io_data->range_length); + acpi_rs_out_integer32("Range Base Address", + resource->fixed_io.base_address); - return; + acpi_rs_out_integer32("Range Length", resource->fixed_io.range_length); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_vendor_specific * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_vendor_specific(union acpi_resource_data *data) +static void acpi_rs_dump_vendor_specific(union acpi_resource_data *resource) { - struct acpi_resource_vendor *vendor_data = - (struct acpi_resource_vendor *)data; - u16 index = 0; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("Vendor Specific Resource\n"); - acpi_os_printf(" Length: %08X\n", vendor_data->length); + acpi_rs_out_integer16("Length", (u16) resource->vendor_specific.length); - for (index = 0; index < vendor_data->length; index++) { - acpi_os_printf(" Byte %X: %08X\n", - index, vendor_data->reserved[index]); - } - - return; + acpi_rs_dump_byte_list(resource->vendor_specific.length, + resource->vendor_specific.reserved); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_memory24 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_memory24(union acpi_resource_data *data) +static void acpi_rs_dump_memory24(union acpi_resource_data *resource) { - struct acpi_resource_mem24 *memory24_data = - (struct acpi_resource_mem24 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("24-Bit Memory Range Resource\n"); - acpi_os_printf(" Read%s\n", - ACPI_READ_WRITE_MEMORY == - memory24_data->read_write_attribute ? - "/Write" : " only"); - - acpi_os_printf(" Range minimum base: %08X\n", - memory24_data->min_base_address); + acpi_rs_out_string("Attribute", + ACPI_READ_WRITE_MEMORY == + resource->memory24.read_write_attribute ? + "Read/Write" : "Read Only"); - acpi_os_printf(" Range maximum base: %08X\n", - memory24_data->max_base_address); + acpi_rs_out_integer16("Range Minimum Base", + (u16) resource->memory24.min_base_address); - acpi_os_printf(" Alignment: %08X\n", memory24_data->alignment); + acpi_rs_out_integer16("Range Maximum Base", + (u16) resource->memory24.max_base_address); - acpi_os_printf(" Range length: %08X\n", memory24_data->range_length); + acpi_rs_out_integer16("Alignment", (u16) resource->memory24.alignment); - return; + acpi_rs_out_integer16("Range Length", + (u16) resource->memory24.range_length); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_memory32 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_memory32(union acpi_resource_data *data) +static void acpi_rs_dump_memory32(union acpi_resource_data *resource) { - struct acpi_resource_mem32 *memory32_data = - (struct acpi_resource_mem32 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("32-Bit Memory Range Resource\n"); - acpi_os_printf(" Read%s\n", - ACPI_READ_WRITE_MEMORY == - memory32_data->read_write_attribute ? - "/Write" : " only"); - - acpi_os_printf(" Range minimum base: %08X\n", - memory32_data->min_base_address); + acpi_rs_out_string("Attribute", + ACPI_READ_WRITE_MEMORY == + resource->memory32.read_write_attribute ? + "Read/Write" : "Read Only"); - acpi_os_printf(" Range maximum base: %08X\n", - memory32_data->max_base_address); + acpi_rs_out_integer32("Range Minimum Base", + resource->memory32.min_base_address); - acpi_os_printf(" Alignment: %08X\n", memory32_data->alignment); + acpi_rs_out_integer32("Range Maximum Base", + resource->memory32.max_base_address); - acpi_os_printf(" Range length: %08X\n", memory32_data->range_length); + acpi_rs_out_integer32("Alignment", resource->memory32.alignment); - return; + acpi_rs_out_integer32("Range Length", resource->memory32.range_length); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_fixed_memory32 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *data) +static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *resource) { - struct acpi_resource_fixed_mem32 *fixed_memory32_data = - (struct acpi_resource_fixed_mem32 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("32-Bit Fixed Location Memory Range Resource\n"); - acpi_os_printf(" Read%s\n", - ACPI_READ_WRITE_MEMORY == - fixed_memory32_data-> - read_write_attribute ? "/Write" : " Only"); - - acpi_os_printf(" Range base address: %08X\n", - fixed_memory32_data->range_base_address); + acpi_rs_out_string("Attribute", + ACPI_READ_WRITE_MEMORY == + resource->fixed_memory32.read_write_attribute ? + "Read/Write" : "Read Only"); - acpi_os_printf(" Range length: %08X\n", - fixed_memory32_data->range_length); + acpi_rs_out_integer32("Range Base Address", + resource->fixed_memory32.range_base_address); - return; + acpi_rs_out_integer32("Range Length", + resource->fixed_memory32.range_length); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_address16 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_address16(union acpi_resource_data *data) +static void acpi_rs_dump_address16(union acpi_resource_data *resource) { - struct acpi_resource_address16 *address16_data = - (struct acpi_resource_address16 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("16-Bit Address Space Resource\n"); - acpi_os_printf(" Resource Type: "); - switch (address16_data->resource_type) { - case ACPI_MEMORY_RANGE: + acpi_rs_dump_address_common(resource); - acpi_os_printf("Memory Range\n"); + acpi_rs_out_integer16("Granularity", + (u16) resource->address16.granularity); - switch (address16_data->attribute.memory.cache_attribute) { - case ACPI_NON_CACHEABLE_MEMORY: - acpi_os_printf - (" Type Specific: Noncacheable memory\n"); - break; + acpi_rs_out_integer16("Address Range Min", + (u16) resource->address16.min_address_range); - case ACPI_CACHABLE_MEMORY: - acpi_os_printf(" Type Specific: Cacheable memory\n"); - break; + acpi_rs_out_integer16("Address Range Max", + (u16) resource->address16.max_address_range); - case ACPI_WRITE_COMBINING_MEMORY: - acpi_os_printf - (" Type Specific: Write-combining memory\n"); - break; + acpi_rs_out_integer16("Address Translation Offset", + (u16) resource->address16. + address_translation_offset); - case ACPI_PREFETCHABLE_MEMORY: - acpi_os_printf - (" Type Specific: Prefetchable memory\n"); - break; + acpi_rs_out_integer16("Address Length", + (u16) resource->address16.address_length); - default: - acpi_os_printf - (" Type Specific: Invalid cache attribute\n"); - break; - } - - acpi_os_printf(" Type Specific: Read%s\n", - ACPI_READ_WRITE_MEMORY == - address16_data->attribute.memory. - read_write_attribute ? "/Write" : " Only"); - break; - - case ACPI_IO_RANGE: - - acpi_os_printf("I/O Range\n"); - - switch (address16_data->attribute.io.range_attribute) { - case ACPI_NON_ISA_ONLY_RANGES: - acpi_os_printf - (" Type Specific: Non-ISA Io Addresses\n"); - break; - - case ACPI_ISA_ONLY_RANGES: - acpi_os_printf(" Type Specific: ISA Io Addresses\n"); - break; - - case ACPI_ENTIRE_RANGE: - acpi_os_printf - (" Type Specific: ISA and non-ISA Io Addresses\n"); - break; - - default: - acpi_os_printf - (" Type Specific: Invalid range attribute\n"); - break; - } - - acpi_os_printf(" Type Specific: %s Translation\n", - ACPI_SPARSE_TRANSLATION == - address16_data->attribute.io. - translation_attribute ? "Sparse" : "Dense"); - break; - - case ACPI_BUS_NUMBER_RANGE: - - acpi_os_printf("Bus Number Range\n"); - break; - - default: - - acpi_os_printf("0x%2.2X\n", address16_data->resource_type); - break; - } - - acpi_os_printf(" Resource %s\n", - ACPI_CONSUMER == address16_data->producer_consumer ? - "Consumer" : "Producer"); - - acpi_os_printf(" %s decode\n", - ACPI_SUB_DECODE == address16_data->decode ? - "Subtractive" : "Positive"); - - acpi_os_printf(" Min address is %s fixed\n", - ACPI_ADDRESS_FIXED == address16_data->min_address_fixed ? - "" : "not"); - - acpi_os_printf(" Max address is %s fixed\n", - ACPI_ADDRESS_FIXED == address16_data->max_address_fixed ? - "" : "not"); - - acpi_os_printf(" Granularity: %08X\n", address16_data->granularity); - - acpi_os_printf(" Address range min: %08X\n", - address16_data->min_address_range); - - acpi_os_printf(" Address range max: %08X\n", - address16_data->max_address_range); - - acpi_os_printf(" Address translation offset: %08X\n", - address16_data->address_translation_offset); - - acpi_os_printf(" Address Length: %08X\n", - address16_data->address_length); - - if (0xFF != address16_data->resource_source.index) { - acpi_os_printf(" Resource Source Index: %X\n", - address16_data->resource_source.index); - - acpi_os_printf(" Resource Source: %s\n", - address16_data->resource_source.string_ptr); - } - - return; + acpi_rs_dump_resource_source(&resource->address16.resource_source); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_address32 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_address32(union acpi_resource_data *data) +static void acpi_rs_dump_address32(union acpi_resource_data *resource) { - struct acpi_resource_address32 *address32_data = - (struct acpi_resource_address32 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("32-Bit Address Space Resource\n"); - switch (address32_data->resource_type) { - case ACPI_MEMORY_RANGE: + acpi_rs_dump_address_common(resource); - acpi_os_printf(" Resource Type: Memory Range\n"); + acpi_rs_out_integer32("Granularity", resource->address32.granularity); - switch (address32_data->attribute.memory.cache_attribute) { - case ACPI_NON_CACHEABLE_MEMORY: - acpi_os_printf - (" Type Specific: Noncacheable memory\n"); - break; + acpi_rs_out_integer32("Address Range Min", + resource->address32.min_address_range); - case ACPI_CACHABLE_MEMORY: - acpi_os_printf(" Type Specific: Cacheable memory\n"); - break; + acpi_rs_out_integer32("Address Range Max", + resource->address32.max_address_range); - case ACPI_WRITE_COMBINING_MEMORY: - acpi_os_printf - (" Type Specific: Write-combining memory\n"); - break; - - case ACPI_PREFETCHABLE_MEMORY: - acpi_os_printf - (" Type Specific: Prefetchable memory\n"); - break; - - default: - acpi_os_printf - (" Type Specific: Invalid cache attribute\n"); - break; - } - - acpi_os_printf(" Type Specific: Read%s\n", - ACPI_READ_WRITE_MEMORY == - address32_data->attribute.memory. - read_write_attribute ? "/Write" : " Only"); - break; - - case ACPI_IO_RANGE: - - acpi_os_printf(" Resource Type: Io Range\n"); - - switch (address32_data->attribute.io.range_attribute) { - case ACPI_NON_ISA_ONLY_RANGES: - acpi_os_printf - (" Type Specific: Non-ISA Io Addresses\n"); - break; - - case ACPI_ISA_ONLY_RANGES: - acpi_os_printf(" Type Specific: ISA Io Addresses\n"); - break; - - case ACPI_ENTIRE_RANGE: - acpi_os_printf - (" Type Specific: ISA and non-ISA Io Addresses\n"); - break; - - default: - acpi_os_printf - (" Type Specific: Invalid Range attribute"); - break; - } - - acpi_os_printf(" Type Specific: %s Translation\n", - ACPI_SPARSE_TRANSLATION == - address32_data->attribute.io. - translation_attribute ? "Sparse" : "Dense"); - break; - - case ACPI_BUS_NUMBER_RANGE: - - acpi_os_printf(" Resource Type: Bus Number Range\n"); - break; + acpi_rs_out_integer32("Address Translation Offset", + resource->address32.address_translation_offset); - default: - - acpi_os_printf(" Resource Type: 0x%2.2X\n", - address32_data->resource_type); - break; - } + acpi_rs_out_integer32("Address Length", + resource->address32.address_length); - acpi_os_printf(" Resource %s\n", - ACPI_CONSUMER == address32_data->producer_consumer ? - "Consumer" : "Producer"); - - acpi_os_printf(" %s decode\n", - ACPI_SUB_DECODE == address32_data->decode ? - "Subtractive" : "Positive"); - - acpi_os_printf(" Min address is %s fixed\n", - ACPI_ADDRESS_FIXED == address32_data->min_address_fixed ? - "" : "not "); - - acpi_os_printf(" Max address is %s fixed\n", - ACPI_ADDRESS_FIXED == address32_data->max_address_fixed ? - "" : "not "); - - acpi_os_printf(" Granularity: %08X\n", address32_data->granularity); - - acpi_os_printf(" Address range min: %08X\n", - address32_data->min_address_range); - - acpi_os_printf(" Address range max: %08X\n", - address32_data->max_address_range); - - acpi_os_printf(" Address translation offset: %08X\n", - address32_data->address_translation_offset); - - acpi_os_printf(" Address Length: %08X\n", - address32_data->address_length); - - if (0xFF != address32_data->resource_source.index) { - acpi_os_printf(" Resource Source Index: %X\n", - address32_data->resource_source.index); - - acpi_os_printf(" Resource Source: %s\n", - address32_data->resource_source.string_ptr); - } - - return; + acpi_rs_dump_resource_source(&resource->address32.resource_source); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_address64 * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_address64(union acpi_resource_data *data) +static void acpi_rs_dump_address64(union acpi_resource_data *resource) { - struct acpi_resource_address64 *address64_data = - (struct acpi_resource_address64 *)data; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("64-Bit Address Space Resource\n"); - switch (address64_data->resource_type) { - case ACPI_MEMORY_RANGE: - - acpi_os_printf(" Resource Type: Memory Range\n"); - - switch (address64_data->attribute.memory.cache_attribute) { - case ACPI_NON_CACHEABLE_MEMORY: - acpi_os_printf - (" Type Specific: Noncacheable memory\n"); - break; - - case ACPI_CACHABLE_MEMORY: - acpi_os_printf(" Type Specific: Cacheable memory\n"); - break; - - case ACPI_WRITE_COMBINING_MEMORY: - acpi_os_printf - (" Type Specific: Write-combining memory\n"); - break; - - case ACPI_PREFETCHABLE_MEMORY: - acpi_os_printf - (" Type Specific: Prefetchable memory\n"); - break; - - default: - acpi_os_printf - (" Type Specific: Invalid cache attribute\n"); - break; - } - - acpi_os_printf(" Type Specific: Read%s\n", - ACPI_READ_WRITE_MEMORY == - address64_data->attribute.memory. - read_write_attribute ? "/Write" : " Only"); - break; - - case ACPI_IO_RANGE: - - acpi_os_printf(" Resource Type: Io Range\n"); - - switch (address64_data->attribute.io.range_attribute) { - case ACPI_NON_ISA_ONLY_RANGES: - acpi_os_printf - (" Type Specific: Non-ISA Io Addresses\n"); - break; - - case ACPI_ISA_ONLY_RANGES: - acpi_os_printf(" Type Specific: ISA Io Addresses\n"); - break; - - case ACPI_ENTIRE_RANGE: - acpi_os_printf - (" Type Specific: ISA and non-ISA Io Addresses\n"); - break; - - default: - acpi_os_printf - (" Type Specific: Invalid Range attribute"); - break; - } - - acpi_os_printf(" Type Specific: %s Translation\n", - ACPI_SPARSE_TRANSLATION == - address64_data->attribute.io. - translation_attribute ? "Sparse" : "Dense"); - break; - - case ACPI_BUS_NUMBER_RANGE: - - acpi_os_printf(" Resource Type: Bus Number Range\n"); - break; - - default: - - acpi_os_printf(" Resource Type: 0x%2.2X\n", - address64_data->resource_type); - break; - } - - acpi_os_printf(" Resource %s\n", - ACPI_CONSUMER == address64_data->producer_consumer ? - "Consumer" : "Producer"); + acpi_rs_dump_address_common(resource); - acpi_os_printf(" %s decode\n", - ACPI_SUB_DECODE == address64_data->decode ? - "Subtractive" : "Positive"); + acpi_rs_out_integer64("Granularity", resource->address64.granularity); - acpi_os_printf(" Min address is %s fixed\n", - ACPI_ADDRESS_FIXED == address64_data->min_address_fixed ? - "" : "not "); + acpi_rs_out_integer64("Address Range Min", + resource->address64.min_address_range); - acpi_os_printf(" Max address is %s fixed\n", - ACPI_ADDRESS_FIXED == address64_data->max_address_fixed ? - "" : "not "); + acpi_rs_out_integer64("Address Range Max", + resource->address64.max_address_range); - acpi_os_printf(" Granularity: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data->granularity)); + acpi_rs_out_integer64("Address Translation Offset", + resource->address64.address_translation_offset); - acpi_os_printf(" Address range min: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data->min_address_range)); + acpi_rs_out_integer64("Address Length", + resource->address64.address_length); - acpi_os_printf(" Address range max: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data->max_address_range)); + acpi_rs_out_integer64("Type Specific Attributes", + resource->address64.type_specific_attributes); - acpi_os_printf(" Address translation offset: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data-> - address_translation_offset)); - - acpi_os_printf(" Address Length: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data->address_length)); - - acpi_os_printf(" Type Specific Attributes: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(address64_data-> - type_specific_attributes)); - - if (0xFF != address64_data->resource_source.index) { - acpi_os_printf(" Resource Source Index: %X\n", - address64_data->resource_source.index); - - acpi_os_printf(" Resource Source: %s\n", - address64_data->resource_source.string_ptr); - } - - return; + acpi_rs_dump_resource_source(&resource->address64.resource_source); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_extended_irq * - * PARAMETERS: Data - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Prints out the various members of the Data structure type. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -static void acpi_rs_dump_extended_irq(union acpi_resource_data *data) +static void acpi_rs_dump_extended_irq(union acpi_resource_data *resource) { - struct acpi_resource_ext_irq *ext_irq_data = - (struct acpi_resource_ext_irq *)data; - u8 index = 0; - ACPI_FUNCTION_ENTRY(); acpi_os_printf("Extended IRQ Resource\n"); - acpi_os_printf(" Resource %s\n", - ACPI_CONSUMER == ext_irq_data->producer_consumer ? - "Consumer" : "Producer"); + acpi_rs_out_string("Resource", + ACPI_CONSUMER == + resource->extended_irq. + producer_consumer ? "Consumer" : "Producer"); - acpi_os_printf(" %s\n", - ACPI_LEVEL_SENSITIVE == ext_irq_data->edge_level ? - "Level" : "Edge"); + acpi_rs_out_string("Triggering", + ACPI_LEVEL_SENSITIVE == + resource->extended_irq. + edge_level ? "Level" : "Edge"); - acpi_os_printf(" Active %s\n", - ACPI_ACTIVE_LOW == ext_irq_data->active_high_low ? - "low" : "high"); + acpi_rs_out_string("Active", + ACPI_ACTIVE_LOW == + resource->extended_irq. + active_high_low ? "Low" : "High"); - acpi_os_printf(" %s\n", - ACPI_SHARED == ext_irq_data->shared_exclusive ? - "Shared" : "Exclusive"); + acpi_rs_out_string("Sharing", + ACPI_SHARED == + resource->extended_irq. + shared_exclusive ? "Shared" : "Exclusive"); - acpi_os_printf(" Interrupts : %X ( ", - ext_irq_data->number_of_interrupts); + acpi_rs_dump_resource_source(&resource->extended_irq.resource_source); - for (index = 0; index < ext_irq_data->number_of_interrupts; index++) { - acpi_os_printf("%X ", ext_irq_data->interrupts[index]); - } - - acpi_os_printf(")\n"); + acpi_rs_out_integer8("Interrupts", + (u8) resource->extended_irq.number_of_interrupts); - if (0xFF != ext_irq_data->resource_source.index) { - acpi_os_printf(" Resource Source Index: %X", - ext_irq_data->resource_source.index); - - acpi_os_printf(" Resource Source: %s", - ext_irq_data->resource_source.string_ptr); - } - - return; + acpi_rs_dump_dword_list(resource->extended_irq.number_of_interrupts, + resource->extended_irq.interrupts); } /******************************************************************************* * - * FUNCTION: acpi_rs_dump_resource_list + * FUNCTION: acpi_rs_dump_generic_reg * - * PARAMETERS: Resource - pointer to the resource structure to dump. + * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * - * DESCRIPTION: Dispatches the structure to the correct dump routine. + * DESCRIPTION: Dump the field names and values of the resource descriptor * ******************************************************************************/ -void acpi_rs_dump_resource_list(struct acpi_resource *resource) +static void acpi_rs_dump_generic_reg(union acpi_resource_data *resource) { - u8 count = 0; - u8 done = FALSE; ACPI_FUNCTION_ENTRY(); - if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) { - while (!done) { - acpi_os_printf("Resource structure %X.\n", count++); - - switch (resource->id) { - case ACPI_RSTYPE_IRQ: - acpi_rs_dump_irq(&resource->data); - break; - - case ACPI_RSTYPE_DMA: - acpi_rs_dump_dma(&resource->data); - break; - - case ACPI_RSTYPE_START_DPF: - acpi_rs_dump_start_depend_fns(&resource->data); - break; - - case ACPI_RSTYPE_END_DPF: - acpi_os_printf - ("end_dependent_functions Resource\n"); - /* acpi_rs_dump_end_dependent_functions (Resource->Data); */ - break; - - case ACPI_RSTYPE_IO: - acpi_rs_dump_io(&resource->data); - break; - - case ACPI_RSTYPE_FIXED_IO: - acpi_rs_dump_fixed_io(&resource->data); - break; + acpi_os_printf("Generic Register Resource\n"); - case ACPI_RSTYPE_VENDOR: - acpi_rs_dump_vendor_specific(&resource->data); - break; + acpi_rs_out_integer8("Space ID", (u8) resource->generic_reg.space_id); - case ACPI_RSTYPE_END_TAG: - /*rs_dump_end_tag (Resource->Data); */ - acpi_os_printf("end_tag Resource\n"); - done = TRUE; - break; + acpi_rs_out_integer8("Bit Width", (u8) resource->generic_reg.bit_width); - case ACPI_RSTYPE_MEM24: - acpi_rs_dump_memory24(&resource->data); - break; + acpi_rs_out_integer8("Bit Offset", + (u8) resource->generic_reg.bit_offset); - case ACPI_RSTYPE_MEM32: - acpi_rs_dump_memory32(&resource->data); - break; + acpi_rs_out_integer8("Address Size", + (u8) resource->generic_reg.address_size); - case ACPI_RSTYPE_FIXED_MEM32: - acpi_rs_dump_fixed_memory32(&resource->data); - break; - - case ACPI_RSTYPE_ADDRESS16: - acpi_rs_dump_address16(&resource->data); - break; - - case ACPI_RSTYPE_ADDRESS32: - acpi_rs_dump_address32(&resource->data); - break; + acpi_rs_out_integer64("Address", resource->generic_reg.address); +} - case ACPI_RSTYPE_ADDRESS64: - acpi_rs_dump_address64(&resource->data); - break; +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_end_depend_fns + * + * PARAMETERS: Resource - Pointer to an internal resource descriptor + * + * RETURN: None + * + * DESCRIPTION: Print type, no data. + * + ******************************************************************************/ - case ACPI_RSTYPE_EXT_IRQ: - acpi_rs_dump_extended_irq(&resource->data); - break; +static void acpi_rs_dump_end_depend_fns(union acpi_resource_data *resource) +{ + ACPI_FUNCTION_ENTRY(); - default: - acpi_os_printf("Invalid resource type\n"); - break; + acpi_os_printf("end_dependent_functions Resource\n"); +} - } +/******************************************************************************* + * + * FUNCTION: acpi_rs_dump_end_tag + * + * PARAMETERS: Resource - Pointer to an internal resource descriptor + * + * RETURN: None + * + * DESCRIPTION: Print type, no data. + * + ******************************************************************************/ - resource = - ACPI_PTR_ADD(struct acpi_resource, resource, - resource->length); - } - } +static void acpi_rs_dump_end_tag(union acpi_resource_data *resource) +{ + ACPI_FUNCTION_ENTRY(); - return; + acpi_os_printf("end_tag Resource\n"); } /******************************************************************************* * * FUNCTION: acpi_rs_dump_irq_list * - * PARAMETERS: route_table - pointer to the routing table to dump. + * PARAMETERS: route_table - Pointer to the routing table to dump. * * RETURN: None * - * DESCRIPTION: Dispatches the structures to the correct dump routine. + * DESCRIPTION: Print IRQ routing table * ******************************************************************************/ @@ -1071,41 +1017,35 @@ void acpi_rs_dump_irq_list(u8 * route_table) { u8 *buffer = route_table; u8 count = 0; - u8 done = FALSE; struct acpi_pci_routing_table *prt_element; ACPI_FUNCTION_ENTRY(); - if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) { - prt_element = - ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer); + if (!(acpi_dbg_level & ACPI_LV_RESOURCES) + || !(_COMPONENT & acpi_dbg_layer)) { + return; + } - while (!done) { - acpi_os_printf("PCI IRQ Routing Table structure %X.\n", - count++); + prt_element = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer); - acpi_os_printf(" Address: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64(prt_element-> - address)); + /* Dump all table elements, Exit on null length element */ - acpi_os_printf(" Pin: %X\n", prt_element->pin); + while (prt_element->length) { + acpi_os_printf("\n[%02X] PCI IRQ Routing Table Package\n", + count); - acpi_os_printf(" Source: %s\n", prt_element->source); + acpi_rs_out_integer64("Address", prt_element->address); - acpi_os_printf(" source_index: %X\n", - prt_element->source_index); + acpi_rs_out_integer32("Pin", prt_element->pin); + acpi_rs_out_string("Source", prt_element->source); + acpi_rs_out_integer32("Source Index", + prt_element->source_index); - buffer += prt_element->length; - prt_element = - ACPI_CAST_PTR(struct acpi_pci_routing_table, - buffer); - if (0 == prt_element->length) { - done = TRUE; - } - } + buffer += prt_element->length; + prt_element = + ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer); + count++; } - - return; } #endif |