/* Checks if ther ARM64 SoC ID SMC call is supported */
BOOLEAN HasSmcArm64SocId(VOID)
/* Checks if ther ARM64 SoC ID SMC call is supported */
BOOLEAN HasSmcArm64SocId(VOID)
{
  INT32    SmcCallStatus;
  BOOLEAN  Arm64SocIdSupported;
  UINTN    SmcParam;
  Arm64SocIdSupported = FALSE;
  SmcCallStatus = ArmCallSmc0 (SMCCC_VERSION, NULL, NULL, NULL);
  if ((SmcCallStatus < 0) || ((SmcCallStatus >> 16) >= 1)) {
    SmcParam      = SMCCC_ARCH_SOC_ID;
    SmcCallStatus = ArmCallSmc1 (SMCCC_ARCH_FEATURES, &SmcParam, NULL, NULL);
    if (SmcCallStatus >= 0) {
      Arm64SocIdSupported = TRUE;
    }
  }
  return Arm64SocIdSupported;
}