/** @file DISCLAIMER: the FDT_CLIENT_PROTOCOL introduced here is a work in progress, and should not be used outside of the EDK II tree. Copyright (c) 2016, Linaro Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __FDT_CLIENT_H__ #define __FDT_CLIENT_H__ #define FDT_CLIENT_PROTOCOL_GUID { \ 0xE11FACA0, 0x4710, 0x4C8E, {0xA7, 0xA2, 0x01, 0xBA, 0xA2, 0x59, 0x1B, 0x4C} \ } // // Protocol interface structure // typedef struct _FDT_CLIENT_PROTOCOL FDT_CLIENT_PROTOCOL; typedef EFI_STATUS (EFIAPI *FDT_CLIENT_GET_NODE_PROPERTY) ( IN FDT_CLIENT_PROTOCOL *This, IN INT32 Node, IN CONST CHAR8 *PropertyName, OUT CONST VOID **Prop, OUT UINT32 *PropSize OPTIONAL ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_SET_NODE_PROPERTY) ( IN FDT_CLIENT_PROTOCOL *This, IN INT32 Node, IN CONST CHAR8 *PropertyName, IN CONST VOID *Prop, IN UINT32 PropSize ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE) ( IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, OUT INT32 *Node ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE) ( IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, IN INT32 PrevNode, OUT INT32 *Node ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY) ( IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, IN CONST CHAR8 *PropertyName, OUT CONST VOID **Prop, OUT UINT32 *PropSize OPTIONAL ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_REG) ( IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, OUT CONST VOID **Reg, OUT UINTN *AddressCells, OUT UINTN *SizeCells, OUT UINT32 *RegSize ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG) ( IN FDT_CLIENT_PROTOCOL *This, IN INT32 PrevNode, OUT INT32 *Node, OUT CONST VOID **Reg, OUT UINTN *AddressCells, OUT UINTN *SizeCells, OUT UINT32 *RegSize ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_FIND_MEMORY_NODE_REG) ( IN FDT_CLIENT_PROTOCOL *This, OUT INT32 *Node, OUT CONST VOID **Reg, OUT UINTN *AddressCells, OUT UINTN *SizeCells, OUT UINT32 *RegSize ); typedef EFI_STATUS (EFIAPI *FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE) ( IN FDT_CLIENT_PROTOCOL *This, OUT INT32 *Node ); struct _FDT_CLIENT_PROTOCOL { FDT_CLIENT_GET_NODE_PROPERTY GetNodeProperty; FDT_CLIENT_SET_NODE_PROPERTY SetNodeProperty; FDT_CLIENT_FIND_COMPATIBLE_NODE FindCompatibleNode; FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE FindNextCompatibleNode; FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY FindCompatibleNodeProperty; FDT_CLIENT_FIND_COMPATIBLE_NODE_REG FindCompatibleNodeReg; FDT_CLIENT_FIND_MEMORY_NODE_REG FindMemoryNodeReg; FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG FindNextMemoryNodeReg; FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE GetOrInsertChosenNode; }; extern EFI_GUID gFdtClientProtocolGuid; #endif