From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id A38FA9410A7 for ; Mon, 5 Aug 2024 03:44:35 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=pgaQINCP3r+OVpzd41qytY5rcO8Am2UtpLj88pRBQck=; c=relaxed/simple; d=groups.io; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From:In-Reply-To:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1722829475; v=1; b=TviEFrSymW6GJ839OJBsl++jtnLIQse+gEwH4tn8ahXZNhNBeGWIK9sFAEyHQ7JJUZBDXd3/ BAM9/+Tc7qE62Buh7iyEMubIXqIv9Ld/7EP4EyWbSOVbvX+AB2LTPpeL7wVXe+gih3x8+fOh1Ns uVYs0aUQznnnh5/gbVS+JJNVdUjnMb9pELNKTF7oF8eXp55tFT6SQWwjIsqaEQnayqowOsf4tHU LDIJG5uze+m3ya/KBYAb7junlBQMDjU53hpIcKgOj81MEuH06EXJmOoi3CmLeup0/xf/7JM2+FU ooXHuHLX2XhFjaSRsrJ+D1meYO7r60AYdH9x6IC5g5K+Q== X-Received: by 127.0.0.2 with SMTP id cImuYY7687511xPzxxbrz9Ju; Sun, 04 Aug 2024 20:44:34 -0700 X-Received: from CH1PR05CU001.outbound.protection.outlook.com (CH1PR05CU001.outbound.protection.outlook.com [52.101.193.131]) by mx.groups.io with SMTP id smtpd.web11.462.1722829468348419816 for ; Sun, 04 Aug 2024 20:44:28 -0700 X-Received: from PH0PR01MB7287.prod.exchangelabs.com (2603:10b6:510:10a::21) by CO1PR01MB7388.prod.exchangelabs.com (2603:10b6:303:15b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7828.24; Mon, 5 Aug 2024 03:44:24 +0000 X-Received: from PH0PR01MB7287.prod.exchangelabs.com ([fe80::fc79:e629:93aa:8b8f]) by PH0PR01MB7287.prod.exchangelabs.com ([fe80::fc79:e629:93aa:8b8f%3]) with mapi id 15.20.7807.026; Mon, 5 Aug 2024 03:44:24 +0000 Message-ID: <4de61f1e-517f-4afb-8bab-1988462888e2@os.amperecomputing.com> Date: Mon, 5 Aug 2024 10:44:18 +0700 User-Agent: Mozilla Thunderbird Subject: Re: [edk2-devel] [edk2-platforms][PATCH 1/5] AmpereAltraPkg/DwI2cLib: Add SmbusRead() function To: Leif Lindholm , devel@edk2.groups.io Cc: chuong@os.amperecomputing.com, rebecca@os.amperecomputing.com References: <20240801093618.191274-1-nhi@os.amperecomputing.com> <20240801093618.191274-2-nhi@os.amperecomputing.com> From: "Nhi Pham via groups.io" In-Reply-To: X-ClientProxiedBy: SG2P153CA0036.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c7::23) To PH0PR01MB7287.prod.exchangelabs.com (2603:10b6:510:10a::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR01MB7287:EE_|CO1PR01MB7388:EE_ X-MS-Office365-Filtering-Correlation-Id: e4cc70f6-8354-4be7-6a1a-08dcb500e5c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZUpKam5zcHgraFdqcHljK2h0dW1jUzErcUR3WTQzcldEWmlhOU5wMFZjb1ZM?= =?utf-8?B?bzJRZjJYZ3NiMmxFMG1XSGhSNTBibVdMS1hpZ0d2dUdJV21QYWlMby9aRU0v?= =?utf-8?B?N3NRRzdhRjhKeVVCcmM0ZTMra0F1TS9kaysrSmRUeHlJR0JPeitzM3kwa3kw?= =?utf-8?B?RGw2QXNDNWt6NUVXMnlrOTZPSGxWYzgrRXRDQlIyTEZ4cityaFFYWWdJbU5a?= =?utf-8?B?S0F2UUZpMVB0Q1hEbmNSQ05LU2tvZitCeEM1NytpeWxRTG9EV2hXSVBSZEpW?= =?utf-8?B?c0JuY3RsbUtiRWpZTFF0bzlGN2IwYXhRN2MwOEx6dmRQQm4wcnd1bm55RHlr?= =?utf-8?B?R01aOWw5MVlnTkpnd2NjbnRENHhMWFhPOS9LT1ZrVEtmUkUzWDc4Z0k5NWd2?= =?utf-8?B?RHBWeGJ5UmdOa0tQQTNrbTBDV21FaWlpMEtzaXU2WmVGajVCZE5kNE9TU3pq?= =?utf-8?B?bDFkRUE1WmVDaHhDc3RsMVRKTWNZRURvWTBaR0pRWHQwdWMxRno3SFY1ZWVY?= =?utf-8?B?dk9KRGUwczVNWVN3Z3M3RkVzSmZiZ1hWaVphRXZONURFcEZRdWFPZDdHRGM2?= =?utf-8?B?dW1FSkJwd2NUZ0dqdFBhcHdra0xZbjh0TngvUVlFRVRDb0YrWEZ6ZUtvM2NU?= =?utf-8?B?VjU4czJQMHFFSzdNdWVJN09tRUYyeVRTeTBtMkhxTk4zeXh4MkFZT0RQbnFY?= =?utf-8?B?bFdiRjJXZkV3VzJaTG9kdGpPdTBJTm5nc05XVGtjWFgvdHVZR1hFeFA2Q05Q?= =?utf-8?B?bEhHMDllODl0QU5KODhJQ2JuaUN1dEg1UlhpV3hSWGQ2eE1xWmR1ckZXdWI1?= =?utf-8?B?N09sMHB0TGdxdFRQdkNBaTkycjBlSzRRbVZEOXF3bkNwZS8vbzgzNjM3NHM1?= =?utf-8?B?RDcxcEVWZTJRM25aYTg2L2s2cWNTNFc4SDFQckYyT3BOanQ0QjFjV2pMWmRT?= =?utf-8?B?TGFhcEJvSTN0NW9oVTFJMEhQOXZhRGRUMTJLVno1Q1FxLyt0RW1ONk83L2Z4?= =?utf-8?B?Z3VMZTZGYTlGa3NrNzluOGVUTy9pd2d2U1FsMUF1K3pOaFgxYWtubHFkNDZZ?= =?utf-8?B?U1BoTytiN0pmZ0tqVG5FcVFKTDFRWEJmMzdjbUZoelB4YVNrbXdwcFBiS3A4?= =?utf-8?B?bWpvVXR0QmRUNkJQZWdCQ2JBZnJYRGN3UDVHUDBteU1VZzZnN0R6eEs0T0pp?= =?utf-8?B?MUdRRnozUVBQRncwYys2cG9QL1FXeWtlVHluaXNGREtUK2huNXVpQzhoUitG?= =?utf-8?B?RVNrK0l2OVNObXp6VUY4eHd5UnZVMi91c2NZb0ZpbmZJcEZvSE82a3hpemRt?= =?utf-8?B?b050M2pJK2FpSHhpWk5LTEMzUm5BbkVaREYyN0RtTXJaNDBKdTBSdG5LZXF5?= =?utf-8?B?QnFZNGpRdlg4Qk1kR0pjZzdrSENISDdmdzBqZWgrdE5BU09xNzVPTEdZaUti?= =?utf-8?B?TFEwRmVBNUFvb1N6bUJPNlNTSjVDUHMxN3B0WWlNRS9HMHNqKzZ2TFhGY0hL?= =?utf-8?B?aVFjckhkVFhnT1g0dnc0MU1lWnltU2Y0UnhCUU1ybTJNbGxEcURQUkh4RUFq?= =?utf-8?B?WVlRYWczSTJwL1pOeE9EaTRQZFh3ZnZoUU1jSlBUZ2JGNGZGemYvWUQ5OXMv?= =?utf-8?B?LzN5SHlXZGlwSngxNzZxdEdLQ3QyU0JOdk9rYjRXV2wwdTB2S3g1ZkZOTFpJ?= =?utf-8?B?RUgrZ3RzcmhqYWMraXMzbVZFM0R2UXpYUXJUK3g3SUNvTUlLR1QwT05vN3pE?= =?utf-8?B?VHZFaHpmOTUveERvM0tDbFUydk1YYUJSQzdROUpqZEgzV3dEczlmalBIbS81?= =?utf-8?B?Y3NTMTZJVlRxbFRjdUxLUT09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NUVsUnNDcEZLVzRkQThUSFJWRXlZT0pTY2IyUzh6amtFa0dMNzFrS2h1eFdV?= =?utf-8?B?akI0allMRTlxYy9GY2lRZ2lnNVBOL1lJdlFxM2JGR0FSRzlOMjN5T1FKY3BK?= =?utf-8?B?cGZvVitpZkR1R2xYY0hUdmlKblkvcGdxZ0dLV0pKUUcrL1dyR2Z3N08yNm41?= =?utf-8?B?N1c0bjJpK0dNQnlyNk9yS3hDMzZKNGxmcyt1S0JNUGNBQkFnUm1SSzd5MWFq?= =?utf-8?B?QXdwQlJtck0vRUFpKzJIM013bmllaWZicUNvblAxdzlZNFhlR0ZTbmh3SFFW?= =?utf-8?B?eFd0ZzdWWnRjV2xGb3RuRU1xVEJuM25sMDI2UUdkUm1DYmZrckVSRU5sTHNm?= =?utf-8?B?RWNaeUhWL2dhcmVJSWRsckk1RXUwMlAzaGlLVjNJK3BXK0h3aGd0T1pXWXVq?= =?utf-8?B?QUVnMnIvUVR3Y0dLcThmYkVpYm9jMlFCamRhMzVuZkN2K3ZiL3FWa0ZnZW5r?= =?utf-8?B?RWM2eDA2MjY1THdYaHhJZ3VFWVpwK3RpUGd4eXVzaWh3RFVDY21SSWo2Q3BQ?= =?utf-8?B?ZWVONzd1UnpJc3h0YitsUncxbTA3Z1c3RXZ1TytBMGhvZW8zdXEwRnUrL0hh?= =?utf-8?B?S2JmVmdkdnNoSXErak1zdjhWNTJsMllzVFN4RlBPcVJ6WmxXODZGb3JYeWUz?= =?utf-8?B?dmJvK0YvZXBEU1czbTcxQVFYRlRLUm02ZUh2UW5zR0E5MlNmYXVBSTRzU1Zj?= =?utf-8?B?ZE5HSUQ2Z21aS1NGV3ZVQUQvU2o4SGVNWVBPWjc4alJQazJpcXhCaXZNclEx?= =?utf-8?B?RWRkUGZzQ1FVZG9YRUFndTh0dlBOeUc4T2FZUnNMUitmejNJbWs0L09wQllq?= =?utf-8?B?Yml4L2doWG9UN2hXd0RiWlJtUEU2RThmK2dja1Y4RWN5V28yUUg1UENJU1lm?= =?utf-8?B?cHY4Zll6NE5vV2s1ekF5TmRsenc1b1poM0xhTGI5VWpYQ1dYWHFGZ052QmlM?= =?utf-8?B?QnVqMDhaa2MvUWtZNjIyMHByUnJjTUV6UkRNeHMwT1hyc0hHSVhiakZOV0FN?= =?utf-8?B?S0MxOVRzSmcrYkhJVCsrU3EyaHduWjJpakRZS0k5Q1lIZFp3bzZNR3lQaU4x?= =?utf-8?B?ZGhiQ0JVWkFFWWE3bzcyK1lWMmpqRDJycGlPeFVKdWZ2RTNNM09CelBhekEv?= =?utf-8?B?SUxGTE1pSHFEWXFza2MxRHRUSE56U1B0UEc2U2dPT0MrN3NJWEc3aU5qUmNQ?= =?utf-8?B?MXpUNUU1S1pORVJCdEVQTzhnL0wzMk55azgvSnM1K3pyYkFKWUNPVzdQcGhv?= =?utf-8?B?L0k5NUpFdmNWTzBzWGczZmhEN1Zlc3FiVFRoRWJ6SGlXUk1lWHZCQUgxOXZJ?= =?utf-8?B?bHE1MGlab1VIdVF4NUdLS0tDc1hhd3JtbVF6dlZmVXNOS2NZYlpDeG5YbWJp?= =?utf-8?B?VE1OKzFlODZJMVNJcXZkN0hmQVNDNVFoNE5ZaE5IYkx0T0ErZEp2THN4ZHpB?= =?utf-8?B?TkNHUkRyYzQyT1JZdlJrQjBYN2hvVFZVenFKREMwc3BvejZyY2hibWd4dnk5?= =?utf-8?B?bDB6N3BsbWdNeFZkVnhvYVArWUhRMytaVTBkRnlIQjMyOS9hbDdpU3RRK0hO?= =?utf-8?B?TGVDSklBSEVLK0hGZXp6a3Uyd2R0QjRtODhxOFhBdUpJUUd0LzNKMzFUSjFk?= =?utf-8?B?ZXp1Q3lIWjc2b1ZZSURTTGpTd0pvQnNqVGNaZTA1c1FDTlJLL0R5U2tOdlgv?= =?utf-8?B?ZlphKzM2cFoybWs4MU9CUTd1anZHdkVxS3E4R1E5ZFd5Z3BPck01eWFaNVE3?= =?utf-8?B?clBBSTRwd2sxaklxTzJhZklUeGIrT3FjNUdOZS9iZ3JlVTBRWjVWYjdWbjgx?= =?utf-8?B?WDd1a2NtRG53LzRtWFNHbUVHUnNCWTRIekhaeHNCMDlHbzNRWUZjQ21RSUZX?= =?utf-8?B?YUJkN3FRYmdJR2ZFWFk4dDUvRm03Q1pSUUZCR3R2WjkxZi9kaFNnVWw1UGR6?= =?utf-8?B?UnM5MktYSmlQeHQ4M1JocndGcmh0Y0ZsaUgvSGRQMk1PaVUwS09ySlJiVE1n?= =?utf-8?B?ZnFZK1lOK05IRGpJSTlMeENUTG9SMld0ejBNTWZ0T09iSnY2YURRRU45d3JY?= =?utf-8?B?VWNnV3NaTzVyWHhLTndhTTRkVUtTRFc1UTd1STZNZnRNTkFBeFU3NUgxUi9N?= =?utf-8?B?RWgzZEtOeVZSMG1CUFljRFhwSThBR2IyYTZrY0REZzlKbUY4QlMzWGQ1bkNV?= =?utf-8?B?bVE9PQ==?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4cc70f6-8354-4be7-6a1a-08dcb500e5c5 X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7287.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Aug 2024 03:44:24.0106 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6on6/wK5NhksZs0YoywqA94d1G6faM6V0WbzfoV4sr1b5jhlEiKy5TbIyyJFAgNDIgcQykM+d8z67wxJE0SaWhqYANZi4f3rgjK/K4XamV8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR01MB7388 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 Resent-Date: Sun, 04 Aug 2024 20:44:28 -0700 Resent-From: nhi@os.amperecomputing.com Reply-To: devel@edk2.groups.io,nhi@os.amperecomputing.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: efbxvm29jmyOh1IytROt2VmWx7686176AA= Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=TviEFrSy; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io On 8/1/2024 10:14 PM, Leif Lindholm wrote: > On Thu, Aug 01, 2024 at 16:36:14 +0700, Nhi Pham via groups.io wrote: >> This adds the SmbusRead() function designed for SMBUS transaction to >> support the extraction of the data lenth byte from the initial byte of >=20 > length I will fix, thanks. >=20 >> the SMBUS Block Read, allowing the I2C master to accurately read the >> SMBUS response with the exact data length. This addresses the issue >> where the SmbusLib:SmBusReadBlock() function consistently reads a >> 32-byte block of data. >=20 > Doh, I managed to start reviewing on 2/5 instead 1/5. > Regardless, since this is new code, please update to controller/target > terminology to match current versions of protocol specifications, > throughout the set. I will update, thanks. >=20 >> Signed-off-by: Nhi Pham >> --- >> Silicon/Ampere/AmpereAltraPkg/Include/Library/I2cLib.h | 31 +++++ >> Silicon/Ampere/AmpereAltraPkg/Library/DwI2cLib/DwI2cLib.c | 137 ++++++= +++++++++++++- >> 2 files changed, 163 insertions(+), 5 deletions(-) >> >> diff --git a/Silicon/Ampere/AmpereAltraPkg/Include/Library/I2cLib.h b/Si= licon/Ampere/AmpereAltraPkg/Include/Library/I2cLib.h >> index f13794171029..d460f49efccb 100644 >> --- a/Silicon/Ampere/AmpereAltraPkg/Include/Library/I2cLib.h >> +++ b/Silicon/Ampere/AmpereAltraPkg/Include/Library/I2cLib.h >> @@ -65,6 +65,37 @@ I2cRead ( >> IN OUT UINT32 *ReadLength >> ); >> =20 >> +/** >> + SMBUS block read. >> + >> + @param[in] Bus I2C bus Id. >> + @param[in] SlaveAddr The address of slave device on the bus. >> + @param[in] BufCmd Buffer where to send the command. >> + @param[in] CmdLength Length of BufCmd. >> + @param[in,out] Buf Buffer where to put the read data to. >> + @param[in,out] ReadLength Pointer to length of buffer. >> + @param[in] PecCheck If Packet Error Code (PEC) checking is re= quired for this operation. >> + >> + @retval EFI_SUCCESS Read successfully. >> + @retval EFI_INVALID_PARAMETER A parameter is invalid. >> + @retval EFI_UNSUPPORTED The bus is not supported. >> + @retval EFI_NOT_READY The device/bus is not ready. >> + @retval EFI_TIMEOUT Timeout when transferring data. >> + @retval EFI_CRC_ERROR There are errors on receiving data. >> + >> +**/ >> +EFI_STATUS >> +EFIAPI >> +SmbusRead ( >> + IN UINT32 Bus, >> + IN UINT32 SlaveAddr, >> + IN UINT8 *BufCmd, >> + IN UINT32 CmdLength, >> + IN OUT UINT8 *Buf, >> + IN OUT UINT32 *ReadLength, >> + IN BOOLEAN PecCheck >> + ); >> + >> /** >> Setup new transaction with I2C slave device. >> =20 >> diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/DwI2cLib/DwI2cLib.c b= /Silicon/Ampere/AmpereAltraPkg/Library/DwI2cLib/DwI2cLib.c >> index 669ba2ea98a4..9e52ae69e7cd 100644 >> --- a/Silicon/Ampere/AmpereAltraPkg/Library/DwI2cLib/DwI2cLib.c >> +++ b/Silicon/Ampere/AmpereAltraPkg/Library/DwI2cLib/DwI2cLib.c >> @@ -337,6 +337,11 @@ I2cWaitTxData ( >> DEBUG ((DEBUG_ERROR, "%a: Timeout waiting for TX buffer availabl= e\n", __FUNCTION__)); >> return EFI_TIMEOUT; >> } >> + >> + if ((I2cCheckErrors (Bus) & DW_IC_INTR_TX_ABRT) !=3D 0) { >> + return EFI_ABORTED; >> + } >> + >> MicroSecondDelay (mI2cBusList[Bus].PollingTime); >> } >> =20 >> @@ -542,13 +547,61 @@ InternalI2cWrite ( >> return Status; >> } >> =20 >> +EFI_STATUS >> +InternalSmbusReadDataLength ( >> + UINT32 Bus, >> + UINT32 *Length >> + ) >> +{ >> + EFI_STATUS Status; >> + UINTN Base; >> + UINT32 CmdSend; >> + >> + Base =3D mI2cBusList[Bus].Base; >> + >> + CmdSend =3D DW_IC_DATA_CMD_CMD; >> + MmioWrite32 (Base + DW_IC_DATA_CMD, CmdSend); >> + I2cSync (); >> + >> + if (I2cCheckErrors (Bus) !=3D 0) { >> + DEBUG ((DEBUG_ERROR, "%a: Sending reading command error\n", __func_= _)); >> + return EFI_CRC_ERROR; >> + } >> + >> + Status =3D I2cWaitRxData (Bus); >> + if (EFI_ERROR (Status)) { >> + DEBUG ((DEBUG_ERROR, >> + "%a: Reading Smbus data length failed to wait data\n", >> + __func__ >> + )); >> + >> + if (Status !=3D EFI_ABORTED) { >> + MmioWrite32 (Base + DW_IC_DATA_CMD, DW_IC_DATA_CMD_STOP); >> + I2cSync (); >> + } >> + >> + return Status; >> + } >> + >> + *Length =3D MmioRead32 (Base + DW_IC_DATA_CMD) & DW_IC_DATA_CMD_DAT_M= ASK; >> + I2cSync (); >> + >> + if (I2cCheckErrors (Bus) !=3D 0) { >> + DEBUG ((DEBUG_ERROR, "%a: Sending reading command error\n", __func_= _)); >> + return EFI_CRC_ERROR; >> + } >> + return EFI_SUCCESS; >> +} >> + >> EFI_STATUS >> InternalI2cRead ( >> UINT32 Bus, >> - UINT8 *BufCmd, >> - UINT32 CmdLength, >> - UINT8 *Buf, >> - UINT32 *Length >> + UINT8 *BufCmd, >> + UINT32 CmdLength, >> + UINT8 *Buf, >> + UINT32 *Length, >> + BOOLEAN IsSmbus, >=20 > Can this really change on a per-transaction basis? > If not, can it move to a state held in DW_I2C_CONTEXT_T? >=20 >> + BOOLEAN PecCheck >=20 > I guess the same question as above really. >=20 > / > Leif That makes sense, thanks Leif. I will pass IsSmbus and PecCheck in=20 I2cProbe() and cache in the DW_I2C_CONTEXT_T. Regards, Nhi -=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 (#120220): https://edk2.groups.io/g/devel/message/120220 Mute This Topic: https://groups.io/mt/107662232/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-