/** @file
Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
extern EFI_SYSTEM_TABLE *gST;
#pragma pack(push, 1)
typedef struct {
UINT32 MpId;
UINT32 PmuSpi;
} PMU_INFO;
PMU_INFO mPmuInfo[] = {
{0x000, 7},
{0x001, 8},
{0x100, 9},
{0x101, 10},
{0x200, 11},
{0x201, 12},
{0x300, 13},
{0x301, 14}
};
#pragma pack(pop)
#define MAX_CPUS sizeof(mPmuInfo) / sizeof(PMU_INFO)
EFI_STATUS
AmdStyxGetPmuSpiFromMpId (
UINT32 MpId,
UINT32 *PmuSpi
)
{
UINT32 i;
for (i = 0; i < MAX_CPUS; ++i) {
if (mPmuInfo[ i ].MpId == MpId) {
*PmuSpi = mPmuInfo[ i ].PmuSpi;
return EFI_SUCCESS;
}
}
return EFI_INVALID_PARAMETER;
}
ARM_CORE_INFO *
AmdStyxGetArmCoreInfoTable (
OUT UINTN *NumEntries
)
{
EFI_HOB_GUID_TYPE *Hob;
ASSERT (NumEntries != NULL);
Hob = GetFirstGuidHob (&gAmdStyxMpCoreInfoGuid);
if (Hob == NULL) {
return NULL;
}
*NumEntries = GET_GUID_HOB_DATA_SIZE (Hob) / sizeof (ARM_CORE_INFO);
return GET_GUID_HOB_DATA (Hob);
}