summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndy Grover <agrover@groveronline.com>2003-02-17 21:05:49 -0800
committerAndy Grover <agrover@groveronline.com>2003-02-17 21:05:49 -0800
commit53a5643164909f3ff458660ab30b8818da4571bf (patch)
tree09a44a7d0a30351e07b58ed5bce88b790bb63637 /drivers
parentf3c365e434d5823e18c0807d32898a88bc361e69 (diff)
ACPI: Support translation attribute (Bjorn Helgaas)
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/resources/rsaddr.c15
-rw-r--r--drivers/acpi/resources/rsdump.c83
2 files changed, 64 insertions, 34 deletions
diff --git a/drivers/acpi/resources/rsaddr.c b/drivers/acpi/resources/rsaddr.c
index 34f3c45ef8d7..8c8ea5dc2363 100644
--- a/drivers/acpi/resources/rsaddr.c
+++ b/drivers/acpi/resources/rsaddr.c
@@ -130,6 +130,8 @@ acpi_rs_address16_resource (
if (ACPI_IO_RANGE == output_struct->data.address16.resource_type) {
output_struct->data.address16.attribute.io.range_attribute =
(u16) (temp8 & 0x03);
+ output_struct->data.address16.attribute.io.translation_attribute =
+ (u16) ((temp8 >> 4) & 0x03);
}
else {
/* BUS_NUMBER_RANGE == Address16.Data->resource_type */
@@ -328,6 +330,9 @@ acpi_rs_address16_stream (
temp8 = (u8)
(linked_list->data.address16.attribute.io.range_attribute &
0x03);
+ temp8 |=
+ (linked_list->data.address16.attribute.io.translation_attribute &
+ 0x03) << 4;
}
*buffer = temp8;
@@ -516,6 +521,8 @@ acpi_rs_address32_resource (
if (ACPI_IO_RANGE == output_struct->data.address32.resource_type) {
output_struct->data.address32.attribute.io.range_attribute =
(u16) (temp8 & 0x03);
+ output_struct->data.address32.attribute.io.translation_attribute =
+ (u16) ((temp8 >> 4) & 0x03);
}
else {
/* BUS_NUMBER_RANGE == output_struct->Data.Address32.resource_type */
@@ -712,6 +719,9 @@ acpi_rs_address32_stream (
temp8 = (u8)
(linked_list->data.address32.attribute.io.range_attribute &
0x03);
+ temp8 |=
+ (linked_list->data.address32.attribute.io.translation_attribute &
+ 0x03) << 4;
}
*buffer = temp8;
@@ -899,6 +909,8 @@ acpi_rs_address64_resource (
if (ACPI_IO_RANGE == output_struct->data.address64.resource_type) {
output_struct->data.address64.attribute.io.range_attribute =
(u16) (temp8 & 0x03);
+ output_struct->data.address64.attribute.io.translation_attribute =
+ (u16) ((temp8 >> 4) & 0x03);
}
else {
/* BUS_NUMBER_RANGE == output_struct->Data.Address64.resource_type */
@@ -1099,6 +1111,9 @@ acpi_rs_address64_stream (
temp8 = (u8)
(linked_list->data.address64.attribute.io.range_attribute &
0x03);
+ temp8 |=
+ (linked_list->data.address64.attribute.io.range_attribute &
+ 0x03) << 4;
}
*buffer = temp8;
diff --git a/drivers/acpi/resources/rsdump.c b/drivers/acpi/resources/rsdump.c
index 1af37e74a359..5995f47b8d00 100644
--- a/drivers/acpi/resources/rsdump.c
+++ b/drivers/acpi/resources/rsdump.c
@@ -551,6 +551,11 @@ acpi_rs_dump_address16 (
"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:
@@ -673,26 +678,31 @@ acpi_rs_dump_address32 (
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_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_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;
+ 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;
- }
+ 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:
@@ -815,26 +825,31 @@ acpi_rs_dump_address64 (
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_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_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;
+ 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;
- }
+ 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: