From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from NAM12-MW2-obe.outbound.protection.outlook.com (NAM12-MW2-obe.outbound.protection.outlook.com [40.107.244.125])
 by mx.groups.io with SMTP id smtpd.web08.9766.1637167810623656758
 for <devel@edk2.groups.io>;
 Wed, 17 Nov 2021 08:50:10 -0800
Authentication-Results: mx.groups.io;
 dkim=fail reason="body hash did not verify" header.i=@os.amperecomputing.com header.s=selector2 header.b=dF9bNfT6;
 spf=pass (domain: os.amperecomputing.com, ip: 40.107.244.125, mailfrom: nhi@os.amperecomputing.com)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=IiN2/F5OqkWCW6GJDtEenLB4ddssmAeRM3HlEZUMa5ATu8/4QQ7L5ZDgDrOxnT+FefGyU8oifTmCS9uGBeBKa9PcMORIdZOX0Ss32OUalSwbI6z77gUWxx1cyYqvAtGxluXDauV69KtKTkmA8Y/Wd1vBKYGZ7MyqzKk5Wf3A7mY1yqkLFiiUbQGgQIbs2QKYMehrcmbO1DZHTdBdYo6RVYhz5Zl4bVfS6o3kFsTV1k+KadslWyZXefDe4zP75opW9MGVkMqTkQui3YSo+BRM1sz/twv/Aj9NGkcywHZGUsejb3oVvlDfDad69nHR+H7N7oXXqWj93nBgaNHZljIJRw==
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=yaoBNqO5uFJvoA2j4TEtTLqTX2Y7hQSxbcmDB9fMelQ=;
 b=CbJwe/HaLcZljhqh0SPem4uvdzzRYq/oOq9Lzj1LK5HHODbsGfmrWNRBxegGM7dy34Z8IEtR1wbgucR2+ZcYxGfdW/RV2LJY+PFBQB40xfP0WMa3VZ3wMYDXpARaekKa9VKfQZThBtyuunrWj5Ra6ZhqmVWxcuSmvqeCVmu+dNO4gUwJxMPiQ2AuU8Lnpapz0WaAbRnK5eu3PTYFNhDs5CnoIwKuDJvhX1L47SqlhPtVEvbWWlTALkJP6HpevYBfBbwm2gGDACWZ6i2fT4aomm2CWlYfIJoD/d4GSG++ufkBc8aRoYobBKi/Q3OUUHM8wBr4ua/MedkG+Ox+KhcoVg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
 header.from=os.amperecomputing.com; dkim=pass
 header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=os.amperecomputing.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yaoBNqO5uFJvoA2j4TEtTLqTX2Y7hQSxbcmDB9fMelQ=;
 b=dF9bNfT6obz+CTnNv2E/QGE6ExyZrsgkbVTuepqkCSEBD08Anc0TdZbFCFbzy+NRZoQvRj6llnSAW9l8pnsJDG89G1MO3xF/wON1DGormhUSIcgPfYwutHTM5GyfYgLG5kxNrg69v0y/rJttHrtIMHGtDHic74oa4tNJ2MJboUk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from PH0PR01MB7287.prod.exchangelabs.com (2603:10b6:510:10a::21) by
 PH0PR01MB6454.prod.exchangelabs.com (2603:10b6:510:1b::9) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.4713.20; Wed, 17 Nov 2021 16:50:07 +0000
Received: from PH0PR01MB7287.prod.exchangelabs.com
 ([fe80::254c:9533:7f35:aee]) by PH0PR01MB7287.prod.exchangelabs.com
 ([fe80::254c:9533:7f35:aee%4]) with mapi id 15.20.4713.019; Wed, 17 Nov 2021
 16:50:07 +0000
From: "Nhi Pham" <nhi@os.amperecomputing.com>
To: devel@edk2.groups.io
CC: patches@amperecomputing.com,
	nhi@os.amperecomputing.com,
	vunguyen@os.amperecomputing.com,
	Thang Nguyen <thang@os.amperecomputing.com>,
	Chuong Tran <chuong@os.amperecomputing.com>,
	Phong Vo <phong@os.amperecomputing.com>,
	Leif Lindholm <leif@nuviainc.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Nate DeSimone <nathaniel.l.desimone@intel.com>
