From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.482.1635895702808406887 for ; Tue, 02 Nov 2021 16:28:23 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=lE99lSxU; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: nathaniel.l.desimone@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10156"; a="218581053" X-IronPort-AV: E=Sophos;i="5.87,203,1631602800"; d="scan'208";a="218581053" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2021 16:27:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,203,1631602800"; d="scan'208";a="531726317" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 02 Nov 2021 16:27:43 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 2 Nov 2021 16:27:43 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 2 Nov 2021 16:27:43 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.109) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 2 Nov 2021 16:27:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nJKqBrOreBhLYErYu3wuMFZPjfgbh2YpDCVweGeRH3l+HwXW7/P07WbaiThEXodjp3sulMXtF3dPSS5MI3MQx1e/ArRHG3BnoMY/nHE9KWTE62C1069UhB9fdyvjLPtMrcG0RRx5GK3mQTP5A0PxY34LH//vfA65eAWVXWujXvmSwhKxTc6Tu/zNDtyRlijW6rjAmM87RjL6xvOf9Q3LnmWwEFItqPpDzUiPyazNnWvR4GQMYlxuig9buLJI4ZBzwYzYN61UqeNZGlWWmL1TxrYO6NI++3UAHIrQsYF0bWe+LkUQZ7/M6qYqSI+y5yE67p6ZnqoL3CS07CXePJQSsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4kbXQWSwjaertqrIdEViyhY9KNkCe211Xw8fFXW/nKI=; b=SJRrGnt+Yen3g57aHncOo7zq+0eKY+GYwSqKqVM3jv6PfLD+rZxEHkUdUiklqfZyxAGGrGZJct21r8QB7FRe8TOmzcqO6bvjFCQgQH+MP8hEgMtI7wsAPIMH7ZUgy0UeDB2cTmI6FiVHvcAKFIoROJGW5+TS2acoYizTSieXrTZ0NXckPvPgi/g2dpw5+nj0PbcfiqXuq+ieAs5on4XXCoT/7ykuyAGEn1g+8Dy1IGX4lhhATr4XhKJk2ssEg6qmZ8pqimkg7vvcKjRHwtbOh9Ei3aCzJTCroAgGa0PQ7452Nor4N4X4rCw2QbmlKoTG6Cf0Fcw/r1Q7P5tHe8P0mA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4kbXQWSwjaertqrIdEViyhY9KNkCe211Xw8fFXW/nKI=; b=lE99lSxUOqwzqRJgUHZxvgCLOhWDWrouS8+v5wIBvfSVX9Og+nvARQ5qrsfD4NBD233wAiUUVMAqCwjBCnAJpDS3ggUcgtMuLZFB8+k8OUki78dn1Bnw2LBL25ktwSwJ5juYGox5eGfnxFySqDPoCZ3maiSiScWSeiHddRy9deE= Received: from MW4PR11MB5821.namprd11.prod.outlook.com (2603:10b6:303:184::5) by MWHPR11MB1247.namprd11.prod.outlook.com (2603:10b6:300:2a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.17; Tue, 2 Nov 2021 23:27:40 +0000 Received: from MW4PR11MB5821.namprd11.prod.outlook.com ([fe80::6140:8298:9d5a:df46]) by MW4PR11MB5821.namprd11.prod.outlook.com ([fe80::6140:8298:9d5a:df46%9]) with mapi id 15.20.4649.019; Tue, 2 Nov 2021 23:27:40 +0000 From: "Nate DeSimone" To: "mikuback@linux.microsoft.com" , "devel@edk2.groups.io" CC: "Agyeman, Prince" Subject: Re: [PATCH v6 48/52] SimicsIch10Pkg/BasePchSpiCommonLib: Identify flash regions by GUID Thread-Topic: [PATCH v6 48/52] SimicsIch10Pkg/BasePchSpiCommonLib: Identify flash regions by GUID Thread-Index: AQHXzEi0/ZuYHzXrv0eeETJAtiocP6vw6d8w Date: Tue, 2 Nov 2021 23:27:40 +0000 Message-ID: References: <20211028220846.753-1-mikuback@linux.microsoft.com> <20211028220846.753-13-mikuback@linux.microsoft.com> In-Reply-To: <20211028220846.753-13-mikuback@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: linux.microsoft.com; dkim=none (message not signed) header.d=none;linux.microsoft.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7a7f1e13-0be1-4005-30df-08d99e585d41 x-ms-traffictypediagnostic: MWHPR11MB1247: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: K+aGNUGQLLPwpstBJ6vuEXoTOEDhyrRqVu0pD4oGj/nqrpeaEOVuypbg6YOtCF3WIgPotjmtZSuDLjztN3mgAePxNKWASj1moiKgxLyrwSub4E3RB2BAEdSd/wFj0mcTcwY9QCGhLpTUIEnzmFgtLYySyvBeWjPpTyqEBUG48623C2+59fPRuWeTxmvNYDRzaEoF0Ex7Yq9Qm+DO2YWzCD/1XxSToK+UodXBpRcSIHJiUKrZcd3j4LqxlVhdtN6v7Nzdykgu9P1QvON5vuZq9woedbfRXHYcj5R3zkj+6Pil2iXJEyyLH+0TQeO10NsDdhhnIpvqijq0tZA7Yq2v44jGDW1XkV527Bt3XNfzng7lspYK0Wt4oW9P8zMrSVFRk/eqL3CLwXQ0/hicEPQOaiAR02XQ9y9wpS2LUG4LkJ0PNZPYYBUJtqKfdxixeZL4qpOyHIqOZxP0uPgX5/OYSLW8kaWzTjbDJOAMPRPmk5nnz4bEqs+3NQqoXtpPYkyO7/peFLZVVSK8Lt3i7wO1jqaROymUnbkrqbZ/NS8+oguD7WvmrPnLErWRPFJEMOhw2DH5LZ74G4ePgRpsAtqqmAtrzyRy9Zcks1sXPbr4M9PHKeJZ4TpnEiAS49HdsbgDQCqMtBSbxkT8jMOH7B7w56hwlNberC0GVL1IDOYWm6wuzO4h1k/zc5Vkx34X9BJjkbO2xtxXEjHyvlcjf5I1zD+NF05hf7O8qDHI1LNXDecUDxOQE7RfRU0QLTBhWLbeNS+S1xa+fpNk5e79TlsIzTL/XNtZgqWhbFSDcYfgxsaZ36fGM3NT1MNCM0G8B45q x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5821.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(45080400002)(26005)(53546011)(186003)(6506007)(110136005)(66476007)(76116006)(5660300002)(66556008)(66946007)(86362001)(38070700005)(2906002)(9686003)(38100700002)(122000001)(82960400001)(66446008)(8676002)(55016002)(52536014)(508600001)(64756008)(4326008)(316002)(33656002)(8936002)(107886003)(7696005)(83380400001)(30864003)(71200400001)(213903007)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?jXNEMGI1QuilSflO7t6z9PZt4AnM9tW2XxV3BHDXw97nkNjQhgct2lJM/jXz?= =?us-ascii?Q?b+ktLzxNnuiHLMMJauJzNqFci78x1yOtugxFXY/iyte4fUreLHM5IIIiH43H?= =?us-ascii?Q?zSGF9blXnLTI+gjSFBcBNX2zjjAcdAFr634ouZNh2tHb+7kaHhKOj7BPSNHu?= =?us-ascii?Q?yDkD2k+QvLGYRDJRcR0ZGSQxzMXQF4DSNd3bb/Bi9ZP3hYAgdYN0eMWI2dTC?= =?us-ascii?Q?d2dKq8CRzKI9I3/H6q/R5mI0V47ar3qJVkouMqseEkQ6gsqJuLkOuFT//VyM?= =?us-ascii?Q?7fefwUKTPHgjQdlogPMfOElJD3drjS2gatO4U1+eECLX7S3cpCZ+cm574D4J?= =?us-ascii?Q?T3TIkIdFlzx2QRFWRUCX7nrw0E3xGj0ZO6fSUMNlr+HuSqxrQOSg2NBCuZ2Y?= =?us-ascii?Q?0AgMUmBpecnSEZrEY1EwwyhvdtS5PrasUnFXhuwJBH/qhA+zAFW/h7Yhx8rj?= =?us-ascii?Q?JegJcHgDzDXNTCfwTJi1oKkjZjtCgthgszvm8Eas89C9QnbAbtLqLf10BVLU?= =?us-ascii?Q?+vFOHstsbH3wO/zAE55rvjjYJti6Wx1hgaY7zevuz7coFjVLsb1Nhoi0IVtE?= =?us-ascii?Q?6l/Zzhirkn50vu3ODt7kIL3mbNgiMKzgukAa8c1yzrmOsscji60ZH6dYfZrc?= =?us-ascii?Q?1kgKxPj7/zm6VmaD2z0pa5xC0cqCIMh8FqnhdeE1Jiq37YQeiWLMcUaM4wkl?= =?us-ascii?Q?d8NSpmYwmwf1k+CzOm7rQb9OZi9TcqRrgcLlzhCHgYhVEc64XQpvVssBoLil?= =?us-ascii?Q?HcdpGbd+6EP2wMRV2XeciqpxP61F79DagwwuIWTpUE7G9E21vr27mZe/hWPl?= =?us-ascii?Q?ic7aKQ2ENC/KqOaw8y7A9lwUtvgR8Dzmm6b+F0POzXGKBvGQtcBle1C6NFKj?= =?us-ascii?Q?aWDmuN4T1HDDXnKHtFpv5Hu+nm4Ayf+H9nl89ok6yONeR1vMGgowTR9s5q6W?= =?us-ascii?Q?W1CBZ5VRPKy79l/7O5G3gU9Fg/AXsGj/BHjtt8GJBHcuoYAvKNy+Y9BZMWu0?= =?us-ascii?Q?5uDhCc0+wp5YKD1PTHKtu29R94cZlRIngy75mTvbmUQeFRIrjDVJ6/vLQKwR?= =?us-ascii?Q?ulWOkD4ZcCW3VGSNtkp1ccW3/JpUavzwl4Lyt0belrVLAGbNKwelC/upY27z?= =?us-ascii?Q?7QRqXlL4yAfNrTLmja5xM1+kIwYF7aBxhRejM7L9+r1vTL570Gs5PpadB5vy?= =?us-ascii?Q?N7IWj4Y2JuqsOUKisvezfVdY6Kuo9vBwbK3unSlO8nOOWPULXBAGTVlI5WA2?= =?us-ascii?Q?XUSXqJdP6LBkDIUIy0fQrgfZTvO4KR8U3h3LUKjxmBAKOgbn9V+0EB58QJKk?= =?us-ascii?Q?Am+4NWYAVEX0vPD488JKDKEVCIy+O7OTaEw5FsmugfDUG00eLCM9ObpbAde7?= =?us-ascii?Q?HhiW02kXLuWpoDpMpZNvXWETShWmV6SUgwxAx+PZtUiwAaCTLefkKxTzzjC8?= =?us-ascii?Q?lrEF6OXGgPUkvGJ4VZM7XRdEX+KzgVoXAKaQTpbap1qBwttTZmkZn0wQ/8jc?= =?us-ascii?Q?ObpsLBfLgxGvb4gvlyvJejlKfkKEMUfSKkWm0kM+1e8mJBa/CPmwCYmigAVi?= =?us-ascii?Q?4OYkwGzL34C6Sf+6Oi9oD/XdZApuAhsvAaLOv2/ns8pvzRrcZIxlczcRGeAn?= =?us-ascii?Q?9ciFuiWRyiVJS86FQ5mxVhvMIdn5tnvA7OoIYCo6nSB4V6kv+z8YRt/dkFah?= =?us-ascii?Q?lIhGLA=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5821.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a7f1e13-0be1-4005-30df-08d99e585d41 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2021 23:27:40.7285 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ykrcwVRvWgD/99hkBH3cmJVzGhdYj9elZY2Ng2PDKIppAmf/ZjlQP3j/weKI2rJ4yI2Ao5ADexpJD5BoGy2BDoFi4y82jjLoIwWRMMZuKSg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1247 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Nate DeSimone -----Original Message----- From: mikuback@linux.microsoft.com =20 Sent: Thursday, October 28, 2021 3:09 PM To: devel@edk2.groups.io Cc: Agyeman, Prince ; Desimone, Nathaniel L Subject: [PATCH v6 48/52] SimicsIch10Pkg/BasePchSpiCommonLib: Identify flas= h regions by GUID From: Michael Kubacki REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3307 Updates the library to identify flash regions by GUID and internally map th= e GUID entries to values specific to SimicsIch10Pkg. Cc: Agyeman Prince Cc: Nate DeSimone Signed-off-by: Michael Kubacki Reviewed-by: Nate DeSimone --- Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/SpiCommon.= c | 187 +++++++++++++++----- Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLib.h = | 68 +++---- Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/BasePchSpi= CommonLib.inf | 11 ++ 3 files changed, 185 insertions(+), 81 deletions(-) diff --git a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLi= b/SpiCommon.c b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommo= nLib/SpiCommon.c index fc2a8be76b6a..22eb57cdec03 100644 --- a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/SpiCo= mmon.c +++ b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Sp +++ iCommon.c @@ -2,20 +2,106 @@ PCH SPI Common Driver implements the SPI Host Controller Compatibility I= nterface. =20 Copyright (c) 2019 Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation.
=20 SPDX-License-Identifier: BSD-2-Clause-Patent **/ =20 #include +#include #include #include #include #include #include -#include +#include #include #include =20 +typedef enum { + FlashRegionDescriptor, + FlashRegionBios, + FlashRegionMe, + FlashRegionGbe, + FlashRegionPlatformData, + FlashRegionDer, + FlashRegionAll, + FlashRegionMax +} FLASH_REGION_TYPE; + +typedef struct { + EFI_GUID *Guid; + FLASH_REGION_TYPE Type; +} FLASH_REGION_MAPPING; + +FLASH_REGION_MAPPING mFlashRegionTypes[] =3D { + { + &gFlashRegionDescriptorGuid, + FlashRegionDescriptor + }, + { + &gFlashRegionBiosGuid, + FlashRegionBios + }, + { + &gFlashRegionMeGuid, + FlashRegionMe + }, + { + &gFlashRegionGbeGuid, + FlashRegionGbe + }, + { + &gFlashRegionPlatformDataGuid, + FlashRegionPlatformData + }, + { + &gFlashRegionDerGuid, + FlashRegionDer + }, + { + &gFlashRegionAllGuid, + FlashRegionAll + }, + { + &gFlashRegionMaxGuid, + FlashRegionMax + } +}; + +/** + Returns the type of a flash region given its GUID. + + @param[in] FlashRegionGuid Pointer to the flash region GUID. + @param[out] FlashRegionType Pointer to a buffer that will be set to = the flash region type value. + + @retval EFI_SUCCESS The flash region type was found fo= r the given flash region GUID. + @retval EFI_INVALID_PARAMETER A pointer argument passed to the f= unction is NULL. + @retval EFI_NOT_FOUND The flash region type was not foun= d for the given flash region GUID. + +**/ +EFI_STATUS +GetFlashRegionType ( + IN EFI_GUID *FlashRegionGuid, + OUT FLASH_REGION_TYPE *FlashRegionType + ) +{ + UINTN Index; + + if (FlashRegionGuid =3D=3D NULL || FlashRegionType =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + for (Index =3D 0; Index < ARRAY_SIZE (mFlashRegionTypes); Index++) { + if (CompareGuid (mFlashRegionTypes[Index].Guid, FlashRegionGuid)) { + *FlashRegionType =3D mFlashRegionTypes[Index].Type; + return EFI_SUCCESS; + } + } + + return EFI_NOT_FOUND; +} + /** Initialize an SPI protocol instance. =20 @@ -144,8 +230,8 @@ PchPmTimerStallRuntimeSafe ( /** Read data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @param[out] Buffer The Pointer to caller-allocated buffer c= ontaining the dada received. @@ -158,8 +244,8 @@ PchPmTimerStallRuntimeSafe ( EFI_STATUS EFIAPI SpiPr= otocolFlashRead ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, OUT UINT8 *Buffer @@ -172,7 +258,7 @@ SpiProtocolFlashRead ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleRead, Address, ByteCount, @@ -184,8 +270,8 @@ SpiProtocolFlashRead ( /** Write data to the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @param[in] Buffer Pointer to caller-allocated buffer conta= ining the data sent during the SPI cycle. @@ -197,8 +283,8 @@ SpiProtocolFlashRead ( EFI_STATUS EFIAPI SpiProtocol= FlashWrite ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, IN UINT8 *Buffer @@ -211,7 +297,7 @@ SpiProtocolFlashWrite ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleWrite, Address, ByteCount, @@ -223,8 +309,8 @@ SpiProtocolFlashWrite ( /** Erase some area on the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. =20 @@ -235,8 +321,8 @@ SpiProtocolFlashWrite ( EFI_STATUS EFIAPI SpiProtoco= lFlashErase ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount ) @@ -248,7 +334,7 @@ SpiProtocolFlashErase ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleErase, Address, ByteCount, @@ -260,7 +346,7 @@ SpiProtocolFlashErase ( /** Read SFDP data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ComponentNumber The Componen Number for chip select @param[in] Address The starting byte address for SFDP data = read. @param[in] ByteCount Number of bytes in SFDP data portion of = the SPI cycle @@ -274,7 +360,7 @@ SpiProtocolFlashErase ( EFI_STATUS EFIAPI SpiProtoco= lFlashReadSfdp ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 Address, IN UINT32 ByteCount, @@ -303,7 +389,7 @@ SpiProtocolFlashReadSfdp ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadSfdp, FlashAddress, ByteCount, @@ -315,7 +401,7 @@ SpiProtocolFlashReadSfdp ( /** Read Jedec Id from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ComponentNumber The Componen Number for chip select @param[in] ByteCount Number of bytes in JedecId data portion = of the SPI cycle, the data size is 3 typically @param[out] JedecId The Pointer to caller-allocated buffer c= ontaining JEDEC ID received @@ -328,7 +414,7 @@ SpiProtocolFlashReadSfdp ( EFI_STATUS EFIAPI SpiProt= ocolFlashReadJedecId ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 ByteCount, OUT UINT8 *JedecId @@ -356,7 +442,7 @@ SpiProtocolFlashReadJedecId ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadJedecId, Address, ByteCount, @@ -368,7 +454,7 @@ SpiProtocolFlashReadJedecId ( /** Write the status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ByteCount Number of bytes in Status data portion o= f the SPI cycle, the data size is 1 typically @param[in] StatusValue The Pointer to caller-allocated buffer c= ontaining the value of Status register writing =20 @@ -379,7 +465,7 @@ SpiProtocolFlashReadJedecId ( EFI_STATUS EFIAPI SpiP= rotocolFlashWriteStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, IN UINT8 *StatusValue ) @@ -391,7 +477,7 @@ SpiProtocolFlashWriteStatus ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleWriteStatus, 0, ByteCount, @@ -403,7 +489,7 @@ SpiProtocolFlashWriteStatus ( /** Read status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ByteCount Number of bytes in Status data portion o= f the SPI cycle, the data size is 1 typically @param[out] StatusValue The Pointer to caller-allocated buffer c= ontaining the value of Status register received. =20 @@ -414,7 +500,7 @@ SpiProtocolFlashWriteStatus ( EFI_STATUS EFIAPI SpiP= rotocolFlashReadStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, OUT UINT8 *StatusValue ) @@ -426,7 +512,7 @@ SpiProtocolFlashReadStatus ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadStatus, 0, ByteCount, @@ -438,8 +524,8 @@ SpiProtocolFlashReadStatus ( /** Get the SPI region base and size, based on the enum type =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for for the base a= ddress which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for the base addre= ss which corresponds to the type in the descriptor. @param[out] BaseAddress The Flash Linear Address for the Region = 'n' Base @param[out] RegionSize The size for the Region 'n' =20 @@ -450,18 +536,25 @@ SpiProtocolFlashReadStatus ( EFI_STATUS EFIAPI Spi= ProtocolGetRegionAddress ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, OUT UINT32 *BaseAddress, OUT UINT32 *RegionSize ) { - SPI_INSTANCE *SpiInstance; - UINTN PchSpiBar0; - UINT32 ReadValue; + EFI_STATUS Status; + FLASH_REGION_TYPE FlashRegionType; + SPI_INSTANCE *SpiInstance; + UINTN PchSpiBar0; + UINT32 ReadValue; =20 SpiInstance =3D SPI_INSTANCE_FROM_SPIPROTOCOL (This); =20 + Status =3D GetFlashRegionType (FlashRegionGuid, &FlashRegionType); if=20 + (EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + if (FlashRegionType >=3D FlashRegionMax) { return EFI_INVALID_PARAMETER; } @@ -496,7 +589,7 @@ SpiProtocolGetRegionAddress ( /** Read PCH Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] SoftStrapAddr PCH Soft Strap address offset from FPSBA= . @param[in] ByteCount Number of bytes in SoftStrap data portio= n of the SPI cycle @param[out] SoftStrapValue The Pointer to caller-allocated buffer c= ontaining PCH Soft Strap Value. @@ -510,7 +603,7 @@ SpiProtocolGetRegionAddress ( EFI_STATUS EFIAPI SpiP= rotocolReadPchSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -542,7 +635,7 @@ SpiProtocolReadPchSoftStrap ( // Status =3D SendSpiCmd ( This, - FlashRegionDescriptor, + &gFlashRegionDescriptorGuid, FlashCycleRead, StrapFlashAddr, ByteCount, @@ -554,7 +647,7 @@ SpiProtocolReadPchSoftStrap ( /** Read CPU Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] SoftStrapAddr CPU Soft Strap address offset from FCPUS= BA. @param[in] ByteCount Number of bytes in SoftStrap data portio= n of the SPI cycle. @param[out] SoftStrapValue The Pointer to caller-allocated buffer c= ontaining CPU Soft Strap Value. @@ -568,7 +661,7 @@ SpiProtocolReadPchSoftStrap ( EFI_STATUS EFIAPI SpiP= rotocolReadCpuSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -600,7 +693,7 @@ SpiProtocolReadCpuSoftStrap ( // Status =3D SendSpiCmd ( This, - FlashRegionDescriptor, + &gFlashRegionDescriptorGuid, FlashCycleRead, StrapFlashAddr, ByteCount, @@ -612,8 +705,8 @@ SpiProtocolReadCpuSoftStrap ( /** This function sends the programmed SPI command to the slave device. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] SpiRegionType The SPI Region type for flash cycle whic= h is listed in the Descriptor + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] FlashCycleType The Flash SPI cycle type list in HSFC (H= ardware Sequencing Flash Control Register) register @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @@ -626,8 +719,8 @@ SpiProtocolReadCpuSoftStrap ( **/ EFI_STATUS SendSpi= Cmd ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN FLASH_CYCLE_TYPE FlashCycleType, IN UINT32 Address, IN UINT32 ByteCount, @@ -682,7 +775,7 @@ SendSpiCmd ( goto SendSpiCmdEnd; } =20 - Status =3D SpiProtocolGetRegionAddress (This, FlashRegionType, &Hardware= SpiAddr, &FlashRegionSize); + Status =3D SpiProtocolGetRegionAddress (This, FlashRegionGuid,=20 + &HardwareSpiAddr, &FlashRegionSize); if (EFI_ERROR (Status)) { goto SendSpiCmdEnd; } @@ -897,7 +990,7 @@ SendSpiCmd ( **/ BOOLEAN WaitForSpiCycleComplete ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINTN PchSpiBar0, IN BOOLEAN ErrorCheck ) diff --git a/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiComm= onLib.h b/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonL= ib.h index 2c8162ac8170..00586e9c9aef 100644 --- a/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLib.h +++ b/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLi +++ b.h @@ -48,7 +48,7 @@ typedef enum { typedef struct { UINT32 Signature; EFI_HANDLE Handle; - PCH_SPI_PROTOCOL SpiProtocol; + PCH_SPI2_PROTOCOL SpiProtocol; UINT16 PchAcpiBase; UINTN PchSpiBase; UINT16 ReadPermission; @@ -134,8 +134,8 @@ ReleaseSpiBar0 ( /** Read data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @param[out] Buffer The Pointer to caller-allocated buffer c= ontaining the dada received. @@ -148,8 +148,8 @@ ReleaseSpiBar0 ( EFI_STATUS EFIAPI SpiProtocolFlashRead ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, OUT UINT8 *Buffer @@ -158,8 +158,8 @@ SpiProtocolFlashRead ( /** Write data to the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @param[in] Buffer Pointer to caller-allocated buffer conta= ining the data sent during the SPI cycle. @@ -171,8 +171,8 @@ SpiProtocolFlashRead ( EFI_STATUS EFIAPI SpiProtocol= FlashWrite ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, IN UINT8 *Buffer @@ -181,8 +181,8 @@ SpiProtocolFlashWrite ( /** Erase some area on the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for flash cycle wh= ich is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. =20 @@ -193,8 +193,8 @@ SpiProtocolFlashWrite ( EFI_STATUS EFIAPI SpiProtoco= lFlashErase ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount ); @@ -202,7 +202,7 @@ SpiProtocolFlashErase ( /** Read SFDP data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ComponentNumber The Componen Number for chip select @param[in] Address The starting byte address for SFDP data = read. @param[in] ByteCount Number of bytes in SFDP data portion of = the SPI cycle @@ -216,7 +216,7 @@ SpiProtocolFlashErase ( EFI_STATUS EFIAPI SpiProtoco= lFlashReadSfdp ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 Address, IN UINT32 ByteCount, @@ -226,7 +226,7 @@ SpiProtocolFlashReadSfdp ( /** Read Jedec Id from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ComponentNumber The Componen Number for chip select @param[in] ByteCount Number of bytes in JedecId data portion = of the SPI cycle, the data size is 3 typically @param[out] JedecId The Pointer to caller-allocated buffer c= ontaining JEDEC ID received @@ -239,7 +239,7 @@ SpiProtocolFlashReadSfdp ( EFI_STATUS EFIAPI SpiProt= ocolFlashReadJedecId ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 ByteCount, OUT UINT8 *JedecId @@ -248,7 +248,7 @@ SpiProtocolFlashReadJedecId ( /** Write the status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ByteCount Number of bytes in Status data portion o= f the SPI cycle, the data size is 1 typically @param[in] StatusValue The Pointer to caller-allocated buffer c= ontaining the value of Status register writing =20 @@ -259,7 +259,7 @@ SpiProtocolFlashReadJedecId ( EFI_STATUS EFIAPI SpiP= rotocolFlashWriteStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, IN UINT8 *StatusValue ); @@ -267,7 +267,7 @@ SpiProtocolFlashWriteStatus ( /** Read status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] ByteCount Number of bytes in Status data portion o= f the SPI cycle, the data size is 1 typically @param[out] StatusValue The Pointer to caller-allocated buffer c= ontaining the value of Status register received. =20 @@ -278,7 +278,7 @@ SpiProtocolFlashWriteStatus ( EFI_STATUS EFIAPI SpiP= rotocolFlashReadStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, OUT UINT8 *StatusValue ); @@ -286,8 +286,8 @@ SpiProtocolFlashReadStatus ( /** Get the SPI region base and size, based on the enum type =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] FlashRegionType The Flash Region type for for the base a= ddress which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for the base addre= ss which corresponds to the type in the descriptor. @param[out] BaseAddress The Flash Linear Address for the Region = 'n' Base @param[out] RegionSize The size for the Region 'n' =20 @@ -298,8 +298,8 @@ SpiProtocolFlashReadStatus ( EFI_STATUS EFIAPI SpiPr= otocolGetRegionAddress ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, OUT UINT32 *BaseAddress, OUT UINT32 *RegionSize ); @@ -307,7 +307,7 @@ SpiProtocolGetRegionAddress ( /** Read PCH Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] SoftStrapAddr PCH Soft Strap address offset from FPSBA= . @param[in] ByteCount Number of bytes in SoftStrap data portio= n of the SPI cycle @param[out] SoftStrapValue The Pointer to caller-allocated buffer c= ontaining PCH Soft Strap Value. @@ -321,7 +321,7 @@ SpiProtocolGetRegionAddress ( EFI_STATUS EFIAPI SpiP= rotocolReadPchSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -330,7 +330,7 @@ SpiProtocolReadPchSoftStrap ( /** Read CPU Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. @param[in] SoftStrapAddr CPU Soft Strap address offset from FCPUS= BA. @param[in] ByteCount Number of bytes in SoftStrap data portio= n of the SPI cycle. @param[out] SoftStrapValue The Pointer to caller-allocated buffer c= ontaining CPU Soft Strap Value. @@ -344,7 +344,7 @@ SpiProtocolReadPchSoftStrap ( EFI_STATUS EFIAPI SpiP= rotocolReadCpuSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -353,8 +353,8 @@ SpiProtocolReadCpuSoftStrap ( /** This function sends the programmed SPI command to the slave device. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instance= . - @param[in] SpiRegionType The SPI Region type for flash cycle whic= h is listed in the Descriptor + @param[in] This Pointer to the PCH_SPI2_PROTOCOL instanc= e. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle wh= ich corresponds to the type in the descriptor. @param[in] FlashCycleType The Flash SPI cycle type list in HSFC (H= ardware Sequencing Flash Control Register) register @param[in] Address The Flash Linear Address must fall withi= n a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of t= he SPI cycle. @@ -367,8 +367,8 @@ SpiProtocolReadCpuSoftStrap ( **/ EFI_STATUS SendSpi= Cmd ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN FLASH_CYCLE_TYPE FlashCycleType, IN UINT32 Address, IN UINT32 ByteCount, @@ -388,7 +388,7 @@ SendSpiCmd ( **/ BOOLEAN WaitForSpiCycleComplete ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINTN PchSpiBar0, IN BOOLEAN ErrorCheck ); diff --git a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLi= b/BasePchSpiCommonLib.inf b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/Bas= ePchSpiCommonLib/BasePchSpiCommonLib.inf index b5aa13c1c56d..3a64005b5690 100644 --- a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/BaseP= chSpiCommonLib.inf +++ b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Ba +++ sePchSpiCommonLib.inf @@ -2,6 +2,7 @@ # Component description file for the PchSpiCommonLib # # Copyright (c) = 2019 Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -30,3 +31,13 @@ [Libr= aryClasses] [Pcd] gIntelSiliconPkgTokenSpaceGuid.PcdBiosAreaBaseAddress ## CONSUMES gIntelSiliconPkgTokenSpaceGuid.PcdBiosSize ## CONSUMES + +[Guids] + gFlashRegionDescriptorGuid + gFlashRegionBiosGuid + gFlashRegionMeGuid + gFlashRegionGbeGuid + gFlashRegionPlatformDataGuid + gFlashRegionDerGuid + gFlashRegionAllGuid + gFlashRegionMaxGuid -- 2.28.0.windows.1