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?r... ============================================================================== --- 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;