23 {
"arm,gic-v2m-frame" }
49 IN INT32 MsiFrameNode,
60 (MsiFrameInfo ==
NULL))
63 return EFI_INVALID_PARAMETER;
67 if (EFI_ERROR (Status)) {
73 if ((AddressCells < 1) ||
80 Data = fdt_getprop (Fdt, MsiFrameNode,
"reg", &DataSize);
81 if ((Data ==
NULL) || (DataSize < (INT32)(AddressCells *
sizeof (UINT32)))) {
87 if (AddressCells == 2) {
88 MsiFrameInfo->PhysicalBaseAddress = fdt64_to_cpu (*(UINT64 *)Data);
90 MsiFrameInfo->PhysicalBaseAddress = fdt32_to_cpu (*(UINT32 *)Data);
93 MsiFrameInfo->GicMsiFrameId = MsiFrameId;
135 UINT32 MsiFrameNodeCount;
141 if (FdtParserHandle ==
NULL) {
143 return EFI_INVALID_PARAMETER;
146 Fdt = FdtParserHandle->Fdt;
155 if (EFI_ERROR (Status)) {
160 if (MsiFrameNodeCount == 0) {
161 return EFI_NOT_FOUND;
165 MsiFrameNode = FdtBranch;
166 for (Index = 0; Index < MsiFrameNodeCount; Index++) {
175 if (EFI_ERROR (Status)) {
177 if (Status == EFI_NOT_FOUND) {
179 Status = EFI_ABORTED;
187 Status = EFI_UNSUPPORTED;
198 if (EFI_ERROR (Status)) {
211 if (EFI_ERROR (Status)) {
STATIC EFI_STATUS EFIAPI MsiFrameNodeParser(IN CONST VOID *Fdt, IN INT32 MsiFrameNode, IN UINT32 MsiFrameId, OUT CM_ARM_GIC_MSI_FRAME_INFO *MsiFrameInfo)
EFI_STATUS EFIAPI ArmGicMsiFrameInfoParser(IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, IN INT32 FdtBranch)
STATIC CONST COMPATIBILITY_STR MsiFrameCompatibleStr[]
STATIC CONST COMPATIBILITY_INFO MsiFrameCompatibleInfo
@ EArmObjGicMsiFrameInfo
4 - GIC MSI Frame Info
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
EFI_STATUS EFIAPI AddSingleCmObj(IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, IN CM_OBJECT_ID ObjectId, IN VOID *Data, IN UINT32 Size, OUT CM_OBJECT_TOKEN *Token OPTIONAL)
#define CREATE_CM_ARM_OBJECT_ID(ObjectId)
EFI_STATUS EFIAPI FdtGetNextPropNodeInBranch(IN CONST VOID *Fdt, IN INT32 FdtBranch, IN CONST CHAR8 *PropName, IN OUT INT32 *Node)
EFI_STATUS EFIAPI FdtCountPropNodeInBranch(IN CONST VOID *Fdt, IN INT32 FdtBranch, IN CONST CHAR8 *PropName, OUT UINT32 *NodeCount)
BOOLEAN EFIAPI FdtNodeIsCompatible(IN CONST VOID *Fdt, IN INT32 Node, IN CONST VOID *CompatInfo)
EFI_STATUS EFIAPI FdtGetParentAddressInfo(IN CONST VOID *Fdt, IN INT32 Node, OUT INT32 *AddressCells, OPTIONAL OUT INT32 *SizeCells OPTIONAL)
#define ARRAY_SIZE(Array)