FdtClient.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /** @file
  2. DISCLAIMER: the FDT_CLIENT_PROTOCOL introduced here is a work in progress,
  3. and should not be used outside of the EDK II tree.
  4. Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #ifndef __FDT_CLIENT_H__
  8. #define __FDT_CLIENT_H__
  9. #define FDT_CLIENT_PROTOCOL_GUID { \
  10. 0xE11FACA0, 0x4710, 0x4C8E, {0xA7, 0xA2, 0x01, 0xBA, 0xA2, 0x59, 0x1B, 0x4C} \
  11. }
  12. //
  13. // Protocol interface structure
  14. //
  15. typedef struct _FDT_CLIENT_PROTOCOL FDT_CLIENT_PROTOCOL;
  16. typedef
  17. EFI_STATUS
  18. (EFIAPI *FDT_CLIENT_GET_NODE_PROPERTY) (
  19. IN FDT_CLIENT_PROTOCOL *This,
  20. IN INT32 Node,
  21. IN CONST CHAR8 *PropertyName,
  22. OUT CONST VOID **Prop,
  23. OUT UINT32 *PropSize OPTIONAL
  24. );
  25. typedef
  26. EFI_STATUS
  27. (EFIAPI *FDT_CLIENT_SET_NODE_PROPERTY) (
  28. IN FDT_CLIENT_PROTOCOL *This,
  29. IN INT32 Node,
  30. IN CONST CHAR8 *PropertyName,
  31. IN CONST VOID *Prop,
  32. IN UINT32 PropSize
  33. );
  34. typedef
  35. EFI_STATUS
  36. (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE) (
  37. IN FDT_CLIENT_PROTOCOL *This,
  38. IN CONST CHAR8 *CompatibleString,
  39. OUT INT32 *Node
  40. );
  41. typedef
  42. EFI_STATUS
  43. (EFIAPI *FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE) (
  44. IN FDT_CLIENT_PROTOCOL *This,
  45. IN CONST CHAR8 *CompatibleString,
  46. IN INT32 PrevNode,
  47. OUT INT32 *Node
  48. );
  49. typedef
  50. EFI_STATUS
  51. (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY) (
  52. IN FDT_CLIENT_PROTOCOL *This,
  53. IN CONST CHAR8 *CompatibleString,
  54. IN CONST CHAR8 *PropertyName,
  55. OUT CONST VOID **Prop,
  56. OUT UINT32 *PropSize OPTIONAL
  57. );
  58. typedef
  59. EFI_STATUS
  60. (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_REG) (
  61. IN FDT_CLIENT_PROTOCOL *This,
  62. IN CONST CHAR8 *CompatibleString,
  63. OUT CONST VOID **Reg,
  64. OUT UINTN *AddressCells,
  65. OUT UINTN *SizeCells,
  66. OUT UINT32 *RegSize
  67. );
  68. typedef
  69. EFI_STATUS
  70. (EFIAPI *FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG) (
  71. IN FDT_CLIENT_PROTOCOL *This,
  72. IN INT32 PrevNode,
  73. OUT INT32 *Node,
  74. OUT CONST VOID **Reg,
  75. OUT UINTN *AddressCells,
  76. OUT UINTN *SizeCells,
  77. OUT UINT32 *RegSize
  78. );
  79. typedef
  80. EFI_STATUS
  81. (EFIAPI *FDT_CLIENT_FIND_MEMORY_NODE_REG) (
  82. IN FDT_CLIENT_PROTOCOL *This,
  83. OUT INT32 *Node,
  84. OUT CONST VOID **Reg,
  85. OUT UINTN *AddressCells,
  86. OUT UINTN *SizeCells,
  87. OUT UINT32 *RegSize
  88. );
  89. typedef
  90. EFI_STATUS
  91. (EFIAPI *FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE) (
  92. IN FDT_CLIENT_PROTOCOL *This,
  93. OUT INT32 *Node
  94. );
  95. struct _FDT_CLIENT_PROTOCOL {
  96. FDT_CLIENT_GET_NODE_PROPERTY GetNodeProperty;
  97. FDT_CLIENT_SET_NODE_PROPERTY SetNodeProperty;
  98. FDT_CLIENT_FIND_COMPATIBLE_NODE FindCompatibleNode;
  99. FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE FindNextCompatibleNode;
  100. FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY FindCompatibleNodeProperty;
  101. FDT_CLIENT_FIND_COMPATIBLE_NODE_REG FindCompatibleNodeReg;
  102. FDT_CLIENT_FIND_MEMORY_NODE_REG FindMemoryNodeReg;
  103. FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG FindNextMemoryNodeReg;
  104. FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE GetOrInsertChosenNode;
  105. };
  106. extern EFI_GUID gFdtClientProtocolGuid;
  107. #endif