|
@@ -119,7 +119,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
|
|
|
EXPORT_SYMBOL_GPL(acpi_dev_resource_memory);
|
|
|
|
|
|
static void acpi_dev_ioresource_flags(struct resource *res, u64 len,
|
|
|
- u8 io_decode)
|
|
|
+ u8 io_decode, u8 translation_type)
|
|
|
{
|
|
|
res->flags = IORESOURCE_IO;
|
|
|
|
|
@@ -131,6 +131,8 @@ static void acpi_dev_ioresource_flags(struct resource *res, u64 len,
|
|
|
|
|
|
if (io_decode == ACPI_DECODE_16)
|
|
|
res->flags |= IORESOURCE_IO_16BIT_ADDR;
|
|
|
+ if (translation_type == ACPI_SPARSE_TRANSLATION)
|
|
|
+ res->flags |= IORESOURCE_IO_SPARSE;
|
|
|
}
|
|
|
|
|
|
static void acpi_dev_get_ioresource(struct resource *res, u64 start, u64 len,
|
|
@@ -138,7 +140,7 @@ static void acpi_dev_get_ioresource(struct resource *res, u64 start, u64 len,
|
|
|
{
|
|
|
res->start = start;
|
|
|
res->end = start + len - 1;
|
|
|
- acpi_dev_ioresource_flags(res, len, io_decode);
|
|
|
+ acpi_dev_ioresource_flags(res, len, io_decode, 0);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -231,7 +233,8 @@ static bool acpi_decode_space(struct resource_win *win,
|
|
|
acpi_dev_memresource_flags(res, len, wp);
|
|
|
break;
|
|
|
case ACPI_IO_RANGE:
|
|
|
- acpi_dev_ioresource_flags(res, len, iodec);
|
|
|
+ acpi_dev_ioresource_flags(res, len, iodec,
|
|
|
+ addr->info.io.translation_type);
|
|
|
break;
|
|
|
case ACPI_BUS_NUMBER_RANGE:
|
|
|
res->flags = IORESOURCE_BUS;
|