+++ /dev/null
-/** @file\r
-\r
- Copyright (c) 2014, ARM Ltd. All rights reserved.\r
-\r
- This program and the accompanying materials are licensed and made available\r
- under the terms and conditions of the BSD License which accompanies this\r
- distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
- WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include "ArmVExpressInternal.h"\r
-#include <Library/ArmPlatformLib.h> // To get Core Count\r
-\r
-//\r
-// Description of the four ARM model platforms :\r
-// Platform ids are defined in ArmVExpressInternal.h for\r
-// all "ArmVExpress-like" platforms (AARCH64 or ARM architecture,\r
-// model or hardware platforms).\r
-//\r
-CONST ARM_VEXPRESS_PLATFORM ArmVExpressPlatforms[] = {\r
- { ARM_FVP_VEXPRESS_A9x4, FixedPcdGetPtr (PcdFdtVExpressFvpA9x4), L"rtsm_ve-cortex_a9x4.dtb" },\r
- { ARM_FVP_VEXPRESS_A15x1, FixedPcdGetPtr (PcdFdtVExpressFvpA15x1), L"rtsm_ve-cortex_a15x1.dtb" },\r
- { ARM_FVP_VEXPRESS_A15x2, FixedPcdGetPtr (PcdFdtVExpressFvpA15x2), L"rtsm_ve-cortex_a15x2.dtb" },\r
- { ARM_FVP_VEXPRESS_A15x4, FixedPcdGetPtr (PcdFdtVExpressFvpA15x4), L"rtsm_ve-cortex_a15x4.dtb" },\r
- { ARM_FVP_VEXPRESS_UNKNOWN, }\r
-};\r
-\r
-/**\r
- Get information about the VExpress platform the firmware is running on.\r
-\r
- @param[out] Platform Address where the pointer to the platform information\r
- (type ARM_VEXPRESS_PLATFORM*) should be stored.\r
- The returned pointer does not point to an allocated\r
- memory area.\r
-\r
- @retval EFI_SUCCESS The platform information was returned.\r
- @retval EFI_NOT_FOUND The platform was not recognised.\r
-\r
-**/\r
-EFI_STATUS\r
-ArmVExpressGetPlatform (\r
- OUT CONST ARM_VEXPRESS_PLATFORM** Platform\r
- )\r
-{\r
- UINT32 SysId;\r
- UINTN CpuType;\r
- EFI_STATUS Status;\r
- UINTN CoreCount;\r
-\r
- ASSERT (Platform != NULL);\r
-\r
- CpuType = 0;\r
- Status = EFI_NOT_FOUND;\r
- *Platform = NULL;\r
-\r
- SysId = MmioRead32 (ARM_VE_SYS_ID_REG);\r
- if (SysId == ARM_RTSM_SYS_ID) {\r
- // Get the Cortex-A version\r
- CpuType = (ArmReadMidr () >> 4) & ARM_CPU_TYPE_MASK;\r
- if (CpuType == ARM_CPU_TYPE_A9) {\r
- Status = ArmVExpressGetPlatformFromId (ARM_FVP_VEXPRESS_A9x4, Platform);\r
- } else if (CpuType == ARM_CPU_TYPE_A15) {\r
- CoreCount = ArmGetCpuCountPerCluster ();\r
- if (CoreCount == 1) {\r
- Status = ArmVExpressGetPlatformFromId (ARM_FVP_VEXPRESS_A15x1, Platform);\r
- } else if (CoreCount == 2) {\r
- Status = ArmVExpressGetPlatformFromId (ARM_FVP_VEXPRESS_A15x2, Platform);\r
- } else if (CoreCount == 4) {\r
- Status = ArmVExpressGetPlatformFromId (ARM_FVP_VEXPRESS_A15x4, Platform);\r
- }\r
- }\r
- }\r
-\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "Unsupported platform (SysId:0x%X, CpuType:0x%X)\n", SysId, CpuType));\r
- ASSERT_EFI_ERROR (Status);\r
- }\r
-\r
- return Status;\r
-}\r
#\r
# ARM Versatile Express FDT Guids\r
#\r
- # FVP platforms\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressFvpA9x4|{ 0x12, 0x7b, 0xdf, 0xa1, 0x60, 0x11, 0xcf, 0x16, 0xb8, 0xc6, 0x98, 0xde, 0xdf, 0xe2, 0xce, 0xae }|VOID*|0x00000007\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressFvpA15x1|{ 0xe5, 0x1b, 0xc0, 0x96, 0xeb, 0xd7, 0x1a, 0x42, 0xc8, 0xe8, 0x6a, 0xfd, 0x5a, 0x86, 0x1d, 0x84 }|VOID*|0x00000008\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressFvpA15x2|{ 0x84, 0x43, 0x70, 0x4d, 0x19, 0xf1, 0x29, 0xe3, 0xef, 0xcd, 0xa5, 0x9b, 0x3d, 0x0a, 0x5a, 0x5f }|VOID*|0x00000009\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressFvpA15x4|{ 0x72, 0x3b, 0x28, 0x27, 0x90, 0x2f, 0xca, 0x4d, 0x9a, 0xb5, 0x98, 0x48, 0xfb, 0xc2, 0xd4, 0xed }|VOID*|0x0000000A\r
- # HW platforms\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressHwA9x4|{ 0xf6, 0x1c, 0xd2, 0x2f, 0xe8, 0xe6, 0xf2, 0x4f, 0xa9, 0xca, 0x3b, 0x9f, 0x00, 0xe9, 0x28, 0x89 }|VOID*|0x0000000B\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressHwA15x2A7x3|{ 0xeb, 0x06, 0xe6, 0xd5, 0xdf, 0x83, 0x90, 0x4e, 0x81, 0xe8, 0xc3, 0xdb, 0x2f, 0x77, 0x17, 0x9a }|VOID*|0x0000000C\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressHwA15|{ 0xc2, 0x47, 0x89, 0x6b, 0x87, 0x42, 0x91, 0x4d, 0x8f, 0xe0, 0xa3, 0x81, 0xea, 0x5b, 0x56, 0x8f }|VOID*|0x0000000D\r
- gArmVExpressTokenSpaceGuid.PcdFdtVExpressHwA5|{ 0x63, 0x76, 0xcc, 0xa2, 0x7c, 0x4d, 0x8a, 0x44, 0xaa, 0xb5, 0x4c, 0x03, 0x4b, 0x6f, 0xda, 0xb7 }|VOID*|0x0000000E\r
\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