Our PciHostBridgeDxe module creates one root bridge on the one and only host bridge. The resource apertures of the root bridge (bus range, IO space, MMIO space) are configured with the "mResAperture" array, which at the moment carries static values inherited from PcAtChipsetPkg.
Set the array as first thing from the PCDs that we parsed from the device tree. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> Reviewed-by: Olivier Martin <[email protected]> --- Notes: v3: - use PcdPciMmio32* [Olivier] - drop support for nonzero PCI memory translation [Alex, Peter, Rob et al] v2: - the PCI PCDs now come from ArmPlatformPkg [Olivier] ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf | 11 +++++++++++ ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.h | 2 ++ ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c | 16 +++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf index 4d5bb9c..be3200d 100644 --- a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf +++ b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf @@ -23,6 +23,7 @@ [Packages] MdePkg/MdePkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec [LibraryClasses] UefiDriverEntryPoint @@ -36,6 +37,7 @@ DevicePathLib IoLib PciLib + PcdLib [Sources] PciHostBridge.c @@ -48,5 +50,14 @@ gEfiMetronomeArchProtocolGuid ## CONSUMES gEfiDevicePathProtocolGuid ## PRODUCES +[Pcd] + gArmPlatformTokenSpaceGuid.PcdPciBusMin + gArmPlatformTokenSpaceGuid.PcdPciBusMax + gArmPlatformTokenSpaceGuid.PcdPciIoBase + gArmPlatformTokenSpaceGuid.PcdPciIoSize + gArmPlatformTokenSpaceGuid.PcdPciIoTranslation + gArmPlatformTokenSpaceGuid.PcdPciMmio32Base + gArmPlatformTokenSpaceGuid.PcdPciMmio32Size + [depex] gEfiMetronomeArchProtocolGuid diff --git a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.h b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.h index b69b832..6e9bd84 100644 --- a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.h +++ b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.h @@ -36,6 +36,7 @@ #include <Library/DevicePathLib.h> #include <Library/IoLib.h> #include <Library/PciLib.h> +#include <Library/PcdLib.h> // // Hard code the host bridge number in the platform. @@ -403,6 +404,7 @@ typedef struct { UINT64 IoBase; UINT64 IoLimit; + UINT64 IoTranslation; } PCI_ROOT_BRIDGE_RESOURCE_APERTURE; typedef enum { diff --git a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c index 2f6ef68..ced7528 100644 --- a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c +++ b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c @@ -52,9 +52,7 @@ EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath[1][1] = { } }; -PCI_ROOT_BRIDGE_RESOURCE_APERTURE mResAperture[1][1] = { - {{0, 0xff, 0x80000000, 0xffffffff, 0, 0xffff}} -}; +STATIC PCI_ROOT_BRIDGE_RESOURCE_APERTURE mResAperture[1][1]; EFI_HANDLE mDriverImageHandle; @@ -106,6 +104,18 @@ InitializePciHostBridge ( mDriverImageHandle = ImageHandle; + mResAperture[0][0].BusBase = PcdGet32 (PcdPciBusMin); + mResAperture[0][0].BusLimit = PcdGet32 (PcdPciBusMax); + + mResAperture[0][0].MemBase = PcdGet32 (PcdPciMmio32Base); + mResAperture[0][0].MemLimit = (UINT64)PcdGet32 (PcdPciMmio32Base) + + PcdGet32 (PcdPciMmio32Size) - 1; + + mResAperture[0][0].IoBase = PcdGet64 (PcdPciIoBase); + mResAperture[0][0].IoLimit = PcdGet64 (PcdPciIoBase) + + PcdGet64 (PcdPciIoSize) - 1; + mResAperture[0][0].IoTranslation = PcdGet64 (PcdPciIoTranslation); + // // Create Host Bridge Device Handle // -- 1.8.3.1 ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
