42 CONST CHAR8 *CompatibleItem;
45 DeviceTreeBase = (VOID *)(
UINTN)
PcdGet64 (PcdDeviceTreeInitialBaseAddress);
51 for (Prev = 0; ; Prev = Node) {
57 Compatible =
FdtGetProperty (DeviceTreeBase, Node,
"compatible", &Len);
58 if (Compatible ==
NULL) {
65 for (CompatibleItem = Compatible->Data; CompatibleItem < Compatible->Data + Len;
68 if (
AsciiStrCmp (CompatibleItem,
"arm,psci-0.2") != 0) {
76 "%a: Missing PSCI method property\n",
80 return SmcccConduitUnknown;
84 return SmcccConduitHvc;
86 return SmcccConduitSmc;
90 "%a: Unknown PSCI method \"%a\"\n",
95 return SmcccConduitUnknown;
100 return SmcccConduitUnknown;
117 case SmcccConduitHvc:
121 case SmcccConduitSmc:
VOID ArmCallHvc(IN OUT ARM_HVC_ARGS *Args)
VOID ArmCallSmc(IN OUT ARM_SMC_ARGS *Args)
VOID EFIAPI ArmMonitorCall(IN OUT ARM_MONITOR_ARGS *Args)
STATIC SMCCC_CONDUIT DiscoverSmcccConduit(VOID)
UINTN EFIAPI AsciiStrLen(IN CONST CHAR8 *String)
INTN EFIAPI AsciiStrCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
INTN EFIAPI AsciiStrnCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString, IN UINTN Length)
CONST FDT_PROPERTY *EFIAPI FdtGetProperty(IN CONST VOID *Fdt, IN INT32 NodeOffset, IN CONST CHAR8 *Name, IN INT32 *Length)
INT32 EFIAPI FdtNextNode(IN CONST VOID *Fdt, IN INT32 Offset, IN INT32 *Depth)
INT32 EFIAPI FdtCheckHeader(IN CONST VOID *Fdt)
#define DEBUG(Expression)
#define PcdGet64(TokenName)