From nobody Mon Feb 9 19:07:59 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+60347+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60347+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1590591272; cv=none; d=zohomail.com; s=zohoarc; b=GzPnxBq8AcAA9VdXFqGylJJ8p5+NOvN0QGmfBhj2vz7wVNfxTqkx65cp4ynsS1+EjMGPyc0O8CpU9AgzkIs77vSeruiFqInPTJoC5pqTPJyzSlFb24rIt9Wvd3eRB+b6hY8X18CvM/XjSiIYDTywkKvxw/Z2IR/A1spXw4oYoDg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590591272; h=Content-Type:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=1qmE18eMsW9wNzQL8JZqDE3hCI0P5uJZ+IcpFQujcSk=; b=NWdGMcADi6+RTD3aKahG6wMgG/jPxTAozS89C49SyfAxFKFs77uiv5Z1LwhKDLv+W2LNFZajPgI8Fk6fPVpwOPyyOyYKwHhjuJAyKzM3HPG8SLrm9Rdy+S7tw5ZTQrZCVimurR6vL/265L3SpfORCAx8jWpMazoux0LdML2m5lI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60347+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1590591272652359.8136724259614; Wed, 27 May 2020 07:54:32 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id JhNfYY1788612xtJVqiJamUE; Wed, 27 May 2020 07:54:32 -0700 X-Received: from huawei.com (huawei.com [45.249.212.190]) by mx.groups.io with SMTP id smtpd.web12.7385.1590590184359144284 for ; Wed, 27 May 2020 07:36:24 -0700 X-Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 840D4A9A611C9176F735 for ; Wed, 27 May 2020 22:36:19 +0800 (CST) X-Received: from HGH1000039998.huawei.com (10.184.68.188) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.487.0; Wed, 27 May 2020 22:36:10 +0800 From: Ming Huang To: , , , CC: , , , , , Subject: [edk2-devel] [PATCH edk2 v2 3/5] Silicon/Hisilicon/Acpi: Add update sas address feature Date: Wed, 27 May 2020 22:33:56 +0800 Message-ID: <1590590038-19724-4-git-send-email-huangming23@huawei.com> In-Reply-To: <1590590038-19724-1-git-send-email-huangming23@huawei.com> References: <1590590038-19724-1-git-send-email-huangming23@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.184.68.188] X-CFilter-Loop: Reflected Precedence: Bulk List-Unsubscribe: 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,huangming23@huawei.com X-Gm-Message-State: o5DYoKrr30fbQm8dUMSil5mIx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1590591272; bh=Sgoya/EeyVvGZb7TMOcf8oAYDIDsrOiOaSNws7elbKo=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=wIUwpWvWiGrZ/zqd+m7HntfcDol1KBY+RFCK3dX3DI+SmECRXZhBbYxIgt5e9n1EMsT kiDuAhyaaGA6CJS0fdodZfPwc+b8ygWjdGWka2qKMsreN8sYetywHaht74dG9R65qV9KN aL/e+ju+SzSFqNXH2uWHyqhD3A7HINYlUwo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The updating sas address feature is similar with apdating mac address. Modify updating dsdt flow for add this feature. Signed-off-by: Ming Huang --- Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c | 2 +- Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c | 297 ++++++= +++++++++----- Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h | 2 +- 4 files changed, 232 insertions(+), 70 deletions(-) diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c b/Sil= icon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c index c45a0bb..9cdf710 100644 --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatform.c @@ -46,7 +46,7 @@ UpdateAcpiDsdt ( return; } =20 - Status =3D EthMacInit (); + Status =3D UpdateAcpiDsdtTable (); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, " UpdateAcpiDsdtTable Failed, Status =3D %r\n", S= tatus)); } diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf = b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf index 866ff75..856309a 100644 --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -46,6 +46,7 @@ gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiAcpiSdtProtocolGuid # PROTOCOL ALWAYS_CONSUMED gHisiBoardNicProtocolGuid # PROTOCOL ALWAYS_CO= NSUMED + gHisiSasConfigProtocolGuid =20 [FeaturePcd] gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c b/Silicon/H= isilicon/Drivers/AcpiPlatformDxe/EthMac.c index cd98506..6afdddf 100644 --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.c @@ -1,7 +1,7 @@ /** @file =20 Copyright (c) 2014, Applied Micro Curcuit Corporation. All rights reserv= ed.
- Copyright (c) 2015, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015 - 2020, Hisilicon Limited. All rights reserved.
Copyright (c) 2015, Linaro Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -32,6 +33,7 @@ #include =20 #include +#include =20 // Turn on debug message by enabling below define //#define ACPI_DEBUG @@ -45,17 +47,27 @@ #define EFI_ACPI_MAX_NUM_TABLES 20 #define DSDT_SIGNATURE 0x54445344 =20 -#define D03_ACPI_ETH_ID "HISI00C2" - #define ACPI_ETH_MAC_KEY "local-mac-address" +#define ACPI_ETH_SAS_KEY "sas-addr" =20 #define PREFIX_VARIABLE_NAME L"MAC" #define PREFIX_VARIABLE_NAME_COMPAT L"RGMII_MAC" -#define MAC_MAX_LEN 30 +#define ADDRESS_MAX_LEN 30 + +CHAR8 *mHisiAcpiDevId[] =3D {"HISI00C1","HISI00C2","HISI0162"}; =20 -EFI_STATUS GetEnvMac( - IN UINTN MacNextID, - IN OUT UINT8 *MacBuffer) +typedef enum { + DsdtDeviceUnknown, + DsdtDeviceLan, + DsdtDeviceSas +} DSDT_DEVICE_TYPE; + +STATIC +EFI_STATUS +GetEnvMac( + IN UINTN MacNextID, + IN OUT UINT8 *MacBuffer + ) { EFI_MAC_ADDRESS Mac; EFI_STATUS Status; @@ -89,12 +101,126 @@ EFI_STATUS GetEnvMac( return EFI_SUCCESS; } =20 -EFI_STATUS _SearchReplacePackageMACAddress( +STATIC +EFI_STATUS +GetSasAddress ( + IN UINT8 Index, + IN OUT UINT8 *SasAddrBuffer + ) +{ + EFI_STATUS Status; + HISI_SAS_CONFIG_PROTOCOL *HisiSasConf; + + if (SasAddrBuffer =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + Status =3D gBS->LocateProtocol (&gHisiSasConfigProtocolGuid, NULL, (VOID= **)&HisiSasConf); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Locate Sas Config Protocol failed %r\n", Status)= ); + SasAddrBuffer[0] =3D 0x50; + SasAddrBuffer[1] =3D 0x01; + SasAddrBuffer[2] =3D 0x88; + SasAddrBuffer[3] =3D 0x20; + SasAddrBuffer[4] =3D 0x16; + SasAddrBuffer[5] =3D 0x00; + SasAddrBuffer[6] =3D 0x00; + SasAddrBuffer[7] =3D Index; + return Status; + } + + return HisiSasConf->GetAddr (Index, SasAddrBuffer); +} + +STATIC +EFI_STATUS +UpdateAddressInOption ( + IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, + IN EFI_ACPI_HANDLE ChildHandle, + IN UINTN DevNextID, + IN DSDT_DEVICE_TYPE FoundDev + ) +{ + EFI_STATUS Status; + EFI_ACPI_DATA_TYPE DataType; + CONST UINT8 *Data; + CONST VOID *Buffer; + UINTN DataSize; + UINTN Count; + EFI_ACPI_HANDLE CurrentHandle; + UINT8 *AddressBuffer; + UINT8 AddressByte; + + AddressByte =3D 0; + AddressBuffer =3D AllocateZeroPool (ADDRESS_MAX_LEN); + if (AddressBuffer =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a:%d AllocateZeroPool failed\n", __FILE__, __LI= NE__)); + return EFI_OUT_OF_RESOURCES; + } + + switch (FoundDev) { + case DsdtDeviceLan: + //Update the MAC + Status =3D GetEnvMac (DevNextID, AddressBuffer); + AddressByte =3D 6; + break; + case DsdtDeviceSas: + //Update SAS Address. + Status =3D GetSasAddress (DevNextID, AddressBuffer); + AddressByte =3D 8; + break; + default: + Status =3D EFI_INVALID_PARAMETER; + } + if (EFI_ERROR (Status)) { + FreePool (AddressBuffer); + return Status; + } + + for (Count =3D 0; Count < AddressByte; Count++) { + Status =3D AcpiTableProtocol->GetOption (CurrentHandle, 1, &DataType, = &Buffer, &DataSize); + if (EFI_ERROR (Status)) { + break; + } + + Data =3D Buffer; + DBG(" _DSD Child Subnode Store Op Code 0x%02X 0x%02X %02X DataType = 0x%X\n", + DataSize, Data[0], DataSize > 1 ? Data[1] : 0, DataType); + + if (DataType !=3D EFI_ACPI_DATA_TYPE_UINT) + break; + + // only need one byte. + // FIXME: Assume the CPU is little endian + Status =3D AcpiTableProtocol->SetOption ( + CurrentHandle, + 1, + AddressBuffer + Count, + sizeof(UINT8)); + if (EFI_ERROR (Status)) { + break; + } + + Status =3D AcpiTableProtocol->GetChild (ChildHandle, &CurrentHandle); + if (EFI_ERROR (Status) || CurrentHandle =3D=3D NULL) { + break; + } + } + + FreePool (AddressBuffer); + return Status; +} + +STATIC +EFI_STATUS +UpdateAddressInPackage ( IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, IN EFI_ACPI_HANDLE ChildHandle, IN UINTN Level, IN OUT BOOLEAN *Found, - IN UINTN MacNextID) + IN UINTN DevNextID, + IN DSDT_DEVICE_TYPE FoundDev + ) { // ASL template for ethernet driver: /* @@ -114,15 +240,18 @@ EFI_STATUS _SearchReplacePackageMACAddress( CONST UINT8 *Data; CONST VOID *Buffer; UINTN DataSize; - UINTN Count; EFI_ACPI_HANDLE CurrentHandle; EFI_ACPI_HANDLE NextHandle; - UINT8 MACBuffer[MAC_MAX_LEN]; + EFI_ACPI_HANDLE Level1Handle; =20 DBG("In Level:%d\n", Level); + Level1Handle =3D NULL; Status =3D EFI_SUCCESS; for (CurrentHandle =3D NULL; ;) { Status =3D AcpiTableProtocol->GetChild(ChildHandle, &CurrentHandle); + if (Level =3D=3D 1) { + Level1Handle =3D CurrentHandle; + } if (Level !=3D 3 && (EFI_ERROR(Status) || CurrentHandle =3D=3D NULL)) break; =20 @@ -143,11 +272,14 @@ EFI_STATUS _SearchReplacePackageMACAddress( DataSize, Data[0], DataSize > 1 ? Data[1] : 0); =20 Data =3D Buffer; - if (DataType !=3D EFI_ACPI_DATA_TYPE_STRING - || AsciiStrCmp((CHAR8 *) Data, ACPI_ETH_MAC_KEY) !=3D 0) + if ((DataType !=3D EFI_ACPI_DATA_TYPE_STRING) || + ((AsciiStrCmp ((CHAR8 *) Data, ACPI_ETH_MAC_KEY) !=3D 0) && + (AsciiStrCmp ((CHAR8 *) Data, ACPI_ETH_SAS_KEY) !=3D 0))) { + ChildHandle =3D Level1Handle; continue; + } =20 - DBG("_DSD Key Type %d. Found MAC address key\n", DataType); + DBG("_DSD Key Type %d. Found address key\n", DataType); =20 // // We found the node. @@ -157,33 +289,7 @@ EFI_STATUS _SearchReplacePackageMACAddress( } =20 if (Level =3D=3D 3 && *Found) { - - //Update the MAC - Status =3D GetEnvMac(MacNextID, MACBuffer); - if (EFI_ERROR(Status)) - break; - - for (Count =3D 0; Count < 6; Count++) { - Status =3D AcpiTableProtocol->GetOption(CurrentHandle, 1, &DataTyp= e, &Buffer, &DataSize); - if (EFI_ERROR(Status)) - break; - - Data =3D Buffer; - DBG(" _DSD Child Subnode Store Op Code 0x%02X 0x%02X %02X DataT= ype 0x%X\n", - DataSize, Data[0], DataSize > 1 ? Data[1] : 0, DataType); - - if (DataType !=3D EFI_ACPI_DATA_TYPE_UINT) - break; - - // only need one byte. - // FIXME: Assume the CPU is little endian - Status =3D AcpiTableProtocol->SetOption(CurrentHandle, 1, (VOID *)= &MACBuffer[Count], sizeof(UINT8)); - if (EFI_ERROR(Status)) - break; - Status =3D AcpiTableProtocol->GetChild(ChildHandle, &CurrentHandle= ); - if (EFI_ERROR(Status) || CurrentHandle =3D=3D NULL) - break; - } + Status =3D UpdateAddressInOption (AcpiTableProtocol, ChildHandle, De= vNextID, FoundDev); break; } =20 @@ -192,7 +298,13 @@ EFI_STATUS _SearchReplacePackageMACAddress( =20 //Search next package AcpiTableProtocol->Open((VOID *) Buffer, &NextHandle); - Status =3D _SearchReplacePackageMACAddress(AcpiTableProtocol, NextHand= le, Level + 1, Found, MacNextID); + Status =3D UpdateAddressInPackage ( + AcpiTableProtocol, + NextHandle, + Level + 1, + Found, + DevNextID, + FoundDev); AcpiTableProtocol->Close(NextHandle); if (!EFI_ERROR(Status)) break; @@ -201,22 +313,28 @@ EFI_STATUS _SearchReplacePackageMACAddress( return Status; } =20 -EFI_STATUS SearchReplacePackageMACAddress( +STATIC +EFI_STATUS +SearchReplacePackageAddress ( IN EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, IN EFI_ACPI_HANDLE ChildHandle, - IN UINTN MacNextID) + IN UINTN DevNextID, + IN DSDT_DEVICE_TYPE FoundDev + ) { BOOLEAN Found =3D FALSE; UINTN Level =3D 0; =20 - return _SearchReplacePackageMACAddress(AcpiTableProtocol, ChildHandle, L= evel, &Found, MacNextID); + return UpdateAddressInPackage (AcpiTableProtocol, ChildHandle, Level, + &Found, DevNextID, FoundDev); } =20 EFI_STATUS -GetEthID ( +GetDeviceInfo ( EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol, EFI_ACPI_HANDLE ChildHandle, - UINTN *EthID + UINTN *DevID, + DSDT_DEVICE_TYPE *FoundDev ) { EFI_STATUS Status; @@ -225,7 +343,7 @@ GetEthID ( CONST VOID *Buffer; UINTN DataSize; =20 - // Get NameString ETHx + // Get NameString Status =3D AcpiTableProtocol->GetOption (ChildHandle, 1, &DataType, &Buf= fer, &DataSize); if (EFI_ERROR (Status)) { DEBUG ((EFI_D_ERROR, "[%a:%d] Get NameString failed: %r\n", __FUNCTION= __, __LINE__, Status)); @@ -236,14 +354,23 @@ GetEthID ( DBG("Size %p Data %02x %02x %02x %02x\n", DataSize, Data[0], Data[1], Da= ta[2], Data[3]); =20 Data[4] =3D '\0'; - if (DataSize !=3D 4 || - AsciiStrnCmp ("ETH", Data, 3) !=3D 0 || - Data[3] > '9' || Data[3] < '0') { - DEBUG ((EFI_D_ERROR, "[%a:%d] The NameString %a is not ETHn\n", __FUNC= TION__, __LINE__, Data)); + if ((DataSize !=3D 4) || + (Data[3] > '9' || Data[3] < '0')) { + DEBUG ((DEBUG_ERROR, "The NameString %a is not ETHn or SASn\n", Data)); + return EFI_INVALID_PARAMETER; + } + + if (AsciiStrnCmp ("ETH", Data, 3) =3D=3D 0) { + *FoundDev =3D DsdtDeviceLan; + } else if (AsciiStrnCmp ("SAS", Data, 3) =3D=3D 0) { + *FoundDev =3D DsdtDeviceSas; + } else { + DEBUG ((DEBUG_ERROR, "[%a:%d] The NameString %a is not ETHn or SASn\n", + __FUNCTION__, __LINE__, Data)); return EFI_INVALID_PARAMETER; } =20 - *EthID =3D Data[3] - '0'; + *DevID =3D Data[3] - '0'; return EFI_SUCCESS; } =20 @@ -257,8 +384,10 @@ EFI_STATUS ProcessDSDTDevice ( CONST VOID *Buffer; UINTN DataSize; EFI_ACPI_HANDLE DevHandle; - INTN Found =3D 0; - UINTN MacNextID; + DSDT_DEVICE_TYPE FoundDev =3D DsdtDeviceUnknown; + UINTN DevNextID; + BOOLEAN HisiAcpiDevNotFound; + UINTN Index; =20 Status =3D AcpiTableProtocol->GetOption(ChildHandle, 0, &DataType, &Buff= er, &DataSize); if (EFI_ERROR(Status)) @@ -280,7 +409,7 @@ EFI_STATUS ProcessDSDTDevice ( break; =20 // - // Search for _HID with Ethernet ID + // Search for _HID with Device ID // Status =3D AcpiTableProtocol->GetOption(DevHandle, 0, &DataType, &Buff= er, &DataSize); if (EFI_ERROR(Status)) @@ -312,23 +441,34 @@ EFI_STATUS ProcessDSDTDevice ( DBG("[%a:%d] - _HID =3D %a\n", __FUNCTION__, __LINE__, Data); =20 if (EFI_ERROR(Status) || - DataType !=3D EFI_ACPI_DATA_TYPE_STRING || - (AsciiStrCmp((CHAR8 *) Data, D03_ACPI_ETH_ID) !=3D 0)) { - AcpiTableProtocol->Close(ValueHandle); - Found =3D 0; + DataType !=3D EFI_ACPI_DATA_TYPE_STRING) { + AcpiTableProtocol->Close (ValueHandle); + FoundDev =3D DsdtDeviceUnknown; continue; } =20 - DBG("Found Ethernet device\n"); + HisiAcpiDevNotFound =3D TRUE; + for (Index =3D 0; Index < ARRAY_SIZE (mHisiAcpiDevId); Index++) { + if (AsciiStrCmp ((CHAR8 *)Data, mHisiAcpiDevId[Index]) =3D=3D = 0) { + HisiAcpiDevNotFound =3D FALSE; + break; + } + } + if (HisiAcpiDevNotFound) { + AcpiTableProtocol->Close (ValueHandle); + FoundDev =3D DsdtDeviceUnknown; + continue; + } + + DBG("Found device\n"); AcpiTableProtocol->Close(ValueHandle); - Status =3D GetEthID (AcpiTableProtocol, ChildHandle, &MacNextID); + Status =3D GetDeviceInfo (AcpiTableProtocol, ChildHandle, &DevNe= xtID, &FoundDev); if (EFI_ERROR (Status)) { continue; } - Found =3D 1; - } else if (Found =3D=3D 1 && AsciiStrnCmp((CHAR8 *) Data, "_DSD", = 4) =3D=3D 0) { + } else if ((FoundDev !=3D DsdtDeviceUnknown) && AsciiStrnCmp((CHAR= 8 *) Data, "_DSD", 4) =3D=3D 0) { // - // Patch MAC address for open source kernel + // Patch DSD data // EFI_ACPI_HANDLE PkgHandle; Status =3D AcpiTableProtocol->GetOption(DevHandle, 2, &DataType,= &Buffer, &DataSize); @@ -351,12 +491,30 @@ EFI_STATUS ProcessDSDTDevice ( // // Walk the _DSD node // - if (DataSize =3D=3D 1 && Data[0] =3D=3D AML_PACKAGE_OP) - Status =3D SearchReplacePackageMACAddress(AcpiTableProtocol, P= kgHandle, MacNextID); + if (DataSize =3D=3D 1 && Data[0] =3D=3D AML_PACKAGE_OP) { + Status =3D SearchReplacePackageAddress (AcpiTableProtocol, Pkg= Handle, DevNextID, FoundDev); + } =20 AcpiTableProtocol->Close(PkgHandle); + } else if (AsciiStrnCmp ((CHAR8 *) Data, "_ADR", 4) =3D=3D 0) { + Status =3D AcpiTableProtocol->GetOption (DevHandle, 2, &DataType= , &Buffer, &DataSize); + if (EFI_ERROR (Status)) { + break; + } + + if (DataType !=3D EFI_ACPI_DATA_TYPE_CHILD) { + continue; + } + + Status =3D GetDeviceInfo (AcpiTableProtocol, ChildHandle, &DevNe= xtID, &FoundDev); + + if (EFI_ERROR (Status)) { + continue; + } } } + } else if ((DataSize =3D=3D 2) && (Data[0] =3D=3D AML_EXT_OP) && (Data= [1] =3D=3D AML_EXT_DEVICE_OP)) { + ProcessDSDTDevice (AcpiTableProtocol, DevHandle); } } =20 @@ -457,7 +615,10 @@ AcpiCheckSum ( Buffer[ChecksumOffset] =3D CalculateCheckSum8 (Buffer, Table->Length); } =20 -EFI_STATUS EthMacInit(void) +EFI_STATUS +UpdateAcpiDsdtTable ( + VOID + ) { EFI_STATUS Status; EFI_ACPI_SDT_PROTOCOL *AcpiTableProtocol; diff --git a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h b/Silicon/H= isilicon/Drivers/AcpiPlatformDxe/EthMac.h index 0a3e811..a7e1eed 100644 --- a/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h +++ b/Silicon/Hisilicon/Drivers/AcpiPlatformDxe/EthMac.h @@ -10,7 +10,7 @@ #ifndef _ETH_MAC_H_ #define _ETH_MAC_H_ =20 -EFI_STATUS EthMacInit(VOID); +EFI_STATUS UpdateAcpiDsdtTable (VOID); =20 #endif =20 --=20 2.8.1 -=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 (#60347): https://edk2.groups.io/g/devel/message/60347 Mute This Topic: https://groups.io/mt/74501284/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-