Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2 
      3   DISCLAIMER: the FDT_CLIENT_PROTOCOL introduced here is a work in progress,
      4   and should not be used outside of the EDK II tree.
      5 
      6   Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
      7 
      8   This program and the accompanying materials
      9   are licensed and made available under the terms and conditions of the BSD License
     10   which accompanies this distribution.  The full text of the license may be found at
     11   http://opensource.org/licenses/bsd-license.php
     12 
     13   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     14   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     15 
     16 **/
     17 
     18 #ifndef __FDT_CLIENT_H__
     19 #define __FDT_CLIENT_H__
     20 
     21 #define FDT_CLIENT_PROTOCOL_GUID { \
     22   0xE11FACA0, 0x4710, 0x4C8E, {0xA7, 0xA2, 0x01, 0xBA, 0xA2, 0x59, 0x1B, 0x4C} \
     23   }
     24 
     25 //
     26 // Protocol interface structure
     27 //
     28 typedef struct _FDT_CLIENT_PROTOCOL FDT_CLIENT_PROTOCOL;
     29 
     30 typedef
     31 EFI_STATUS
     32 (EFIAPI *FDT_CLIENT_GET_NODE_PROPERTY) (
     33   IN  FDT_CLIENT_PROTOCOL     *This,
     34   IN  INT32                   Node,
     35   IN  CONST CHAR8             *PropertyName,
     36   OUT CONST VOID              **Prop,
     37   OUT UINT32                  *PropSize OPTIONAL
     38   );
     39 
     40 typedef
     41 EFI_STATUS
     42 (EFIAPI *FDT_CLIENT_SET_NODE_PROPERTY) (
     43   IN  FDT_CLIENT_PROTOCOL     *This,
     44   IN  INT32                   Node,
     45   IN  CONST CHAR8             *PropertyName,
     46   IN  CONST VOID              *Prop,
     47   IN  UINT32                  PropSize
     48   );
     49 
     50 typedef
     51 EFI_STATUS
     52 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE) (
     53   IN  FDT_CLIENT_PROTOCOL     *This,
     54   IN  CONST CHAR8             *CompatibleString,
     55   OUT INT32                   *Node
     56   );
     57 
     58 typedef
     59 EFI_STATUS
     60 (EFIAPI *FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE) (
     61   IN  FDT_CLIENT_PROTOCOL     *This,
     62   IN  CONST CHAR8             *CompatibleString,
     63   IN  INT32                   PrevNode,
     64   OUT INT32                   *Node
     65   );
     66 
     67 typedef
     68 EFI_STATUS
     69 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY) (
     70   IN  FDT_CLIENT_PROTOCOL     *This,
     71   IN  CONST CHAR8             *CompatibleString,
     72   IN  CONST CHAR8             *PropertyName,
     73   OUT CONST VOID              **Prop,
     74   OUT UINT32                  *PropSize OPTIONAL
     75   );
     76 
     77 typedef
     78 EFI_STATUS
     79 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_REG) (
     80   IN  FDT_CLIENT_PROTOCOL     *This,
     81   IN  CONST CHAR8             *CompatibleString,
     82   OUT CONST VOID              **Reg,
     83   OUT UINTN                   *AddressCells,
     84   OUT UINTN                   *SizeCells,
     85   OUT UINT32                  *RegSize
     86   );
     87 
     88 typedef
     89 EFI_STATUS
     90 (EFIAPI *FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG) (
     91   IN  FDT_CLIENT_PROTOCOL     *This,
     92   IN  INT32                   PrevNode,
     93   OUT INT32                   *Node,
     94   OUT CONST VOID              **Reg,
     95   OUT UINTN                   *AddressCells,
     96   OUT UINTN                   *SizeCells,
     97   OUT UINT32                  *RegSize
     98   );
     99 
    100 typedef
    101 EFI_STATUS
    102 (EFIAPI *FDT_CLIENT_FIND_MEMORY_NODE_REG) (
    103   IN  FDT_CLIENT_PROTOCOL     *This,
    104   OUT INT32                   *Node,
    105   OUT CONST VOID              **Reg,
    106   OUT UINTN                   *AddressCells,
    107   OUT UINTN                   *SizeCells,
    108   OUT UINT32                  *RegSize
    109   );
    110 
    111 typedef
    112 EFI_STATUS
    113 (EFIAPI *FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE) (
    114   IN  FDT_CLIENT_PROTOCOL     *This,
    115   OUT INT32                   *Node
    116   );
    117 
    118 struct _FDT_CLIENT_PROTOCOL {
    119   FDT_CLIENT_GET_NODE_PROPERTY             GetNodeProperty;
    120   FDT_CLIENT_SET_NODE_PROPERTY             SetNodeProperty;
    121 
    122   FDT_CLIENT_FIND_COMPATIBLE_NODE          FindCompatibleNode;
    123   FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE     FindNextCompatibleNode;
    124   FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY FindCompatibleNodeProperty;
    125   FDT_CLIENT_FIND_COMPATIBLE_NODE_REG      FindCompatibleNodeReg;
    126 
    127   FDT_CLIENT_FIND_MEMORY_NODE_REG          FindMemoryNodeReg;
    128   FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG     FindNextMemoryNodeReg;
    129 
    130   FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE     GetOrInsertChosenNode;
    131 };
    132 
    133 extern EFI_GUID gFdtClientProtocolGuid;
    134 
    135 #endif
    136