MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LegacySpiFlash.h File Reference

Data Structures

struct  _EFI_LEGACY_SPI_FLASH_PROTOCOL
 

Macros

#define EFI_LEGACY_SPI_FLASH_PROTOCOL_GUID
 

Typedefs

typedef struct
_EFI_LEGACY_SPI_FLASH_PROTOCOL 
EFI_LEGACY_SPI_FLASH_PROTOCOL
 
typedef IN UINT32 BiosBaseAddress
 
typedef IN UINT32 BiosAddress
 
typedef IN UINT32 IN UINT32 BlocksToProtect
 

Functions

typedef EFI_STATUS (EFIAPI *EFI_LEGACY_SPI_FLASH_PROTOCOL_BIOS_BASE_ADDRESS)(IN CONST EFI_LEGACY_SPI_FLASH_PROTOCOL *This
 
typedef BOOLEAN (EFIAPI *EFI_LEGACY_SPI_FLASH_PROTOCOL_IS_RANGE_PROTECTED)(IN CONST EFI_LEGACY_SPI_FLASH_PROTOCOL *This
 

Variables

EFI_GUID gEfiLegacySpiFlashProtocolGuid
 

Detailed Description

This file defines the Legacy SPI Flash Protocol.

Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
This Protocol was introduced in UEFI PI Specification 1.6.

Macro Definition Documentation

#define EFI_LEGACY_SPI_FLASH_PROTOCOL_GUID
Value:
{ 0xf01bed57, 0x04bc, 0x4f3f, \
{ 0x96, 0x60, 0xd6, 0xf2, 0xea, 0x22, 0x82, 0x59 }}

Global ID for the Legacy SPI Flash Protocol

Typedef Documentation

Function Documentation

typedef BOOLEAN ( EFIAPI EFI_LEGACY_SPI_FLASH_PROTOCOL_IS_RANGE_PROTECTED)

Determine if the SPI range is protected.

This routine must be called at or below TPL_NOTIFY. The BIOS uses this routine to verify a range in the SPI is protected.

Parameters
[in]ThisPointer to an EFI_LEGACY_SPI_FLASH_PROTOCOL data structure.
[in]BiosAddressAddress within a 4 KiB block to start protecting.
[in]BlocksToProtectThe number of 4 KiB blocks to protect.
Return values
TRUEThe range is protected
FALSEThe range is not protected
typedef EFI_STATUS ( EFIAPI EFI_LEGACY_SPI_FLASH_PROTOCOL_BIOS_BASE_ADDRESS)

Set the BIOS base address.

This routine must be called at or below TPL_NOTIFY. The BIOS base address works with the protect range registers to protect portions of the SPI NOR flash from erase and write operat ions. The BIOS calls this API prior to passing control to the OS loader.

Parameters
[in]ThisPointer to an EFI_LEGACY_SPI_FLASH_PROTOCOL data structure.
[in]BiosBaseAddressThe BIOS base address.
Return values
EFI_SUCCESSThe BIOS base address was properly set
EFI_ACCESS_ERRORThe SPI controller is locked
EFI_INVALID_PARAMETERBiosBaseAddress > This->MaximumOffset
EFI_UNSUPPORTEDThe BIOS base address was already set or not a legacy SPI host controller

Clear the SPI protect range registers.

This routine must be called at or below TPL_NOTIFY. The BIOS uses this routine to set an initial condition on the SPI protect range registers.

Parameters
[in]ThisPointer to an EFI_LEGACY_SPI_FLASH_PROTOCOL data structure.
Return values
EFI_SUCCESSThe registers were successfully cleared
EFI_ACCESS_ERRORThe SPI controller is locked
EFI_UNSUPPORTEDNot a legacy SPI host controller

Set the next protect range register.

This routine must be called at or below TPL_NOTIFY. The BIOS sets the protect range register to prevent write and erase operations to a portion of the SPI NOR flash device.

Parameters
[in]ThisPointer to an EFI_LEGACY_SPI_FLASH_PROTOCOL data structure.
[in]BiosAddressAddress within a 4 KiB block to start protecting.
[in]BlocksToProtectThe number of 4 KiB blocks to protect.
Return values
EFI_SUCCESSThe register was successfully updated
EFI_ACCESS_ERRORThe SPI controller is locked
EFI_INVALID_PARAMETERBiosAddress < This->BiosBaseAddress, or
EFI_INVALID_PARAMETERBlocksToProtect * 4 KiB > This->MaximumRangeBytes, or BiosAddress - This->BiosBaseAddress
  • (BlocksToProtect * 4 KiB) > This->MaximumRangeBytes
EFI_OUT_OF_RESOURCESNo protect range register available
EFI_UNSUPPORTEDCall This->SetBaseAddress because the BIOS base address is not set Not a legacy SPI host controller

Lock the SPI controller configuration.

This routine must be called at or below TPL_NOTIFY. This routine locks the SPI controller's configuration so that the software is no longer able to update: Prefix table Opcode menu Opcode type table BIOS base address Protect range registers

Parameters
[in]ThisPointer to an EFI_LEGACY_SPI_FLASH_PROTOCOL data structure.
Return values
EFI_SUCCESSThe SPI controller was successfully locked
EFI_ALREADY_STARTEDThe SPI controller was already locked
EFI_UNSUPPORTEDNot a legacy SPI host controller

Variable Documentation

EFI_GUID gEfiLegacySpiFlashProtocolGuid