123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /** @file
- *
- * Copyright (c) 2014-2017, Linaro Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-2-Clause-Patent
- *
- **/
- #include <Library/ArmPlatformLib.h>
- #include <Library/DebugLib.h>
- #include <Library/IoLib.h>
- #include <Library/PcdLib.h>
- #include <Ppi/ArmMpCoreInfo.h>
- #include <Hi6220.h>
- ARM_CORE_INFO mHiKeyInfoTable[] = {
- {
- // Cluster 0, Core 0
- 0x0, 0x0,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 0, Core 1
- 0x0, 0x1,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 0, Core 2
- 0x0, 0x2,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 0, Core 3
- 0x0, 0x3,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 1, Core 0
- 0x1, 0x0,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 1, Core 1
- 0x1, 0x1,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 1, Core 2
- 0x1, 0x2,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- },
- {
- // Cluster 1, Core 3
- 0x1, 0x3,
- // MP Core MailBox Set/Get/Clear Addresses and Clear Value
- (UINT64)0xFFFFFFFF
- }
- };
- /**
- Return the current Boot Mode
- This function returns the boot reason on the platform
- @return Return the current Boot Mode of the platform
- **/
- EFI_BOOT_MODE
- ArmPlatformGetBootMode (
- VOID
- )
- {
- return BOOT_WITH_FULL_CONFIGURATION;
- }
- /**
- Initialize controllers that must setup in the normal world
- This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim
- in the PEI phase.
- **/
- RETURN_STATUS
- ArmPlatformInitialize (
- IN UINTN MpId
- )
- {
- return RETURN_SUCCESS;
- }
- EFI_STATUS
- PrePeiCoreGetMpCoreInfo (
- OUT UINTN *CoreCount,
- OUT ARM_CORE_INFO **ArmCoreTable
- )
- {
- // Only support one cluster
- *CoreCount = sizeof(mHiKeyInfoTable) / sizeof(ARM_CORE_INFO);
- *ArmCoreTable = mHiKeyInfoTable;
- return EFI_SUCCESS;
- }
- // Needs to be declared in the file. Otherwise gArmMpCoreInfoPpiGuid is undefined in the contect of PrePeiCore
- EFI_GUID mArmMpCoreInfoPpiGuid = ARM_MP_CORE_INFO_PPI_GUID;
- ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };
- EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
- {
- EFI_PEI_PPI_DESCRIPTOR_PPI,
- &mArmMpCoreInfoPpiGuid,
- &mMpCoreInfoPpi
- }
- };
- VOID
- ArmPlatformGetPlatformPpiList (
- OUT UINTN *PpiListSize,
- OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
- )
- {
- *PpiListSize = sizeof(gPlatformPpiTable);
- *PpiList = gPlatformPpiTable;
- }
|