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 3C226D813B4 for ; Thu, 2 May 2024 04:25:08 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=NRd1pxvgsn1iEQ8+WblLQx2haNplxcJXs/VuXACvJzo=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels: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=1714623906; v=1; b=uSVcUkhhu84co3czatpgE5GdSrEvDG/qUzLyoV69yOBjvVB2RMONFreT7lKxgkogMQFzOrYc FKpqPitP8JUYA5OcbV38Ka/9HBBC41PI0K4U5o5vU9jIa6matBRYIs4Ds/gtGRZSDarzbUI6/XZ 6qGfKJcHwafu+irkQzHbIzYpQTRjWGFGWZkDOlgVhyxoWMIgcCZ9Uoh5K1Nm68p3RHUcy6TaPo2 mpjoH3dOQAMKOSlyM8Rg5x68ktHva2stmcwVXn0CyTSKkaLr1vYikuexkgeFa68bdBScsO8heVU RNY2n0ss83FyO07OT72gai9oDGytq9pE9Zq8GFPKpELhg== X-Received: by 127.0.0.2 with SMTP id hvlUYY7687511xk8ahmpCgne; Wed, 01 May 2024 21:25:06 -0700 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.79]) by mx.groups.io with SMTP id smtpd.web11.5794.1714623906023372328 for ; Wed, 01 May 2024 21:25:06 -0700 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com (2603:10b6:408:200::8) by PH8PR12MB7279.namprd12.prod.outlook.com (2603:10b6:510:221::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.40; Thu, 2 May 2024 04:25:04 +0000 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::e006:4173:de2c:aca0]) by LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::e006:4173:de2c:aca0%5]) with mapi id 15.20.7519.031; Thu, 2 May 2024 04:25:03 +0000 From: "Chang, Abner via groups.io" To: "Chesley, Brit" , "devel@edk2.groups.io" CC: Liming Gao , Ray Ni , "Attar, AbdulLateef (Abdul Lateef)" Subject: Re: [edk2-devel] [PATCH v1 4/6] MdeModulePkg:BaseSpiHcPlatformLib: Adding NULL lib instance Thread-Topic: [PATCH v1 4/6] MdeModulePkg:BaseSpiHcPlatformLib: Adding NULL lib instance Thread-Index: AQHam/qZLEnyWUi7+0+9Ge3FIiEchrGDWWcQ Date: Thu, 2 May 2024 04:25:03 +0000 Message-ID: References: <20240501190527.200937-1-brit.chesley@amd.com> <20240501190527.200937-5-brit.chesley@amd.com> In-Reply-To: <20240501190527.200937-5-brit.chesley@amd.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=31d5e72e-f595-48d1-80c0-57343b5026e6;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-05-02T04:24:53Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV8PR12MB9452:EE_|PH8PR12MB7279:EE_ x-ms-office365-filtering-correlation-id: 27e593b4-2deb-49d7-60ba-08dc6a5fd6e0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: =?us-ascii?Q?NJZdyclbOnTK6yTUNAa6KDruAlV5zArqku0vyOWIDqrhHcXJ9UQA5Dem8vn1?= =?us-ascii?Q?STzwjWLL7Z8EELD6eOceFS1K1In/kmKgZrj81radj9Ug3fBwUSf8r2JWNC3S?= =?us-ascii?Q?m8se6CkKN9zJGOmYGBvfxGIs1xW3gYwNECz9HZVpp0HZZ97obkuOhyjJ6NV2?= =?us-ascii?Q?3F6vsHLE0L2RR5h1cJdArMNwyvntGRhTUJvyjSAsRg+8WJeGNgtL+jY4Fn2L?= =?us-ascii?Q?+8qwDa4IDVMhcaqo7feWW9nNY+s34L296KWfmhR33wftZvvsDB3vklKgVV7x?= =?us-ascii?Q?XiLAN+AdZlBpPoByBafIj/s2SyOVeTs00PzChJHcLXXoqhvCoOmfRSqGngrC?= =?us-ascii?Q?3ST9GLmy9Q9aL0OLd365q5guMQupZ5b65e/eK7iKJ3fMw0mcdiWW3j2feovm?= =?us-ascii?Q?NX09O65zHHF+j/buT/g4X0eShJj5Kl/Tiz9dIGZmPi1DqczPqDim8UMYLPQ7?= =?us-ascii?Q?sBnbFTiCulXkP6JNzOM0BWsHY/2i1Cex5HiQHSe/1pVWt6vgLbqndvE571T3?= =?us-ascii?Q?KzMZ+La3XIQzeI7lxhH0dHYSh7YJD8vYcKeUlTAMepyrx1blxpGfeI0ZvMIS?= =?us-ascii?Q?anhQ4CUmCeZ47NB1ABReapoPnKFhEYYEejIra2AvoZmAJXx/75uyil7n9+CS?= =?us-ascii?Q?4wFofDuAo3mkEnx96R8po/XWnvTZrDOga6zk49ZZF0pPZfShTLYdVr7h/Mi1?= =?us-ascii?Q?iW4Dp6Xts1qoGSqklajJB9ArGRXZl4V6CbjnWjXsJ4QnUXFAh/vbm8+L+d/d?= =?us-ascii?Q?8o0lYVJNEu0O8rKJvMJG4o49aI7FtTSO21GlneeEuKqJGvgo1o9HIyjRO/aE?= =?us-ascii?Q?I+/2JQreJipO4HtKBcTmwjbLmjfmgQjQflnhY9/TnxafcCB4GCJBYSIjwlvT?= =?us-ascii?Q?bep02QjWH/xJlvUrGUDuGcyzjUNnqO7F7GRmvjt5/HLdZRWl3Hyz5kTJHX84?= =?us-ascii?Q?LELLYQXAhCot0H0wb91JYvzMHyxif+UBeDCM705Ze3PHcYEEKMoX97Mba//q?= =?us-ascii?Q?6heHBhRUnOHT2DNvkZYKJENI5ybmzwCV+/1yyBtJCz1fBf48NdEB1LWZ6jOI?= =?us-ascii?Q?jkWMrF3nbD/lPA/yi8D6XZaIVjbrVwY0+9gMrjMmbRzqAaUDr0Ga2nslWI/6?= =?us-ascii?Q?1BsqVF1CNKYcnlJB0fJ3IB3WdfZG1tLlMJUANWXL6ZZDn+jAiFhFvK+06a4Z?= =?us-ascii?Q?4A53Rta/b4JbgRhVd2oDZdRhgKe6+UI0EUDLwuCXUXhtgFeDLUISUDHfAu2L?= =?us-ascii?Q?GIaXmtvu5C0eExglbXyiF2gi1Y7eBhEVdi6XaZaHT3uLBxRfT/dUfuzxHwmc?= =?us-ascii?Q?r4L0mHO5irYuJgAbqrVz+klRfhHAr8tXyBa6NXviYR066A=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?FPqR8VIo4yEyrZF/9HYq7ArID0ukWKFZzlJYreF2kEbn5eVKAokHSXU4p+Bx?= =?us-ascii?Q?QalguU4efIBnrTvJ67Spv/viiTVYCkK/lPHuVa4IM+WuVFIjDOCZR4wBfKso?= =?us-ascii?Q?XOkmvaNChqoNNnxB0jZAnyI+wPfwXlxZG9FEHkc9ufuCLNW1JZ1XJCTnung1?= =?us-ascii?Q?XwE+6n0NZwlyBEZwuejwYkiJF6ecAr+tMDxt4610rLDlC6mdFY8z+dASeu49?= =?us-ascii?Q?lICMJTBtF7ZxHbg9nuP7TNmm+wKgmzwRna3GMYKJKiZKIKyMQCHHFT60WS6U?= =?us-ascii?Q?yzsB1SwVv70hOuxmUeobLaiwXw/PIZwmlI9AXuVsa3D9M9YU/1Q+sTgiCfAb?= =?us-ascii?Q?LjHXjnnntooX2I8EvM/DT/6R/+Rgl6JNg/MQKthy/2dYmgKYb21PbEnULMlX?= =?us-ascii?Q?duf3NLdtmMHRRpbMV2Oq4sso/HWHbgEV9a39od3yNckUesqVP9hn7LcSuQAY?= =?us-ascii?Q?EOh+3x4p6/IjcQ54fPtvll/VNhuw9FFy5ezvsx2m4DFrR0IIXBHLHEUvszi5?= =?us-ascii?Q?jz/HDFbYwvBtk62bVXfSHNwml7EvkVpXVLSdhrVEqThL0PiW+NZxhDgJhm7A?= =?us-ascii?Q?8h+VBDuFKtq51ab0Jw3xl4TcdE3YI53Tg2C4Pqun/WXHPfoF+6Zk56MreOer?= =?us-ascii?Q?gIkmgZdoLqKfYd+DMnFbkenEbta5IGN+xMHp1HRdoCR3apKgEu4BBIasEUpm?= =?us-ascii?Q?oZ2gYsEUtHtk1s1MdkISHLLYRJzXZYK/CZBPtl7h4bpxLlUMFs6GV8p3LvAU?= =?us-ascii?Q?Z+Svqr8Mrk+B8aG++A0lIhbweYuqMiXC1OB3RGeiRZBMXuK7i4DEEd8rpbqH?= =?us-ascii?Q?p8CII5sUapp+eqgyrp1ABSW9z0j68R4LVxg6N9tq+VVRPPvxNUeKQYuYMfe0?= =?us-ascii?Q?K9FN3Whv1Dhpaa6LfpTPZwMiHzQPp0D6wjE5zxlFgp2YvvicYL5ZMreB3EQK?= =?us-ascii?Q?BpavIVFGhUZ7vQBfaef8TpDBbYslYxelI/VBXwQKUffQ91QosMcuEWKLXlMw?= =?us-ascii?Q?0ue59qAxW4wArBnURTrmtKfOotLFQCEkgQykgQndeWz4bQUMYO3C5LdUuHOd?= =?us-ascii?Q?4dG7w3wOogiYtcGUgfBOVO8YIEdP/tCzTDEi0IM8x/voxhI/o0Uzhm/XhV9Y?= =?us-ascii?Q?voTn+qL5PhbyjQL8owTpHhhFDcCkFbsS8831REUEJr7/8DX1KVXgSwtUxUve?= =?us-ascii?Q?P/k+bhKwS1gx/m6q4qHs+PWvrx8PS+WLJagx8EDqi4Nw8YLVnbR8hwKOaahD?= =?us-ascii?Q?AHPL8AyBO2FtBnM//xjeyNADaVWp3kjsX8YyKm6od+Zkxe9REMNXosySYfEa?= =?us-ascii?Q?0qjdbKyWFajdpU6bQLgc8XN/zs38TQltqK0Zn7cfEttmhMOBYwiD0Fjy/gGK?= =?us-ascii?Q?Pqtxt5x3oLk3obtWAgE/ASnYt0EU80+hn1EOgTVz9VkSYTAjDhFdw4ZIoyEi?= =?us-ascii?Q?xjTmZRY8coqp7N3CuxTCrup7D9C+UVVqYDJl6F7acMfseJRP1qhUAh6CcUAg?= =?us-ascii?Q?QK++4cupK1EHyxN2nNdvsrZLyh9YzLiQbMSf8sNbJQvwVKsVUBqZ1G+nhTzs?= =?us-ascii?Q?yUvDexfPfmLoEpPiqc0=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9452.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27e593b4-2deb-49d7-60ba-08dc6a5fd6e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 04:25:03.9135 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 08gyj++fDFe3wccIrxqDeOTXhCWD+huz6hFHxkPfG9vUrthPWJERS7FTV0ifDQILYQqd8bJLnuA20H0f89dMGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7279 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: Wed, 01 May 2024 21:25:06 -0700 Resent-From: abner.chang@amd.com Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 7Qf3O9FmaiFPQYXCwpkBoOgux7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" 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=uSVcUkhh; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=pass (policy=none) header.from=groups.io [AMD Official Use Only - General] Acked-by: Abner Chang > -----Original Message----- > From: Chesley, Brit > Sent: Thursday, May 2, 2024 3:05 AM > To: devel@edk2.groups.io > Cc: Liming Gao ; Ray Ni ; > Chang, Abner ; Attar, AbdulLateef (Abdul Lateef) > > Subject: [PATCH v1 4/6] MdeModulePkg:BaseSpiHcPlatformLib: Adding NULL > lib instance > > From: Brit Chesley > > Adding NULL SpiHcPlatformLib instance. This library is responsible for > handling the low level details of the SPI host controller. Since this is > platform specific this library will be dependent on OEM SPI > implementation. The SPI host controller layer will utilize this library > for SPI bus transactions. > > Bugzilla #4753 > > Cc: Liming Gao > Cc: Ray Ni > Cc: Abner Chang > Cc: Abdul Lateef Attar > Signed-off-by: Brit Chesley > --- > MdeModulePkg/MdeModulePkg.dec | 5 + > MdeModulePkg/MdeModulePkg.dsc | 2 + > .../BaseSpiHcPlatformLibNull.inf | 33 ++++ > .../Include/Library/SpiHcPlatformLib.h | 148 ++++++++++++++++++ > .../BaseSpiHcPlatformLibNull.c | 145 +++++++++++++++++ > .../BaseSpiHcPlatformLibNull.uni | 11 ++ > 6 files changed, 344 insertions(+) > create mode 100644 > MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibNull. > inf > create mode 100644 MdeModulePkg/Include/Library/SpiHcPlatformLib.h > create mode 100644 > MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibNull. > c > create mode 100644 > MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibNull. > uni > > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec > index 085370eae41a..8a3bcb9aded1 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -169,6 +169,11 @@ [LibraryClasses] > # > ImagePropertiesRecordLib|Include/Library/ImagePropertiesRecordLib.h > > + ## @libraryclass Platform SPI Host Controller library which provide= s low- > level > + # control over the SPI hardware > + # > + SpiHcPlatformLib|Include/Library/SpiHcPlatformLib.h > + > [Guids] > ## MdeModule package token space guid > # Include/Guid/MdeModulePkgTokenSpace.h > diff --git a/MdeModulePkg/MdeModulePkg.dsc > b/MdeModulePkg/MdeModulePkg.dsc > index 33d6f4a1f6a6..177128bdfd3e 100644 > --- a/MdeModulePkg/MdeModulePkg.dsc > +++ b/MdeModulePkg/MdeModulePkg.dsc > @@ -107,6 +107,7 @@ [LibraryClasses] > > MmUnblockMemoryLib|MdePkg/Library/MmUnblockMemoryLib/MmUnblo > ckMemoryLibNull.inf > > VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseV > ariableFlashInfoLib.inf > > IpmiCommandLib|MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIp > miCommandLibNull.inf > + > SpiHcPlatformLib|MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpi > HcPlatformLibNull.inf > > [LibraryClasses.EBC.PEIM] > IoLib|MdePkg/Library/PeiIoLibCpuIo/PeiIoLibCpuIo.inf > @@ -528,6 +529,7 @@ [Components.IA32, Components.X64] > > MdeModulePkg/Library/TraceHubDebugSysTLib/BaseTraceHubDebugSysTLib.i > nf > > MdeModulePkg/Library/TraceHubDebugSysTLib/PeiTraceHubDebugSysTLib.in > f > > MdeModulePkg/Library/TraceHubDebugSysTLib/DxeSmmTraceHubDebugSys > TLib.inf > + > MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibNull. > inf > > [Components.X64] > MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf > diff --git > a/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.inf > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.inf > new file mode 100644 > index 000000000000..805f50b89565 > --- /dev/null > +++ > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.inf > @@ -0,0 +1,33 @@ > +## @file > +# NULL library for platform SPI Host controller, which should be provid= ed > +# by the OEM. > +# > +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.<= BR> > +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +## > +[Defines] > + INF_VERSION =3D 1.27 > + BASE_NAME =3D BaseSpiHcPlatformLibNull > + FILE_GUID =3D 3C230948-6DF5-4802-8177-967A190579CF > + MODULE_TYPE =3D BASE > + VERSION_STRING =3D 0.1 > + PI_SPECIFICATION_VERSION =3D 0x0001000A > + LIBRARY_CLASS =3D SpiHcPlatformLib > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + > +[LibraryClasses] > + DevicePathLib > + UefiLib > + > +[Sources] > + BaseSpiHcPlatformLibNull.c > + > +[Depex] > + TRUE > + > +[UserExtensions.TianoCore."ExtraFiles"] > + BaseSpiHcPlatformLibNull.uni > diff --git a/MdeModulePkg/Include/Library/SpiHcPlatformLib.h > b/MdeModulePkg/Include/Library/SpiHcPlatformLib.h > new file mode 100644 > index 000000000000..c68f7455372c > --- /dev/null > +++ b/MdeModulePkg/Include/Library/SpiHcPlatformLib.h > @@ -0,0 +1,148 @@ > +/** @file > + > + Function declarations for SpiHcPlatformLib > + > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef PLATFORM_SPI_HC_H_ > +#define PLATFORM_SPI_HC_H_ > + > +#include > +#include > +#include > +#include > +#include > + > +/** > + This function reports the details of the SPI Host Controller to the Sp= iHc > driver. > + > + @param[out] Attributes The suported attributes of the= SPI host > controller > + @param[out] FrameSizeSupportMask The suported > FrameSizeSupportMask of the SPI host controller > + @param[out] MaximumTransferBytes The suported > MaximumTransferBytes of the SPI host controller > + > + @retval EFI_SUCCESS SPI_HOST_CONTROLLER_INSTANCE was > allocated properly > + @retval EFI_OUT_OF_RESOURCES The SPI_HOST_CONTROLLER_INSTANCE > could not be allocated > +*/ > +EFI_STATUS > +EFIAPI > +GetPlatformSpiHcDetails ( > + OUT UINT32 *Attributes, > + OUT UINT32 *FrameSizeSupportMask, > + OUT UINT32 *MaximumTransferBytes > + ); > + > +/** > + This function reports the device path of SPI host controller. This is = needed in > order for the SpiBus > + to match the correct SPI_BUS to the SPI host controller > + > + @param[out] DevicePath The device path for this SPI HC is returned in = this > variable > + > + @retval EFI_SUCCESS > +*/ > +EFI_STATUS > +EFIAPI > +GetSpiHcDevicePath ( > + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath > + ); > + > +/** > + This is the platform specific Spi Chip select function. > + Assert or deassert the SPI chip select. > + > + This routine is called at TPL_NOTIFY. > + Update the value of the chip select line for a SPI peripheral. The SPI= bus > + layer calls this routine either in the board layer or in the SPI contr= oller > + to manipulate the chip select pin at the start and end of a SPI transa= ction. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure. > + @param[in] SpiPeripheral The address of an EFI_SPI_PERIPHERAL data > structure > + describing the SPI peripheral whose chip sel= ect pin > + is to be manipulated. The routine may access= the > + ChipSelectParameter field to gain sufficient > + context to complete the operati on. > + @param[in] PinValue The value to be applied to the chip select l= ine of > + the SPI peripheral. > + > + @retval EFI_SUCCESS The chip select was set as requested > + @retval EFI_NOT_READY Support for the chip select is not prop= erly > + initialized > + @retval EFI_INVALID_PARAMETER The ChipSeLect value or its contents ar= e > + invalid > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcChipSelect ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN CONST EFI_SPI_PERIPHERAL *SpiPeripheral, > + IN BOOLEAN PinValue > + ); > + > +/** > + This function is the platform specific SPI clock function. > + Set up the clock generator to produce the correct clock frequency, pha= se > and > + polarity for a SPI chip. > + > + This routine is called at TPL_NOTIFY. > + This routine updates the clock generator to generate the correct frequ= ency > + and polarity for the SPI clock. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure. > + @param[in] SpiPeripheral Pointer to a EFI_SPI_PERIPHERAL data structu= re > from > + which the routine can access the ClockParame= ter, > + ClockPhase and ClockPolarity fields. The rou= tine > + also has access to the names for the SPI bus= and > + chip which can be used during debugging. > + @param[in] ClockHz Pointer to the requested clock frequency. Th= e SPI > + host controller will choose a supported cloc= k > + frequency which is less then or equal to thi= s > + value. Specify zero to turn the clock genera= tor > + off. The actual clock frequency supported by= the > + SPI host controller will be returned. > + > + @retval EFI_SUCCESS The clock was set up successfully > + @retval EFI_UNSUPPORTED The SPI controller was not able to support th= e > + frequency requested by ClockHz > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcClock ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN CONST EFI_SPI_PERIPHERAL *SpiPeripheral, > + IN UINT32 *ClockHz > + ); > + > +/** > + This function is the platform specific SPI transaction function > + Perform the SPI transaction on the SPI peripheral using the SPI host > + controller. > + > + This routine is called at TPL_NOTIFY. > + This routine synchronously returns EFI_SUCCESS indicating that the > + asynchronous SPI transaction was started. The routine then waits for > + completion of the SPI transaction prior to returning the final transac= tion > + status. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure= . > + @param[in] BusTransaction Pointer to a EFI_SPI_BUS_ TRANSACTION > containing > + the description of the SPI transaction to p= erform. > + > + @retval EFI_SUCCESS The transaction completed successfully > + @retval EFI_BAD_BUFFER_SIZE The BusTransaction->WriteBytes value is > invalid, > + or the BusTransaction->ReadinBytes value = is > + invalid > + @retval EFI_UNSUPPORTED The BusTransaction-> Transaction Type is > + unsupported > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcTransaction ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN EFI_SPI_BUS_TRANSACTION *BusTransaction > + ); > + > +#endif // PLATFORM_SPI_HC_SMM_PROTOCOL_H_ > diff --git > a/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.c > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.c > new file mode 100644 > index 000000000000..2926e9e248eb > --- /dev/null > +++ > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.c > @@ -0,0 +1,145 @@ > +/** @file > + > + Null implementation of SpiHcPlatformLib > + > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > +#include > +#include > +#include > +#include > + > +/** > + This function reports the details of the SPI Host Controller to the Sp= iHc > driver. > + > + @param[out] Attributes The suported attributes of the= SPI host > controller > + @param[out] FrameSizeSupportMask The suported > FrameSizeSupportMask of the SPI host controller > + @param[out] MaximumTransferBytes The suported > MaximumTransferBytes of the SPI host controller > + > + @retval EFI_UNSUPPORTED > +**/ > +EFI_STATUS > +EFIAPI > +GetPlatformSpiHcDetails ( > + OUT UINT32 *Attributes, > + OUT UINT32 *FrameSizeSupportMask, > + OUT UINT32 *MaximumTransferBytes > + ) > +{ > + return EFI_UNSUPPORTED; > +} > + > +/** > + This function reports the device path of SPI host controller. This is = needed in > order for the SpiBus > + to match the correct SPI_BUS to the SPI host controller > + > + @param[out] DevicePath The device path for this SPI HC is returned in = this > variable > + > + @retval EFI_UNSUPPORTED > +**/ > +EFI_STATUS > +EFIAPI > +GetSpiHcDevicePath ( > + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath > + ) > +{ > + return EFI_UNSUPPORTED; > +} > + > +/** > + This is the platform specific Spi Chip select function. > + Assert or deassert the SPI chip select. > + > + This routine is called at TPL_NOTIFY. > + Update the value of the chip select line for a SPI peripheral. The SPI= bus > + layer calls this routine either in the board layer or in the SPI contr= oller > + to manipulate the chip select pin at the start and end of a SPI transa= ction. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure. > + @param[in] SpiPeripheral The address of an EFI_SPI_PERIPHERAL data > structure > + describing the SPI peripheral whose chip sel= ect pin > + is to be manipulated. The routine may access= the > + ChipSelectParameter field to gain sufficient > + context to complete the operati on. > + @param[in] PinValue The value to be applied to the chip select l= ine of > + the SPI peripheral. > + > + @retval EFI_UNSUPPORTED > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcChipSelect ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN CONST EFI_SPI_PERIPHERAL *SpiPeripheral, > + IN BOOLEAN PinValue > + ) > +{ > + return EFI_UNSUPPORTED; > +} > + > +/** > + This function is the platform specific SPI clock function. > + Set up the clock generator to produce the correct clock frequency, pha= se > and > + polarity for a SPI chip. > + > + This routine is called at TPL_NOTIFY. > + This routine updates the clock generator to generate the correct frequ= ency > + and polarity for the SPI clock. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure. > + @param[in] SpiPeripheral Pointer to a EFI_SPI_PERIPHERAL data structu= re > from > + which the routine can access the ClockParame= ter, > + ClockPhase and ClockPolarity fields. The rou= tine > + also has access to the names for the SPI bus= and > + chip which can be used during debugging. > + @param[in] ClockHz Pointer to the requested clock frequency. Th= e SPI > + host controller will choose a supported cloc= k > + frequency which is less then or equal to thi= s > + value. Specify zero to turn the clock genera= tor > + off. The actual clock frequency supported by= the > + SPI host controller will be returned. > + > + @retval EFI_UNSUPPORTED > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcClock ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN CONST EFI_SPI_PERIPHERAL *SpiPeripheral, > + IN UINT32 *ClockHz > + ) > +{ > + return EFI_UNSUPPORTED; > +} > + > +/** > + This function is the platform specific SPI transaction function > + Perform the SPI transaction on the SPI peripheral using the SPI host > + controller. > + > + This routine is called at TPL_NOTIFY. > + This routine synchronously returns EFI_SUCCESS indicating that the > + asynchronous SPI transaction was started. The routine then waits for > + completion of the SPI transaction prior to returning the final transac= tion > + status. > + > + @param[in] This Pointer to an EFI_SPI_HC_PROTOCOL structure= . > + @param[in] BusTransaction Pointer to a EFI_SPI_BUS_ TRANSACTION > containing > + the description of the SPI transaction to p= erform. > + > + @retval EFI_UNSUPPORTED > + > +**/ > +EFI_STATUS > +EFIAPI > +PlatformSpiHcTransaction ( > + IN CONST EFI_SPI_HC_PROTOCOL *This, > + IN EFI_SPI_BUS_TRANSACTION *BusTransaction > + ) > +{ > + return EFI_UNSUPPORTED; > +} > diff --git > a/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.uni > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.uni > new file mode 100644 > index 000000000000..82fa02c31d58 > --- /dev/null > +++ > b/MdeModulePkg/Library/BaseSpiHcPlatformLibNull/BaseSpiHcPlatformLibN > ull.uni > @@ -0,0 +1,11 @@ > + > +// /** @file > +// > +// Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.<= BR> > +// > +// SPDX-License-Identifier: BSD-2-Clause-Patent > +// > +// **/ > + > +#string STR_PROPERTIES_MODULE_NAME > +#language en-US "Null SPI Host controller library" > -- > 2.42.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 (#118495): https://edk2.groups.io/g/devel/message/118495 Mute This Topic: https://groups.io/mt/105849133/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-