From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 161D0941BDE for ; Fri, 4 Aug 2023 18:08:12 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=sWn13YzOfGzyMXEW1oNEMAxq+rtJjyXiu1wkIIliuq8=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1691172491; v=1; b=YzxMa6aOK6m8yK7ZjR2PfZkMwLBaxTE3TdrCKyRAoOHLAFvgBrSDsDbCNobAvEuILg4+L9qc RjefVNC70kGfAzCSo28JK71+ZR9ym9/kf3WcKI983QUaHCQVdVzboU2WQzQ7Y/YGcQOlSD/HZ2p B33YOHaSe78LtX0bpN3GLh5g= X-Received: by 127.0.0.2 with SMTP id 2AJUYY7687511xFskN5dLX5C; Fri, 04 Aug 2023 11:08:11 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.1852.1691110086845852262 for ; Thu, 03 Aug 2023 17:48:06 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10791"; a="372781329" X-IronPort-AV: E=Sophos;i="6.01,253,1684825200"; d="scan'208";a="372781329" X-Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Aug 2023 17:48:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10791"; a="729848108" X-IronPort-AV: E=Sophos;i="6.01,253,1684825200"; d="scan'208";a="729848108" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP; 03 Aug 2023 17:48:06 -0700 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 3 Aug 2023 17:48:05 -0700 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Thu, 3 Aug 2023 17:48:05 -0700 X-Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.43) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Thu, 3 Aug 2023 17:48:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SGifWvOuR0PKXszGPPZJVf/9MQ6toOVExyIRic2gd5vCmyi2V/cFYPIPZguhW7KdctQzE0Txfv3X1KtKUw/mms38gaeeimkhbuPKnfqFbVtMVmXGm6Wsci03lf9s9Bma/PjJPrswVqwCbtqkjZqS3RM7RwC6w0fyJMOdXT62vxkjUXwfwY4NMXRBWi3lAf6oLp2A9y6qPVkLtI469TYTv6+GeBcZYsaDEUVaQDOM/bHxV/kXWQieD4+5GHPtbvUXg5fSbnvSnMh+MuviD3lcv4n9LMFW8pLvtgmvQUe4KS33m/GgLZvfKApyq4/IovOHqJYeRBJYG3S6Niu9uAKmJg== 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=dAOTYouhHLoWmwqF0hykWAMJonU5ED0N6M7QGeWVvGs=; b=Fy4rxNAiG4t7wUkY5fXi3EpqjQ+U2RVczPbgdYDTKx7uDK99lwCTHsSc+QaXQhXVmY5MdWOmwVLcrKpfub0B0EYsgdjszAUGYSIrI01fhZZ5UZsi1+QrGHE194Krw6wgpT0hFDc6FIkuRQ2+6fwU82sgI85dLCoTuHkkQjaFVs5j+7+NuFmSs5yedteYkS7GFBDsI/40C0YXYwDdUHr1btTGC0+qT/phpK9ezfUyX2087FEumK/VcpdpGFOE/RcifuatxcLvHwz3iwEsXZebTv1O0JHAzjY5hs/F6mzDq/+DcVEPdtb4rIuQNWsockJc+IIXxSvFyCztwl5yo4wfjg== 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 X-Received: from PH0PR11MB5626.namprd11.prod.outlook.com (2603:10b6:510:ee::15) by CH3PR11MB8237.namprd11.prod.outlook.com (2603:10b6:610:154::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.21; Fri, 4 Aug 2023 00:48:02 +0000 X-Received: from PH0PR11MB5626.namprd11.prod.outlook.com ([fe80::68a8:9cc5:ec4d:ca44]) by PH0PR11MB5626.namprd11.prod.outlook.com ([fe80::68a8:9cc5:ec4d:ca44%7]) with mapi id 15.20.6631.046; Fri, 4 Aug 2023 00:48:02 +0000 From: "Chuang, Rosen" To: "Kasbekar, Saloni" , "devel@edk2.groups.io" CC: "Chaganty, Rangasai V" , "Desimone, Nathaniel L" , "Oram, Isaac W" Subject: Re: [edk2-devel] [PATCH v2 3/6] AlderlakeOpenBoardPkg/AlderlakePRvp: Add libraries Thread-Topic: [PATCH v2 3/6] AlderlakeOpenBoardPkg/AlderlakePRvp: Add libraries Thread-Index: AQHZxMYJRAtegCQ5IECBwTvy0hFTeq/ZUQ1Q Date: Fri, 4 Aug 2023 00:48:02 +0000 Message-ID: References: <6d497bd984f8a16be98d96042f3efea130be8a9c.1690391944.git.saloni.kasbekar@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5626:EE_|CH3PR11MB8237:EE_ x-ms-office365-filtering-correlation-id: 329d01f4-3af0-48b8-f657-08db9484753a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: j2yh4zBYE4flbpT5UwFW+18IBmi0gYMCz9fKd8Uhm1s5vk1U1sM1DU5B4cO2PfjH4l0Sd0qqsnA/Akup5DrF3R35OPhdprO4x2Wk24PHvXZD+kUgLR2uZnM0smANRlEw3XAcT1LtUyNGO0VklO7LMEuW0P/duzB/16QHW4RnZSgtcIeXUVN6wBkqybavihDqA7Gl0Su/LXO2iuyQr34Qsz9KbUlpdtchZKBJMbXxtqgh3TXS0pKdn8JIEsE+AWR8dYYbwu/w48Pi+aqFp6NCZXeVQmyiIFY2mVNaE+TQ7FhMnz1jNAf40K5FmWObkWR3OfnmWZ2Bh7IOr2p8ETpD4Silr607fZW9y1PA6mTj1NLTq/b41hn9m8W+Ks7bdWpGv1+TeaqWL6hZg/0Rfa6+mcmSNSbNTezhW3XamofyWrWRIW85lFNiEUuhwRNqeb8fkxLhRL9DRrj4t2oJVNcxRulxMjRWfGSg9Tlha9LXMB0nvFqWP5e0TdebFKBBUm+VHFNl+sLQWONO34F3yKXCu0dl7uLajG64QxTUufSMv8QzjHUJHHEu7Brxw9kJrS1+YMi5IhRwk6Ga0YobmTxy5vTXBf6iTHpJw1+UnDgtTpfAULWFgcUgPzbGID+wRtnh x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?fpS9h1wy6BGTsR6Zrqn9h2en0k6S2C/XGIPBO9YVu7BDKxU7jm2dlopp83bq?= =?us-ascii?Q?Wt0g1abOU5QInDxTx0TGuPnmtz1L7TSPKF0YKbly6ewo34cGkp75EOwqIae9?= =?us-ascii?Q?LEwLqFQj+XNQPNK/wrbCXybeprxMa1ZwcnPCyfToBrfoMkf3ggu96S4+e/1h?= =?us-ascii?Q?t+HmMHrZlFYFcMuRV7QxkQSPwrDQiYaRQ1btNQHVBHERtruhosyVglPAyW1V?= =?us-ascii?Q?HuB/w7HwWrJSgmujQnRMHzNQCIx4UCmyhbZlJlgqq1+iwQEg8QFB1sSFGi2g?= =?us-ascii?Q?hHIh2oW+RwN22rmf8aez+IFQ/4uMKvDeXqnl/5W5D6jRiu5EkFLOq1CPedu5?= =?us-ascii?Q?nlnw8bNlnw3HOfc6lhqH7BYrE+s31An5NE8cX/NXskYUJbnezt4gcEOEUbWj?= =?us-ascii?Q?MfX3qmvnZQ2c+7MLdQpTjoLvjr755egTxQQZtLaKKEEX7X5ZRYe5yNhOeve0?= =?us-ascii?Q?TuNq2x2qmxKCAYGSWMBWJJmh1sI3ghiuuEg85n7wB0ix6TOl4vU6JFkzy2I2?= =?us-ascii?Q?l7kSk23zPEZNsvComo8AkTiOeoTKFMcIcQ4kdHhM8uXxMp15h2H6/MxUj8sV?= =?us-ascii?Q?p6g7hhtHdGJhaIjX6Drg2hr1rvdarbwvk8WItuceXKp/dbgaditv3m3Cew/a?= =?us-ascii?Q?F45fOvHotvfnnlExoPjYYdgoXlUifGRxs+RCBw1DDiptr0Z8ubwv1wIZDB4W?= =?us-ascii?Q?Aqvr7n+dfG6a8z0ulNDC4vDioZgtigPdRIPu9+YXJioyY0jrOv8r4/TZwBE7?= =?us-ascii?Q?U8Zlzq0TtcWz6SayYNPB14XNxgx+9mfu/QCQFFA63pQ6Khrr4WCNB+d0xOkW?= =?us-ascii?Q?GaU0JeWJO1IlT/lPYNL5JQVWu8BqkS94/0qOxabPsCEacQ8zDWrJsUj7uLGx?= =?us-ascii?Q?euRDnG1QvQ/JH9n/7uNETUDOxPYv1Q+S5UR8J2IzQJKBbVfZIvo/o46HEvQK?= =?us-ascii?Q?aVXdqpEebRqXKtPtBYbNe7PTgUYlRDfrA7R5SfturOeEIjExehlVdd/JO/IH?= =?us-ascii?Q?vQAe99ILsQmZ2btN9ZQSM41oHXxJlKEya+/Y8JE8IT+XgL2t0pGgoLQjngAp?= =?us-ascii?Q?5P2FiuUTKCtj4RL1pnEzTLDAH1KU5p3LkjM8scnh14LFA1jWcxyT3E7H1c4/?= =?us-ascii?Q?tqlfjIwWWDVfV4UI02OoNodSjYiw9vFG7Z4zS2VXKPukzEqcu4dlqZpV3nkz?= =?us-ascii?Q?zE3pWsKQFk4lkJlDYhxVKMHTlhXYa6XQsHBc0y4G9CcYwHN3ae9zW8ElNUDF?= =?us-ascii?Q?BuwFN1iCRyaFEp3qDwYtxxEq/eEcbso83Rv6Cy/TDuOLtSnGb7AiifOi6mXM?= =?us-ascii?Q?ZKLmY7p+01OPiTgGZZeKRYgstkovR9pYeo7pmLq9R9aF4iz0iqagQ49vFefK?= =?us-ascii?Q?Sj50q4n535XWcNf2RFiUjjmX0H2zxhZ95PW5kkzUC6dC0ZIOqRmXqXJ01V69?= =?us-ascii?Q?rSk4ftg+U8IPTAptDqEl6wUHI0al32Blx0iAp04KNvgPa/zcxiyslsqYfDo5?= =?us-ascii?Q?b2orPTsPvfarUD0IbnYx2uaSUgeMR+oSrzti+ZyroGKkDoYnNxg+qucrrPPu?= =?us-ascii?Q?2ALhzh6rE9W1XAgCWkICRTxQRa2j0mqK2foYWMsr?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5626.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 329d01f4-3af0-48b8-f657-08db9484753a X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Aug 2023 00:48:02.5963 (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: 4xCVnKO6BW1whtvAuKhu6qImMvQOniCqwTe/8Qtks2f4UfDVPckqHtyAzEq2a+Lo67ipL1lQz/upGIKPApHiyg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8237 X-OriginatorOrg: intel.com 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 Reply-To: devel@edk2.groups.io,rosen.chuang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: RSBdYh4MVnqEpOWWykxY4t0vx7686176AA= 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=20140610 header.b=YzxMa6aO; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Reviewed-by: Rosen Chuang < rosen.chuang@intel.com> -----Original Message----- From: Kasbekar, Saloni =20 Sent: Wednesday, August 2, 2023 6:18 AM To: devel@edk2.groups.io Cc: Kasbekar, Saloni ; Chaganty, Rangasai V ; Desimone, Nathaniel L ; Oram, Isaac W ; Chuang, Rosen Subject: [PATCH v2 3/6] AlderlakeOpenBoardPkg/AlderlakePRvp: Add libraries Adds the following library instances: - BoardAcpiLib - BoardInitLib Cc: Sai Chaganty Cc: Nate DeSimone Cc: Isaac Oram Cc: Rosen Chuang Signed-off-by: Saloni Kasbekar --- .../SmmAlderlakePRvpAcpiEnableLib.c | 50 +++++ .../SmmMultiBoardAcpiSupportLib.c | 88 ++++++++ .../SmmMultiBoardAcpiSupportLib.inf | 41 ++++ .../BoardAcpiLib/SmmSiliconAcpiEnableLib.c | 134 ++++++++++++ .../BoardInitLib/Pei/BoardPchInitPreMemLib.c | 104 +++++++++ .../BoardInitLib/Pei/BoardSaConfigPreMem.h | 73 +++++++ .../BoardInitLib/Pei/BoardSaInitPreMemLib.c | 160 ++++++++++++++ .../Library/BoardInitLib/Pei/PeiDetect.c | 62 ++++++ .../BoardInitLib/Pei/PeiInitPostMemLib.c | 100 +++++++++ .../BoardInitLib/Pei/PeiInitPreMemLib.c | 202 ++++++++++++++++++ .../Pei/PeiMultiBoardInitPostMemLib.c | 45 ++++ .../Pei/PeiMultiBoardInitPostMemLib.inf | 53 +++++ .../Pei/PeiMultiBoardInitPreMemLib.c | 89 ++++++++ .../Pei/PeiMultiBoardInitPreMemLib.inf | 149 +++++++++++++ 14 files changed, 1350 insertions(+) create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardAcpiLib/SmmAlderlakePRvpAcpiEnableLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardAcpiLib/SmmMultiBoardAcpiSupportLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardAcpiLib/SmmMultiBoardAcpiSupportLib.inf create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardAcpiLib/SmmSiliconAcpiEnableLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/BoardPchInitPreMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/BoardSaConfigPreMem.h create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/BoardSaInitPreMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiDetect.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiInitPostMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiInitPreMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiMultiBoardInitPostMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiMultiBoardInitPostMemLib.inf create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiMultiBoardInitPreMemLib.c create mode 100644 Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Libr= ary/BoardInitLib/Pei/PeiMultiBoardInitPreMemLib.inf diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdAcpiLib/SmmAlderlakePRvpAcpiEnableLib.c b/Platform/Intel/AlderlakeOpenBoa= rdPkg/AlderlakePRvp/Library/BoardAcpiLib/SmmAlderlakePRvpAcpiEnableLib.c new file mode 100644 index 0000000000..8dfc04c5f5 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardAc +++ piLib/SmmAlderlakePRvpAcpiEnableLib.c @@ -0,0 +1,50 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + Enable Board Acpi + + @param[in] EnableSci Enable SCI if EnableSci parameters is True. + + @retval EFI_SUCCESS The function always return successfully. +**/ +EFI_STATUS +EFIAPI +AdlBoardEnableAcpi ( + IN BOOLEAN EnableSci + ) +{ + // enable additional board register + return EFI_SUCCESS; +} + +/** + Disable Board Acpi + + @param[in] DisableSci Disable SCI if DisableSci parameters is True. + + @retval EFI_SUCCESS The function always return successfully. +**/ +EFI_STATUS +EFIAPI +AdlBoardDisableAcpi ( + IN BOOLEAN DisableSci + ) +{ + // enable additional board register + return EFI_SUCCESS; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdAcpiLib/SmmMultiBoardAcpiSupportLib.c b/Platform/Intel/AlderlakeOpenBoard= Pkg/AlderlakePRvp/Library/BoardAcpiLib/SmmMultiBoardAcpiSupportLib.c new file mode 100644 index 0000000000..ea0f7c966b --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardAc +++ piLib/SmmMultiBoardAcpiSupportLib.c @@ -0,0 +1,88 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include #include=20 + +#include +#include + +#include + +EFI_STATUS +EFIAPI +AdlBoardEnableAcpi ( + IN BOOLEAN EnableSci + ); + +EFI_STATUS +EFIAPI +AdlBoardDisableAcpi ( + IN BOOLEAN DisableSci + ); + +EFI_STATUS +EFIAPI +SiliconEnableAcpi ( + IN BOOLEAN EnableSci + ); + +EFI_STATUS +EFIAPI +SiliconDisableAcpi ( + IN BOOLEAN DisableSci + ); + +EFI_STATUS +EFIAPI +MultiBoardEnableAcpi ( + IN BOOLEAN EnableSci + ) +{ + SiliconEnableAcpi (EnableSci); + return AdlBoardEnableAcpi (EnableSci); } + +EFI_STATUS +EFIAPI +MultiBoardDisableAcpi ( + IN BOOLEAN DisableSci + ) +{ + SiliconDisableAcpi (DisableSci); + return AdlBoardDisableAcpi (DisableSci); } + +BOARD_ACPI_ENABLE_FUNC mBoardAcpiEnableFunc =3D { + MultiBoardEnableAcpi, + MultiBoardDisableAcpi, +}; + +/** + The constructor function to register mBoardAcpiEnableFunc function. + + @param[in] ImageHandle The firmware allocated handle for the EFI image= . + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS This constructor always return EFI_SUCCESS. + It will ASSERT on errors. +**/ +EFI_STATUS +EFIAPI +SmmMultiBoardAcpiSupportLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + DEBUG ((DEBUG_INFO, "SKU_ID: 0x%x\n", LibPcdGetSku())); + return RegisterBoardAcpiEnableFunc (&mBoardAcpiEnableFunc); } + diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdAcpiLib/SmmMultiBoardAcpiSupportLib.inf b/Platform/Intel/AlderlakeOpenBoa= rdPkg/AlderlakePRvp/Library/BoardAcpiLib/SmmMultiBoardAcpiSupportLib.inf new file mode 100644 index 0000000000..8a418bc8da --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardAc +++ piLib/SmmMultiBoardAcpiSupportLib.inf @@ -0,0 +1,41 @@ +## @file +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
# =20 +SPDX-License-Identifier: BSD-2-Clause-Patent # ## + +[Defines] + INF_VERSION =3D 0x00010017 + BASE_NAME =3D SmmMultiBoardAcpiSupportLib + FILE_GUID =3D 8929A54E-7ED8-4AB3-BEBB-C0367BDBBFF5 + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D DXE_SMM_DRIVER + LIBRARY_CLASS =3D NULL + CONSTRUCTOR =3D SmmMultiBoardAcpiSupportLibConstructo= r + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC # + +[LibraryClasses] + BaseLib + IoLib + PciLib + PchCycleDecodingLib + PchPciBdfLib + PmcLib + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + MinPlatformPkg/MinPlatformPkg.dec + AlderlakeOpenBoardPkg/OpenBoardPkg.dec + AlderlakeSiliconPkg/SiPkg.dec + +[Sources] + SmmAlderlakePRvpAcpiEnableLib.c + SmmSiliconAcpiEnableLib.c + SmmMultiBoardAcpiSupportLib.c diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdAcpiLib/SmmSiliconAcpiEnableLib.c b/Platform/Intel/AlderlakeOpenBoardPkg/= AlderlakePRvp/Library/BoardAcpiLib/SmmSiliconAcpiEnableLib.c new file mode 100644 index 0000000000..fbe745ad36 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardAc +++ piLib/SmmSiliconAcpiEnableLib.c @@ -0,0 +1,134 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include #include =20 +#include #include #include=20 + #include #include=20 + #include #include=20 + + +/** + Clear Port 80h + + Disables the SW SMI Timer. + ACPI events are disabled and ACPI event status is cleared. + + Disable port 60/64 SMI trap if they are enabled + + Disable PM sources except power button Clear status bits + + Guarantee day-of-month alarm is invalid (ACPI 1.0 section 4.7.2.4) + + Enable SCI +**/ +EFI_STATUS +EFIAPI +SiliconEnableAcpi ( + IN BOOLEAN EnableSci + ) +{ + + UINT32 SmiEn; + UINT32 SmiSts; + UINT32 ULKMC; + UINTN LpcBaseAddress; + UINT16 AcpiBaseAddr; + UINT32 Pm1Cnt; + + LpcBaseAddress =3D LpcPciCfgBase (); + + // + // Get the ACPI Base Address + // + AcpiBaseAddr =3D PmcGetAcpiBase(); + + // + // Clear Port 80h + // + IoWrite8 (0x80, 0); + + // + // Disable SW SMI Timer and clean the status // SmiEn =3D IoRead32=20 + (AcpiBaseAddr + R_ACPI_IO_SMI_EN); SmiEn &=3D=20 + ~(B_ACPI_IO_SMI_EN_LEGACY_USB2 | B_ACPI_IO_SMI_EN_SWSMI_TMR |=20 + B_ACPI_IO_SMI_EN_LEGACY_USB); + IoWrite32 (AcpiBaseAddr + R_ACPI_IO_SMI_EN, SmiEn); + + SmiSts =3D IoRead32 (AcpiBaseAddr + R_ACPI_IO_SMI_STS); SmiSts |=3D=20 + B_ACPI_IO_SMI_EN_LEGACY_USB2 | B_ACPI_IO_SMI_EN_SWSMI_TMR |=20 + B_ACPI_IO_SMI_EN_LEGACY_USB; + IoWrite32 (AcpiBaseAddr + R_ACPI_IO_SMI_STS, SmiSts); + + // + // Disable port 60/64 SMI trap if they are enabled // ULKMC =3D=20 + MmioRead32 (LpcBaseAddress + R_LPC_CFG_ULKMC) &=20 + ~(B_LPC_CFG_ULKMC_60REN | B_LPC_CFG_ULKMC_60WEN |=20 + B_LPC_CFG_ULKMC_64REN | B_LPC_CFG_ULKMC_64WEN |=20 + B_LPC_CFG_ULKMC_A20PASSEN); + MmioWrite32 (LpcBaseAddress + R_LPC_CFG_ULKMC, ULKMC); + + // + // Disable PM sources except power button // + IoWrite16 (AcpiBaseAddr + R_ACPI_IO_PM1_EN, B_ACPI_IO_PM1_EN_PWRBTN); + + // + // Clear PM status except Power Button status for RapidStart Resume =20 + // + IoWrite16 (AcpiBaseAddr + R_ACPI_IO_PM1_STS, 0xFEFF); + + // + // Guarantee day-of-month alarm is invalid (ACPI 1.0 section 4.7.2.4) = =20 + // + IoWrite8 (R_RTC_IO_INDEX_ALT, R_RTC_IO_REGD); + IoWrite8 (R_RTC_IO_TARGET_ALT, 0x0); + + // + // Enable SCI + // + if (EnableSci) { + Pm1Cnt =3D IoRead32 (AcpiBaseAddr + R_ACPI_IO_PM1_CNT); + Pm1Cnt |=3D B_ACPI_IO_PM1_CNT_SCI_EN; + IoWrite32 (AcpiBaseAddr + R_ACPI_IO_PM1_CNT, Pm1Cnt); } + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +SiliconDisableAcpi ( + IN BOOLEAN DisableSci + ) +{ + + UINT16 AcpiBaseAddr; + UINT32 Pm1Cnt; + + // + // Get the ACPI Base Address + // + AcpiBaseAddr =3D PmcGetAcpiBase(); + // + // Disable SCI + // + if (DisableSci) { + Pm1Cnt =3D IoRead32 (AcpiBaseAddr + R_ACPI_IO_PM1_CNT); + Pm1Cnt &=3D ~B_ACPI_IO_PM1_CNT_SCI_EN; + IoWrite32 (AcpiBaseAddr + R_ACPI_IO_PM1_CNT, Pm1Cnt); } + + return EFI_SUCCESS; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/BoardPchInitPreMemLib.c b/Platform/Intel/AlderlakeOpenBoardPk= g/AlderlakePRvp/Library/BoardInitLib/Pei/BoardPchInitPreMemLib.c new file mode 100644 index 0000000000..13ad444f8b --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/BoardPchInitPreMemLib.c @@ -0,0 +1,104 @@ +/** @file + Source code for the board PCH configuration Pcd init functions for Pre-Me= mory Init phase. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include #include =20 +#include #include=20 + #include #include=20 + #include #include=20 + +/** + Board Root Port Clock Info configuration init function for PEI pre-memor= y phase. + + @retval EFI_SUCCESS The function completed successfully. +**/ +EFI_STATUS +AdlPRootPortClkInfoInit ( + VOID + ) +{ + PCD64_BLOB Clock[PCH_MAX_PCIE_CLOCKS]; + UINT32 Index; + PCIE_CLOCKS_USAGE *PcieClocks; + + PcieClocks =3D NULL; + + // + //The default clock assignment will be NOT_USED, which corresponds to Pc= hClockUsageNotUsed. This will prevent clocks drawing Power by default. + //If Platform code doesn't contain port-clock map for a given board, the= clocks will be NOT_USED, preventing PCIe devices not to operate. + //To prevent this, remember to provide port-clock map for every board. + // + for (Index =3D 0; Index < PCH_MAX_PCIE_CLOCKS; Index++) { + Clock[Index].PcieClock.ClkReqSupported =3D TRUE; + Clock[Index].PcieClock.ClockUsage =3D NOT_USED; } + + /// + /// Assign ClkReq signal to root port. (Base 0) /// For LP, Set 0 -=20 + 5 /// For H, Set 0 - 15 /// Note that if GbE is enabled, ClkReq=20 + assigned to GbE will not be available for Root Port. + /// + + PcieClocks =3D PcdGetPtr(VpdPcdPcieClkUsageMap); if (PcieClocks =3D=3D= =20 + NULL) { + return EFI_INVALID_PARAMETER; + } + + Clock[0].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[0]; =20 + Clock[1].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[1]; =20 + Clock[2].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[2]; =20 + Clock[3].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[3]; =20 + Clock[4].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[4]; =20 + Clock[5].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[5]; =20 + Clock[6].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[6]; =20 + Clock[7].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[7]; =20 + Clock[8].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[8]; =20 + Clock[9].PcieClock.ClockUsage =3D PcieClocks->ClockUsage[9]; + + PcdSet64S (PcdPcieClock0, Clock[ 0].Blob); + PcdSet64S (PcdPcieClock1, Clock[ 1].Blob); + PcdSet64S (PcdPcieClock2, Clock[ 2].Blob); + PcdSet64S (PcdPcieClock3, Clock[ 3].Blob); + PcdSet64S (PcdPcieClock4, Clock[ 4].Blob); + PcdSet64S (PcdPcieClock5, Clock[ 5].Blob); + PcdSet64S (PcdPcieClock6, Clock[ 6].Blob); + PcdSet64S (PcdPcieClock7, Clock[ 7].Blob); + PcdSet64S (PcdPcieClock8, Clock[ 8].Blob); + PcdSet64S (PcdPcieClock9, Clock[ 9].Blob); + PcdSet64S (PcdPcieClock10, Clock[10].Blob); + PcdSet64S (PcdPcieClock11, Clock[11].Blob); + PcdSet64S (PcdPcieClock12, Clock[12].Blob); + PcdSet64S (PcdPcieClock13, Clock[13].Blob); + PcdSet64S (PcdPcieClock14, Clock[14].Blob); + PcdSet64S (PcdPcieClock15, Clock[15].Blob); + return EFI_SUCCESS; +} + +/** + Board GPIO Group Tier configuration init function for PEI pre-memory pha= se. +**/ +VOID +AdlPGpioGroupTierInit ( + VOID + ) +{ + // + // GPIO Group Tier + // + PcdSet32S (PcdGpioGroupToGpeDw0, 0); + PcdSet32S (PcdGpioGroupToGpeDw1, 0); + PcdSet32S (PcdGpioGroupToGpeDw2, 0); + + return; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/BoardSaConfigPreMem.h b/Platform/Intel/AlderlakeOpenBoardPkg/= AlderlakePRvp/Library/BoardInitLib/Pei/BoardSaConfigPreMem.h new file mode 100644 index 0000000000..c79555cde8 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/BoardSaConfigPreMem.h @@ -0,0 +1,73 @@ +/** @file + PEI Boards Configurations for PreMem phase. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _BOARD_SA_CONFIG_PRE_MEM_H_ +#define _BOARD_SA_CONFIG_PRE_MEM_H_ + +#include +#include + +#define SA_MRC_MAX_RCOMP_TARGETS (5) + +// +// Reference RCOMP resistors on motherboard - MRC will set=20 +automatically // GLOBAL_REMOVE_IF_UNREFERENCED const UINT16=20 +AdlPRcompResistorZero =3D 0; + +// +// RCOMP target values for RdOdt, WrDS, WrDSCmd, WrDSCtl, WrDSClk - MRC=20 +will set automatically // GLOBAL_REMOVE_IF_UNREFERENCED const UINT16=20 +RcompTargetAdlP[SA_MRC_MAX_RCOMP_TARGETS] =3D { 0, 0, 0, 0, 0 }; + +// +// DQ byte mapping to CMD/CTL/CLK, from the CPU side //=20 +GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 DqByteMapAdlP[2][6][2] =3D { + // Channel 0: + { + { 0x0F, 0xF0 }, // CLK0 goes to package 0 - Bytes[3:0], CLK1 goes to p= ackage 1 - Bytes[7:4] + { 0x0F, 0xF0 }, // Cmd CAA goes to Bytes[3:0], Cmd CAB goes to Byte[7:= 4] + { 0xFF, 0x00 }, // CTL (CS) goes to all bytes + { 0x00, 0x00 }, // Unused in ICL MRC + { 0x00, 0x00 }, // Unused in ICL MRC + { 0x00, 0x00 }, // Unused in ICL MRC + }, + // Channel 1: + { + { 0x0F, 0xF0 }, // CLK0 goes to package 0 - Bytes[3:0], CLK1 goes to p= ackage 1 - Bytes[7:4] + { 0x0F, 0xF0 }, // Cmd CAA goes to Bytes[3:0], Cmd CAB goes to Byte[7:= 4] + { 0xFF, 0x00 }, // CTL (CS) goes to all bytes + { 0x00, 0x00 }, // Unused in ICL MRC + { 0x00, 0x00 }, // Unused in ICL MRC + { 0x00, 0x00 }, // Unused in ICL MRC + } +}; + +// +// Display DDI settings for Adl-P Ddr5 Rvp Edp + DP //=20 +GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 mAdlPDdr5RvpDisplayDdiConfig[16]= =3D { + = DdiPortEdp, // DDI Port A Config : DdiPortDisabled =3D No LFP is = Connected, DdiPortEdp =3D eDP, DdiPortMipiDsi =3D MIPI DSI + = DdiPortDisabled, // DDI Port B Config : DdiPortDisabled =3D No LFP is = Connected, DdiPortEdp =3D eDP, DdiPortMipiDsi =3D MIPI DSI + = DdiHpdDisable, // DDI Port A HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdEnable, // DDI Port B HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdDisable, // DDI Port C HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdDisable, // DDI Port 1 HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdDisable, // DDI Port 2 HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdDisable, // DDI Port 3 HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiHpdDisable, // DDI Port 4 HPD : DdiHpdDisable =3D Disable, DdiHpd= Enable =3D Enable HPD + = DdiDisable, // DDI Port A DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable, // DDI Port B DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable, // DDI Port C DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable, // DDI Port 1 DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable, // DDI Port 2 DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable, // DDI Port 3 DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC + = DdiDisable // DDI Port 4 DDC : DdiDisable =3D Disable, DdiDdcEna= ble =3D Enable DDC +}; + +#endif // _BOARD_SA_CONFIG_PRE_MEM_H_ diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/BoardSaInitPreMemLib.c b/Platform/Intel/AlderlakeOpenBoardPkg= /AlderlakePRvp/Library/BoardInitLib/Pei/BoardSaInitPreMemLib.c new file mode 100644 index 0000000000..e42c8fb5f8 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/BoardSaInitPreMemLib.c @@ -0,0 +1,160 @@ +/** @file + Source code for the board SA configuration Pcd init functions in Pre-Memo= ry init phase. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "BoardSaConfigPreMem.h" +#include +#include +#include +#include +#include +#include +#include +/** + MRC configuration init function for PEI pre-memory phase. + + @param[in] VOID + + @retval VOID +**/ +VOID +AdlPSaMiscConfigInit ( + VOID + ) +{ + PcdSet8S (PcdSaMiscUserBd, 6); + return; +} + +/** + Board Memory Init related configuration init function for PEI pre-memory= phase. + + @param[in] VOID + + @retval VOID +**/ +VOID +AdlPMrcConfigInit ( + VOID + ) +{ + UINT16 BoardId; + BOOLEAN ExternalSpdPresent; + MRC_DQS *MrcDqs; + MRC_DQ *MrcDq; + SPD_DATA *SpdData; + + BoardId =3D PcdGet16(PcdBoardId); + + // SPD is the same size for all boards PcdSet16S (PcdMrcSpdDataSize,=20 + 512); + + ExternalSpdPresent =3D PcdGetBool (PcdSpdPresent); + + // Assume internal SPD is used + PcdSet8S (PcdMrcSpdAddressTable0, 0); PcdSet8S=20 + (PcdMrcSpdAddressTable1, 0); PcdSet8S (PcdMrcSpdAddressTable2, 0); =20 + PcdSet8S (PcdMrcSpdAddressTable3, 0); PcdSet8S=20 + (PcdMrcSpdAddressTable4, 0); PcdSet8S (PcdMrcSpdAddressTable5, 0); =20 + PcdSet8S (PcdMrcSpdAddressTable6, 0); PcdSet8S=20 + (PcdMrcSpdAddressTable7, 0); PcdSet8S (PcdMrcSpdAddressTable8, 0); =20 + PcdSet8S (PcdMrcSpdAddressTable9, 0); PcdSet8S=20 + (PcdMrcSpdAddressTable10, 0); PcdSet8S (PcdMrcSpdAddressTable11, 0); =20 + PcdSet8S (PcdMrcSpdAddressTable12, 0); PcdSet8S=20 + (PcdMrcSpdAddressTable13, 0); PcdSet8S (PcdMrcSpdAddressTable14, 0); =20 + PcdSet8S (PcdMrcSpdAddressTable15, 0); + + // Check for external SPD presence + if (ExternalSpdPresent) { + switch (BoardId) { + case BoardIdAdlPDdr5Rvp: + PcdSet8S (PcdMrcSpdAddressTable0, 0xA0); + PcdSet8S (PcdMrcSpdAddressTable1, 0xA2); + PcdSet8S (PcdMrcSpdAddressTable8, 0xA4); + PcdSet8S (PcdMrcSpdAddressTable9, 0xA6); + break; + default: + break; + } + } + + // Setting the default DQ Byte Map. It may be overriden to board specifi= c settings below. + PcdSet32S (PcdMrcDqByteMap, (UINTN) DqByteMapAdlP); PcdSet16S=20 + (PcdMrcDqByteMapSize, sizeof (DqByteMapAdlP)); + + // ADL uses the same RCOMP resistors for all DDR types PcdSet32S=20 + (PcdMrcRcompResistor, (UINTN) AdlPRcompResistorZero); + + // Use default RCOMP target values for all boards PcdSet32S=20 + (PcdMrcRcompTarget, (UINTN) RcompTargetAdlP); + + // Default is NIL + PcdSetBoolS (PcdMrcDqPinsInterleavedControl, TRUE); PcdSetBoolS=20 + (PcdMrcDqPinsInterleaved, FALSE); + + // DqsMapCpu2Dram is the same size for all boards PcdSet16S=20 + (PcdMrcDqsMapCpu2DramSize, sizeof (MRC_DQS)); // DqMapCpu2Dram is the=20 + same size for all boards PcdSet16S (PcdMrcDqMapCpu2DramSize, sizeof=20 + (MRC_DQ)); + PcdSet8S (PcdMrcLp5CccConfig, 0x0); + + // CPU-DRAM DQ mapping + MrcDq =3D PcdGetPtr (VpdPcdMrcDqMapCpu2Dram); if (MrcDq !=3D NULL) { + PcdSet32S (PcdMrcDqMapCpu2Dram, (UINTN)MrcDq->DqMapCpu2Dram); } + + // CPU-DRAM DQS mapping + MrcDqs =3D PcdGetPtr (VpdPcdMrcDqsMapCpu2Dram); if (MrcDqs !=3D NULL) { + PcdSet32S (PcdMrcDqsMapCpu2Dram, (UINTN)MrcDqs->DqsMapCpu2Dram); } + + // DRAM SPD Data + SpdData =3D PcdGetPtr (VpdPcdMrcSpdData); if (SpdData !=3D NULL) { + if (SpdData->OverrideSpd =3D=3D TRUE) { + PcdSet32S (PcdMrcSpdData, (UINTN)SpdData->SpdData); + } + } + + return; +} + +/** + SA Display DDI configuration init function for PEI pre-memory phase. + + @param[in] VOID + + @retval VOID +**/ +VOID +AdlPSaDisplayConfigInit ( + VOID + ) +{ + UINT16 BoardId; + + BoardId =3D PcdGet16 (PcdBoardId); + + switch (BoardId) { + case BoardIdAdlPDdr5Rvp: + DEBUG ((DEBUG_INFO, "DDI Configuration ADLP Edp DP\n")); + PcdSet32S (PcdSaDisplayConfigTable, (UINTN) mAdlPDdr5RvpDisplayDdi= Config); + PcdSet16S (PcdSaDisplayConfigTableSize, sizeof (mAdlPDdr5RvpDispla= yDdiConfig)); + break; + default: + break; + } + + return; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiDetect.c b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakeP= Rvp/Library/BoardInitLib/Pei/PeiDetect.c new file mode 100644 index 0000000000..5ad8e56f4d --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiDetect.c @@ -0,0 +1,62 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include + +BOOLEAN +IsAdlP ( + VOID + ) +{ + UINT16 BoardId; + BoardId =3D PcdGet16 (PcdBoardId); + if (BoardId =3D=3D 0) { + DEBUG ((DEBUG_INFO, "Let's get Board information first ...\n")); + GetBoardConfig (); + BoardId =3D PcdGet16 (PcdBoardId); + } + switch (BoardId) { + case BoardIdAdlPDdr5Rvp: + DEBUG ((DEBUG_INFO, "AlderLake P Board detected\n")); + + // set sku type to ADL P + PcdSet8S (PcdSkuType, AdlPSkuType); + return TRUE; + break; + default: + return FALSE; + } +} + +EFI_STATUS +EFIAPI +AdlPBoardDetect ( + VOID + ) +{ + UINTN SkuId; + SkuId =3D 0; + + if (LibPcdGetSku () !=3D 0) { + return EFI_SUCCESS; + } + + DEBUG ((DEBUG_INFO, "AlderLakeP Board Detection Callback\n")); + + if (IsAdlP ()) { + SkuId =3D (UINTN) (PcdGet16 (PcdBoardBomId) << 16) | (PcdGet16 (PcdBoa= rdRev) << 8) | (PcdGet16 (PcdBoardId)); + LibPcdSetSku (SkuId); + DEBUG ((DEBUG_INFO, "SKU_ID: 0x%x\n", LibPcdGetSku())); + } + return EFI_SUCCESS; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiInitPostMemLib.c b/Platform/Intel/AlderlakeOpenBoardPkg/Al= derlakePRvp/Library/BoardInitLib/Pei/PeiInitPostMemLib.c new file mode 100644 index 0000000000..51201bb300 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiInitPostMemLib.c @@ -0,0 +1,100 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + + +/** + Alderlake P boards configuration init function for PEI post memory phase= . + + @retval EFI_SUCCESS The function completed successfully. +**/ +EFI_STATUS +EFIAPI +AdlPInit ( + VOID + ) +{ + UINT16 GpioCount; + UINTN Size; + EFI_STATUS Status; + GPIO_INIT_CONFIG *GpioTable; + // + // GPIO Table Init + // + Status =3D EFI_SUCCESS; + GpioCount =3D 0; + Size =3D 0; + GpioTable =3D NULL; + // + // GPIO Table Init + // + // + // GPIO Table Init, Update PostMem GPIO table to PcdBoardGpioTable + // + GpioTable =3D (GPIO_INIT_CONFIG *)PcdGetPtr(VpdPcdBoardGpioTable); + + GetGpioTableSize (GpioTable, &GpioCount); // // Increase GpioCount=20 + for the zero terminator. + // + GpioCount ++; + Size =3D (UINTN) (GpioCount * sizeof (GPIO_INIT_CONFIG)); Status =3D=20 + PcdSetPtrS (PcdBoardGpioTable, &Size, GpioTable); ASSERT_EFI_ERROR=20 + (Status); + + return Status; +} + +/** + Configures GPIO + + @param[in] GpioTable Point to Platform Gpio table + @param[in] GpioTableCount Number of Gpio table entries + +**/ +VOID +ConfigureGpio ( + IN GPIO_INIT_CONFIG *GpioDefinition, + IN UINT16 GpioTableCount + ) +{ + DEBUG ((DEBUG_INFO, "ConfigureGpio() Start\n")); + + GpioConfigurePads (GpioTableCount, GpioDefinition); + + DEBUG ((DEBUG_INFO, "ConfigureGpio() End\n")); } + +/** + Configure GPIO, TouchPanel, HDA, PMC, TBT etc. + + @retval EFI_SUCCESS Operation success. +**/ +EFI_STATUS +EFIAPI +AdlPBoardInitBeforeSiliconInit ( + VOID + ) +{ + AdlPInit (); + GpioInit (PcdGetPtr (PcdBoardGpioTable)); + + return EFI_SUCCESS; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiInitPreMemLib.c b/Platform/Intel/AlderlakeOpenBoardPkg/Ald= erlakePRvp/Library/BoardInitLib/Pei/PeiInitPreMemLib.c new file mode 100644 index 0000000000..0b7db476a1 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiInitPreMemLib.c @@ -0,0 +1,202 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include #include =20 +#include #include=20 + #include =20 +#include #include #include=20 + #include #include=20 + #include #include=20 + #include #include=20 + #include #include=20 + + +/** + Get Vpd binary address + + Parse through each FV for VPD FFS file and return the address + + @retval Address on VPD FFS detection else returns 0 + +**/ +UINTN +EFIAPI +GetVpdFfsAddress ( + ) +{ + EFI_STATUS Status; + VOID *Address; + UINTN Instance; + EFI_PEI_FV_HANDLE VolumeHandle; + EFI_PEI_FILE_HANDLE FileHandle; + + Address =3D NULL; + + VolumeHandle =3D NULL; + Instance =3D 0; + while (TRUE) { + // + // Traverse all firmware volume instances. + // + Status =3D PeiServicesFfsFindNextVolume (Instance, &VolumeHandle); + if (EFI_ERROR (Status)) { + break; + } + + FileHandle =3D NULL; + Status =3D PeiServicesFfsFindFileByName (&gVpdFfsGuid, VolumeHandle, &= FileHandle); + if (!EFI_ERROR (Status)) { + // + // Search RAW section. + // + Status =3D PeiServicesFfsFindSectionData (EFI_SECTION_RAW, FileHandl= e, &Address); + if (!EFI_ERROR (Status)) { + return (UINTN)Address; + } + } + + // + // Search the next volume. + // + Instance++; + } + + DEBUG ((DEBUG_ERROR, " PEI get VPD address: %r\n", EFI_NOT_FOUND)); + return 0; +} + +/** + Alderlake P boards configuration init function for PEI pre-memory phase. + + @retval EFI_SUCCESS The function completed successfully. +**/ +EFI_STATUS +EFIAPI +AdlPInitPreMem ( + VOID + ) +{ + UINTN VpdBaseAddress; + + VpdBaseAddress =3D (UINTN) PcdGet64 (PcdVpdBaseAddress64); DEBUG=20 + ((DEBUG_INFO, "VpdFfsAddress: %x\n", VpdBaseAddress)); if=20 + (VpdBaseAddress =3D=3D 0) { + VpdBaseAddress=3D (UINTN) GetVpdFfsAddress(); + PcdSet64S (PcdVpdBaseAddress64,VpdBaseAddress); + DEBUG ((DEBUG_INFO, "VpdFfsAddress updated: %x\n",=20 + VpdBaseAddress)); } PcdSet32S (PcdStackBase, PcdGet32=20 + (PcdTemporaryRamBase) + PcdGet32 (PcdTemporaryRamSize) - (PcdGet32=20 + (PcdFspTemporaryRamSize) + PcdGet32 (PcdFspReservedBufferSize))); =20 + PcdSet32S (PcdStackSize, PcdGet32 (PcdFspTemporaryRamSize)); + + return EFI_SUCCESS; +} + + +VOID +AdlPMrcConfigInit ( + VOID + ); + +VOID +AdlPSaMiscConfigInit ( + VOID + ); + +VOID +AdlPSaDisplayConfigInit ( + VOID + ); + +EFI_STATUS +AdlPRootPortClkInfoInit ( + VOID + ); + +VOID +AdlPGpioGroupTierInit ( + VOID + ); + + +/** + A hook for board-specific initialization prior to memory initialization. + + @retval EFI_SUCCESS The board initialization was successful. +**/ +EFI_STATUS +EFIAPI +AdlPBoardInitBeforeMemoryInit ( + VOID + ) +{ + EFI_STATUS Status; + + DEBUG ((DEBUG_INFO, "AdlPBoardInitBeforeMemoryInit\n")); + + AdlPInitPreMem (); + + AdlPGpioGroupTierInit (); + + AdlPMrcConfigInit (); + AdlPSaMiscConfigInit (); + Status =3D AdlPRootPortClkInfoInit (); + AdlPSaDisplayConfigInit (); + if (PcdGetPtr (PcdBoardGpioTableEarlyPreMem) !=3D 0) { + GpioInit (PcdGetPtr (PcdBoardGpioTableEarlyPreMem)); + + MicroSecondDelay (15 * 1000); // 15 ms Delay } // Configure GPIO=20 + Before Memory GpioInit (PcdGetPtr (PcdBoardGpioTablePreMem)); + + return EFI_SUCCESS; +} + + +/** + This board service initializes board-specific debug devices. + + @retval EFI_SUCCESS Board-specific debug initialization was successful= . +**/ +EFI_STATUS +EFIAPI +AdlPBoardDebugInit ( + VOID + ) +{ + DEBUG ((DEBUG_INFO, "AdlPBoardDebugInit\n")); + + return EFI_SUCCESS; +} + +/** + This board service detects the boot mode. + + @retval EFI_BOOT_MODE The boot mode. +**/ +EFI_BOOT_MODE +EFIAPI +AdlPBoardBootModeDetect ( + VOID + ) +{ + DEBUG ((DEBUG_INFO, "AdlPBoardBootModeDetect\n")); + return BOOT_WITH_FULL_CONFIGURATION; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiMultiBoardInitPostMemLib.c b/Platform/Intel/AlderlakeOpenB= oardPkg/AlderlakePRvp/Library/BoardInitLib/Pei/PeiMultiBoardInitPostMemLib.= c new file mode 100644 index 0000000000..aa9809d126 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiMultiBoardInitPostMemLib.c @@ -0,0 +1,45 @@ +/** @file + PEI Multi-Board Initialization in Post-Memory PEI Library + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include + +#include + +EFI_STATUS +EFIAPI +AdlPBoardInitBeforeSiliconInit ( + VOID + ); + + +BOARD_POST_MEM_INIT_FUNC mAdlPBoardInitFunc =3D { + AdlPBoardInitBeforeSiliconInit, + NULL, +}; + +EFI_STATUS +EFIAPI +PeiAdlPMultiBoardInitLibConstructor ( + VOID + ) +{ + UINT8 SkuType; + SkuType =3D PcdGet8 (PcdSkuType); + + if (SkuType=3D=3DAdlPSkuType) { + DEBUG ((DEBUG_INFO, "SKU_ID: 0x%x\n", LibPcdGetSku())); + return RegisterBoardPostMemInit (&mAdlPBoardInitFunc); + } + return EFI_SUCCESS; +} diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiMultiBoardInitPostMemLib.inf b/Platform/Intel/AlderlakeOpe= nBoardPkg/AlderlakePRvp/Library/BoardInitLib/Pei/PeiMultiBoardInitPostMemLi= b.inf new file mode 100644 index 0000000000..a4dbc9294d --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiMultiBoardInitPostMemLib.inf @@ -0,0 +1,53 @@ +## @file +# Component information file for Alderlake Multi-Board Initialization in P= EI post memory phase. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +### + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D PeiAdlPMultiBoardInitLib + FILE_GUID =3D C7D39F17-E5BA-41D9-8DFE-FF9017499280 + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D NULL + CONSTRUCTOR =3D PeiAdlPMultiBoardInitLibConstructor + +[LibraryClasses] + BaseLib + DebugLib + BaseMemoryLib + MemoryAllocationLib + PcdLib + MultiBoardInitSupportLib + PciSegmentLib + GpioLib + HobLib + BoardConfigLib + +[Packages] + MinPlatformPkg/MinPlatformPkg.dec + AlderlakeOpenBoardPkg/OpenBoardPkg.dec + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + AlderlakeSiliconPkg/SiPkg.dec + SecurityPkg/SecurityPkg.dec + +[Sources] + PeiInitPostMemLib.c + PeiMultiBoardInitPostMemLib.c + +[Pcd] + # Board GPIO Table + gBoardModuleTokenSpaceGuid.PcdBoardGpioTable + + # TPM interrupt + gMinPlatformPkgTokenSpaceGuid.PcdTpm2Enable ## CONSUMES + #Misc Config + gBoardModuleTokenSpaceGuid.PcdBoardBomId + + gBoardModuleTokenSpaceGuid.PcdBoardId + gBoardModuleTokenSpaceGuid.PcdSkuType + gBoardModuleTokenSpaceGuid.VpdPcdBoardGpioTable diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiMultiBoardInitPreMemLib.c b/Platform/Intel/AlderlakeOpenBo= ardPkg/AlderlakePRvp/Library/BoardInitLib/Pei/PeiMultiBoardInitPreMemLib.c new file mode 100644 index 0000000000..fa45e86ac2 --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiMultiBoardInitPreMemLib.c @@ -0,0 +1,89 @@ +/** @file + PEI Multi-Board Initialization in Pre-Memory PEI Library + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +EFI_STATUS +EFIAPI +AdlPBoardDetect ( + VOID + ); + +EFI_STATUS +EFIAPI +AdlPMultiBoardDetect ( + VOID + ); + +EFI_BOOT_MODE +EFIAPI +AdlPBoardBootModeDetect ( + VOID + ); + +EFI_STATUS +EFIAPI +AdlPBoardDebugInit ( + VOID + ); + +EFI_STATUS +EFIAPI +AdlPBoardInitBeforeMemoryInit ( + VOID + ); + +BOARD_DETECT_FUNC mAdlPBoardDetectFunc =3D { + AdlPMultiBoardDetect +}; + +BOARD_PRE_MEM_INIT_FUNC mAdlPBoardPreMemInitFunc =3D { + AdlPBoardDebugInit, + AdlPBoardBootModeDetect, + AdlPBoardInitBeforeMemoryInit, + NULL, // BoardInitAfterMemoryInit + NULL, // BoardInitBeforeTempRamExit + NULL, // BoardInitAfterTempRamExit +}; + +EFI_STATUS +EFIAPI +AdlPMultiBoardDetect ( + VOID + ) +{ + UINT8 SkuType; + DEBUG ((DEBUG_INFO, " In AdlPMultiBoardDetect \n")); + + AdlPBoardDetect (); + + SkuType =3D PcdGet8 (PcdSkuType); + if (SkuType=3D=3DAdlPSkuType) { + RegisterBoardPreMemInit (&mAdlPBoardPreMemInitFunc); + } else { + DEBUG ((DEBUG_WARN,"Not a Valid Alderlake P Board\n")); + } + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +PeiAdlPMultiBoardInitPreMemLibConstructor ( + VOID + ) +{ + return RegisterBoardDetect (&mAdlPBoardDetectFunc); } diff --git a/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/Boa= rdInitLib/Pei/PeiMultiBoardInitPreMemLib.inf b/Platform/Intel/AlderlakeOpen= BoardPkg/AlderlakePRvp/Library/BoardInitLib/Pei/PeiMultiBoardInitPreMemLib.= inf new file mode 100644 index 0000000000..ea2b64050d --- /dev/null +++ b/Platform/Intel/AlderlakeOpenBoardPkg/AlderlakePRvp/Library/BoardIn +++ itLib/Pei/PeiMultiBoardInitPreMemLib.inf @@ -0,0 +1,149 @@ +## @file +# Component information file for PEI Alderlake P Board Init Pre-Mem=20 +Library # +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +### + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D PeiAdlPMultiBoardInitPreMemLib + FILE_GUID =3D EA05BD43-136F-45EE-BBBA-27D75817574F + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D NULL + CONSTRUCTOR =3D PeiAdlPMultiBoardInitPreMemLibConstru= ctor + +[LibraryClasses] + BaseLib + DebugLib + BaseMemoryLib + MemoryAllocationLib + PcdLib + MultiBoardInitSupportLib + PeiLib + BoardConfigLib + PchInfoLib + +[Packages] + MinPlatformPkg/MinPlatformPkg.dec + AlderlakeOpenBoardPkg/OpenBoardPkg.dec + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + IntelFsp2Pkg/IntelFsp2Pkg.dec + AlderlakeSiliconPkg/SiPkg.dec + BoardModulePkg/BoardModulePkg.dec + +[Sources] + PeiInitPreMemLib.c + PeiMultiBoardInitPreMemLib.c + PeiDetect.c + BoardSaInitPreMemLib.c + BoardPchInitPreMemLib.c + +[Pcd] + # SA Misc Config + gBoardModuleTokenSpaceGuid.PcdMrcSpdData + gBoardModuleTokenSpaceGuid.PcdMrcSpdDataSize + + # SPD Address Table + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable0 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable1 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable2 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable3 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable4 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable5 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable6 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable7 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable8 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable9 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable10 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable11 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable12 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable13 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable14 + gBoardModuleTokenSpaceGuid.PcdMrcSpdAddressTable15 + + #MRC Config + gBoardModuleTokenSpaceGuid.PcdMrcDqByteMap + gBoardModuleTokenSpaceGuid.PcdMrcDqByteMapSize + gBoardModuleTokenSpaceGuid.PcdMrcRcompResistor + gBoardModuleTokenSpaceGuid.PcdMrcRcompTarget + gBoardModuleTokenSpaceGuid.PcdMrcDqPinsInterleavedControl + gBoardModuleTokenSpaceGuid.PcdMrcDqPinsInterleaved + gBoardModuleTokenSpaceGuid.PcdMrcDqsMapCpu2DramSize + gBoardModuleTokenSpaceGuid.PcdMrcDqMapCpu2DramSize + gBoardModuleTokenSpaceGuid.PcdMrcDqsMapCpu2Dram + gBoardModuleTokenSpaceGuid.PcdMrcDqMapCpu2Dram + gBoardModuleTokenSpaceGuid.PcdMrcLp5CccConfig + gBoardModuleTokenSpaceGuid.PcdSaMiscUserBd + + #Board Information + gBoardModuleTokenSpaceGuid.PcdSpdPresent + gBoardModuleTokenSpaceGuid.PcdBoardRev + gBoardModuleTokenSpaceGuid.PcdBoardId + gBoardModuleTokenSpaceGuid.PcdSkuType + gBoardModuleTokenSpaceGuid.PcdBoardBomId + gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId + gBoardModuleTokenSpaceGuid.VpdPcdBoardGpioTablePreMem + gBoardModuleTokenSpaceGuid.VpdPcdPcieClkUsageMap + gBoardModuleTokenSpaceGuid.VpdPcdMrcSpdData + gBoardModuleTokenSpaceGuid.VpdPcdMrcDqsMapCpu2Dram + gBoardModuleTokenSpaceGuid.VpdPcdMrcDqMapCpu2Dram + + gIntelFsp2PkgTokenSpaceGuid.PcdTemporaryRamBase ## CONSUMES + gIntelFsp2PkgTokenSpaceGuid.PcdTemporaryRamSize ## CONSUMES + gIntelFsp2PkgTokenSpaceGuid.PcdFspTemporaryRamSize ## CONSUMES + gIntelFsp2PkgTokenSpaceGuid.PcdFspReservedBufferSize ## CONSUMES + + gBoardModuleTokenSpaceGuid.PcdStackBase + gBoardModuleTokenSpaceGuid.PcdStackSize + + #SA GPIO Config + gBoardModuleTokenSpaceGuid.PcdRootPortIndex + + # PCIe Clock Info + gBoardModuleTokenSpaceGuid.PcdPcieClock0 + gBoardModuleTokenSpaceGuid.PcdPcieClock1 + gBoardModuleTokenSpaceGuid.PcdPcieClock2 + gBoardModuleTokenSpaceGuid.PcdPcieClock3 + gBoardModuleTokenSpaceGuid.PcdPcieClock4 + gBoardModuleTokenSpaceGuid.PcdPcieClock5 + gBoardModuleTokenSpaceGuid.PcdPcieClock6 + gBoardModuleTokenSpaceGuid.PcdPcieClock7 + gBoardModuleTokenSpaceGuid.PcdPcieClock8 + gBoardModuleTokenSpaceGuid.PcdPcieClock9 + gBoardModuleTokenSpaceGuid.PcdPcieClock10 + gBoardModuleTokenSpaceGuid.PcdPcieClock11 + gBoardModuleTokenSpaceGuid.PcdPcieClock12 + gBoardModuleTokenSpaceGuid.PcdPcieClock13 + gBoardModuleTokenSpaceGuid.PcdPcieClock14 + gBoardModuleTokenSpaceGuid.PcdPcieClock15 + + + # GPIO Group Tier + gBoardModuleTokenSpaceGuid.PcdGpioGroupToGpeDw0 + gBoardModuleTokenSpaceGuid.PcdGpioGroupToGpeDw1 + gBoardModuleTokenSpaceGuid.PcdGpioGroupToGpeDw2 + + + + # WWAN Full Card Power Off and reset pins =20 + gBoardModuleTokenSpaceGuid.PcdDisableVpdGpioTable + gBoardModuleTokenSpaceGuid.PcdBoardGpioTablePreMem ## = PRODUCES + gBoardModuleTokenSpaceGuid.PcdBoardGpioTableEarlyPreMem ## = PRODUCES + + + # Display DDI + gBoardModuleTokenSpaceGuid.PcdSaDisplayConfigTable ## PRODUCES + gBoardModuleTokenSpaceGuid.PcdSaDisplayConfigTableSize ## PRODUCES + gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress64 ## CONSUMES + +[Guids] + gFspNonVolatileStorageHobGuid + gEfiMemoryOverwriteControlDataGuid + gVpdFfsGuid + +[Ppis] + gEfiPeiReadOnlyVariable2PpiGuid ## CONSUMES -- 2.36.1.windows.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 (#107581): https://edk2.groups.io/g/devel/message/107581 Mute This Topic: https://groups.io/mt/100494311/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-