/** @file * * Copyright (c) 2017 Marvell International Ltd. * * This program and the accompanying materials * are licensed and made available under the terms and conditions of the BSD License * which accompanies this distribution. The full text of the license may be found at * http://opensource.org/licenses/bsd-license.php * * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. * **/ #ifndef __NOR_FLASH_ID_LIB_H__ #define __NOR_FLASH_ID_LIB_H__ #include #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