+ EFI_STATUS Status;\r
+ FDT_CLIENT_PROTOCOL *FdtClient;\r
+ CONST VOID *Prop;\r
+\r
+ Status = gBS->LocateProtocol (&gFdtClientProtocolGuid, NULL,\r
+ (VOID **)&FdtClient);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ Status = FdtClient->FindCompatibleNodeProperty (FdtClient, "arm,psci-0.2",\r
+ "method", &Prop, NULL);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ if (AsciiStrnCmp (Prop, "hvc", 3) == 0) {\r
+ mArmPsciMethod = 1;\r
+ } else if (AsciiStrnCmp (Prop, "smc", 3) == 0) {\r
+ mArmPsciMethod = 2;\r
+ } else {\r
+ DEBUG ((EFI_D_ERROR, "%a: Unknown PSCI method \"%a\"\n", __FUNCTION__,\r
+ Prop));\r
+ return EFI_NOT_FOUND;\r
+ }\r
+ return EFI_SUCCESS;\r