aboutsummaryrefslogtreecommitdiffstats
path: root/roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h')
-rw-r--r--roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h b/roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h
new file mode 100644
index 000000000..e19039d87
--- /dev/null
+++ b/roms/edk2/EmbeddedPkg/Include/Library/NorFlashInfoLib.h
@@ -0,0 +1,90 @@
+/** @file
+*
+* Copyright (c) 2017 Marvell International Ltd.
+*
+* SPDX-License-Identifier: BSD-2-Clause-Patent
+*
+**/
+
+#ifndef __NOR_FLASH_ID_LIB_H__
+#define __NOR_FLASH_ID_LIB_H__
+
+#include <Uefi/UefiBaseType.h>
+
+#define NOR_FLASH_MAX_ID_LEN 6
+
+typedef struct {
+ /* Device name */
+ UINT16 *Name;
+
+ /*
+ * JEDEC ID
+ */
+ UINT8 Id[NOR_FLASH_MAX_ID_LEN];
+ UINT8 IdLen;
+
+ UINT16 PageSize;
+
+ /*
+ * Below parameters can be referred as BlockSize
+ * and BlockCount, when treating the NorFlash as
+ * block device.
+ */
+ UINT32 SectorSize;
+ UINT32 SectorCount;
+
+ UINT16 Flags;
+#define NOR_FLASH_ERASE_4K (1 << 0) /* Use 4 KB erase blocks and CMD_ERASE_4K */
+#define NOR_FLASH_ERASE_32K (1 << 1) /* Use 32 KB erase blocks and CMD_ERASE_32K */
+#define NOR_FLASH_WRITE_FSR (1 << 2) /* Use flag status register for write */
+#define NOR_FLASH_4B_ADDR (1 << 3) /* Use 4B addressing */
+} NOR_FLASH_INFO;
+
+/* Vendor IDs */
+#define NOR_FLASH_ID_ATMEL 0x1f
+#define NOR_FLASH_ID_EON 0x1c
+#define NOR_FLASH_ID_GIGADEVICE 0xc8
+#define NOR_FLASH_ID_ISSI 0x9d
+#define NOR_FLASH_ID_MACRONIX 0xc2
+#define NOR_FLASH_ID_SPANSION 0x01
+#define NOR_FLASH_ID_STMICRO 0x20
+#define NOR_FLASH_ID_SST 0xbf
+#define NOR_FLASH_ID_WINDBOND 0xef
+
+/**
+ Return an allocated copy pool of the NOR flash information structure.
+
+ @param[in] Id Pointer to an array with JEDEC ID obtained
+ from the NOR flash with READ_ID command
+ (0x9f)
+ @param[in out] FlashInfo Pointer to NOR flash information structure
+ @param[in] AllocateForRuntime A flag specifying a type of a copy pool
+ allocation (TRUE for runtime, FALSE for
+ normal)
+
+ @retval EFI_SUCCESS Operation completed successfully
+ @retval EFI_NOT_FOUND No matching entry in NOR ID table found
+ @retval EFI_OUT_OF_RESOURCES No pool memory available
+
+**/
+EFI_STATUS
+EFIAPI
+NorFlashGetInfo (
+ IN UINT8 *Id,
+ IN OUT NOR_FLASH_INFO **FlashInfo,
+ IN BOOLEAN AllocateForRuntime
+ );
+
+/**
+ Print NOR flash information basing on data stored in
+ the NOR_FLASH_INFO structure.
+
+ @param[in] FlashInfo Pointer to NOR flash information structure
+
+**/
+VOID
+EFIAPI
+NorFlashPrintInfo (
+ IN NOR_FLASH_INFO *Info
+ );
+#endif