Author: cgutman
Date: Sun Aug 29 18:40:33 2010
New Revision: 48648
URL:
http://svn.reactos.org/svn/reactos?rev=48648&view=rev
Log:
[ACPI]
- Read and report ACPI_RESOURCE_TYPE_FIXED_MEMORY32
Modified:
trunk/reactos/drivers/bus/acpi/buspdo.c
Modified: trunk/reactos/drivers/bus/acpi/buspdo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/buspdo.c?…
==============================================================================
--- trunk/reactos/drivers/bus/acpi/buspdo.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/bus/acpi/buspdo.c [iso-8859-1] Sun Aug 29 18:40:33 2010
@@ -727,6 +727,7 @@
case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
case ACPI_RESOURCE_TYPE_MEMORY24:
case ACPI_RESOURCE_TYPE_MEMORY32:
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
case ACPI_RESOURCE_TYPE_IO:
{
NumberOfResources++;
@@ -1044,6 +1045,22 @@
ResourceDescriptor->u.Memory.Start.QuadPart =
mem32_data->Minimum;
ResourceDescriptor->u.Memory.Length =
mem32_data->AddressLength;
+ ResourceDescriptor++;
+ break;
+ }
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
+ {
+ ACPI_RESOURCE_FIXED_MEMORY32 *memfixed32_data =
(ACPI_RESOURCE_FIXED_MEMORY32*) &resource->Data;
+ ResourceDescriptor->Type = CmResourceTypeMemory;
+ ResourceDescriptor->ShareDisposition =
CmResourceShareDeviceExclusive;
+ ResourceDescriptor->Flags = 0;
+ if (memfixed32_data->WriteProtect ==
ACPI_READ_ONLY_MEMORY)
+ ResourceDescriptor->Flags |=
CM_RESOURCE_MEMORY_READ_ONLY;
+ else
+ ResourceDescriptor->Flags |=
CM_RESOURCE_MEMORY_READ_WRITE;
+ ResourceDescriptor->u.Memory.Start.QuadPart =
memfixed32_data->Address;
+ ResourceDescriptor->u.Memory.Length =
memfixed32_data->AddressLength;
+
ResourceDescriptor++;
break;
}
@@ -1142,6 +1159,7 @@
case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
case ACPI_RESOURCE_TYPE_MEMORY24:
case ACPI_RESOURCE_TYPE_MEMORY32:
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
case ACPI_RESOURCE_TYPE_IO:
{
NumberOfResources++;
@@ -1482,6 +1500,24 @@
RequirementDescriptor++;
break;
}
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
+ {
+ ACPI_RESOURCE_FIXED_MEMORY32 *fixedmem32_data =
(ACPI_RESOURCE_FIXED_MEMORY32*) &resource->Data;
+ RequirementDescriptor->Option = CurrentRes ? 0 :
IO_RESOURCE_PREFERRED;
+ RequirementDescriptor->Type = CmResourceTypeMemory;
+ RequirementDescriptor->ShareDisposition =
CmResourceShareDeviceExclusive;
+ RequirementDescriptor->Flags = 0;
+ if (fixedmem32_data->WriteProtect ==
ACPI_READ_ONLY_MEMORY)
+ RequirementDescriptor->Flags |=
CM_RESOURCE_MEMORY_READ_ONLY;
+ else
+ RequirementDescriptor->Flags |=
CM_RESOURCE_MEMORY_READ_WRITE;
+ RequirementDescriptor->u.Memory.MinimumAddress.QuadPart
= fixedmem32_data->Address;
+ RequirementDescriptor->u.Memory.MaximumAddress.QuadPart
= fixedmem32_data->Address;
+ RequirementDescriptor->u.Memory.Length =
fixedmem32_data->AddressLength;
+
+ RequirementDescriptor++;
+ break;
+ }
default:
{
break;