From nobody Tue Feb 10 04:17:42 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+54019+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=nxp.com Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1581060256583162.16431406077027; Thu, 6 Feb 2020 23:24:16 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id PmW4YY1788612xERxaSGrr3N; Thu, 06 Feb 2020 23:24:16 -0800 X-Received: from EUR01-HE1-obe.outbound.protection.outlook.com (EUR01-HE1-obe.outbound.protection.outlook.com []) by mx.groups.io with SMTP id smtpd.web09.1385.1581060251535886040 for ; Thu, 06 Feb 2020 23:24:15 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Oel21hhxqgpUjpzRANU8KFN/2qT+GQ3q7R87elkJ7GJgO7FyR3uFH+0bf372i2RlE5HHNXqnliXLgt3yIXqFzh1R7at31ZBe6exW6OE2I3uEXFYnWb/TPXkPVotlIpvwDsbDPISENQVprjPVeNWgizKCWMYtrrmJ0+Sz/ij2Mz8HOJwRT8TawRrvzs8Lfnyeqg8E/pHT+wpVqbXhGrJR/iwK9nT2Blmvicu2MS6+JmH68UVTjOQaeofdoRImZgai7ZHW7DBQ3GznjOkX2LA18siOO1DzHT3KzlL+nlMPNS5CPMnT5nwPgSf6R2NEk4ETYpkm/YKr8kDZgX/D9iOz4A== 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-SenderADCheck; bh=v8iwlw9RFXV0r9G4uZJSiD9+xkSCwcVfDLomKUerT6I=; b=P4vj/I4uKVoA+yO03yvbyD68C6UvotIVpglvZG9B47QtUIVqn8A6rqyPUVGAsVLVACBPooJOMN9gmcReUZhZk3TUT4rbTGQRo52aiavNWfm/MhbJMsU0cJBpqgSx5u/iytQUZf6MSW+hwpicMZdDraEtxHoT3jowkbsBsNWLFpb9od2u0O2wCes4B+gJtCiLkamaQEmbzRq6GTow4OOdP6TnhGu1XY5lm/ZIr0wjcwH7mMgjPdwlBN6OHQNHOk58DsTHYEMtboJH8q0BhqkSJ4GpFASR8iAXXEVJtOxrlTYTc2MQUPHt1OZbaMqsH5fT2p03Z28ZkLM2C350wb9aJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none X-Received: from VI1PR0401MB2496.eurprd04.prod.outlook.com (10.168.65.10) by VI1PR0401MB2575.eurprd04.prod.outlook.com (10.168.62.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.21; Fri, 7 Feb 2020 07:24:14 +0000 X-Received: from VI1PR0401MB2496.eurprd04.prod.outlook.com ([fe80::8823:663d:c6ed:cbd6]) by VI1PR0401MB2496.eurprd04.prod.outlook.com ([fe80::8823:663d:c6ed:cbd6%12]) with mapi id 15.20.2686.036; Fri, 7 Feb 2020 07:24:14 +0000 From: "Pankaj Bansal" To: Leif Lindholm , Meenakshi Aggarwal , Michael D Kinney , Varun Sethi Cc: devel@edk2.groups.io, Pankaj Bansal Subject: [edk2-devel] [PATCH 13/19] Silicon/NXP: Move RAM retrieval from SocLib Date: Fri, 7 Feb 2020 18:13:22 +0530 Message-Id: <20200207124328.8723-14-pankaj.bansal@nxp.com> In-Reply-To: <20200207124328.8723-1-pankaj.bansal@nxp.com> References: <20200207124328.8723-1-pankaj.bansal@nxp.com> X-ClientProxiedBy: PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00::19) To VI1PR0401MB2496.eurprd04.prod.outlook.com (2603:10a6:800:56::10) MIME-Version: 1.0 X-Received: from uefi-workstation.ap.freescale.net (92.120.1.69) by PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.21 via Frontend Transport; Fri, 7 Feb 2020 07:24:12 +0000 X-Originating-IP: [92.120.1.69] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: eee38fa5-7477-4735-e691-08d7ab9ebbb2 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2575:|VI1PR0401MB2575: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+54019+1787277+3901457@groups.io; helo=web01.groups.io; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: gNpVHFxda/EV2Zi91Gc4qXIHr9RzuLfe8HLTQAJrnf9rWjp2DnlJvyMPZCwq5aTgwSfoO2fiEgH17ukOwetWxQVQJV9v/KBRYgmUbFaMMTbnjgXsCdt5DreMEyckNTEyUDpa8qumCN+1LWFVOpiI9dGX+SjXemL7ugbzSUK+wtXFgIWnfRwweldRFyAAzjt/2P+kMx6W4dedfvFso0VdInJPK3v63a/byWFUA1HZAaeK5dbCzLs1Eovk8gmsH4oTHo/Bn21ldn8UyFUg5eK59/F1+S7GOBgxrPjAjSWK/zNz3xCURoNoMvz05yju/9Sb+fhaNtmUwbx0L9U/6PLfL74kTitVI+RdeJ8B1IIbY2IPDLeSik4KoetD4BlAF0GKxJWPbrvM9/yaIzGaC7FAVSxGmDl8+7G0nGCX+QhrjVy0i5AKlr3T/O/65rRbAF7m X-MS-Exchange-AntiSpam-MessageData: b1SJdIntXjTrChsGmUC8K89vc74kxDRVzPZt3AT5665OxT8twxBMaar6GHklJDQ9+BOgEg4zwDbezSA04kEeZj5ySh/9E/L8ba8iLY1xpwTrsA6e0WDEA+3lH0a1E4ulWMEzTCaSY4YWKSato5jduQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: eee38fa5-7477-4735-e691-08d7ab9ebbb2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2020 07:24:14.0809 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: S70Ifcl+gT00TYGAnnbbxBp2VeWJ4bRiFxRy2/9Seqye60fn4w6uqLLO9ZknwoluUgJC2mh6MYBiLb9CG0WlKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2575 Precedence: Bulk List-Unsubscribe: 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,pankaj.bansal@nxp.com X-Gm-Message-State: E6YBvPgV03MvGj13aiKq6nQ7x1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1581060256; bh=rbuH4ZbysFFSxn7fzg0D5pF2edPaiIaTL5PGMwqrGDY=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=vS1H0ja3OrFN9xXGYaywhslxlnwuhxt3lKqzwJbyA0kdJZAYLkc2YVyFU4/rDT+Ds+q 8fPYg8fVIIIS4sch+sWTLE8dClh+YUlyIsH9ozqCpCth5VMGxbqboydnMCvBZaQMBOD1G kC9Cy+xi36ce/AwPkG1ZAfo5VKll2TwFs/8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" RAM retrieval using SMC commands is common to all Layerscape SOCs. Therefore, move it to commom MemoryInit Pei Lib. Also added provision to reserve a portion of RAM. Signed-off-by: Pankaj Bansal --- Silicon/NXP/Include/DramInfo.h | 38 --- .../Library/MemoryInitPei/MemoryInitPeiLib.c | 235 +++++++++++++++--- .../Library/MemoryInitPei/MemoryInitPeiLib.h | 24 ++ .../MemoryInitPei/MemoryInitPeiLib.inf | 8 + Silicon/NXP/Library/SocLib/Chassis.c | 67 ----- Silicon/NXP/NxpQoriqLs.dec | 7 +- 6 files changed, 239 insertions(+), 140 deletions(-) delete mode 100644 Silicon/NXP/Include/DramInfo.h create mode 100644 Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.h diff --git a/Silicon/NXP/Include/DramInfo.h b/Silicon/NXP/Include/DramInfo.h deleted file mode 100644 index a934aaeff1..0000000000 --- a/Silicon/NXP/Include/DramInfo.h +++ /dev/null @@ -1,38 +0,0 @@ -/** @file -* Header defining the structure for Dram Information -* -* Copyright 2019 NXP -* -* SPDX-License-Identifier: BSD-2-Clause-Patent -* -**/ - -#ifndef DRAM_INFO_H_ -#define DRAM_INFO_H_ - -#include - -#define SMC_DRAM_BANK_INFO (0xC200FF12) - -typedef struct { - UINTN BaseAddress; - UINTN Size; -} DRAM_REGION_INFO; - -typedef struct { - UINT32 NumOfDrams; - UINT32 Reserved; - DRAM_REGION_INFO DramRegion[3]; -} DRAM_INFO; - -EFI_STATUS -GetDramBankInfo ( - IN OUT DRAM_INFO *DramInfo - ); - -VOID -UpdateDpaaDram ( - IN OUT DRAM_INFO *DramInfo - ); - -#endif /* DRAM_INFO_H_ */ diff --git a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c b/Silicon= /NXP/Library/MemoryInitPei/MemoryInitPeiLib.c index 3ea7736786..eb1983bdbc 100644 --- a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c +++ b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c @@ -17,8 +17,10 @@ #include #include #include +#include + +#include "MemoryInitPeiLib.h" =20 -#include =20 VOID BuildMemoryTypeInformationHob ( @@ -44,6 +46,85 @@ InitMmu ( } } =20 +STATIC +UINTN +CalculateReservedMemBase ( + IN DRAM_REGION_INFO *DramRegions, + IN UINT32 NumRegions, + IN UINTN ReservedMemSize +) +{ + UINTN ReservedMemAlignment; + INTN Index; + EFI_PHYSICAL_ADDRESS AlignmentMask; + UINTN RegionBaseAddress; + UINTN RegionSize; + UINTN ReservedBaseAddress; + INTN Index2; + + ReservedMemAlignment =3D FixedPcdGet64 (PcdReservedMemAlignment); + // + // Compute alignment bit mask + // + if (ReservedMemAlignment) { + AlignmentMask =3D LShiftU64 (1, LowBitSet64(ReservedMemAlignment)) - 1; + } else { + AlignmentMask =3D 0; + } + Index =3D NumRegions; + while (Index--) { + RegionBaseAddress =3D DramRegions[Index].BaseAddress; + RegionSize =3D DramRegions[Index].Size; + + if (ReservedMemSize > RegionSize) { + continue; + } + + ReservedBaseAddress =3D (RegionBaseAddress + RegionSize - ReservedMemS= ize) & (~AlignmentMask); + if (ReservedBaseAddress < RegionBaseAddress) { + continue; + } + + // found the region from which reserved mem is to be carved out + // Need to modify the region size and create/delete region if need be + RegionSize -=3D ReservedMemSize; + if (!RegionSize) { + for (Index2 =3D Index; Index2 < NumRegions; Index2++) { + CopyMem (&DramRegions[Index2], &DramRegions[Index2 + 1], sizeof (D= RAM_REGION_INFO)); + } + break; + } + + if (ReservedBaseAddress - RegionBaseAddress) { + DramRegions[Index].Size =3D ReservedBaseAddress - RegionBaseAddress; + RegionSize -=3D DramRegions[Index].Size; + } else { + DramRegions[Index].BaseAddress =3D ReservedBaseAddress + ReservedMem= Size; + DramRegions[Index].Size =3D RegionSize; + RegionSize =3D 0; + } + + if (!RegionSize) { + break; + } + + for (Index2 =3D NumRegions; Index2 > (Index + 1); Index2--) { + CopyMem (&DramRegions[Index2], &DramRegions[Index2 - 1], sizeof (DRA= M_REGION_INFO)); + } + DramRegions[Index2].BaseAddress =3D ReservedBaseAddress + ReservedMemS= ize; + DramRegions[Index2].Size =3D RegionSize; + RegionSize =3D 0; + + break; + } + + if (Index =3D=3D -1) { + return 0; + } else { + return ReservedBaseAddress; + } +} + /*++ =20 Routine Description: @@ -68,10 +149,19 @@ MemoryPeim ( ) { ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; + ARM_SMC_ARGS ArmSmcArgs; + INT32 Index; + UINTN DramSize; + UINTN BaseAddress; + UINTN Size; + UINTN Top; + // Extra region gets created if we want to reserve a memory region and t= hat creates a memory hole + // because of alignement requirements + DRAM_REGION_INFO DramRegions[MAX_DRAM_REGIONS + 1]; EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes; - EFI_PEI_HOB_POINTERS NextHob; - BOOLEAN Found; - DRAM_INFO DramInfo; + UINTN FdBase; + UINTN FdTop; + BOOLEAN FoundSystemMem; =20 // Get Virtual Memory Map from the Platform Library ArmPlatformGetVirtualMemoryMap (&MemoryTable); @@ -86,48 +176,127 @@ MemoryPeim ( // Now, the permanent memory has been installed, we can call AllocatePag= es() // ResourceAttributes =3D ( - EFI_RESOURCE_ATTRIBUTE_PRESENT | - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_TESTED + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_TESTED ); =20 - if (GetDramBankInfo (&DramInfo)) { - DEBUG ((DEBUG_ERROR, "Failed to get DRAM information, exiting...\n")); - return EFI_UNSUPPORTED; - } + FoundSystemMem =3D FALSE; + ZeroMem (DramRegions, sizeof (DramRegions)); + + Index =3D -1; + do { + ArmSmcArgs.Arg0 =3D SMC_DRAM_BANK_INFO; + ArmSmcArgs.Arg1 =3D Index++; =20 - while (DramInfo.NumOfDrams--) { - // - // Check if the resource for the main system memory has been declared - // - Found =3D FALSE; - NextHob.Raw =3D GetHobList (); - while ((NextHob.Raw =3D GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, = NextHob.Raw)) !=3D NULL) { - if ((NextHob.ResourceDescriptor->ResourceType =3D=3D EFI_RESOURCE_SY= STEM_MEMORY) && - (DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress >=3D NextH= ob.ResourceDescriptor->PhysicalStart) && - (NextHob.ResourceDescriptor->PhysicalStart + NextHob.ResourceDes= criptor->ResourceLength <=3D - DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress + DramInfo= .DramRegion[DramInfo.NumOfDrams].Size)) - { - Found =3D TRUE; - break; + ArmCallSmc (&ArmSmcArgs); + ASSERT (!(ArmSmcArgs.Arg0 && !Index)); + if (!Index) { + DramSize =3D ArmSmcArgs.Arg1; + } else { + if (!ArmSmcArgs.Arg0) { + BaseAddress =3D ArmSmcArgs.Arg1; + Size =3D ArmSmcArgs.Arg2; + ASSERT (BaseAddress && Size); + + DramRegions[Index - 1].BaseAddress =3D BaseAddress; + DramRegions[Index - 1].Size =3D Size; + DramSize -=3D Size; + + DEBUG ((DEBUG_INFO, "bank[%d]: start 0x%lx, size 0x%lx\n", Index, = BaseAddress, Size)); } - NextHob.Raw =3D GET_NEXT_HOB (NextHob); + } + } while (DramSize && Index < MAX_DRAM_REGIONS); + + ASSERT (!DramSize); + + // Get the reserved memory size from non volatile storage + Size =3D FixedPcdGet64 (PcdReservedMemSize); + if (Size) { + BaseAddress =3D CalculateReservedMemBase (DramRegions, Index, Size); + if (BaseAddress) { + DEBUG ((DEBUG_INFO, "ReservedMem: start 0x%lx, size 0x%lx\n", BaseAd= dress, Size)); + } + } + + FdBase =3D (UINTN)FixedPcdGet64 (PcdFdBaseAddress); + FdTop =3D FdBase + (UINTN)FixedPcdGet32 (PcdFdSize); + + // Declare memory regios to system + for (Index =3D MAX_DRAM_REGIONS; Index >=3D 0; Index--) { + if (!DramRegions[Index].Size) { + continue; } =20 - if (!Found) { - // Reserved the memory space occupied by the firmware volume + BaseAddress =3D DramRegions[Index].BaseAddress; + Top =3D DramRegions[Index].BaseAddress + DramRegions[Index].Size; + + // EDK2 does not have the concept of boot firmware copied into DRAM. T= o avoid the DXE + // core to overwrite this area we must create a memory allocation HOB = for the region, + // but this only works if we split off the underlying resource descrip= tor as well. + if (FdBase >=3D BaseAddress && FdTop <=3D Top) { + // Update Size + Size =3D FdBase - BaseAddress; + if (Size) { + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + ResourceAttributes, + BaseAddress, + Size + ); + } + // create the System Memory HOB for the firmware BuildResourceDescriptorHob ( EFI_RESOURCE_SYSTEM_MEMORY, ResourceAttributes, - DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress, - DramInfo.DramRegion[DramInfo.NumOfDrams].Size + FdBase, + PcdGet32 (PcdFdSize) + ); + // Create the System Memory HOB for the remaining region (top of the= FD)s + Size =3D Top - FdTop; + if (Size) { + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + ResourceAttributes, + FdTop, + Size + ); + }; + // Mark the memory covering the Firmware Device as boot services data + BuildMemoryAllocationHob (FixedPcdGet64 (PcdFdBaseAddress), + FixedPcdGet32 (PcdFdSize), + EfiBootServicesData); + }else { + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + ResourceAttributes, + DramRegions[Index].BaseAddress, + DramRegions[Index].Size ); } + + if (FoundSystemMem) { + continue; + } + + BaseAddress =3D DramRegions[Index].BaseAddress; + Size =3D DramRegions[Index].Size; + Top =3D DramRegions[Index].BaseAddress + DramRegions[Index].Size; + + if (FdBase >=3D BaseAddress && FdTop <=3D Top) { + Size -=3D (UINTN)FixedPcdGet32 (PcdFdSize); + } + + if (Size >=3D FixedPcdGet32 (PcdSystemMemoryUefiRegionSize)) { + FoundSystemMem =3D TRUE; + } } =20 + ASSERT (FoundSystemMem); + // Build Memory Allocation Hob InitMmu (MemoryTable); =20 diff --git a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.h b/Silicon= /NXP/Library/MemoryInitPei/MemoryInitPeiLib.h new file mode 100644 index 0000000000..e563b2ba8d --- /dev/null +++ b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.h @@ -0,0 +1,24 @@ +/** @file +* +* Copyright 2020 NXP +* +* SPDX-License-Identifier: BSD-2-Clause-Patent +* +**/ + +#ifndef _MEMORY_INIT_PEI_LIB_H_ +#define _MEMORY_INIT_PEI_LIB_H_ + +#include + +// Specifies the Maximum regions onto which DDR memory can be mapped in a = Platform +#define MAX_DRAM_REGIONS 3 +#define SMC_DRAM_BANK_INFO (0xC200FF12) + +typedef struct { + UINTN BaseAddress; + UINTN Size; +} DRAM_REGION_INFO; + +#endif + diff --git a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf b/Silic= on/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf index a5bd39415d..9adddcaf8c 100644 --- a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf +++ b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf @@ -33,6 +33,7 @@ DebugLib HobLib PcdLib + ArmSmcLib =20 [Guids] gEfiMemoryTypeInformationGuid @@ -40,6 +41,13 @@ [FeaturePcd] gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob =20 +[FixedPcd] + gArmTokenSpaceGuid.PcdFdBaseAddress + gArmTokenSpaceGuid.PcdFdSize + gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemSize + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemAlignment + [Pcd] gArmTokenSpaceGuid.PcdSystemMemoryBase gArmTokenSpaceGuid.PcdSystemMemorySize diff --git a/Silicon/NXP/Library/SocLib/Chassis.c b/Silicon/NXP/Library/Soc= Lib/Chassis.c index 847331a631..1ef99e8de2 100644 --- a/Silicon/NXP/Library/SocLib/Chassis.c +++ b/Silicon/NXP/Library/SocLib/Chassis.c @@ -22,7 +22,6 @@ #include #include =20 -#include #include "NxpChassis.h" =20 UINT32 @@ -75,69 +74,3 @@ SmmuInit ( MmioWrite32 ((UINTN)SMMU_REG_NSCR0, Value); } =20 -UINTN -GetDramSize ( - IN VOID - ) -{ - ARM_SMC_ARGS ArmSmcArgs; - - ArmSmcArgs.Arg0 =3D SMC_DRAM_BANK_INFO; - ArmSmcArgs.Arg1 =3D -1; - - ArmCallSmc (&ArmSmcArgs); - - if (ArmSmcArgs.Arg0) { - return 0; - } else { - return ArmSmcArgs.Arg1; - } -} - -EFI_STATUS -GetDramBankInfo ( - IN OUT DRAM_INFO *DramInfo - ) -{ - ARM_SMC_ARGS ArmSmcArgs; - UINT32 I; - UINTN DramSize; - - DramSize =3D GetDramSize (); - DEBUG ((DEBUG_INFO, "DRAM Total Size 0x%lx \n", DramSize)); - - // Ensure DramSize has been set - ASSERT (DramSize !=3D 0); - - I =3D 0; - - do { - ArmSmcArgs.Arg0 =3D SMC_DRAM_BANK_INFO; - ArmSmcArgs.Arg1 =3D I; - - ArmCallSmc (&ArmSmcArgs); - if (ArmSmcArgs.Arg0) { - if (I > 0) { - break; - } else { - ASSERT (ArmSmcArgs.Arg0 =3D=3D 0); - } - } - - DramInfo->DramRegion[I].BaseAddress =3D ArmSmcArgs.Arg1; - DramInfo->DramRegion[I].Size =3D ArmSmcArgs.Arg2; - - DramSize -=3D DramInfo->DramRegion[I].Size; - - DEBUG ((DEBUG_INFO, "bank[%d]: start 0x%lx, size 0x%lx\n", - I, DramInfo->DramRegion[I].BaseAddress, DramInfo->DramRegion[I].Size= )); - - I++; - } while (DramSize); - - DramInfo->NumOfDrams =3D I; - - DEBUG ((DEBUG_INFO, "Number Of DRAM in system %d \n", DramInfo->NumOfDra= ms)); - - return EFI_SUCCESS; -} diff --git a/Silicon/NXP/NxpQoriqLs.dec b/Silicon/NXP/NxpQoriqLs.dec index 4f14cc9848..c327e738cc 100644 --- a/Silicon/NXP/NxpQoriqLs.dec +++ b/Silicon/NXP/NxpQoriqLs.dec @@ -38,7 +38,10 @@ # gNxpQoriqLsTokenSpaceGuid.PcdGurBigEndian|FALSE|BOOLEAN|0x0000311 =20 + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemSize|0x0|UINT64|0x00000315 + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemAlignment|0x0|UINT64|0x00000316 + [PcdsFeatureFlag] - gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x00000315 - gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000316 + gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x00000317 + gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000318 =20 --=20 2.17.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 (#54019): https://edk2.groups.io/g/devel/message/54019 Mute This Topic: https://groups.io/mt/71046335/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-