blob: eabbaf9976cca4b2ef5124c722ecdacfbbc203a2 [file] [log] [blame]
Patrick Williams8e7b46e2023-05-01 14:19:06 -05001From 70e79ba5300f01a13422452c29e26c69042a0c8c Mon Sep 17 00:00:00 2001
2From: sahil <sahil@arm.com>
3Date: Mon, 2 May 2022 18:50:08 +0530
4Subject: [PATCH] Platform/ARM/N1Sdp: NOR flash library for N1Sdp
5
6Add NOR flash library, this library provides APIs for getting the list
7of NOR flash devices on the platform.
8
9Upstream-Status: Pending
10Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
11Signed-off-by: sahil <sahil@arm.com>
12Change-Id: I39ad4143b7fad7e33b3b151a019a74f23e0ed441
13---
14 .../Library/NorFlashLib/NorFlashLib.c | 52 +++++++++++++++++++
15 .../Library/NorFlashLib/NorFlashLib.inf | 36 +++++++++++++
16 2 files changed, 88 insertions(+)
17 create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
18 create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
19
20diff --git a/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
21new file mode 100644
22index 00000000..eee3d1c6
23--- /dev/null
24+++ b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
25@@ -0,0 +1,52 @@
26+/** @file
27+ NOR flash lib for N1Sdp
28+
29+ Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
30+
31+ SPDX-License-Identifier: BSD-2-Clause-Patent
32+
33+**/
34+
35+#include <Library/DebugLib.h>
36+#include <Library/IoLib.h>
37+#include <Library/NorFlashPlatformLib.h>
38+#include <NeoverseN1Soc.h>
39+#include <PiDxe.h>
40+
41+#define FW_ENV_REGION_BASE FixedPcdGet32 (PcdFlashNvStorageVariableBase)
42+#define FW_ENV_REGION_SIZE (FixedPcdGet32 (PcdFlashNvStorageVariableSize) + \
43+ FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \
44+ FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
45+
46+STATIC NOR_FLASH_DESCRIPTION mNorFlashDevices[] = {
47+ {
48+ /// Environment variable region
49+ NEOVERSEN1SOC_SCP_QSPI_AHB_BASE, ///< device base
50+ FW_ENV_REGION_BASE, ///< region base
51+ FW_ENV_REGION_SIZE, ///< region size
52+ SIZE_4KB, ///< block size
53+ },
54+};
55+
56+/**
57+ Get NOR flash region info
58+
59+ @param[out] NorFlashDevices NOR flash regions info.
60+ @param[out] Count number of flash instance.
61+
62+ @retval EFI_SUCCESS Success.
63+**/
64+EFI_STATUS
65+NorFlashPlatformGetDevices (
66+ OUT NOR_FLASH_DESCRIPTION **NorFlashDevices,
67+ OUT UINT32 *Count
68+ )
69+{
70+ if ((NorFlashDevices == NULL) || (Count == NULL)) {
71+ return EFI_INVALID_PARAMETER;
72+ }
73+
74+ *NorFlashDevices = mNorFlashDevices;
75+ *Count = ARRAY_SIZE (mNorFlashDevices);
76+ return EFI_SUCCESS;
77+}
78diff --git a/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
79new file mode 100644
80index 00000000..784856c8
81--- /dev/null
82+++ b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
83@@ -0,0 +1,36 @@
84+## @file
85+# NOR flash lib for N1Sdp
86+#
87+# Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
88+#
89+# SPDX-License-Identifier: BSD-2-Clause-Patent
90+#
91+##
92+
93+[Defines]
94+ INF_VERSION = 0x0001001B
95+ BASE_NAME = NorFlashN1SdpLib
96+ FILE_GUID = 7006fcf1-a585-4272-92e3-b286b1dff5bb
97+ MODULE_TYPE = DXE_DRIVER
98+ VERSION_STRING = 1.0
99+ LIBRARY_CLASS = NorFlashPlatformLib
100+
101+[Sources.common]
102+ NorFlashLib.c
103+
104+[Packages]
105+ MdeModulePkg/MdeModulePkg.dec
106+ MdePkg/MdePkg.dec
107+ Platform/ARM/ARM.dec
108+ Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
109+
110+[LibraryClasses]
111+ BaseLib
112+ DebugLib
113+ IoLib
114+
115+[FixedPcd]
116+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
117+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
118+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
119+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize