/** @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 |