From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4001:c06::243; helo=mail-io0-x243.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-io0-x243.google.com (mail-io0-x243.google.com [IPv6:2607:f8b0:4001:c06::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E05932220D21E for ; Sat, 20 Jan 2018 02:54:57 -0800 (PST) Received: by mail-io0-x243.google.com with SMTP id f89so4776686ioj.4 for ; Sat, 20 Jan 2018 03:00:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sB/Bvm3jru9Jlg1+h83tkt7HRMNdQe+qmRyplLqWKOc=; b=VEHQltPoXawuMtKFhUvZBeygo/PZDu8oPv9PnZjpeDIDbdLNrKak1MJq6pwhdTwNs/ p151xLve2HRhw+1PLal7CHPoDgWd5oNeqR/y2rYguckvrc7IYPfGoGuiYYROCEatp/DC WX1lUWXqq06yNJv4mMm6m4brdv0DfUzYXkRok= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sB/Bvm3jru9Jlg1+h83tkt7HRMNdQe+qmRyplLqWKOc=; b=fDGu6HkiOUqmwYGPqqnn4lx/uTVi3OaVG7BZJdl4/7eYU608a2DpPCz9tu1VQ+kNRt WYEQ9egkKKSzjUaspCrosZ17qFVUlIV0OGy0hqRy0c2yY2kd/TexkufA8r8NI4Ur7veR i7M+cMawuKjo5tZ3xIkhC3jLNC2qhz3gTyN1LeDX0GlBp4igYWB5yMJKDEJ8fkVB3oPW Da5XKZv+UfRmIDc5DNRqzaZdzEs64Os22V97rZvYGD7rkhcQWNV3tRtoU2B5y/dbmhcV WddnjUooRY86X8J3hRQvCdkEzUT0nZhvRnGvQjEjrSxnyyCY+2jsPvg1voQFmDCOkcPr hjqw== X-Gm-Message-State: AKwxytewCGfRkxwWEwD7PTTaftCnup+eJpg5wXNV3Tstf9L4PYjr3dYv 1hVE8pYLGcfMyQ+4EhtWJ97WWXizVmjfvAVammR1jg== X-Google-Smtp-Source: AH8x227rd40gKHc7fA2UeMDh2cNdBMORbfjkCTi5i29gdUvxM8nnExgGPz+MjFFnVjSpmFVfythosjCb5Dk967i1BqQ= X-Received: by 10.107.62.194 with SMTP id l185mr1546908ioa.200.1516446020696; Sat, 20 Jan 2018 03:00:20 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.112.13 with HTTP; Sat, 20 Jan 2018 03:00:20 -0800 (PST) In-Reply-To: <1516287703-35516-7-git-send-email-huangming23@huawei.com> References: <1516287703-35516-1-git-send-email-huangming23@huawei.com> <1516287703-35516-7-git-send-email-huangming23@huawei.com> From: Ard Biesheuvel Date: Sat, 20 Jan 2018 11:00:20 +0000 Message-ID: To: Ming Huang Cc: Leif Lindholm , linaro-uefi , "edk2-devel@lists.01.org" , Graeme Gregory , guoheyi@huawei.com, wanghuiqiang , huangming , Jason Zhang , Mengfanrong , waip23@126.com Subject: Re: [PATCH edk2-platforms v1 06/14] Hisilicon D03/D05: Open SnpPlatform source code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 10:54:59 -0000 Content-Type: text/plain; charset="UTF-8" On 18 January 2018 at 15:01, Ming Huang wrote: > From: Jason Zhang > > 1. Open driver source code. > 2. This code includes network sequence correction > solution. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Jason Zhang > Signed-off-by: Ming Huang > Signed-off-by: Heyi Guo > --- > Platform/Hisilicon/D03/D03.dsc | 2 + > Platform/Hisilicon/D03/D03.fdf | 2 +- > Platform/Hisilicon/D05/D05.dsc | 2 + > Platform/Hisilicon/D05/D05.fdf | 3 +- > Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.c | 99 ++++++++++++++++++++ > Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.h | 43 +++++++++ > Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf | 60 ++++++++++++ > Silicon/Hisilicon/HisiPkg.dec | 1 + > Silicon/Hisilicon/Include/Protocol/SnpPlatformProtocol.h | 32 +++++++ > 9 files changed, 241 insertions(+), 3 deletions(-) > > diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc > index 370e17b..b22afe3 100644 > --- a/Platform/Hisilicon/D03/D03.dsc > +++ b/Platform/Hisilicon/D03/D03.dsc > @@ -404,6 +404,8 @@ > > Platform/Hisilicon/D03/Drivers/Ipmi/ipmiInterfaceDxe/IpmiInterfaceDxe.inf > > + Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > + > MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf > MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf > MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf > diff --git a/Platform/Hisilicon/D03/D03.fdf b/Platform/Hisilicon/D03/D03.fdf > index 6e43228..e93985b 100644 > --- a/Platform/Hisilicon/D03/D03.fdf > +++ b/Platform/Hisilicon/D03/D03.fdf > @@ -242,7 +242,7 @@ READ_LOCK_STATUS = TRUE > #Network > # > > - INF Platform/Hisilicon/D03/Drivers/Net/SnpPlatform/SnpPlatform.inf > + INF Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > INF Platform/Hisilicon/D03/Drivers/Net/SnpPV600Dxe/SnpPV600Dxe.inf > > INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf > diff --git a/Platform/Hisilicon/D05/D05.dsc b/Platform/Hisilicon/D05/D05.dsc > index 0d19909..4e19de2 100644 > --- a/Platform/Hisilicon/D05/D05.dsc > +++ b/Platform/Hisilicon/D05/D05.dsc > @@ -541,6 +541,8 @@ > > Platform/Hisilicon/D05/Drivers/Ipmi/IpmiInterfaceDxe/IpmiInterfaceDxe.inf > > + Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > + > MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf > MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf > MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf > diff --git a/Platform/Hisilicon/D05/D05.fdf b/Platform/Hisilicon/D05/D05.fdf > index 9edc679..9873677 100644 > --- a/Platform/Hisilicon/D05/D05.fdf > +++ b/Platform/Hisilicon/D05/D05.fdf > @@ -247,8 +247,7 @@ READ_LOCK_STATUS = TRUE > # > #Network > # > - > - INF Platform/Hisilicon/D05/Drivers/Net/SnpPlatform/SnpPlatform.inf > + INF Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > INF Platform/Hisilicon/D05/Drivers/Net/SnpPV600Dxe/SnpPV600Dxe.inf > > INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf > diff --git a/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.c b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.c > new file mode 100644 > index 0000000..385c04a > --- /dev/null > +++ b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.c > @@ -0,0 +1,99 @@ > +/** @file > +* > +* Copyright (c) 2017, Hisilicon Limited. All rights reserved. > +* Copyright (c) 2017, Linaro Limited. All rights reserved. > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > + > +#include "SnpPlatform.h" > + STATIC > + HISI_PLATFORM_SNP_PROTOCOL mSnpPlatformProtocol[] = { > + { > + 4, > + 1 > + }, > + { > + 5, > + 1 > + }, > + { > + 2, > + 0 > + }, > + { > + 3, > + 0 > + }, > + { > + 0, > + 1 > + }, > + { > + 1, > + 1 > + }, > + { > + 6, > + 0 > + }, > + { > + 7, > + 0 > + } > +}; > + > +#define SNP_CONTROLLER_NUMBER sizeof (mSnpPlatformProtocol) / sizeof (HISI_PLATFORM_SNP_PROTOCOL) > + ARRAY_SIZE() > +EFI_STATUS > +EFIAPI > +SnpPlatformInitialize ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + UINTN Loop; > + SNP_PLATFORM_INSTANCE *PrivateData; > + EFI_STATUS Status; > + > + for (Loop = 0; Loop < SNP_CONTROLLER_NUMBER; Loop++) { > + if(mSnpPlatformProtocol[Loop].Enable != 1) { > + continue; > + } > + PrivateData = AllocateZeroPool (sizeof(SNP_PLATFORM_INSTANCE)); > + if (PrivateData == NULL) { > + DEBUG ((DEBUG_INFO,"SnpPlatformInitialize error 1\n")); > + return EFI_OUT_OF_RESOURCES; > + } > + > + > + PrivateData->SnpPlatformProtocol = mSnpPlatformProtocol[Loop]; > + > + // > + // Install the snp protocol, device path protocol > + // > + Status = gBS->InstallMultipleProtocolInterfaces ( > + &PrivateData->Handle, > + &gHisiSnpPlatformProtocolGuid, > + &PrivateData->SnpPlatformProtocol, > + NULL > + ); > + if (EFI_ERROR (Status)) { > + FreePool (PrivateData); > + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] InstallProtocolInterface fail. %r\n", __FUNCTION__, __LINE__, Status)); Line length And don't return an error from a loop like this: see the comment in reply to the previous patch > + return Status; > + } > + } > + > + DEBUG ((DEBUG_INFO,"SnpPlatformInitialize succes!\n")); > + > + return EFI_SUCCESS; > +} > diff --git a/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.h b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.h > new file mode 100644 > index 0000000..031c8d3 > --- /dev/null > +++ b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.h > @@ -0,0 +1,43 @@ > +/** @file > +* > +* Copyright (c) 2017, Hisilicon Limited. All rights reserved. > +* Copyright (c) 2017, Linaro Limited. All rights reserved. > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > + > + > +#ifndef _SNP_PLATFORM_H_ > +#define _SNP_PLATFORM_H_ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +typedef struct { > + UINTN Signature; > + EFI_HANDLE Handle; > + HISI_PLATFORM_SNP_PROTOCOL SnpPlatformProtocol; > +} SNP_PLATFORM_INSTANCE; > +#endif You can move all of this into the .c file > diff --git a/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > new file mode 100644 > index 0000000..804224b > --- /dev/null > +++ b/Silicon/Hisilicon/Drivers/SnpPlatform/SnpPlatform.inf > @@ -0,0 +1,60 @@ > +#/** @file > +# > +# Copyright (c) 2017, Hisilicon Limited. All rights reserved. > +# Copyright (c) 2017, Linaro Limited. All rights reserved. > +# > +# This program and the accompanying materials > +# are licensed and made available under the terms and conditions of the BSD License > +# which accompanies this distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > +#**/ > + > +[Defines] > + INF_VERSION = 0x00010019 > + BASE_NAME = SnpPlatform > + FILE_GUID = 102D8FC9-20A4-42eb-AC14-1C98BA5B17A8 > + MODULE_TYPE = DXE_DRIVER > + VERSION_STRING = 1.0 > + ENTRY_POINT = SnpPlatformInitialize > + > +[Sources] > + SnpPlatform.h > + SnpPlatform.c > + > +[Packages] > + ArmPkg/ArmPkg.dec ?? > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + Silicon/Hisilicon/HisiPkg.dec > + > +[FeaturePcd] > + > + > +[LibraryClasses] > + ArmLib > + BaseLib > + BaseMemoryLib > + CacheMaintenanceLib > + DebugLib > + DxeServicesTableLib > + IoLib > + MemoryAllocationLib > + PlatformSysCtrlLib > + PcdLib > + ReportStatusCodeLib > + UefiLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + Same question as before: are you really using all of these? > +[Guids] > + > +[Protocols] > + gHisiSnpPlatformProtocolGuid > + > +[Depex] > + TRUE > + > diff --git a/Silicon/Hisilicon/HisiPkg.dec b/Silicon/Hisilicon/HisiPkg.dec > index 9fa94fd..2bb6518 100644 > --- a/Silicon/Hisilicon/HisiPkg.dec > +++ b/Silicon/Hisilicon/HisiPkg.dec > @@ -38,6 +38,7 @@ > gSataEnableFlagProtocolGuid = {0xc2b3c770, 0x8b4a, 0x4796, {0xb2, 0xcf, 0x1d, 0xee, 0x44, 0xd0, 0x32, 0xf3}} > gPlatformSasProtocolGuid = {0x40e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x5d}} > gHisiPlatformSasProtocolGuid = {0x20e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x6d}} > + gHisiSnpPlatformProtocolGuid = {0x81321f27, 0xff58, 0x4a1d, {0x99, 0x97, 0xd, 0xcc, 0xfa, 0x82, 0xf4, 0x6f}} > > [Guids] > gHisiTokenSpaceGuid = {0xc8bc553e, 0x12bf, 0x11e6, {0x97, 0x4f, 0x87, 0xf7, 0x7c, 0xfd, 0x52, 0x1d}} > diff --git a/Silicon/Hisilicon/Include/Protocol/SnpPlatformProtocol.h b/Silicon/Hisilicon/Include/Protocol/SnpPlatformProtocol.h > new file mode 100644 > index 0000000..0d9f0b4 > --- /dev/null > +++ b/Silicon/Hisilicon/Include/Protocol/SnpPlatformProtocol.h > @@ -0,0 +1,32 @@ > +/** @file > +* > +* Copyright (c) 2017, Hisilicon Limited. All rights reserved. > +* Copyright (c) 2017, Linaro Limited. All rights reserved. > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#ifndef _SNP_PLATFORM_PROTOCOL_H_ > +#define _SNP_PLATFORM_PROTOCOL_H_ > +#define HISI_SNP_PLATFORM_PROTOCOL_GUID \ > + { \ > + 0x81321f27, 0xff58, 0x4a1d, 0x99, 0x97, 0xd, 0xcc, 0xfa, 0x82, 0xf4, 0x6f \ > + } > + > +typedef struct _HISI_PLATFORM_SNP_PROTOCOL HISI_PLATFORM_SNP_PROTOCOL; > + > +struct _HISI_PLATFORM_SNP_PROTOCOL { > + UINT32 ControllerId; > + UINT32 Enable; > +}; > + > +extern EFI_GUID gHisiSnpPlatformProtocolGuid; > + > +#endif > -- > 1.9.1 >