From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 6CAC8D811AF for ; Fri, 12 Jan 2024 12:01:26 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=U4XTNwJw5t4TnDSgCblY8HN/48wC1+SvxDIDPDGPFlM=; c=relaxed/simple; d=groups.io; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:To:Cc:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding; s=20140610; t=1705060885; v=1; b=e5JakM4tI0nUTa+XiE7KKzo4pOfpkt+kzMNlmV72EjjRx/QeSZdRCpTmaLIWT68/YMz9ccM9 +L0Iwu59AhiSAnrN3/XGdtITGHw2Aly+HwKgn3H8OQBb1f+ZpaJoBvPdFHXu0eY6EI1tVsfFSJY zI3bT4DhTwdHv+wy82lIqj2g= X-Received: by 127.0.0.2 with SMTP id ElRiYY7687511x8RP2XA0UTM; Fri, 12 Jan 2024 04:01:25 -0800 X-Received: from mail-oo1-f51.google.com (mail-oo1-f51.google.com [209.85.161.51]) by mx.groups.io with SMTP id smtpd.web11.5473.1705060884344728718 for ; Fri, 12 Jan 2024 04:01:24 -0800 X-Received: by mail-oo1-f51.google.com with SMTP id 006d021491bc7-59827210160so2720315eaf.1 for ; Fri, 12 Jan 2024 04:01:24 -0800 (PST) X-Gm-Message-State: d8NGXfDZ5rLWA0Q3vIqOFV1Yx7686176AA= X-Google-Smtp-Source: AGHT+IGNcQBUw9jB9HzKxQOM4BAH6LC3zUACd6EgrLcJ7ZS2xb9w744xE1SVsZXFHqOIpRiiMlN/2n36BHBzMlfpBOo= X-Received: by 2002:a4a:ab4b:0:b0:596:36ef:f61c with SMTP id j11-20020a4aab4b000000b0059636eff61cmr305726oon.9.1705060883526; Fri, 12 Jan 2024 04:01:23 -0800 (PST) MIME-Version: 1.0 References: <20231221005427.13932-1-ndhillon@marvell.com> <20231221005427.13932-7-ndhillon@marvell.com> In-Reply-To: From: "Marcin Wojtas via groups.io" Date: Fri, 12 Jan 2024 13:01:13 +0100 Message-ID: Subject: Re: [edk2-devel] [edk2-platforms PATCH v2 6/8] Silicon/Marvell: Device tree driver To: devel@edk2.groups.io, ndhillon@marvell.com Cc: Leif Lindholm , marcin.s.wojtas@gmail.com, Szymon Balcerak Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mw@semihalf.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=e5JakM4t; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=none pt., 12 sty 2024 o 13:00 Marcin Wojtas napisa=C5=82(a): > > +marcin.s.wojtas@gmail.com > > Hi Narinder, > > czw., 21 gru 2023 o 01:54 Narinder Dhillon napisa= =C5=82(a): > > > > From: Narinder Dhillon > > > > This patch adds a device tree driver that is used to read board > > configuration information from a device tree. > > > > Signed-off-by: Narinder Dhillon > > --- > > .../Drivers/Fdt/FdtClientDxe/FdtClientDxe.c | 382 ++++++++++++++++++ > > .../Drivers/Fdt/FdtClientDxe/FdtClientDxe.inf | 43 ++ > > .../Include/Protocol/FdtClient.h | 180 +++++++++ > > 3 files changed, 605 insertions(+) > > create mode 100644 Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientD= xe.c > > create mode 100644 Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientD= xe.inf > > create mode 100644 Silicon/Marvell/MarvellSiliconPkg/Include/Protocol/= FdtClient.h > > > > diff --git a/Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.c b/= Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.c > > new file mode 100644 > > index 0000000000..aa4f773458 > > --- /dev/null > > +++ b/Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.c > > @@ -0,0 +1,382 @@ > > +/** @file > > +* FDT client driver > > +* > > +* Copyright (c) 2016, Cavium Inc. All rights reserved.
> > +* Copyright (c) 2016, Linaro Ltd. All rights reserved.
> > +* > > +* SPDX-License-Identifier: BSD-2-Clause-Patent > > +* > > +**/ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#include > > + > > +#include > > + > > +STATIC VOID *mDeviceTreeBase; > > + > > +STATIC > > +EFI_STATUS > > +GetNodeProperty ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + IN CONST CHAR8 *PropertyName, > > + OUT CONST VOID **Prop, > > + OUT UINT32 *PropSize OPTIONAL > > + ) > > +{ > > + INT32 Len; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Prop !=3D NULL); > > + > > + *Prop =3D fdt_getprop (mDeviceTreeBase, Node, PropertyName, &Len); > > + if (*Prop =3D=3D NULL) { > > + return EFI_NOT_FOUND; > > + } > > + > > + if (PropSize !=3D NULL) { > > + *PropSize =3D Len; > > + } > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +SetNodeProperty ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + IN CONST CHAR8 *PropertyName, > > + IN CONST VOID *Prop, > > + IN UINT32 PropSize > > + ) > > +{ > > + INT32 Ret; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + > > + Ret =3D fdt_setprop (mDeviceTreeBase, Node, PropertyName, Prop, Prop= Size); > > + if (Ret !=3D 0) { > > + return EFI_DEVICE_ERROR; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +EFIAPI > > +FindCompatibleNode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST CHAR8 *CompatibleString, > > + IN FDT_HANDLE PrevNode, > > + OUT FDT_HANDLE *Node > > + ) > > +{ > > + FDT_HANDLE Offset; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + Offset =3D fdt_node_offset_by_compatible (mDeviceTreeBase, PrevNode,= CompatibleString); > > + > > + if (Offset < 0) { > > + return EFI_NOT_FOUND; > > + } > > + > > + *Node =3D Offset; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetOrInsertChosenNode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + OUT INT32 *Node > > + ) > > +{ > > + INT32 NewNode; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + NewNode =3D fdt_path_offset (mDeviceTreeBase, "/chosen"); > > + > > + if (NewNode < 0) { > > + NewNode =3D fdt_add_subnode (mDeviceTreeBase, 0, "/chosen"); > > + } > > + > > + if (NewNode < 0) { > > + return EFI_OUT_OF_RESOURCES; > > + } > > + > > + *Node =3D NewNode; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNodeDepth ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + OUT INT32 *Depth > > +) > > +{ > > + *Depth =3D fdt_node_depth (mDeviceTreeBase, Node); > > + > > + if (*Depth < 0) { > > + return EFI_NOT_FOUND; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetParentNode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + OUT FDT_HANDLE *Parent > > +) > > +{ > > + *Parent =3D fdt_parent_offset (mDeviceTreeBase, Node); > > + > > + if (*Parent < 0) { > > + return EFI_NOT_FOUND; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST CHAR8 *Path, > > + OUT FDT_HANDLE *Node > > +) > > +{ > > + *Node =3D fdt_path_offset (mDeviceTreeBase, Path); > > + > > + if (*Node < 0) { > > + return EFI_NOT_FOUND; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNodePath ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Node, > > + OUT CHAR8 *Path, > > + IN INT32 Size > > +) > > +{ > > + INT32 Result; > > + > > + Result =3D fdt_get_path (mDeviceTreeBase, Node, Path, Size); > > + > > + if (Result < 0) { > > + return EFI_NOT_FOUND; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNodeByPropertyValue ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE StartNode, > > + IN CHAR8 *Property, > > + IN VOID *Value, > > + IN INT32 Size, > > + OUT FDT_HANDLE *Node > > +) > > +{ > > + INT32 Offset; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + Offset =3D fdt_node_offset_by_prop_value (mDeviceTreeBase, StartNode= , > > + Property, Value, > > + Size); > > + > > + if (Offset < 0) { > > + DEBUG ((DEBUG_ERROR, "Result: %d\n", Offset)); > > + return EFI_NOT_FOUND; > > + } > > + > > + *Node =3D Offset; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetSubnodeByPropertyValue( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Parent, > > + IN CHAR8 *PropertyName, > > + IN VOID *PropertyValue, > > + IN INT32 PropertyLength, > > + OUT FDT_HANDLE *Node > > +) > > +{ > > + INT32 Offset; > > + CONST VOID *Property; > > + INT32 Length; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + Offset =3D fdt_first_subnode (mDeviceTreeBase, Parent); > > + > > + while (Offset > 0) { > > + Property =3D fdt_getprop (mDeviceTreeBase, Offset, PropertyName, &= Length); > > + > > + if ((Property !=3D NULL) && > > + (PropertyLength =3D=3D Length) && > > + (CompareMem (Property, PropertyValue, Length) =3D=3D 0)) { > > + *Node =3D Offset; > > + return EFI_SUCCESS; > > + } > > + > > + Offset =3D fdt_next_subnode(mDeviceTreeBase, Offset); > > + } > > + > > + return EFI_NOT_FOUND; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNodeByPHandle ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE PHandle, > > + OUT FDT_HANDLE *Node > > +) > > +{ > > + INT32 Offset; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + Offset =3D fdt_node_offset_by_phandle (mDeviceTreeBase, PHandle); > > + > > + if (Offset < 0) { > > + DEBUG ((DEBUG_ERROR, "Result: %d\n", Offset)); > > + return EFI_NOT_FOUND; > > + } > > + > > + *Node =3D Offset; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetFirstSubnode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Parent, > > + OUT FDT_HANDLE *Node > > +) > > +{ > > + INT32 Offset; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Node !=3D NULL); > > + > > + Offset =3D fdt_first_subnode (mDeviceTreeBase, Parent); > > + > > + if (Offset < 0) { > > + DEBUG ((DEBUG_ERROR, "Result: %d\n", Offset)); > > + return EFI_NOT_FOUND; > > + } > > + > > + *Node =3D Offset; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC > > +EFI_STATUS > > +GetNextSubnode ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Subnode, > > + OUT FDT_HANDLE *Next > > +) > > +{ > > + INT32 Offset; > > + > > + ASSERT (mDeviceTreeBase !=3D NULL); > > + ASSERT (Next !=3D NULL); > > + > > + Offset =3D fdt_next_subnode (mDeviceTreeBase, Subnode); > > + > > + if (Offset < 0) { > > + DEBUG ((DEBUG_ERROR, "Result: %d\n", Offset)); > > + return EFI_NOT_FOUND; > > + } > > + > > + *Next =3D Offset; > > + > > + return EFI_SUCCESS; > > +} > > + > > +STATIC FDT_CLIENT_PROTOCOL mFdtClientProtocol =3D { > > + GetNodeProperty, > > + SetNodeProperty, > > + FindCompatibleNode, > > + GetOrInsertChosenNode, > > + GetNodeDepth, > > + GetParentNode, > > + GetNode, > > + GetNodePath, > > + GetNodeByPropertyValue, > > + GetSubnodeByPropertyValue, > > + GetNodeByPHandle, > > + GetFirstSubnode, > > + GetNextSubnode > > +}; > > + > > +EFI_STATUS > > +EFIAPI > > +InitializeFdtClientDxe ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_SYSTEM_TABLE *SystemTable > > + ) > > +{ > > + VOID *Hob; > > + VOID *DeviceTreeBase; > > + > > + Hob =3D GetFirstGuidHob (&gFdtHobGuid); > > + > > + if (Hob =3D=3D NULL) { > > + return EFI_NOT_FOUND; > > + } > > + > > + DeviceTreeBase =3D GET_GUID_HOB_DATA (Hob); > > + mDeviceTreeBase =3D (VOID *)*(UINT64 *)DeviceTreeBase; > > + if (fdt_check_header (mDeviceTreeBase)) { > > + DEBUG ((DEBUG_ERROR, "No DTB found @ 0x%p\n", DeviceTreeBase)); > > + return EFI_NOT_FOUND; > > + } > > + > > + DEBUG ((DEBUG_INFO, "DTB @ 0x%p\n", mDeviceTreeBase)); > > + > > + return gBS->InstallMultipleProtocolInterfaces (&ImageHandle, > > + &gFdtClientProtocolGuid, &mFdt= ClientProtocol, > > + NULL); > > +} > > diff --git a/Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.inf = b/Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.inf > > new file mode 100644 > > index 0000000000..23bcf8810f > > --- /dev/null > > +++ b/Silicon/Marvell/Drivers/Fdt/FdtClientDxe/FdtClientDxe.inf > > @@ -0,0 +1,43 @@ > > +## @file > > +# FDT client driver > > +# > > +# Copyright (c) 2016, Linaro Ltd. All rights reserved.
> > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +[Defines] > > + INF_VERSION =3D 0x00010005 > > + BASE_NAME =3D FdtClientDxe > > + FILE_GUID =3D 9A871B00-1C16-4F61-8D2C-93B6654B5= AD6 > > + MODULE_TYPE =3D DXE_DRIVER > > + VERSION_STRING =3D 1.0 > > + ENTRY_POINT =3D InitializeFdtClientDxe > > + > > +[Sources] > > + FdtClientDxe.c > > + > > +[Packages] > > + Silicon/Marvell/MarvellSiliconPkg/MarvellSiliconPkg.dec > > + EmbeddedPkg/EmbeddedPkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + MdePkg/MdePkg.dec > > + > > +[LibraryClasses] > > + BaseLib > > + DebugLib > > + FdtLib > > + HobLib > > + UefiBootServicesTableLib > > + UefiDriverEntryPoint > > + > > +[Protocols] > > + gFdtClientProtocolGuid ## PRODUCES > > + > > +[Guids] > > + gFdtHobGuid > > + gFdtTableGuid > > + > > +[Depex] > > + TRUE > > diff --git a/Silicon/Marvell/MarvellSiliconPkg/Include/Protocol/FdtClie= nt.h b/Silicon/Marvell/MarvellSiliconPkg/Include/Protocol/FdtClient.h > > new file mode 100644 > > index 0000000000..dd9af0bf8f > > --- /dev/null > > +++ b/Silicon/Marvell/MarvellSiliconPkg/Include/Protocol/FdtClient.h > > @@ -0,0 +1,180 @@ > > +/** @file > > + > > + DISCLAIMER: the FDT_CLIENT_PROTOCOL introduced here is a work in pro= gress, > > + and should not be used outside of the EDK II tree. > > + > > + Copyright (C) 2023 Marvell > > + 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, 0x1= B, 0x4C} \ > > + } > > + > > +#define FdtToCpu32(Value) SwapBytes32(Value) > > +#define CpuToFdt32(Value) SwapBytes32(Value) > > + > > +#define FdtToCpu64(Value) SwapBytes64(Value) > > +#define CpuToFdt64(Value) SwapBytes64(Value) > > + > > +// > > +// Protocol interface structure > > +// > > +typedef int FDT_HANDLE; > > +#define FDT_START_HANDLE -1 > > +typedef struct _FDT_CLIENT_PROTOCOL FDT_CLIENT_PROTOCOL; > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE_PROPERTY) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE 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 FDT_HANDLE 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, > > + IN FDT_HANDLE PrevNode, > > + OUT FDT_HANDLE *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_GET_OR_INSERT_CHOSEN_NODE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + OUT FDT_HANDLE *Node > > + ); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE_DEPTH) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + OUT FDT_HANDLE *Depth > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_PARENT_NODE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN FDT_HANDLE Node, > > + OUT FDT_HANDLE *Parent > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST CHAR8 *Path, > > + OUT FDT_HANDLE *Node > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE_PATH) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Node, > > + OUT CHAR8 *Path, > > + IN INT32 Size > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE_BY_PROPERTY_VALUE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE StartNode, > > + IN CHAR8 *Property, > > + IN VOID *Value, > > + IN INT32 Size, > > + OUT FDT_HANDLE *Node > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_SUBNODE_BY_PROPERTY_VALUE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Parent, > > + IN CHAR8 *PropertyName, > > + IN VOID *PropertyValue, > > + IN INT32 PropertyLength, > > + OUT FDT_HANDLE *Node > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NODE_BY_PHANDLE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE PHandle, > > + OUT FDT_HANDLE *Node > > +); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_FIRST_SUBNODE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Parent, > > + OUT FDT_HANDLE *Node > > + ); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *FDT_CLIENT_GET_NEXT_SUBNODE) ( > > + IN FDT_CLIENT_PROTOCOL *This, > > + IN CONST FDT_HANDLE Subnode, > > + OUT FDT_HANDLE *Next > > + ); > > + > > +struct _FDT_CLIENT_PROTOCOL { > > + FDT_CLIENT_GET_NODE_PROPERTY GetNodeProperty; > > + FDT_CLIENT_SET_NODE_PROPERTY SetNodeProperty; > > + > > + FDT_CLIENT_FIND_COMPATIBLE_NODE FindCompatibleNode; > > + > > + FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE GetOrInsertChosenNode; > > + > > + FDT_CLIENT_GET_NODE_DEPTH GetNodeDepth; > > + FDT_CLIENT_GET_PARENT_NODE GetParentNode; > > + FDT_CLIENT_GET_NODE GetNode; > > + FDT_CLIENT_GET_NODE_PATH GetNodePath; > > + FDT_CLIENT_GET_NODE_BY_PROPERTY_VALUE GetNodeByPropertyValue; > > + FDT_CLIENT_GET_SUBNODE_BY_PROPERTY_VALUE GetSubnodeByPropertyValue; > > + FDT_CLIENT_GET_NODE_BY_PHANDLE GetNodeByPHandle; > > + FDT_CLIENT_GET_FIRST_SUBNODE GetFirstSubnode; > > + FDT_CLIENT_GET_NEXT_SUBNODE GetNextSubnode; > > + > > Please make the namespace less generic, and use MARVELL_/MV_ prefixes > - see other Silicon/Marvell/MarvellSiliconPkg/Include/Protocol/*.h for > reference. > > Best regards, > Marcin -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113725): https://edk2.groups.io/g/devel/message/113725 Mute This Topic: https://groups.io/mt/103292514/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-