Subject: [edk2-platforms][PATCH v5 10/30] AmpereAltraPkg: Add Root Complex HOB data structures
Date: Wed, 17 Nov 2021 23:47:07 +0700
Message-ID: <20211117164727.10922-11-nhi@os.amperecomputing.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20211117164727.10922-1-nhi@os.amperecomputing.com>
References: <20211117164727.10922-1-nhi@os.amperecomputing.com>
X-ClientProxiedBy: HKAPR04CA0001.apcprd04.prod.outlook.com
 (2603:1096:203:d0::11) To PH0PR01MB7287.prod.exchangelabs.com
 (2603:10b6:510:10a::21)
Return-Path: nhi@os.amperecomputing.com
MIME-Version: 1.0
Received: from sw004.amperecomputing.com (118.69.219.201) by HKAPR04CA0001.apcprd04.prod.outlook.com (2603:1096:203:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.21 via Frontend Transport; Wed, 17 Nov 2021 16:50:04 +0000
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 14b6d21f-a62f-4161-09f1-08d9a9ea4f73
X-MS-TrafficTypeDiagnostic: PH0PR01MB6454:
X-Microsoft-Antispam-PRVS: 
	<PH0PR01MB6454D2D096E60C0EE1B00D6A969A9@PH0PR01MB6454.prod.exchangelabs.com>
X-MS-Oob-TLC-OOBClassifiers: OLM:8882;
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: 
	Sump/X1VOoQP2/C9AmXd1W+2vO+CryyGNFDUcLl0d0YEmRSWLPSxraHTkuCa/kAuqQatJg5S3gZCsNXuVdd49TYmKZN5ypfxC/2bhX0GXIXZHaUgwh8Pj0bzJD3C4vMYu/l0Lq9/P+2vJuuwjDmKA8eoHBWz6SfJFivDfV1aXF47aJH/+kB1HFshAEbLPbPxVVS1d2Zwc4CWSR2ga0+3TGfgx1mEuNbiCwoxQZZc8NXYqKS9IcXuNZX7qedY3psAA/PYD5sqXMBcWIvRUwo/us0/bvREmDeyU0WSbHVCp20Q/o+lfjXCrQlBbBvkTHKb0XjAaZ318+o9wUf05Sy2ajIhEHnwR0F2XDgXO/d1R0enUrEkCiyilvMWJy5u0x/9fxiS9IUKgUt/4AwQAXivVmkgndFQBG8hjZfIrmsYi+fr68QyrWolH+txk9GvyEzeu19iTFvG8OOlfUlJeBQWmOsRytQt80HgoHA4R4ZXQCPTdHq4mbHEZAqHSiKDwvgtxh/bSEX3BYQltD2nnRuaFGnKhAK5hsF05MR110KU/4KM94JN8d6YXyWkK2DNsZ76Wz7zidi54u/AhZEDg14/RdYG0kYBHBRJX5YgGJBbwH4WclI+Cr2us/dsiDyZQxlWxzy2L5SKldFByIML5fNiwy1rvvOAUQ1BB3p/F1vpB3So0mNetulb1sAFF5U3srw1LsyqHWD4IoMSuWc76mt13A==
X-Forefront-Antispam-Report: 
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR01MB7287.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(8936002)(66476007)(52116002)(186003)(86362001)(2906002)(1076003)(83380400001)(54906003)(4326008)(66556008)(26005)(38100700002)(38350700002)(6506007)(6916009)(6486002)(2616005)(956004)(5660300002)(6512007)(316002)(8676002)(66946007)(508600001);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: 
	=?us-ascii?Q?T6oK+HmPwZNjpK8E2YJXJ6gTce+OzieoY0NMO8hRqoemEuiUOXTL9/wlqb0A?=
 =?us-ascii?Q?sZfM+IA9Obrn5GkdoaMDcjHeM3a3nfO8v4ScSIvio7EZcWNVxYIomJ4xtjYR?=
 =?us-ascii?Q?LHUw48M5x/upmY2+BMyp2iIkWpimr/c82682MxM2EQ1rQ12lq0T2PgarVS7b?=
 =?us-ascii?Q?Aw32XP2Pgm8oI+hNdCLhJnRNYLjk1EWbXxfJVEeuyOZKupDP4ChUSsJjy+uG?=
 =?us-ascii?Q?KoMKVnL2kWmum4EYK+ot/0l/V+51fkG3TomWIqwhJCvUq60cNWoRiL1iVPWQ?=
 =?us-ascii?Q?BkjKaGBJ5OoUGiqTidDSGjeawIROF8fk5fEpxgvm4Y84TkDw5BHiDluToGat?=
 =?us-ascii?Q?Id5iq1NxwmTyX84DnLHnB/V09XWovS7Mg0nG8Reo1Ez89LVRAqI6hxzfJwCy?=
 =?us-ascii?Q?/kbwBxwQ3MOtd+KazhBGyqKwYXI8+D9j0WPPlawkmRxbODHAyH6ZxnB+WWY6?=
 =?us-ascii?Q?NCcpv73KhpUNn0fdu/yBcMs7aNmEtmUNMxzPFfSbbrcdi5/vfH2tDwNbveWH?=
 =?us-ascii?Q?RL7BZRUeSGo4fqpLKZllIGMpx1M0TenjSnjUilhcmj8wi7FqyXazTy15zzQa?=
 =?us-ascii?Q?Q6Qw0aSU+onm1PXz2QAP7MjCoqerJblGwXlmVBkSUq0qya3vY/CUYXTXzi8s?=
 =?us-ascii?Q?gkH5glquoPoHQUHUsWtevwmvX/smDInzf4xCURA8o3fr9vCz0F3dBh5EiGnN?=
 =?us-ascii?Q?mnozMGtqUmO3jetmCZ/QgHmSr5aRUJqnTmFq7blCH9d1UeLehbEuOejj2zNm?=
 =?us-ascii?Q?Ht/HWeh9vAq1oG6CkJkgCgQz7OwCsrTTg0/teWOd4qBvwKeU9Z9TLMMM9jqs?=
 =?us-ascii?Q?fBqIUe/xP47N0hhxiCfwqFSj/OsxD8ECxlXuJ4hD2paODhCYn/Nvpg2MA+uu?=
 =?us-ascii?Q?8yLoJnwpE6vNj/w+vAB6b9/Yo8/Vqn+pLMSCOTA19kjSBaPnLNxIH5DJ3Y9M?=
 =?us-ascii?Q?1+z4i8dr4spewh1D43m+BP4D0jBBWHNdpzlDyHj4Kff1vULZcbdntPoIZaZM?=
 =?us-ascii?Q?FwvAsn8ZUbTq/m8kCTB3I/HBW6KRfKrYg2hlURgHAY3+dQtopHG6t8K/Up42?=
 =?us-ascii?Q?QgRG5s75OXmX3VwPSOSVHFCUJJFOJFHSWZhw4NXXV9YsoX6jXvc4JVBR4QUX?=
 =?us-ascii?Q?rOTIZ7le4y0xHpMyP1oQoQE03uwvyzkXPmS1hNCqVI4E6H8fFdbeOMHq8Gxl?=
 =?us-ascii?Q?z2ZEobdcHQDDg0vPCFsoJeCd08YYJj+3ixQgqSbXcwp1fDRb2ON2+xUb8v0o?=
 =?us-ascii?Q?ON1pSjKgTj9pOwzv7V/P+lF2zvJPtlE8GRw32rnzbVEyDe0x1v2Oqn8Tr0YV?=
 =?us-ascii?Q?ngx2ipVzL26l0QeyBwhCX+6ZAzzWf2renHBMy3JmmfbTy2McM8k6k9tE4Iog?=
 =?us-ascii?Q?Pl0R/kkgQCHDBQk3SRPgWNUKGItscRvHHMYvzjzbotM7cuLpCLMCMggQ/ezG?=
 =?us-ascii?Q?uLa0utdzJ3oo2dOCxjiY5wQZ7Cp9DD3iX32Vii/DW66ysnrNTr4u0GycTJne?=
 =?us-ascii?Q?igoNBPr3Me4BzwB16eRrRk7QbODAJoI1VaC1lb4agN5e/70JrRpVTd1+DDnE?=
 =?us-ascii?Q?sjGnmCgjqZRexFe/cNx1nhr0yYKGtyXe6vl6iELcPeTF7zpahit0mabbk+En?=
 =?us-ascii?Q?/ZpApAdmTJLsBA7pMDChhxb3n4VCbPG8DzOnX5Tq/+z7ohAPwp5ReN0IIsQ1?=
 =?us-ascii?Q?j/UMMWwxqmDThdQRu8fXMn9qztk=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 14b6d21f-a62f-4161-09f1-08d9a9ea4f73
X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7287.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2021 16:50:07.2455
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: LBLc7zhI4zaq2wUh7oHEibui9FptMf9ySjIp1jFr0icicryS1QeAh50lQuXhefWRgPXyrencyVoNn82oByynmgIMfFiUOWyRyKhtIi++LqQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR01MB6454
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain

From: Vu Nguyen <vunguyen@os.amperecomputing.com>

Provide common data structures and macros which will be consumed by
various PCIe modules.

Cc: Thang Nguyen <thang@os.amperecomputing.com>
Cc: Chuong Tran <chuong@os.amperecomputing.com>
Cc: Phong Vo <phong@os.amperecomputing.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>

Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
---
 Silicon/Ampere/AmpereAltraPkg/AmpereAltraPkg.dec                |   3 +
 Silicon/Ampere/AmpereAltraPkg/Include/Guid/RootComplexInfoHob.h | 140 ++++=
++++++++++++++++
 2 files changed, 143 insertions(+)

diff --git a/Silicon/Ampere/AmpereAltraPkg/AmpereAltraPkg.dec b/Silicon/Amp=
ere/AmpereAltraPkg/AmpereAltraPkg.dec
index c1226c296dad..e19925c68a0e 100644
--- a/Silicon/Ampere/AmpereAltraPkg/AmpereAltraPkg.dec
+++ b/Silicon/Ampere/AmpereAltraPkg/AmpereAltraPkg.dec
@@ -52,3 +52,6 @@ [Guids]
=20
   ## Include/Guid/PlatformInfoHob.h
   gPlatformInfoHobGuid         =3D { 0x7f73e372, 0x7183, 0x4022, { 0xb3, 0=
x76, 0x78, 0x30, 0x32, 0x6d, 0x79, 0xb4 } }
+
+  ## Include/Guid/RootComplexInfoHob.h
+  gRootComplexInfoHobGuid      =3D { 0x568a258a, 0xcaa1, 0x47e9, { 0xbb, 0=
x89, 0x65, 0xa3, 0x73, 0x9b, 0x58, 0x75 } }
diff --git a/Silicon/Ampere/AmpereAltraPkg/Include/Guid/RootComplexInfoHob.=
h b/Silicon/Ampere/AmpereAltraPkg/Include/Guid/RootComplexInfoHob.h
new file mode 100644
index 000000000000..24599b781646
--- /dev/null
+++ b/Silicon/Ampere/AmpereAltraPkg/Include/Guid/RootComplexInfoHob.h
@@ -0,0 +1,140 @@
+/** @file
+
+  Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef ROOT_COMPLEX_INFO_HOB_H_
+#define ROOT_COMPLEX_INFO_HOB_H_
+
+#define ROOT_COMPLEX_INFO_HOB_GUID \
+  { 0x568a258a, 0xcaa1, 0x47e9, { 0xbb, 0x89, 0x65, 0xa3, 0x73, 0x9b, 0x58=
, 0x75 } }
+
+extern GUID gRootComplexInfoHobGuid;
+
+#define PRESET_INVALID     0xFF
+
+//
+// PCIe link width
+//
+#define LINK_WIDTH_NONE    0x00
+#define LINK_WIDTH_X1      0x01
+#define LINK_WIDTH_X2      0x02
+#define LINK_WIDTH_X4      0x04
+#define LINK_WIDTH_X8      0x08
+#define LINK_WIDTH_X16     0x10
+
+//
+// PCIe link speed
+//
+#define LINK_SPEED_NONE    0x00
+#define LINK_SPEED_GEN1    0x01
+#define LINK_SPEED_GEN2    0x02
+#define LINK_SPEED_GEN3    0x04
+#define LINK_SPEED_GEN4    0x08
+
+typedef enum {
+  DevMapMode1 =3D 0,
+  DevMapMode2,
+  DevMapMode3,
+  DevMapMode4,
+  MaxDevMapMode =3D DevMapMode4
+} DEV_MAP_MODE;
+
+//
+// PCIe controller index
+//
+typedef enum {
+  PcieController0 =3D 0,
+  PcieController1,
+  PcieController2,
+  PcieController3,
+  PcieController4,
+  MaxPcieControllerOfRootComplexA =3D PcieController4,
+  PcieController5,
+  PcieController6,
+  PcieController7,
+  MaxPcieController,
+  MaxPcieControllerOfRootComplexB =3D MaxPcieController
+} AC01_PCIE_CONTROLLER_INDEX;
+
+//
+// Root Complex type
+//
+typedef enum {
+  RootComplexTypeA,
+  RootComplexTypeB,
+  MaxRootComplexType =3D RootComplexTypeB
+} AC01_ROOT_COMPLEX_TYPE;
+
+//
+// Root Complex index
+//
+typedef enum {
+  RootComplexA0 =3D 0,
+  RootComplexA1,
+  RootComplexA2,
+  RootComplexA3,
+  MaxRootComplexA,
+  RootComplexB0 =3D MaxRootComplexA,
+  RootComplexB1,
+  RootComplexB2,
+  RootComplexB3,
+  MaxRootComplex,
+  MaxRootComplexB =3D MaxRootComplex
+} AC01_ROOT_COMPLEX_INDEX;
+
+#pragma pack(1)
+
+//
+// Data structure to store the PCIe controller information
+//
+typedef struct {
+  PHYSICAL_ADDRESS  CsrBase;               // Base address of CSR block
+  PHYSICAL_ADDRESS  SnpsRamBase;           // Base address of Synopsys SRA=
M
+  UINT8             MaxGen;                // Max speed Gen-1/-2/-3/-4
+  UINT8             CurrentGen;            // Current speed Gen-1/-2/-3/-4
+  UINT8             MaxWidth;              // Max lanes x2/x4/x8/x16
+  UINT8             CurWidth;              // Current lanes x2/x4/x8/x16
+  UINT8             ID;                    // ID of the controller within =
Root Complex
+  UINT8             DevNum;                // Device number as part of Bus=
:Dev:Func
+  BOOLEAN           Active;                // Active? Used in bi-furcation=
 mode
+  BOOLEAN           LinkUp;                // PHY and PCIE linkup
+  BOOLEAN           HotPlug;               // Hotplug support
+} AC01_PCIE_CONTROLLER;
+
+//
+// Data structure to store the Root Complex information
+//
+typedef struct {
+  PHYSICAL_ADDRESS       CsrBase;
+  PHYSICAL_ADDRESS       TcuBase;
+  PHYSICAL_ADDRESS       HostBridgeBase;
+  PHYSICAL_ADDRESS       SerdesBase;
+  PHYSICAL_ADDRESS       MmcfgBase;
+  PHYSICAL_ADDRESS       MmioBase;
+  PHYSICAL_ADDRESS       MmioSize;
+  PHYSICAL_ADDRESS       Mmio32Base;
+  PHYSICAL_ADDRESS       Mmio32Size;
+  AC01_PCIE_CONTROLLER   Pcie[MaxPcieController];
+  UINT8                  MaxPcieController;
+  AC01_ROOT_COMPLEX_TYPE Type;
+  UINT8                  ID;
+  DEV_MAP_MODE           DevMapHigh:3;           // Copy of High Devmap pr=
ogrammed to Host bridge
+  DEV_MAP_MODE           DevMapLow:3;            // Copy of Low Devmap pro=
grammed to Host bridge
+  DEV_MAP_MODE           DefaultDevMapHigh:3;    // Default of High devmap=
 based on board settings
+  DEV_MAP_MODE           DefaultDevMapLow:3;     // Default of Low devmap =
based on board settings
+  UINT8                  Socket;
+  BOOLEAN                Active;
+  BOOLEAN                DefaultActive;
+  UINT16                 Logical;
+  UINT32                 Flags;
+  UINT8                  PresetGen3[MaxPcieController];
+  UINT8                  PresetGen4[MaxPcieController];
+} AC01_ROOT_COMPLEX;
+
+#pragma pack()
+
+#endif /* ROOT_COMPLEX_INFO_HOB_H_ */
--=20
2.17.1