/** @file\r
PCI Root Bridge Io Protocol implementation\r
\r
+ Copyright (C) 2015, Red Hat, Inc.\r
Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials are licensed and made available\r
#include "PciHostBridge.h"\r
#include "IoFifo.h"\r
\r
-typedef struct {\r
- EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR SpaceDesp[TypeMax];\r
- EFI_ACPI_END_TAG_DESCRIPTOR EndDesp;\r
-} RESOURCE_CONFIGURATION;\r
-\r
-RESOURCE_CONFIGURATION Configuration = {\r
- {{0x8A, 0x2B, 1, 0, 0, 0, 0, 0, 0, 0},\r
- {0x8A, 0x2B, 0, 0, 0, 32, 0, 0, 0, 0},\r
- {0x8A, 0x2B, 0, 0, 6, 32, 0, 0, 0, 0},\r
- {0x8A, 0x2B, 0, 0, 0, 64, 0, 0, 0, 0},\r
- {0x8A, 0x2B, 0, 0, 6, 64, 0, 0, 0, 0},\r
- {0x8A, 0x2B, 2, 0, 0, 0, 0, 0, 0, 0}},\r
- {0x79, 0}\r
+STATIC\r
+CONST\r
+RESOURCE_CONFIGURATION mConfigurationTemplate = {\r
+ {\r
+ { 0x8A, 0x2B, 1, 0, 0, 0, 0, 0, 0, 0 }, // SpaceDesc[TypeIo]\r
+ { 0x8A, 0x2B, 0, 0, 0, 32, 0, 0, 0, 0 }, // SpaceDesc[TypeMem32]\r
+ { 0x8A, 0x2B, 0, 0, 6, 32, 0, 0, 0, 0 }, // SpaceDesc[TypePMem32]\r
+ { 0x8A, 0x2B, 0, 0, 0, 64, 0, 0, 0, 0 }, // SpaceDesc[TypeMem64]\r
+ { 0x8A, 0x2B, 0, 0, 6, 64, 0, 0, 0, 0 }, // SpaceDesc[TypePMem64]\r
+ { 0x8A, 0x2B, 2, 0, 0, 0, 0, 0, 0, 0 } // SpaceDesc[TypeBus]\r
+ },\r
+ { 0x79, 0 } // EndDesc\r
};\r
\r
//\r
UINTN Index;\r
\r
PrivateData = DRIVER_INSTANCE_FROM_PCI_ROOT_BRIDGE_IO_THIS (This);\r
+ CopyMem (&PrivateData->ConfigBuffer, &mConfigurationTemplate,\r
+ sizeof mConfigurationTemplate);\r
\r
for (Index = 0; Index < TypeMax; Index++) {\r
if (PrivateData->ResAllocNode[Index].Status == ResAllocated) {\r
EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Desc;\r
\r
- Desc = &Configuration.SpaceDesp[Index];\r
+ Desc = &PrivateData->ConfigBuffer.SpaceDesc[Index];\r
Desc->AddrRangeMin = PrivateData->ResAllocNode[Index].Base;\r
Desc->AddrRangeMax = PrivateData->ResAllocNode[Index].Base +\r
PrivateData->ResAllocNode[Index].Length - 1;\r
}\r
}\r
\r
- *Resources = &Configuration;\r
+ *Resources = &PrivateData->ConfigBuffer;\r
return EFI_SUCCESS;\r
}\r
\r