mirror of https://github.com/acidanthera/audk.git
ArmPkg: Update SMC calls to use the new ArmCallSmc0/1/2/3 functions
New SMC helper functions have been added to reduce the amount of template code. Update ArmSmcPsciResetSystemLib and Smbios/ProcessorSubClassDxe to use them. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
parent
4d30352445
commit
c039fa7ff0
|
@ -31,11 +31,8 @@ ResetCold (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
ARM_SMC_ARGS ArmSmcArgs;
|
||||
|
||||
// Send a PSCI 0.2 SYSTEM_RESET command
|
||||
ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET;
|
||||
ArmCallSmc (&ArmSmcArgs);
|
||||
ArmCallSmc0 (ARM_SMC_ID_PSCI_SYSTEM_RESET, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,11 +63,8 @@ ResetShutdown (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
ARM_SMC_ARGS ArmSmcArgs;
|
||||
|
||||
// Send a PSCI 0.2 SYSTEM_OFF command
|
||||
ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF;
|
||||
ArmCallSmc (&ArmSmcArgs);
|
||||
ArmCallSmc0 (ARM_SMC_ID_PSCI_SYSTEM_OFF, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -88,22 +88,18 @@ HasSmcArm64SocId (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
ARM_SMC_ARGS Args;
|
||||
INT32 SmcCallStatus;
|
||||
BOOLEAN Arm64SocIdSupported;
|
||||
INT32 SmcCallStatus;
|
||||
BOOLEAN Arm64SocIdSupported;
|
||||
UINTN SmcParam;
|
||||
|
||||
Arm64SocIdSupported = FALSE;
|
||||
|
||||
Args.Arg0 = SMCCC_VERSION;
|
||||
ArmCallSmc (&Args);
|
||||
SmcCallStatus = (INT32)Args.Arg0;
|
||||
SmcCallStatus = ArmCallSmc0 (SMCCC_VERSION, NULL, NULL, NULL);
|
||||
|
||||
if ((SmcCallStatus < 0) || ((SmcCallStatus >> 16) >= 1)) {
|
||||
Args.Arg0 = SMCCC_ARCH_FEATURES;
|
||||
Args.Arg1 = SMCCC_ARCH_SOC_ID;
|
||||
ArmCallSmc (&Args);
|
||||
|
||||
if (Args.Arg0 >= 0) {
|
||||
SmcParam = SMCCC_ARCH_SOC_ID;
|
||||
SmcCallStatus = ArmCallSmc1 (SMCCC_ARCH_FEATURES, &SmcParam, NULL, NULL);
|
||||
if (SmcCallStatus >= 0) {
|
||||
Arm64SocIdSupported = TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -125,30 +121,26 @@ SmbiosGetSmcArm64SocId (
|
|||
OUT INT32 *SocRevision
|
||||
)
|
||||
{
|
||||
ARM_SMC_ARGS Args;
|
||||
INT32 SmcCallStatus;
|
||||
EFI_STATUS Status;
|
||||
INT32 SmcCallStatus;
|
||||
EFI_STATUS Status;
|
||||
UINTN SmcParam;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
|
||||
Args.Arg0 = SMCCC_ARCH_SOC_ID;
|
||||
Args.Arg1 = 0;
|
||||
ArmCallSmc (&Args);
|
||||
SmcCallStatus = (INT32)Args.Arg0;
|
||||
SmcParam = 0;
|
||||
SmcCallStatus = ArmCallSmc1 (SMCCC_ARCH_SOC_ID, &SmcParam, NULL, NULL);
|
||||
|
||||
if (SmcCallStatus >= 0) {
|
||||
*Jep106Code = (INT32)Args.Arg0;
|
||||
*Jep106Code = (INT32)SmcParam;
|
||||
} else {
|
||||
Status = EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
Args.Arg0 = SMCCC_ARCH_SOC_ID;
|
||||
Args.Arg1 = 1;
|
||||
ArmCallSmc (&Args);
|
||||
SmcCallStatus = (INT32)Args.Arg0;
|
||||
SmcParam = 1;
|
||||
SmcCallStatus = ArmCallSmc1 (SMCCC_ARCH_SOC_ID, &SmcParam, NULL, NULL);
|
||||
|
||||
if (SmcCallStatus >= 0) {
|
||||
*SocRevision = (INT32)Args.Arg0;
|
||||
*SocRevision = (INT32)SmcParam;
|
||||
} else {
|
||||
Status = EFI_UNSUPPORTED;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue