audk/EmbeddedPkg/Include/Library/NorFlashInfoLib.h
Michael D Kinney 878b807a43 EmbeddedPkg: Replace BSD License with BSD+Patent License
https://bugzilla.tianocore.org/show_bug.cgi?id=1373

Replace BSD 2-Clause License with BSD+Patent License.  This change is
based on the following emails:

  https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html
  https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html

RFCs with detailed process for the license change:

  V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html
  V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html
  V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2019-04-09 10:57:58 -07:00

91 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