]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Revert "ArmPlatformPkg/ArmVExpressDxe: Change FDT default file names."
authorOlivier Martin <Olivier.Martin@arm.com>
Wed, 8 Jul 2015 16:20:30 +0000 (16:20 +0000)
committeroliviermartin <oliviermartin@Edk2>
Wed, 8 Jul 2015 16:20:30 +0000 (16:20 +0000)
This reverts commit SVN rev17862.
The former commit was breaking the build when DTB_DIR is defined.
It has been the patch would be reverted for the time being.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <Olivier.Martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17889 6f19259b-4bc3-4df7-8a09-765794883524

ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/AArch64/ArmFvpDxeAArch64.c
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.c
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.inf
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmVExpressInternal.h
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec

index 1e990d140ddb9848f34c4cd32243b95cc745e618..c368957dcd3d5bc4674042c93751ffa2ff305f61 100644 (file)
 // model or hardware platforms).\r
 //\r
 CONST ARM_VEXPRESS_PLATFORM ArmVExpressPlatforms[] = {\r
-  { ARM_FVP_VEXPRESS_AEMv8x4, FixedPcdGetPtr (PcdFdtFvpVExpressAEMv8x4), L"rtsm_ve-aemv8a.dtb" },\r
-  { ARM_FVP_BASE, FixedPcdGetPtr (PcdFdtFvpBaseAEMv8x4), L"fvp-base.dtb" },\r
-  { ARM_FVP_FOUNDATION, FixedPcdGetPtr (PcdFdtFvpFoundation), L"fvp-foundation.dtb" },\r
-  { ARM_FVP_VEXPRESS_UNKNOWN, &gZeroGuid }\r
+  { ARM_FVP_VEXPRESS_AEMv8x4,                  FixedPcdGetPtr (PcdFdtFvpVExpressAEMv8x4),        L"rtsm_ve-aemv8a.dtb"                  },\r
+  { ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2,        FixedPcdGetPtr (PcdFdtFvpBaseAEMv8x4GicV2),       L"fvp-base-gicv2-psci.dtb"             },\r
+  { ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2_LEGACY, FixedPcdGetPtr (PcdFdtFvpBaseAEMv8x4GicV2Legacy), L"fvp-base-gicv2legacy-psci.dtb"       },\r
+  { ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV3,        FixedPcdGetPtr (PcdFdtFvpBaseAEMv8x4GicV3),       L"fvp-base-gicv3-psci.dtb"             },\r
+  { ARM_FVP_FOUNDATION_GICV2,                  FixedPcdGetPtr (PcdFdtFvpFoundationGicV2),        L"fvp-foundation-gicv2-psci.dtb"       },\r
+  { ARM_FVP_FOUNDATION_GICV2_LEGACY,           FixedPcdGetPtr (PcdFdtFvpFoundationGicV2Legacy),  L"fvp-foundation-gicv2legacy-psci.dtb" },\r
+  { ARM_FVP_FOUNDATION_GICV3,                  FixedPcdGetPtr (PcdFdtFvpFoundationGicV3),        L"fvp-foundation-gicv3-psci.dtb"       },\r
+  { ARM_FVP_VEXPRESS_UNKNOWN }\r
 };\r
 \r
 /**\r
@@ -45,9 +49,11 @@ ArmVExpressGetPlatform (
   OUT CONST ARM_VEXPRESS_PLATFORM** Platform\r
   )\r
 {\r
-  EFI_STATUS  Status;\r
-  UINT32      SysId;\r
-  UINT32      FvpSysId;\r
+  EFI_STATUS            Status;\r
+  UINT32                SysId;\r
+  UINT32                FvpSysId;\r
+  UINT32                VariantSysId;\r
+  ARM_GIC_ARCH_REVISION GicRevision;\r
 \r
   ASSERT (Platform != NULL);\r
 \r
@@ -55,23 +61,46 @@ ArmVExpressGetPlatform (
 \r
   SysId = MmioRead32 (ARM_VE_SYS_ID_REG);\r
   if (SysId != ARM_RTSM_SYS_ID) {\r
-    //\r
-    // Keep only the HBI board number and the platform type fields of the\r
-    // system id register to identify if we are running on the FVP base or\r
-    // foundation model.\r
-    //\r
-    FvpSysId = SysId & (ARM_FVP_SYS_ID_HBI_MASK |\r
-                        ARM_FVP_SYS_ID_PLAT_MASK );\r
+    // Remove the GIC variant to identify if we are running on the FVP Base or\r
+    // Foundation models\r
+    FvpSysId     = SysId & (ARM_FVP_SYS_ID_HBI_MASK |\r
+                            ARM_FVP_SYS_ID_PLAT_MASK );\r
+    // Extract the variant from the SysId\r
+    VariantSysId = SysId & ARM_FVP_SYS_ID_VARIANT_MASK;\r
 \r
     if (FvpSysId == ARM_FVP_BASE_BOARD_SYS_ID) {\r
-      Status = ArmVExpressGetPlatformFromId (ARM_FVP_BASE, Platform);\r
+      if (VariantSysId == ARM_FVP_GIC_VE_MMAP) {\r
+        // FVP Base Model with legacy GIC memory map\r
+        Status = ArmVExpressGetPlatformFromId (ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2_LEGACY, Platform);\r
+      } else {\r
+        GicRevision = ArmGicGetSupportedArchRevision ();\r
+\r
+        if (GicRevision == ARM_GIC_ARCH_REVISION_2) {\r
+          // FVP Base Model with GICv2 support\r
+          Status = ArmVExpressGetPlatformFromId (ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2, Platform);\r
+        } else {\r
+          // FVP Base Model with GICv3 support\r
+          Status = ArmVExpressGetPlatformFromId (ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV3, Platform);\r
+        }\r
+      }\r
     } else if (FvpSysId == ARM_FVP_FOUNDATION_BOARD_SYS_ID) {\r
-      Status = ArmVExpressGetPlatformFromId (ARM_FVP_FOUNDATION, Platform);\r
+      if (VariantSysId == ARM_FVP_GIC_VE_MMAP) {\r
+        // FVP Foundation Model with legacy GIC memory map\r
+        Status = ArmVExpressGetPlatformFromId (ARM_FVP_FOUNDATION_GICV2_LEGACY, Platform);\r
+      } else {\r
+        GicRevision = ArmGicGetSupportedArchRevision ();\r
+\r
+        if (GicRevision == ARM_GIC_ARCH_REVISION_2) {\r
+          // FVP Foundation Model with GICv2\r
+          Status = ArmVExpressGetPlatformFromId (ARM_FVP_FOUNDATION_GICV2, Platform);\r
+        } else {\r
+          // FVP Foundation Model with GICv3\r
+          Status = ArmVExpressGetPlatformFromId (ARM_FVP_FOUNDATION_GICV3, Platform);\r
+        }\r
+      }\r
     }\r
   } else {\r
-    //\r
     // FVP Versatile Express AEMv8\r
-    //\r
     Status = ArmVExpressGetPlatformFromId (ARM_FVP_VEXPRESS_AEMv8x4, Platform);\r
   }\r
 \r
index cbd526e60c3bf34913154afec715ca4cf63e0a53..8c42814a04dc0f4b43eea013a6f7bf3fef2a4153 100644 (file)
@@ -24,7 +24,6 @@
 #include <Protocol/FirmwareVolume2.h>\r
 \r
 #define ARM_FVP_BASE_VIRTIO_BLOCK_BASE    0x1c130000\r
-STATIC CONST CHAR16 *mFdtFallbackName = L"fdt.dtb";\r
 \r
 #pragma pack(1)\r
 typedef struct {\r
@@ -156,20 +155,16 @@ ArmFvpInitialise (
   IN EFI_SYSTEM_TABLE   *SystemTable\r
   )\r
 {\r
+  CONST ARM_VEXPRESS_PLATFORM* Platform;\r
   EFI_STATUS                   Status;\r
-  CONST ARM_VEXPRESS_PLATFORM  *Platform;\r
-  BOOLEAN                      NeedFallback;\r
-  UINTN                        TextDevicePathBaseSize;\r
-  UINTN                        TextDevicePathSize;\r
   CHAR16                       *TextDevicePath;\r
+  UINTN                        TextDevicePathSize;\r
   VOID                         *Buffer;\r
   EFI_DEVICE_PATH              *FdtDevicePath;\r
 \r
-  Status = gBS->InstallProtocolInterface (\r
-                  &ImageHandle,\r
-                  &gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE,\r
-                  &mVirtioBlockDevicePath\r
-                  );\r
+  Status = gBS->InstallProtocolInterface (&ImageHandle,\r
+                 &gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE,\r
+                 &mVirtioBlockDevicePath);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
@@ -185,32 +180,13 @@ ArmFvpInitialise (
       }\r
       FreePool (FdtDevicePath);\r
     } else {\r
-      //\r
-      // In the case of the FVP base and foundation platforms, two default\r
-      // text device paths for the FDT are defined. The first one, like every\r
-      // other platform, ends with a file name that identifies the platform. The\r
-      // second one ends with the fallback file name "fdt.dtb" for historical\r
-      // backward compatibility reasons.\r
-      //\r
-      NeedFallback = (Platform->Id == ARM_FVP_BASE) ||\r
-                     (Platform->Id == ARM_FVP_FOUNDATION);\r
-\r
-      TextDevicePathBaseSize = StrSize ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)) - sizeof (CHAR16);\r
-      TextDevicePathSize = TextDevicePathBaseSize + StrSize (Platform->FdtName);\r
-      if (NeedFallback) {\r
-        TextDevicePathSize += TextDevicePathBaseSize + StrSize (mFdtFallbackName);\r
-      }\r
+      TextDevicePathSize  = StrSize ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)) - sizeof (CHAR16);\r
+      TextDevicePathSize += StrSize (Platform->FdtName);\r
 \r
       TextDevicePath = AllocatePool (TextDevicePathSize);\r
       if (TextDevicePath != NULL) {\r
         StrCpy (TextDevicePath, ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)));\r
         StrCat (TextDevicePath, Platform->FdtName);\r
-\r
-        if (NeedFallback) {\r
-          StrCat (TextDevicePath, L";");\r
-          StrCat (TextDevicePath, ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)));\r
-          StrCat (TextDevicePath, mFdtFallbackName);\r
-        }\r
       }\r
     }\r
     if (TextDevicePath != NULL) {\r
@@ -222,11 +198,6 @@ ArmFvpInitialise (
           ));\r
       }\r
       FreePool (TextDevicePath);\r
-    } else {\r
-        DEBUG ((\r
-          EFI_D_ERROR,\r
-          "ArmFvpDxe: Setting of FDT device path in PcdFdtDevicePaths failed - %r\n", EFI_OUT_OF_RESOURCES\r
-          ));\r
     }\r
   }\r
 \r
index 4b9b57bc0489445917daad02bb9c4c1f218dff66..327c5101ddb5f6a037f0e4b73c14f08bf96a7871 100644 (file)
@@ -32,7 +32,6 @@
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
   ArmPkg/ArmPkg.dec\r
   ArmPlatformPkg/ArmPlatformPkg.dec\r
   ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec\r
@@ -55,9 +54,6 @@
 [LibraryClasses.AARCH64]\r
   ArmGicLib\r
 \r
-[Guids]\r
-  gZeroGuid\r
-\r
 [Protocols]\r
   gEfiFirmwareVolume2ProtocolGuid\r
   gEfiDevicePathProtocolGuid\r
 \r
 [FixedPcd.AARCH64]\r
   gArmVExpressTokenSpaceGuid.PcdFdtFvpVExpressAEMv8x4\r
-  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4\r
-  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundation\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2Legacy\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV3\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2Legacy\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV3\r
 \r
 [Pcd]\r
   gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths\r
index 1f18197c7c462bff84fc93f1abfb56b7ec7c4592..351c73312dc49cf25a93895774ba84f72ccfa708 100644 (file)
@@ -19,6 +19,7 @@ CONST EFI_GUID ArmHwA9x4Guid = { 0x2fd21cf6, 0xe6e8, 0x4ff2, { 0xa9, 0xca, 0x3b,
 CONST EFI_GUID ArmHwA15x2A7x3Guid = { 0xd5e606eb, 0x83df, 0x4e90, { 0x81, 0xe8, 0xc3, 0xdb, 0x2f, 0x77, 0x17, 0x9a } };\r
 CONST EFI_GUID ArmHwA15Guid = { 0x6b8947c2, 0x4287, 0x4d91, { 0x8f, 0xe0, 0xa3, 0x81, 0xea, 0x5b, 0x56, 0x8f } };\r
 CONST EFI_GUID ArmHwA5Guid = { 0xa2cc7663, 0x4d7c, 0x448a, { 0xaa, 0xb5, 0x4c, 0x03, 0x4b, 0x6f, 0xda, 0xb7 } };\r
+CONST EFI_GUID NullGuid = { 0x0, 0x0, 0x0, { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } };\r
 \r
 //\r
 // Description of the four hardware platforms :\r
@@ -33,7 +34,7 @@ CONST ARM_VEXPRESS_PLATFORM ArmVExpressPlatforms[] = {
   { ARM_HW_A15x2_A7x3, &ArmHwA15x2A7x3Guid, L"ca15a7" },\r
   { ARM_HW_A15, &ArmHwA15Guid, L"ca15a7" },\r
   { ARM_HW_A5, &ArmHwA5Guid, L"ca5s" },\r
-  { ARM_FVP_VEXPRESS_UNKNOWN, &gZeroGuid, NULL }\r
+  { ARM_FVP_VEXPRESS_UNKNOWN, &NullGuid, NULL }\r
 };\r
 \r
 /**\r
index 14035e478b3576d4fd7b49ebd968ab055be133b3..1a007627ad3f277b12f717b7d862c69844997633 100644 (file)
@@ -29,7 +29,6 @@
   ArmPlatformPkg/ArmPlatformPkg.dec\r
   EmbeddedPkg/EmbeddedPkg.dec\r
   MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
 \r
 [LibraryClasses]\r
   ArmShellCmdRunAxfLib\r
@@ -37,8 +36,5 @@
   MemoryAllocationLib\r
   UefiDriverEntryPoint\r
 \r
-[Guids]\r
-  gZeroGuid\r
-\r
 [Protocols]\r
   gEfiDevicePathProtocolGuid\r
index 678878859014a191c665a18060b21e0cbc63099c..e123eea2d28b3490cb408778d625d777ede1b1a4 100644 (file)
@@ -24,8 +24,6 @@
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UefiLib.h>\r
 \r
-#include <Guid/ZeroGuid.h>\r
-\r
 #include <VExpressMotherBoard.h>\r
 \r
 // This 'enum' is needed as variations based on existing platform exist\r
@@ -38,8 +36,12 @@ typedef enum {
   ARM_FVP_VEXPRESS_A15x1_A7x1,\r
   ARM_FVP_VEXPRESS_A15x4_A7x4,\r
   ARM_FVP_VEXPRESS_AEMv8x4,\r
-  ARM_FVP_BASE,\r
-  ARM_FVP_FOUNDATION,\r
+  ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2,\r
+  ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2_LEGACY,\r
+  ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV3,\r
+  ARM_FVP_FOUNDATION_GICV2,\r
+  ARM_FVP_FOUNDATION_GICV2_LEGACY,\r
+  ARM_FVP_FOUNDATION_GICV3,\r
   ARM_HW_A9x4,\r
   ARM_HW_A15x2_A7x3,\r
   ARM_HW_A15,\r
index dba08dbae5a0fb670ea2fc9b29f9189032986e0f..d375ed3b9772920fadfb9c29388181abd66525ad 100644 (file)
@@ -73,5 +73,9 @@
 \r
   # AArch64 FVP platforms\r
   gArmVExpressTokenSpaceGuid.PcdFdtFvpVExpressAEMv8x4|{ 0xa8, 0x95, 0x5f, 0xf6, 0x32, 0x7b, 0xf3, 0x16, 0x12, 0x32, 0x45, 0x50, 0xbd, 0x54, 0xca, 0xe5 }|VOID*|0x00000010\r
-  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4|{ 0x66, 0xcf, 0x57, 0xa4, 0xac, 0x7e, 0x7f, 0x3d, 0x21, 0x88, 0x3a, 0x58, 0x3c, 0x27, 0xd7, 0xe8 }|VOID*|0x00000011\r
-  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundation|{ 0x36, 0x4f, 0x61, 0x92, 0x86, 0xb1, 0xa2, 0x16, 0x32, 0x65, 0x35, 0x3f, 0x01, 0xf3, 0x3b, 0x64 }|VOID*|0x00000014\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2|{ 0x66, 0xcf, 0x57, 0xa4, 0xac, 0x7e, 0x7f, 0x3d, 0x21, 0x88, 0x3a, 0x58, 0x3c, 0x27, 0xd7, 0xe8 }|VOID*|0x00000011\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2Legacy|{ 0x8b, 0xcb, 0xe0, 0x14, 0xd1, 0x46, 0x79, 0xae, 0x7f, 0x20, 0xcf, 0x84, 0x22, 0xc7, 0x94, 0x4a }|VOID*|0x00000012\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV3|{ 0x4d, 0x03, 0xb8, 0x77, 0x63, 0x25, 0x0a, 0x7f, 0xe9, 0x72, 0xfa, 0x68, 0x74, 0xc7, 0x5e, 0xb5 }|VOID*|0x00000013\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2|{ 0x36, 0x4f, 0x61, 0x92, 0x86, 0xb1, 0xa2, 0x16, 0x32, 0x65, 0x35, 0x3f, 0x01, 0xf3, 0x3b, 0x64 }|VOID*|0x00000014\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2Legacy|{ 0xf6, 0xcb, 0x9d, 0x86, 0x38, 0x74, 0x8a, 0xb0, 0xfe, 0x40, 0x08, 0x0f, 0x3f, 0xb3, 0x50, 0x7c }|VOID*|0x00000015\r
+  gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV3|{ 0x51, 0xd0, 0x75, 0x6b, 0x9d, 0x35, 0x1b, 0x1b, 0xa6, 0xc6, 0xab, 0xa0, 0x90, 0xf9, 0xf0, 0x0a }|VOID*|0x00000016\r