summaryrefslogtreecommitdiff
path: root/drivers/acpi/resources/rsdump.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/resources/rsdump.c')
-rw-r--r--drivers/acpi/resources/rsdump.c1284
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