audk/EmbeddedPkg/Include/Library/NorFlashInfoLib.h

92 lines
2.5 KiB
C

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