From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.52]) by mx.groups.io with SMTP id smtpd.web09.6205.1636122136713499359 for ; Fri, 05 Nov 2021 07:22:17 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=5q4CiW6z; spf=pass (domain: arm.com, ip: 40.107.7.52, mailfrom: khasim.mohammed@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xKJmDNaCTtUVn8QP06+mH7zHz5XhA/gJFWAgA7ekUNg=; b=5q4CiW6zBlK6Jv1+VjDbqK2IFAzCVlsHIj+VyjrQhOboMxloDfGtrd+Bu1VlsWvYgwknRrnxlrZsB9g5k3el3/2tJDqpvl+5ISkFsDs+t3PPN9yoEftt6pxQZBNhACi36CHI8v4ctLTYsS1iCs5MfTFgLjG22aRT7a7dyzeACps= Received: from DU2PR04CA0245.eurprd04.prod.outlook.com (2603:10a6:10:28e::10) by AM0PR08MB3537.eurprd08.prod.outlook.com (2603:10a6:208:da::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Fri, 5 Nov 2021 14:22:09 +0000 Received: from DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28e:cafe::fa) by DU2PR04CA0245.outlook.office365.com (2603:10a6:10:28e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.10 via Frontend Transport; Fri, 5 Nov 2021 14:22:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT017.mail.protection.outlook.com (10.152.20.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Fri, 5 Nov 2021 14:22:09 +0000 Received: ("Tessian outbound d49ee2bec50d:v108"); Fri, 05 Nov 2021 14:22:09 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4a1b54dd7e028ac3 X-CR-MTA-TID: 64aa7808 Received: from 000a46cf7826.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E51C52EA-E9DF-41CA-B853-E386373C82F5.1; Fri, 05 Nov 2021 14:21:58 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 000a46cf7826.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 05 Nov 2021 14:21:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZvwOMuMzXCAGkgwO0g2X3Yu0s6LSLJ7lkl3MUCdO7XQ0qz1ofm00cxI6OJ0vezFmtclGXxguJFVWgvWCbaTk9bl0TL4Sj3rO4ZBlAt1DWHlPAMshJICsfMThnkxtsi8+cvojvLUCNdksZGjPFrsNA7r6CagvdlOT9uQ6G4Qr2SE6NT3XysEU3itYy1t+kfI+3xR7FRA1byaKSytUmIzPnapEh5YFhYeogDQQVG+QObDRkPZYvAUchuhjYFAW0/BieHdZBdI1/xRk7auCy4ABbLthbgF/SNdsX6d3dBKuwjz+2tPG6sCUybyjWeG5ogPHb03LDruvPTigoucvTNoDKA== 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=xKJmDNaCTtUVn8QP06+mH7zHz5XhA/gJFWAgA7ekUNg=; b=FfkFJsXHZin3WgY3BOVNaQ8jpCh1FsR7OwVJMa+TRZnb4BtYXhdYUBHU8dVbjv5dVY35vwzibIwYjp/F05LNAgkKT/tUy4blUshiw7Zitge2jZEPMgsZ9H4VaCSl88qBxaFouzeDxYLyjUT8AYjsq/lr3UlIKNfE6YnX2PQ6quSIZMwD33hF9eTVnwrF13AoJja1YO4MghWA2YpA9g1DAehVJ0cE6FJr/0vjSEdxHDfP8P8z06LFcDl6nYiS7uBojieROATRFsVHmLvdQin9dDaBx9W1ZyhbMJpT83P1aVgMLUbvUtwiQP27dHQB4X3qTnYF7bEM9heqe/bDGDVn0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xKJmDNaCTtUVn8QP06+mH7zHz5XhA/gJFWAgA7ekUNg=; b=5q4CiW6zBlK6Jv1+VjDbqK2IFAzCVlsHIj+VyjrQhOboMxloDfGtrd+Bu1VlsWvYgwknRrnxlrZsB9g5k3el3/2tJDqpvl+5ISkFsDs+t3PPN9yoEftt6pxQZBNhACi36CHI8v4ctLTYsS1iCs5MfTFgLjG22aRT7a7dyzeACps= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB5902.eurprd08.prod.outlook.com (2603:10a6:102:e0::10) by PA4PR08MB6094.eurprd08.prod.outlook.com (2603:10a6:102:f0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.19; Fri, 5 Nov 2021 14:21:56 +0000 Received: from PA4PR08MB5902.eurprd08.prod.outlook.com ([fe80::d02e:f1e5:1354:622e]) by PA4PR08MB5902.eurprd08.prod.outlook.com ([fe80::d02e:f1e5:1354:622e%9]) with mapi id 15.20.4669.011; Fri, 5 Nov 2021 14:21:56 +0000 From: "Khasim Mohammed" To: devel@edk2.groups.io Cc: nd@arm.com, Khasim Syed Mohammed , Sami Mujawar , Chandni Cherukuri , anukou01 , Manoj Kumar Subject: [PATCH v5 5/7] Platform/ARM/N1Sdp: Introduce platform specific asl tables Date: Fri, 5 Nov 2021 19:51:25 +0530 Message-Id: <20211105142127.21616-5-khasim.mohammed@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211105142127.21616-1-khasim.mohammed@arm.com> References: <20211105142127.21616-1-khasim.mohammed@arm.com> X-ClientProxiedBy: BMXPR01CA0045.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:c::31) To PA4PR08MB5902.eurprd08.prod.outlook.com (2603:10a6:102:e0::10) MIME-Version: 1.0 Received: from e116623.arm.com (217.140.105.53) by BMXPR01CA0045.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.10 via Frontend Transport; Fri, 5 Nov 2021 14:21:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d6cb0913-b117-464d-58fc-08d9a067a745 X-MS-TrafficTypeDiagnostic: PA4PR08MB6094:|AM0PR08MB3537: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:3044;OLM:3044; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: WK0XGDQP4n7/9T16x49gjWo+O+3WvJhb3FoB18hNCPnHsQyBEUEky6CSrzk0gux6XLtbidpUrs+W9B8Z0T87sbxbJnAZyasXomOx7KCJsx3g1cBKj7tHhURJpVcAeeRHyJZzQedVmkTOq6bcYnZZz9w79h7JbabL3ECvqLRFE3jKq2yStw4ieFIkjQKC50af2tKRR3oLSa7+CqFxfUec3zV+gIhM0YIXliUhkkvxoY4z6H8Fq8lvDpv7jJ9Nix7y47TLDqvIYOcbtZIys5IzO82Lg2/nM3HtYetHRutDtHaNpTWza1RdA4QwUkBNfwVusN95+3noWuDEW+88q2q91BDHNl1FzNENAWCSg0GUegnD0STfyAbsno7EAU6ldtJf61oH6yKs6+FXJABhzyJlzNfaqfzPxmL2SrCOXh6XxqbTCoBZZD/2hxwWeb6Km9zfmcFgL/OMBbBlpI6L5PZWP48vaoVTCDmO4nmi9WEkO7SsEatCXMxnEJuJ9pbqCrpZzU9tPmnHD9cYllDlJ7qIUEVM3CcjY5Y94nWigWcM8KoJwresXm/cXNZk4mhcKxKre4RiZpNy+aK2M+WouMk2BruS686yrmDtkK4XC60LUE16orAq/02sFUP6DsyN6BfEM2pvPu6RrfZ7Mixd8u+BHnSMHg5pmhqrDbXtxaqtKZD1m7o1d1QIWFy260gNHpIIgHBc4GYE3XFTVOcFFB0xSw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR08MB5902.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(54906003)(6486002)(38350700002)(6666004)(52116002)(5660300002)(7696005)(316002)(6916009)(26005)(8936002)(2906002)(66476007)(1076003)(38100700002)(8676002)(66556008)(2616005)(83380400001)(956004)(30864003)(508600001)(66946007)(86362001)(4326008)(186003)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6094 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Khasim.Mohammed@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 4b127b5f-5e9a-4751-d292-08d9a0679f3a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ad6NKqixBTAnYiK3Y3fa3J6MOK2t+SDw5ZBZ3ywE1nlOyGUdLr1+eJWn8LD29vlV06NF0AO3t/FVaJwYYonzaUeXPVB5grw1Jpvg3qjLPjrfxLXgatnVAWIqtif483Cvpvoy3Qm5hBBl7RmtxfqI6zh6YitFJ8AF3mUP1DEn+/q5qqM6LOG7Wsjil2G7RJl3XVs+Reqmv9p1VT8YwsCTrHDHlNKpvo5tfJPxh2BPbDpuiv4RGKrQF1KUdMMtpJU0xK6Co4cp/K8Fl7fXx8koss09mPDSe0tiDekCDa0eA265tVBV0EdykKDNYGmnGPypjqVUKy4Iq8Pv/tC4D711cqDuFucP79cAHdiMoAxUUkTUniNwXTVUMVAD1PNPeZNqUtsZJxEW2/rbgUnwpjm1MjCW/GdLzjpc6ViIoSfYfllD4pWl6x3pjrmKiFoUQjkEuQbgeN/9sVyE0bfShslrnagrbxR7d8J2XOcLJ2cruAj6dCLlCRFJXflnT4PdAZleW2Ch1YQ3+wozVoicHCP4psj83yfu/W0XJK2xKinl3lWwNmoazcgfpTKuGQ+XsqN0a069A4kYcU3gEwHyCBgPSy9yNshG8DK8Wgdh8KV9wqa8I0Q09bSl2cUikTwtsYswLdGY28VwgyLd91gB0vZBW8x9IY0xzaHayvL6dziUE66fatMrNATr04nm+VIoR2nBQVPxefZHjRBr9bcevAbnAg== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(46966006)(36840700001)(83380400001)(2616005)(316002)(36860700001)(36756003)(336012)(956004)(54906003)(8676002)(2906002)(356005)(186003)(7696005)(26005)(70206006)(70586007)(5660300002)(1076003)(86362001)(82310400003)(30864003)(4326008)(8936002)(6486002)(6666004)(508600001)(81166007)(47076005)(6916009);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2021 14:22:09.7841 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6cb0913-b117-464d-58fc-08d9a067a745 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3537 Content-Type: text/plain This patch creates Dsdt.asl, SsdtPci.asl and SsdtRemotePci.asl files to provide the platform specific APCI table entries. Three PCI root ports are available on N1Sdp, PCI0 is the default root port PCI1 is the CCIX root port and PCI2 is the Remote host root port. The Remote host specific entries are defined in a separate file SsdtRemotePci.asl to avoid confusions with other PCI entries and for better readability and understanding of interfaces. Signed-off-by: Sami Mujawar Signed-off-by: Khasim Syed Mohammed Signed-off-by: Chandni Cherukuri Signed-off-by: anukou01 Signed-off-by: Manoj Kumar --- .../AslTables/Dsdt.asl | 482 ++++++++++++++++++ .../AslTables/SsdtPci.asl | 252 +++++++++ .../AslTables/SsdtRemotePci.asl | 161 ++++++ 3 files changed, 895 insertions(+) create mode 100644 Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl create mode 100644 Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtPci.asl create mode 100644 Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtRemotePci.asl diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl new file mode 100644 index 0000000000..818862cd75 --- /dev/null +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl @@ -0,0 +1,482 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2021, ARM Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI for CoreSight 1.1, Platform Design Document + - ACPI for Arm Components 1.0, Platform Design Document + +**/ + +#include "N1SdpAcpiHeader.h" +#include "NeoverseN1Soc.h" + +#define ACPI_GRAPH_REV 0 +#define ACPI_GRAPH_UUID "ab02a46b-74c7-45a2-bd68-f7d344ef2153" + +#define CORESIGHT_GRAPH_UUID "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd" + +#define CS_LINK_MASTER 1 +#define CS_LINK_SLAVE 0 + +#define DSD_CS_GRAPH_BEGIN(_nports) \ + Package () { \ + 1, \ + ToUUID(CORESIGHT_GRAPH_UUID), \ + _nports, + +#define DSD_CS_GRAPH_END \ + } + +#define DSD_GRAPH_BEGIN(_nports) \ + ToUUID(ACPI_GRAPH_UUID), \ + Package() { \ + ACPI_GRAPH_REV, \ + 1, \ + DSD_CS_GRAPH_BEGIN(_nports) + +#define DSD_GRAPH_END \ + DSD_CS_GRAPH_END \ + } + +#define DSD_PORTS_BEGIN(_nports) \ + Name (_DSD, Package () { \ + DSD_GRAPH_BEGIN(_nports) + +#define DSD_PORTS_END \ + DSD_GRAPH_END \ + }) + +#define CS_PORT(_port, _rport, _rphandle, _dir) \ + Package () { _port, _rport, _rphandle, _dir} + +#define CS_INPUT_PORT(_port, _rport, _rphandle) \ + CS_PORT(_port, _rport, _rphandle, CS_LINK_SLAVE) + +#define CS_OUTPUT_PORT(_port, _rport, _rphandle) \ + CS_PORT(_port, _rport, _rphandle, CS_LINK_MASTER) + +DefinitionBlock("Dsdt.aml", "DSDT", 1, "ARMLTD", "N1Sdp", EFI_ACPI_ARM_OEM_REVISION) { + Scope(_SB) { + Device(CP00) { // Ares-0: Cluster 0, Cpu 0 + Name(_HID, "ACPI0007") + Name(_UID, 0) + Name(_STA, 0xF) + Device(ETM0) { // ETM on Cluster0 CPU0 + Name (_HID, "ARMHC500") + Name (_CID, "ARMHC500") + Name (_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtm0Base), // Min Base Address + FixedPcdGet64 (PcdCsEtm0MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + DSD_PORTS_BEGIN(1) + CS_OUTPUT_PORT(0, 0, \_SB_.SFN0) + DSD_PORTS_END + } // ETM0 + } + + Device(CP01) { // Ares-1: Cluster 0, Cpu 1 + Name(_HID, "ACPI0007") + Name(_UID, 1) + Name(_STA, 0xF) + Device(ETM1) { // ETM on Cluster0 CPU1 + Name (_HID, "ARMHC500") + Name (_CID, "ARMHC500") + Name (_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtm1Base), // Min Base Address + FixedPcdGet64 (PcdCsEtm1MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + DSD_PORTS_BEGIN(1) + CS_OUTPUT_PORT(0, 1, \_SB_.SFN0) + DSD_PORTS_END + } // ETM1 + } + + Device(CP02) { // Ares-2: Cluster 1, Cpu 0 + Name(_HID, "ACPI0007") + Name(_UID, 2) + Name(_STA, 0xF) + Device(ETM2) { // ETM on Cluster1 CPU0 + Name (_HID, "ARMHC500") + Name (_CID, "ARMHC500") + Name (_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtm2Base), // Min Base Address + FixedPcdGet64 (PcdCsEtm2MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + DSD_PORTS_BEGIN(1) + CS_OUTPUT_PORT(0, 0, \_SB_.SFN1) + DSD_PORTS_END + } // ETM2 + } + + Device(CP03) { // Ares-3: Cluster 1, Cpu 1 + Name(_HID, "ACPI0007") + Name(_UID, 3) + Name(_STA, 0xF) + Device(ETM3) { // ETM on Cluster0 CPU0 + Name (_HID, "ARMHC500") + Name (_CID, "ARMHC500") + Name (_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtm3Base), // Min Base Address + FixedPcdGet64 (PcdCsEtm3MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(1) + CS_OUTPUT_PORT(0, 1, \_SB_.SFN1) + DSD_PORTS_END + } // ETM3 + } + + Device(ETF0) { + Name(_HID, "ARMHC97C") // TMC + Name(_CID, "ARMHC97C") // TMC + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtf0Base), // Min Base Address + FixedPcdGet64 (PcdCsEtf0MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(2) + CS_OUTPUT_PORT(0, 0, \_SB_.FUN), + CS_INPUT_PORT(0, 0, \_SB_.SFN0) + DSD_PORTS_END + } // ETF0 + + Device(ETF1) { + Name(_HID, "ARMHC97C") // TMC + Name(_CID, "ARMHC97C") // TMC + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtf1Base), // Min Base Address + FixedPcdGet64 (PcdCsEtf1MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(2) + CS_OUTPUT_PORT(0, 1, \_SB_.FUN), + CS_INPUT_PORT(0, 0, \_SB_.SFN1) + DSD_PORTS_END + } // ETF1 + + Device(ETF2) { + Name(_HID, "ARMHC97C") // TMC + Name(_CID, "ARMHC97C") // TMC + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtf2Base), // Min Base Address + FixedPcdGet64 (PcdCsEtf2MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(2) + CS_OUTPUT_PORT(0, 5, \_SB_.MFUN), + CS_INPUT_PORT(0, 0, \_SB_.STM0) + DSD_PORTS_END + } // ETF2 + + Device(FUN) { + Name(_HID, "ARMHC9FF") + Name(_CID, "ARMHC9FF") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsFunnel0Base), // Min Base Address + FixedPcdGet64 (PcdCsFunnel0MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + DSD_PORTS_BEGIN(3) + CS_OUTPUT_PORT(0, 0, \_SB_.MFUN), + CS_INPUT_PORT(0, 0, \_SB_.ETF0), + CS_INPUT_PORT(1, 0, \_SB_.ETF1) + DSD_PORTS_END + } // FUN + + Device(STM0) { + Name(_HID, "ARMHC502") // STM + Name(_CID, "ARMHC502") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsStmBase), // Min Base Address + FixedPcdGet64 (PcdCsStmMaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + Memory32Fixed(ReadWrite, + FixedPcdGet32 (PcdCsStmStimulusBase), + FixedPcdGet32 (PcdCsStmStimulusSize)) + }) + + DSD_PORTS_BEGIN(1) + CS_OUTPUT_PORT(0, 0, \_SB_.ETF2) + DSD_PORTS_END + } + + Device(MFUN) { // Master Funnel + Name(_HID, "ARMHC9FF") // Funnel + Name(_CID, "ARMHC9FF") // Funnel + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsFunnel1Base), // Min Base Address + FixedPcdGet64 (PcdCsFunnel1MaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(3) + CS_OUTPUT_PORT(0, 0, \_SB_.REP), + CS_INPUT_PORT(0, 0, \_SB_.FUN), + CS_INPUT_PORT(5, 0, \_SB_.ETF2) + DSD_PORTS_END + } // MFUN + + Device(REP) { + Name(_HID, "ARMHC98D") // Replicator + Name(_CID, "ARMHC98D") // Replicator + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsReplicatorBase), // Min Base Address + FixedPcdGet64 (PcdCsReplicatorMaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(3) + CS_OUTPUT_PORT(0, 0, \_SB_.TPIU), + CS_OUTPUT_PORT(1, 0, \_SB_.ETR), + CS_INPUT_PORT(0, 0, \_SB_.MFUN) + DSD_PORTS_END + } // REP + + Device(TPIU) { + Name(_HID, "ARMHC979") // TPIU + Name(_CID, "ARMHC979") // TPIU + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsTpiuBase), // Min Base Address + FixedPcdGet64 (PcdCsTpiuMaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + DSD_PORTS_BEGIN(1) + CS_INPUT_PORT(0, 0, \_SB_.REP) + DSD_PORTS_END + } // TPIU + + Device(ETR) { + Name(_HID, "ARMHC97C") // TMC + Name(_CID, "ARMHC97C") // TMC + Name(_CCA, 0) // The ETR on this platform is not coherent + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCsEtrBase), // Min Base Address + FixedPcdGet64 (PcdCsEtrMaxBase), // Max Base Address + 0, // Translate + FixedPcdGet32 (PcdCsComponentSize) // Length + ) + }) + + Name(_DSD, Package() { + DSD_GRAPH_BEGIN(1) + CS_INPUT_PORT(0, 1, \_SB_.REP) + DSD_GRAPH_END, + + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package() { + Package(2) {"arm,scatter-gather", 1} + } + }) + + } // ETR + + Device(SFN0) { // Static Funnel 0 + Name(_HID, "ARMHC9FE") // Funnel + Name(_CID, "ARMHC9FE") // Funnel + + DSD_PORTS_BEGIN(3) + CS_OUTPUT_PORT(0, 0, \_SB_.ETF0), + CS_INPUT_PORT(0, 0, \_SB_.CP00.ETM0), + CS_INPUT_PORT(1, 0, \_SB_.CP01.ETM1) + DSD_PORTS_END + } // SFN0 + + Device(SFN1) { // Static Funnel 1 + Name(_HID, "ARMHC9FE") // Funnel + Name(_CID, "ARMHC9FE") // Funnel + + DSD_PORTS_BEGIN(3) + CS_OUTPUT_PORT(0, 0, \_SB_.ETF1), + CS_INPUT_PORT(0, 0, \_SB_.CP02.ETM2), + CS_INPUT_PORT(1, 0, \_SB_.CP03.ETM3) + DSD_PORTS_END + } // SFN1 + + Device(CMN6) { + Name(_HID, "ARMHC600") + + Name(_CRS, ResourceTemplate () { + // Region location is platform specific + // Other name(s) of this region: PERIPHBASE + QWordMemory ( + ResourceConsumer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x00000000, + 0x50000000, + 0x5FFFFFFF, + 0x00000000, + 0x10000000, + , + , + CFGR + ) + + // Sub-region location is platform specific + // Other name(s) of this region: ROOTNODEBASE + QWordMemory ( + ResourceConsumer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x00000000, + 0x50D00000, + 0x50D03FFF, + 0x00000000, + 0x00004000, + , + , + ROOT + ) + + // CMN600_INTREQPMU_DTC0 + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 78 } + }) + } + } // Scope(_SB) +} diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtPci.asl b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtPci.asl new file mode 100644 index 0000000000..cdbd42c154 --- /dev/null +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtPci.asl @@ -0,0 +1,252 @@ +/** @file + Secondary System Description Table (SSDT) + + Copyright (c) 2021, ARM Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI for CoreSight 1.1, Platform Design Document + - ACPI for Arm Components 1.0, Platform Design Document + +**/ + +#include "N1SdpAcpiHeader.h" + +/* + See ACPI 6.4 Section 6.2.13 + + There are two ways that _PRT can be used. + + In the first model, a PCI Link device is used to provide additional + configuration information such as whether the interrupt is Level or + Edge triggered, it is active High or Low, Shared or Exclusive, etc. + + In the second model, the PCI interrupts are hardwired to specific + interrupt inputs on the interrupt controller and are not + configurable. In this case, the Source field in _PRT does not + reference a device, but instead contains the value zero, and the + Source Index field contains the global system interrupt to which the + PCI interrupt is hardwired. + + We use the first model with link indirection to set the correct + interrupt type as PCI defaults (Level Triggered, Active Low) are not + compatible with GICv2. +*/ +#define LNK_DEVICE(Unique_Id, Link_Name, irq) \ + Device(Link_Name) { \ + Name(_HID, EISAID("PNP0C0F")) \ + Name(_UID, Unique_Id) \ + Name(_PRS, ResourceTemplate() { \ + Interrupt(ResourceProducer, Level, ActiveHigh, Exclusive) { irq } \ + }) \ + Method (_CRS, 0) { Return (_PRS) } \ + Method (_SRS, 1) { } \ + Method (_DIS) { } \ +} + +#define PRT_ENTRY(Address, Pin, Link) \ + Package (4) { \ + Address, /* uses the same format as _ADR */ \ + Pin, /* The PCI pin number of the device (0-INTA, 1-INTB, 2-INTC, 3-INTD) */ \ + Link, /* Interrupt allocated via Link device */ \ + Zero /* global system interrupt number (no used) */ \ +} + +/* + See Reference [1] 6.1.1 + "High word-Device #, Low word-Function #. (for example, device 3, + function 2 is 0x00030002). To refer to all the functions on a device #, + use a function number of FFFF)." +*/ +#define ROOT_PRT_ENTRY(Pin, Link) PRT_ENTRY(0x0000FFFF, Pin, Link) // Device 0 for Bridge. + +DefinitionBlock("SsdtPci.aml", "SSDT", 1, "ARMLTD", "N1Sdp", + EFI_ACPI_ARM_OEM_REVISION) +{ + Scope (_SB) { + + // PCI Root Complex + LNK_DEVICE(1, LNKA, 201) + LNK_DEVICE(2, LNKB, 202) + LNK_DEVICE(3, LNKC, 203) + LNK_DEVICE(4, LNKD, 204) + LNK_DEVICE(5, LNKE, 233) + LNK_DEVICE(6, LNKF, 234) + LNK_DEVICE(7, LNKG, 235) + LNK_DEVICE(8, LNKH, 236) + + // PCI Root Complex + Device(PCI0) { + Name (_HID, EISAID("PNP0A08")) // PCI Express Root Bridge + Name (_CID, EISAID("PNP0A03")) // Compatible PCI Root Bridge + Name (_SEG, Zero) // PCI Segment Group number + Name (_BBN, Zero) // PCI Base Bus Number + Name (_CCA, 1) // Cache Coherency Attribute + + // Root Complex 0 + Device (RP0) { + Name(_ADR, 0xF0000000) // Dev 0, Func 0 + } + + // PCI Routing Table + Name(_PRT, Package() { + ROOT_PRT_ENTRY(0, LNKA), // INTA + ROOT_PRT_ENTRY(1, LNKB), // INTB + ROOT_PRT_ENTRY(2, LNKC), // INTC + ROOT_PRT_ENTRY(3, LNKD), // INTD + }) + + // Root complex resources + Method (_CRS, 0, Serialized) { + Name (RBUF, ResourceTemplate () { + WordBusNumber ( // Bus numbers assigned to this root + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + FixedPcdGet32 (PcdPcieBusMin), // AddressMinimum - Minimum Bus Number + FixedPcdGet32 (PcdPcieBusMax), // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + FixedPcdGet32 (PcdPcieBusCount) // RangeLength - Number of Busses + ) + + DWordMemory ( // 32-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet32 (PcdPcieMmio32Base), // Min Base Address + FixedPcdGet32 (PcdPcieMmio32MaxBase), // Max Base Address + FixedPcdGet32 (PcdPcieMmio32Translation), // Translate + FixedPcdGet32 (PcdPcieMmio32Size) // Length + ) + + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdPcieMmio64Base), // Min Base Address + FixedPcdGet64 (PcdPcieMmio64MaxBase), // Max Base Address + FixedPcdGet64 (PcdPcieMmio64Translation), // Translate + FixedPcdGet64 (PcdPcieMmio64Size) // Length + ) + + DWordIo ( // IO window + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + EntireRange, + 0x00000000, // Granularity + FixedPcdGet32 (PcdPcieIoBase), // Min Base Address + FixedPcdGet32 (PcdPcieIoMaxBase), // Max Base Address + FixedPcdGet32 (PcdPcieIoTranslation), // Translate + FixedPcdGet32 (PcdPcieIoSize), // Length + , + , + , + TypeTranslation + ) + }) // Name(RBUF) + + Return (RBUF) + } // Method (_CRS) + } + + // CCIX Root Complex + Device(PCI1) { + Name (_HID, EISAID("PNP0A08")) // PCI Express Root Bridge + Name (_CID, EISAID("PNP0A03")) // Compatible PCI Root Bridge + Name (_SEG, 1) // PCI Segment Group number + Name (_BBN, Zero) // PCI Base Bus Number + Name (_CCA, 1) // Cache Coherency Attribute + + // Root Complex 1 + Device (RP1) { + Name(_ADR, 0xF0000000) // Dev 0, Func 0 + } + + // PCI Routing Table + Name(_PRT, Package() { + ROOT_PRT_ENTRY(0, LNKE), // INTA + ROOT_PRT_ENTRY(1, LNKF), // INTB + ROOT_PRT_ENTRY(2, LNKG), // INTC + ROOT_PRT_ENTRY(3, LNKH), // INTD + }) + + // Root complex resources + Method (_CRS, 0, Serialized) { + Name (RBUF, ResourceTemplate () { + WordBusNumber ( // Bus numbers assigned to this root + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + FixedPcdGet32 (PcdCcixBusMin), // AddressMinimum - Minimum Bus Number + FixedPcdGet32 (PcdCcixBusMax), // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + FixedPcdGet32 (PcdCcixBusCount) // RangeLength - Number of Busses + ) + + DWordMemory ( // 32-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet32 (PcdCcixMmio32Base), // Min Base Address + FixedPcdGet32 (PcdCcixMmio32MaxBase), // Max Base Address + FixedPcdGet32 (PcdCcixMmio32Translation), // Translate + FixedPcdGet32 (PcdCcixMmio32Size) // Length + ) + + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdCcixMmio64Base), // Min Base Address + FixedPcdGet64 (PcdCcixMmio64MaxBase), // Max Base Address + FixedPcdGet64 (PcdCcixMmio64Translation), // Translate + FixedPcdGet64 (PcdCcixMmio64Size) // Length + ) + + DWordIo ( // IO window + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + EntireRange, + 0x00000000, // Granularity + FixedPcdGet32 (PcdCcixIoBase), // Min Base Address + FixedPcdGet32 (PcdCcixIoMaxBase), // Max Base Address + FixedPcdGet32 (PcdCcixIoTranslation), // Translate + FixedPcdGet32 (PcdCcixIoSize), // Length + , + , + , + TypeTranslation + ) + }) // Name(RBUF) + + Return (RBUF) + } // Method (_CRS) + } + + } +} diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtRemotePci.asl b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtRemotePci.asl new file mode 100644 index 0000000000..b6bec7c106 --- /dev/null +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/AslTables/SsdtRemotePci.asl @@ -0,0 +1,161 @@ +/** @file + Secondary System Description Table (SSDT) + + Copyright (c) 2021, ARM Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI for CoreSight 1.1, Platform Design Document + - ACPI for Arm Components 1.0, Platform Design Document + +**/ + +#include "N1SdpAcpiHeader.h" + +/* + See ACPI 6.4 Section 6.2.13 + + There are two ways that _PRT can be used. + + In the first model, a PCI Link device is used to provide additional + configuration information such as whether the interrupt is Level or + Edge triggered, it is active High or Low, Shared or Exclusive, etc. + + In the second model, the PCI interrupts are hardwired to specific + interrupt inputs on the interrupt controller and are not + configurable. In this case, the Source field in _PRT does not + reference a device, but instead contains the value zero, and the + Source Index field contains the global system interrupt to which the + PCI interrupt is hardwired. + + We use the first model with link indirection to set the correct + interrupt type as PCI defaults (Level Triggered, Active Low) are not + compatible with GICv2. +*/ +#define LNK_DEVICE(Unique_Id, Link_Name, irq) \ + Device(Link_Name) { \ + Name(_HID, EISAID("PNP0C0F")) \ + Name(_UID, Unique_Id) \ + Name(_PRS, ResourceTemplate() { \ + Interrupt(ResourceProducer, Level, ActiveHigh, Exclusive) { irq } \ + }) \ + Method (_CRS, 0) { Return (_PRS) } \ + Method (_SRS, 1) { } \ + Method (_DIS) { } \ +} + +#define PRT_ENTRY(Address, Pin, Link) \ + Package (4) { \ + Address, /* uses the same format as _ADR */ \ + Pin, /* The PCI pin number of the device (0-INTA, 1-INTB, 2-INTC, 3-INTD) */ \ + Link, /* Interrupt allocated via Link device */ \ + Zero /* global system interrupt number (no used) */ \ +} + +/* + See Reference [1] 6.1.1 + "High word-Device #, Low word-Function #. (for example, device 3, + function 2 is 0x00030002). To refer to all the functions on a device #, + use a function number of FFFF)." +*/ +#define ROOT_PRT_ENTRY(Pin, Link) PRT_ENTRY(0x0000FFFF, Pin, Link) // Device 0 for Bridge. + +DefinitionBlock("SsdtRemotePci.aml", "SSDT", 1, "ARMLTD", "N1Sdp", + EFI_ACPI_ARM_OEM_REVISION) +{ + Scope (_SB) { + + // Remote PCI Root Complex + LNK_DEVICE(9, LNKI, 681) + LNK_DEVICE(10, LNKJ, 682) + LNK_DEVICE(11, LNKK, 683) + LNK_DEVICE(12, LNKL, 684) + + //Remote PCIe root complex + Device(PCI2) { + Name (_HID, EISAID("PNP0A08")) // PCI Express Root Bridge + Name (_CID, EISAID("PNP0A03")) // Compatible PCI Root Bridge + Name (_SEG, 2) // PCI Segment Group number + Name (_BBN, Zero) // PCI Base Bus Number + Name (_CCA, 1) // Cache Coherency Attribute + + // Remote Root Complex 0 + Device (RP0) { + Name(_ADR, 0xF0000000) // Dev 0, Func 0 + } + + // PCI Routing Table + Name(_PRT, Package() { + ROOT_PRT_ENTRY(0, LNKI), // INTA + ROOT_PRT_ENTRY(1, LNKJ), // INTB + ROOT_PRT_ENTRY(2, LNKK), // INTC + ROOT_PRT_ENTRY(3, LNKL), // INTD + }) + + // Root complex resources + Method (_CRS, 0, Serialized) { + Name (RBUF, ResourceTemplate () { + WordBusNumber ( // Bus numbers assigned to this root + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + FixedPcdGet32 (PcdPcieBusMin), // AddressMinimum - Minimum Bus Number + FixedPcdGet32 (PcdPcieBusMax), // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + FixedPcdGet32 (PcdPcieBusCount) // RangeLength - Number of Busses + ) + + QWordMemory ( // 32-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet32 (PcdPcieMmio32Base), // Min Base Address + FixedPcdGet32 (PcdPcieMmio32MaxBase), // Max Base Address + FixedPcdGet32 (PcdRemotePcieMmio32Translation), // Translate + FixedPcdGet32 (PcdPcieMmio32Size) // Length + ) + + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x00000000, // Granularity + FixedPcdGet64 (PcdPcieMmio64Base), // Min Base Address + FixedPcdGet64 (PcdPcieMmio64MaxBase), // Max Base Address + FixedPcdGet64 (PcdRemotePcieMmio64Translation), // Translate + FixedPcdGet64 (PcdPcieMmio64Size) // Length + ) + + QWordIo ( // IO window + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + EntireRange, + 0x00000000, // Granularity + FixedPcdGet32 (PcdPcieIoBase), // Min Base Address + FixedPcdGet32 (PcdPcieIoMaxBase), // Max Base Address + FixedPcdGet64 (PcdRemotePcieIoTranslation), // Translate + FixedPcdGet32 (PcdPcieIoSize), // Length + , + , + , + TypeTranslation + ) + }) // Name(RBUF) + + Return (RBUF) + } // Method (_CRS) + } + } +} -- 2.17.1