From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.85]) by mx.groups.io with SMTP id smtpd.web10.169.1682525866834685593 for ; Wed, 26 Apr 2023 09:17:47 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=YfmP92AF; spf=pass (domain: arm.com, ip: 40.107.6.85, mailfrom: sami.mujawar@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=rUMsVLV/C+efElQ9lwB892wo2u4u6k21QnqbAG/3SLM=; b=YfmP92AF9CvNfNJ0Bs/Y+cY5JI+Q3LlwdUsO/2HP+uwj5zFt8Y+7mR4FoxV5wSc3J4cUcwxu4w0dnmOVOVtGz2APnsgx4jOUcTt50vwBBqO+pAdORcWnJ1UyFK+ra8EkQWJxIec/WoJYNn2Z6b63ASVqAXKZ1oYY/pRxXk6gWJM= Received: from AS9PR04CA0043.eurprd04.prod.outlook.com (2603:10a6:20b:46a::13) by AM9PR08MB6242.eurprd08.prod.outlook.com (2603:10a6:20b:283::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 16:17:43 +0000 Received: from AM7EUR03FT036.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46a:cafe::10) by AS9PR04CA0043.outlook.office365.com (2603:10a6:20b:46a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21 via Frontend Transport; Wed, 26 Apr 2023 16:17:42 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT036.mail.protection.outlook.com (100.127.140.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.20 via Frontend Transport; Wed, 26 Apr 2023 16:17:42 +0000 Received: ("Tessian outbound 5bb4c51d5a1f:v136"); Wed, 26 Apr 2023 16:17:42 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7c29311c72f45b98 X-CR-MTA-TID: 64aa7808 Received: from 9ac0c1275464.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id AEBF0670-1A8F-4FB7-B246-5C3BBDF4975E.1; Wed, 26 Apr 2023 16:17:36 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9ac0c1275464.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 26 Apr 2023 16:17:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FnIxpkWJqWV78Mvh8/U6FKffrZH5beP/3rSVb/LHUhoA5tMysFQTttXvS3TncWnWsWTds3ZwAqpcb6nk8jye8R7667ELD1pbehO4kXvhXw3hdM58I4qcwqsbzf9YAUki7kSx0OiOW9z+6H9lngR2smPuFbzjQUdVxX+I8IcoMohwkFb+Iv5aDMFxBQIcDnrSj5LRWHtN2HRb7hCkBYrn8RKUKtYALQvj/CpYoHwr0TijMXwOk6fA45c9BPc9nM8YHS+iMDgtT5znCSDj8MPcvbHJbWc8y7AgPVNT8Wrs03XoyeeghvBUb+MVjBDH9hHnTGvQWKH0lGkEvSH9hub2Bg== 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=rUMsVLV/C+efElQ9lwB892wo2u4u6k21QnqbAG/3SLM=; b=gXzDnfyU1vyjW+tnIxUilfA9HdLN87cBYR3wXnySZpOzbadSqswX2y9RVyqbCmiOov+uRfS8OX9LCra9a0ZJXs11n1siYCiwo/MvUsITHL2PI6VAS9ulNX1VEOpkqh1LIXfp17rNxvWr2RV2q4vLz6tI9Ydylig2B/CSqY0wicIsgZkAuieplsPAy8hkg8okTwMS53AQTotYl6zHjRz7GzlKydqzht0pA64FwZ7t8hGvduZb4Nv+UNLRsWfDarC9kZ+gzOV6qjp2aP7wL7wfEBtueS+9MlhIobibzrXW4w1hqRESrS00wMv50jbgf2nNEiUXoH+zB9N0gZBdsW7GpQ== 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=rUMsVLV/C+efElQ9lwB892wo2u4u6k21QnqbAG/3SLM=; b=YfmP92AF9CvNfNJ0Bs/Y+cY5JI+Q3LlwdUsO/2HP+uwj5zFt8Y+7mR4FoxV5wSc3J4cUcwxu4w0dnmOVOVtGz2APnsgx4jOUcTt50vwBBqO+pAdORcWnJ1UyFK+ra8EkQWJxIec/WoJYNn2Z6b63ASVqAXKZ1oYY/pRxXk6gWJM= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by DB4PR08MB9142.eurprd08.prod.outlook.com (2603:10a6:10:3fe::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.32; Wed, 26 Apr 2023 16:17:34 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::7afd:553d:71b8:4c8c]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::7afd:553d:71b8:4c8c%6]) with mapi id 15.20.6340.021; Wed, 26 Apr 2023 16:17:34 +0000 Message-ID: Date: Wed, 26 Apr 2023 17:17:32 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [edk2-platforms][PATCH V3 4/5] Platform/Sgi: Initialize additional UART controllers To: Vivek Gautam , devel@edk2.groups.io Cc: ardb+tianocore@kernel.org, leif@nuviainc.com, Pierre.Gondois@arm.com, "nd@arm.com" References: <20230324110303.1168851-1-vivek.gautam@arm.com> <20230324110303.1168851-5-vivek.gautam@arm.com> From: "Sami Mujawar" In-Reply-To: <20230324110303.1168851-5-vivek.gautam@arm.com> X-ClientProxiedBy: LO4P123CA0166.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18a::9) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6806:EE_|DB4PR08MB9142:EE_|AM7EUR03FT036:EE_|AM9PR08MB6242:EE_ X-MS-Office365-Filtering-Correlation-Id: d2d3d270-dc69-45bb-3edc-08db4671c396 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: G2FCvsGImOYyc+eBkpKSnbeDMvxLk9fshHunPdPaimOY4N+6IRkuDEQe3EMjrxj3kfIYY+5qv0+TGrek261HmFPg/RR9EnnuvGb+EXY9QTdFUWGJ295xjuS3C4xtMPfyFKjZ1cZR/KvminLhovf1Vqr0pkxjv7+r28nXnajkmBvRWhm7pQ1DtA641uSt1ZzqVvOcLFxpBEYPZvqv8PD0r7HZlCU/3fMgseWjYHUXW/QR7L/hf01egGoDJetHO0xu3T5HJfsynVroxIiBiRqySbyinJGJJJBkiFnVgzETMJhy6NXquDB/5r1ltb9pSrgW994O2I3nM4cfTSEGTUDPkClLJrNwTWYQ7GfpxC40kIJHX8AZZWRr1v5ucPcyWd+foejTS/wMBG7JC8JAdL054QmogvUOXYjo3CTH0V7Cin5MPQmorEhUB3GKuAXJVhTzpvYeqZWFFLaSIu4kfswfGQ0ju8qm5XgmMSZaNio+y4OQBrQdopFYv/xmLQnzzy6v4nEVt6p81g66qON3zuwKFNGNDoMrwFYI9BWHs2EyUkkkNwYxMTditTsFDC8KGqlmI8n0BYlv/wGCifHzou72WC4IZ7ZO/KGVksRN/FSkiulSpC8IcU6pK/KKkGVcWQmdhJXvyl5m0H7TqVguFqt7Nw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(396003)(376002)(39860400002)(346002)(136003)(451199021)(19627235002)(6486002)(2906002)(6512007)(6506007)(2616005)(53546011)(4326008)(41300700001)(66946007)(8936002)(66476007)(66556008)(26005)(186003)(316002)(478600001)(44832011)(5660300002)(8676002)(38100700002)(86362001)(31696002)(36756003)(83380400001)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9142 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT036.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5148918d-6ec1-4012-94ff-08db4671be61 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X3Q+VVVwvy+vxpLDiq592RtumCwxvtCeQwTrfctBee5BTnv64zWvJkBuV9weSLQ8i1KMW056etvEtIkJx1v4QrqW7V5UQ0O5tKWd2EC5vY4UY6gV9YRitiRK04Ha0BslSaRNPXmFxO6ZZAI2aPpKDbZTLqtlT+LkZGxwUAmhNmLwv7zjMf5KsFTVu9nMrk6j9kaWAw4lmM3YYguQxO0vtiC1BGs9hdS1YP5x570e95RwcTCWR2R0SMy8x0prwJISqGQVEVfwhgciMSFuzheL/VdDMjdLfbmY4snjNQZWUET61UTntAzqL8LWDi5V7+aHZcP+lH9TASze4AbuXygUEi8HEH9KYr2WzgGe48kJganAeJ/VlIwGyC02tTamiOEgp2TbKwgxFipZr6iEEAJADmi3WJwl84RN43ntczrFxUbwmFUBCAKNG9mVulKFlG/gea8ElpuM0B/dB+deJWDAebs2V9Z09wsBSNY0phgYtWt8H5V1jQWxYMDWGIxJja76Gt4LrFLH6IiT/wcHqrmDRTmqN5XTlicRScQcpzyiG7219F68RSxiN1u8jHpmGlZSxTUN9EkSrw2i2HevGQChDxDX3WgAhMLGR+hLo/VjAtYk2GNr9y9SQMiGrADUCyQREXTXCHT9zS9WSW/RZFJyO7Ej/RU1Qo7OvZd8bPyGyoRMP0Z9JWC839IvHBh/8Zc9CiDIYHsAB7ilZRstyiCjiAwqCtZ16A3EN7f9MJmr4CuCqgXC/o/2U1efYG/AnkYz71Erf5SWkbQMy3QDzwTGMg== 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:(13230028)(4636009)(376002)(136003)(346002)(396003)(39860400002)(451199021)(36840700001)(46966006)(40470700004)(70586007)(70206006)(316002)(19627235002)(4326008)(5660300002)(40480700001)(44832011)(356005)(81166007)(41300700001)(82740400003)(8936002)(8676002)(40460700003)(2906002)(186003)(53546011)(31696002)(6506007)(6512007)(26005)(336012)(83380400001)(82310400005)(36756003)(31686004)(86362001)(36860700001)(2616005)(478600001)(34020700004)(47076005)(6486002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 16:17:42.8928 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d2d3d270-dc69-45bb-3edc-08db4671c396 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: AM7EUR03FT036.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6242 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Vivek, Thank you for this patch. I have some minor feedback that I will address before merging. Reviewed-by: Sami Mujawar Regards, Sami Mujawar On 24/03/2023 11:03 am, Vivek Gautam wrote: > From: Shriram K > > The IO virtualization block on reference design platforms allow > connecting SoC expansion devices such as PL011 UART. On platforms > that support this, initialize the UART controller connected to the > IO virtualization block. > > Signed-off-by: Shriram K > Signed-off-by: Vivek Gautam > --- > Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf | 9 ++- > Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 6 +- > Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c | 64 +++++++++++++++++++- > Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLibMem.c | 44 +++++++++++++- > 4 files changed, 116 insertions(+), 7 deletions(-) > > diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf > index 9d89314a594e..3cd7e2329c22 100644 > --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf > +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf > @@ -1,5 +1,5 @@ > # > -# Copyright (c) 2018, ARM Limited. All rights reserved. > +# Copyright (c) 2018 - 2023, ARM Limited. All rights reserved. > # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -17,6 +17,7 @@ > VirtioDevices.c > > [Packages] > + ArmPlatformPkg/ArmPlatformPkg.dec > EmbeddedPkg/EmbeddedPkg.dec > MdePkg/MdePkg.dec > OvmfPkg/OvmfPkg.dec > @@ -37,10 +38,16 @@ > gArmSgiTokenSpaceGuid.PcdVirtioNetSupported > > [FixedPcd] > + gArmSgiTokenSpaceGuid.PcdChipCount > + gArmSgiTokenSpaceGuid.PcdIoVirtSocExpBlk0Base > + gArmSgiTokenSpaceGuid.PcdIoVirtSocExpBlkUartEnable > + gArmSgiTokenSpaceGuid.PcdMaxAddressBitsPerChip > gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress > gArmSgiTokenSpaceGuid.PcdVirtioBlkSize > gArmSgiTokenSpaceGuid.PcdVirtioNetBaseAddress > gArmSgiTokenSpaceGuid.PcdVirtioNetSize > > + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz > + > [Depex] > TRUE > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > index 1ca7679b4191..020bde0d1f56 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > @@ -1,5 +1,5 @@ > # > -# Copyright (c) 2018 - 2022, Arm Limited. All rights reserved. > +# Copyright (c) 2018 - 2023, Arm Limited. All rights reserved. > # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -41,10 +41,12 @@ > gArmPlatformTokenSpaceGuid.PcdCoreCount > gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase > > - gArmSgiTokenSpaceGuid.PcdMaxAddressBitsPerChip > gArmSgiTokenSpaceGuid.PcdDramBlock2Base > gArmSgiTokenSpaceGuid.PcdDramBlock2Size > gArmSgiTokenSpaceGuid.PcdGicSize > + gArmSgiTokenSpaceGuid.PcdIoVirtSocExpBlk0Base > + gArmSgiTokenSpaceGuid.PcdIoVirtSocExpBlkUartEnable > + gArmSgiTokenSpaceGuid.PcdMaxAddressBitsPerChip > > gArmTokenSpaceGuid.PcdSystemMemoryBase > gArmTokenSpaceGuid.PcdSystemMemorySize > diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > index 2f72e7152ff3..b3a998bc1585 100644 > --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > @@ -1,6 +1,6 @@ > /** @file > * > -* Copyright (c) 2018, ARM Limited. All rights reserved. > +* Copyright (c) 2018 - 2023, ARM Limited. All rights reserved. > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -9,6 +9,9 @@ > #include > #include > #include > +#include > + > +#include > #include > > VOID > @@ -16,6 +19,64 @@ InitVirtioDevices ( > VOID > ); > > +/** > + Initialize UART controllers connected to IO Virtualization block. > + > + Use PL011UartLib Library to initialize UART controllers that are present in > + the SoC expansion block. This SoC expansion block is connected to the IO > + virtualization block on Arm infrastructure reference design (RD) platforms. > + > + @retval None > +**/ > +STATIC > +VOID > +InitIoVirtSocExpBlkUartControllers (VOID) > +{ > + EFI_STATUS Status; > + EFI_PARITY_TYPE Parity; > + EFI_STOP_BITS_TYPE StopBits; > + UINT64 BaudRate; > + UINT32 ReceiveFifoDepth; > + UINT8 DataBits; > + UINT8 UartIdx; > + UINT32 ChipIdx; > + UINT64 UartAddr; > + > + if (FixedPcdGet32 (PcdIoVirtSocExpBlkUartEnable) == 0) > + return; [SAMI] edk2 coding standard requires to use opening and closing curly brackets even when the if condition has a single enclosing statement. Also the function parameters must be on separate lines. However, I will address that locally before merging. [/SAMI] > + > + ReceiveFifoDepth = 0; > + Parity = 1; > + DataBits = 8; > + StopBits = 1; > + BaudRate = 115200; > + > + for (ChipIdx = 0; ChipIdx < FixedPcdGet32 (PcdChipCount); ChipIdx++) { > + for (UartIdx = 0; UartIdx < 2; UartIdx++) { > + UartAddr = SGI_REMOTE_CHIP_MEM_OFFSET(ChipIdx) + UART_START(UartIdx); > + > + Status = PL011UartInitializePort ( > + (UINTN)UartAddr, > + FixedPcdGet32 (PcdSerialDbgUartClkInHz), > + &BaudRate, > + &ReceiveFifoDepth, > + &Parity, > + &DataBits, > + &StopBits > + ); > + > + if (EFI_ERROR (Status)) { > + DEBUG (( > + DEBUG_ERROR, > + "Failed to init PL011_UART%u on IO Virt Block port, status: %r\n", > + UartIdx, > + Status > + )); > + } > + } > + } > +} > + > EFI_STATUS > EFIAPI > ArmSgiPkgEntryPoint ( > @@ -32,6 +93,7 @@ ArmSgiPkgEntryPoint ( > } > > InitVirtioDevices (); > + InitIoVirtSocExpBlkUartControllers (); > > return Status; > } > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLibMem.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLibMem.c > index 8139b75d8ee4..fa3cfbc730f6 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLibMem.c > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLibMem.c > @@ -1,6 +1,6 @@ > /** @file > * > -* Copyright (c) 2018-2020, ARM Limited. All rights reserved. > +* Copyright (c) 2018-2023, ARM Limited. All rights reserved. > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -13,11 +13,24 @@ > #include > #include > > +#include > #include > > // Total number of descriptors, including the final "end-of-table" descriptor. > -#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS \ > - (14 + (FixedPcdGet32 (PcdChipCount) * 2)) > +#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS \ > + ((14 + (FixedPcdGet32 (PcdChipCount) * 2)) + \ > + (FixedPcdGet32 (PcdIoVirtSocExpBlkUartEnable) * \ > + FixedPcdGet32 (PcdChipCount) * 2)) > + > +// Memory Map descriptor for IO Virtualization SoC Expansion Block UART > +#define IO_VIRT_SOC_EXP_BLK_UART_MMAP(UartIdx, ChipIdx) \ > + VirtualMemoryTable[++Index].PhysicalBase = \ > + SGI_REMOTE_CHIP_MEM_OFFSET(ChipIdx) + UART_START(UartIdx); \ > + VirtualMemoryTable[Index].VirtualBase = \ > + SGI_REMOTE_CHIP_MEM_OFFSET(ChipIdx) + UART_START(UartIdx); \ > + VirtualMemoryTable[Index].Length = SIZE_64KB; \ > + VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; > + > > /** > Returns the Virtual Memory Map of the platform. > @@ -171,6 +184,31 @@ ArmPlatformGetVirtualMemoryMap ( > VirtualMemoryTable[Index].Length = SIZE_64KB; > VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; > > +#if (FixedPcdGet32 (PcdIoVirtSocExpBlkUartEnable) == 1) > + // Chip-0 IO Virtualization SoC Expansion Block - UART0 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(0, 0) > + // Chip-0 IO Virtualization SoC Expansion Block - UART1 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(1, 0) > +#if (FixedPcdGet32 (PcdChipCount) > 1) > + // Chip-1 IO Virtualization SoC Expansion Block - UART0 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(0, 1) > + // Chip-1 IO Virtualization SoC Expansion Block - UART1 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(1, 1) > +#if (FixedPcdGet32 (PcdChipCount) > 2) > + // Chip-2 IO Virtualization SoC Expansion Block - UART0 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(0, 2) > + // Chip-2 IO Virtualization SoC Expansion Block - UART1 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(1, 2) > +#if (FixedPcdGet32 (PcdChipCount) > 3) > + // Chip-3 IO Virtualization SoC Expansion Block - UART0 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(0, 3) > + // Chip-3 IO Virtualization SoC Expansion Block - UART1 > + IO_VIRT_SOC_EXP_BLK_UART_MMAP(1, 3) > +#endif > +#endif > +#endif > +#endif > + > // DDR - (2GB - 16MB) > VirtualMemoryTable[++Index].PhysicalBase = PcdGet64 (PcdSystemMemoryBase); > VirtualMemoryTable[Index].VirtualBase = PcdGet64 (PcdSystemMemoryBase);