[edk2] [PATCH v2 10/13] Platforms/Juno: switch to generic PCI host bridge driver

Ard Biesheuvel posted 13 patches 7 years, 7 months ago
Only 10 patches received!
[edk2] [PATCH v2 10/13] Platforms/Juno: switch to generic PCI host bridge driver
Posted by Ard Biesheuvel 7 years, 7 months ago
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Juno/ArmJuno.dsc | 17 +++++++++++------
 Platforms/ARM/Juno/ArmJuno.fdf |  4 ++--
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index 141616e13234..b7b1fb8c8935 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -66,6 +66,10 @@
 [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
   PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
   NonDiscoverableDeviceRegistrationLib|MdeModulePkg/Library/NonDiscoverableDeviceRegistrationLib/NonDiscoverableDeviceRegistrationLib.inf
+  PciHostBridgeLib|OpenPlatformPkg/Platforms/ARM/Juno/Library/JunoPciHostBridgeLib/JunoPciHostBridgeLib.inf
+  PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
+  PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
+  PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
 
 [BuildOptions]
   *_*_*_PLATFORM_FLAGS = -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmJunoPkg/Include
@@ -143,13 +147,17 @@
   # PLDA PCI Root Complex
   #
   gArmTokenSpaceGuid.PcdPciBusMax|255
-  gArmTokenSpaceGuid.PcdPciIoBase|0x5f800000
+  gArmTokenSpaceGuid.PcdPciIoBase|0x0
   gArmTokenSpaceGuid.PcdPciIoSize|0x00800000
   gArmTokenSpaceGuid.PcdPciMmio32Base|0x50000000
   gArmTokenSpaceGuid.PcdPciMmio32Size|0x08000000
   gArmTokenSpaceGuid.PcdPciMmio64Base|0x4000000000
   gArmTokenSpaceGuid.PcdPciMmio64Size|0x100000000
 
+  gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x40000000
+  gArmTokenSpaceGuid.PcdPciIoTranslation|0x5f800000
+  gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|24
+
   # List of Device Paths that support BootMonFs
   gArmPlatformTokenSpaceGuid.PcdBootMonFsSupportedDevicePaths|L"VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)"
 
@@ -270,16 +278,13 @@
   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
 
   # Required by PCI
-  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
+  ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
 
   #
   # PCI Support
   #
   MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
-  ArmPlatformPkg/ArmJunoPkg/Drivers/PciHostBridgeDxe/PciHostBridgeDxe.inf {
-    <LibraryClasses>
-      DmaLib|EmbeddedPkg/Library/NullDmaLib/NullDmaLib.inf
-  }
+  MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
 
   #
   # SATA Controller
diff --git a/Platforms/ARM/Juno/ArmJuno.fdf b/Platforms/ARM/Juno/ArmJuno.fdf
index 3f96266fb625..7de995a255b1 100644
--- a/Platforms/ARM/Juno/ArmJuno.fdf
+++ b/Platforms/ARM/Juno/ArmJuno.fdf
@@ -140,7 +140,7 @@ FvNameGuid         = B73FE497-B92E-416e-8326-45AD0D270092
   INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
 
   # Required by PCI
-  INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
+  INF ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
 
   # FV FileSystem
   INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf
@@ -161,7 +161,7 @@ FvNameGuid         = B73FE497-B92E-416e-8326-45AD0D270092
   # PCI Support
   #
   INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
-  INF ArmPlatformPkg/ArmJunoPkg/Drivers/PciHostBridgeDxe/PciHostBridgeDxe.inf
+  INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
 
   #
   # SATA Controller
-- 
2.9.3

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
[edk2] [PATCH v2 11/13] Platforms/Juno: remove BdsLib dependency
Posted by Ard Biesheuvel 7 years, 7 months ago
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Juno/ArmJuno.dsc | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index b7b1fb8c8935..4ff2246822e6 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -318,10 +318,7 @@
   #
   # Juno platform driver
   #
-  ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf {
-    <LibraryClasses>
-      BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf
-  }
+  ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf
 
   #
   # SMBIOS/DMI
-- 
2.9.3

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
[edk2] [PATCH v2 12/13] Platforms/Juno: add DtPlatformDtbLoaderLib implementation
Posted by Ard Biesheuvel 7 years, 7 months ago
In preparation of switching to DtPlatformDxe to supply the device
tree image to the OS, add an implementation of DtPlatformDtbLoaderLib
that loads the correct version from an FV.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.c   | 71 ++++++++++++++++++++
 Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.inf | 38 +++++++++++
 2 files changed, 109 insertions(+)

diff --git a/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.c b/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.c
new file mode 100644
index 000000000000..8b4d1cbecffb
--- /dev/null
+++ b/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.c
@@ -0,0 +1,71 @@
+/** @file
+*
+*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
+*
+*  This program and the accompanying materials
+*  are licensed and made available under the terms and conditions of the BSD License
+*  which accompanies this distribution.  The full text of the license may be found at
+*  http://opensource.org/licenses/bsd-license.php
+*
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#include <PiDxe.h>
+
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/DxeServicesLib.h>
+#include <Library/IoLib.h>
+#include <Library/MemoryAllocationLib.h>
+
+#include "ArmPlatform.h"
+
+/**
+  Return a pool allocated copy of the DTB image that is appropriate for
+  booting the current platform via DT.
+
+  @param[out]   Dtb                   Pointer to the DTB copy
+  @param[out]   DtbSize               Size of the DTB copy
+
+  @retval       EFI_SUCCESS           Operation completed successfully
+  @retval       EFI_NOT_FOUND         No suitable DTB image could be located
+  @retval       EFI_OUT_OF_RESOURCES  No pool memory available
+
+**/
+EFI_STATUS
+EFIAPI
+DtPlatformLoadDtb (
+  OUT   VOID        **Dtb,
+  OUT   UINTN       *DtbSize
+  )
+{
+  EFI_STATUS                Status;
+  VOID                      *OrigDtb;
+  VOID                      *CopyDtb;
+  UINTN                     OrigDtbSize;
+  UINT32                    JunoRevision;
+
+  GetJunoRevision(JunoRevision);
+  ASSERT (JunoRevision >= JUNO_REVISION_R0 && JunoRevision <= JUNO_REVISION_R2);
+  if (JunoRevision < JUNO_REVISION_R0 || JunoRevision > JUNO_REVISION_R2) {
+    return EFI_NOT_FOUND;
+  }
+  
+  Status = GetSectionFromAnyFv (&gDtPlatformDefaultDtbFileGuid,
+             EFI_SECTION_RAW, (UINTN)JunoRevision - 1, &OrigDtb, &OrigDtbSize);
+  if (EFI_ERROR (Status)) {
+    return EFI_NOT_FOUND;
+  }
+
+  CopyDtb = AllocateCopyPool (OrigDtbSize, OrigDtb);
+  if (CopyDtb == NULL) {
+    return EFI_OUT_OF_RESOURCES;
+  }
+
+  *Dtb = CopyDtb;
+  *DtbSize = OrigDtbSize;
+
+  return EFI_SUCCESS;
+}
diff --git a/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.inf b/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.inf
new file mode 100644
index 000000000000..8018278546fe
--- /dev/null
+++ b/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.inf
@@ -0,0 +1,38 @@
+/** @file
+*
+*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
+*
+*  This program and the accompanying materials
+*  are licensed and made available under the terms and conditions of the BSD License
+*  which accompanies this distribution.  The full text of the license may be found at
+*  http://opensource.org/licenses/bsd-license.php
+*
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+[Defines]
+  INF_VERSION                    = 0x00010019
+  BASE_NAME                      = JunoDtPlatformDtbLoaderLib
+  FILE_GUID                      = 050d6041-1508-4ae7-a69f-250155ccb567
+  MODULE_TYPE                    = DXE_DRIVER
+  VERSION_STRING                 = 1.0
+  LIBRARY_CLASS                  = DtPlatformDtbLoaderLib|DXE_DRIVER
+
+[Sources]
+  JunoDtPlatformDtbLoaderLib.c
+
+[Packages]
+  ArmPkg/ArmPkg.dec
+  MdePkg/MdePkg.dec
+  EmbeddedPkg/EmbeddedPkg.dec
+
+[LibraryClasses]
+  BaseLib
+  DxeServicesLib
+  IoLib
+  MemoryAllocationLib
+
+[Guids]
+  gDtPlatformDefaultDtbFileGuid
-- 
2.9.3

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
[edk2] [PATCH v2 13/13] Platforms/Juno: switch to DtPlatformDxe
Posted by Ard Biesheuvel 7 years, 7 months ago
Switch to DtPLatformDxe, which uses embedded DTB binaries, or ACPI,
but does not have the elaborate (but awkward) tooling to load FDT
files from device paths.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Juno/ArmJuno.dsc            |  15 +++------------
 Platforms/ARM/Juno/ArmJuno.fdf            |  11 ++++++++---
 Platforms/ARM/Juno/DeviceTree/juno-r1.dtb | Bin 0 -> 23627 bytes
 Platforms/ARM/Juno/DeviceTree/juno-r2.dtb | Bin 0 -> 23627 bytes
 Platforms/ARM/Juno/DeviceTree/juno.dtb    | Bin 0 -> 22431 bytes
 5 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index 4ff2246822e6..683992af32e9 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -50,6 +50,8 @@
   # USB Requirements
   UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
 
+  DtPlatformDtbLoaderLib|OpenPlatformPkg/Platforms/ARM/Juno/Library/JunoDtPlatformDtbLoaderLib/JunoDtPlatformDtbLoaderLib.inf
+
 [LibraryClasses.common.SEC]
   PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
   ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
@@ -196,14 +198,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|1080
 
 [PcdsDynamicDefault.common]
-  #
-  # The size of a dynamic PCD of the (VOID*) type can not be increased at run
-  # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
-  # character "empty" string, to allow to be able to set FDT text device paths
-  # up to 128 characters long.
-  #
-  gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
-
   # Not all Juno platforms support PCI. This dynamic PCD disables or enable
   # PCI support.
   gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
@@ -343,10 +337,7 @@
   #
   # FDT installation
   #
-  EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf {
-    <LibraryClasses>
-      BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf
-  }
+  EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf
 
 [Components.AARCH64]
   #
diff --git a/Platforms/ARM/Juno/ArmJuno.fdf b/Platforms/ARM/Juno/ArmJuno.fdf
index 7de995a255b1..2f6cf62558ea 100644
--- a/Platforms/ARM/Juno/ArmJuno.fdf
+++ b/Platforms/ARM/Juno/ArmJuno.fdf
@@ -220,9 +220,14 @@ FvNameGuid         = B73FE497-B92E-416e-8326-45AD0D270092
   #
   # FDT installation
   #
-  # The UEFI driver is at the end of the list of the driver to be dispatched
-  # after the device drivers (eg: Ethernet) to ensure we have support for them.
-  INF EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf
+  INF EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf
+
+  # builtin device tree binaries -- for rev 0/1/2, respectively.
+  FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 {
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Juno/DeviceTree/juno.dtb
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Juno/DeviceTree/juno-r1.dtb
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Juno/DeviceTree/juno-r2.dtb
+  }
 
 !if $(ARCH) == AARCH64
   #
diff --git a/Platforms/ARM/Juno/DeviceTree/juno-r1.dtb b/Platforms/ARM/Juno/DeviceTree/juno-r1.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..28f35d28d21fe11689bb97f53cd1646d8e94f1b5
GIT binary patch
literal 23627
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

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/Juno/DeviceTree/juno-r2.dtb b/Platforms/ARM/Juno/DeviceTree/juno-r2.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..fae2058a81ac73ecb695bf73f8fb5c2cd929bf3b
GIT binary patch
literal 23627
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
JaUY%D{{q3l0>A(O

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/Juno/DeviceTree/juno.dtb b/Platforms/ARM/Juno/DeviceTree/juno.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..c408eb1640d5ca00070605323bfcafdb63da7010
GIT binary patch
literal 22431
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
QU(6`yez3hA57FrT4>m=JhX4Qo

literal 0
HcmV?d00001

-- 
2.9.3

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel