/** @file | |
Flash device library class header file. | |
Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef FLASHDEVICE_LIB_H_ | |
#define FLASHDEVICE_LIB_H_ | |
/** | |
Read NumBytes bytes of data from the address specified by | |
PAddress into Buffer. | |
@param[in] PAddress The starting physical address of the read. | |
@param[in,out] NumBytes On input, the number of bytes to read. On output, the number | |
of bytes actually read. | |
@param[out] Buffer The destination data buffer for the read. | |
@retval EFI_SUCCESS. Opertion is successful. | |
@retval EFI_DEVICE_ERROR If there is any device errors. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
LibFvbFlashDeviceRead ( | |
IN UINTN PAddress, | |
IN OUT UINTN *NumBytes, | |
OUT UINT8 *Buffer | |
); | |
/** | |
Write NumBytes bytes of data from Buffer to the address specified by | |
PAddresss. | |
@param[in] PAddress The starting physical address of the write. | |
@param[in,out] NumBytes On input, the number of bytes to write. On output, | |
the actual number of bytes written. | |
@param[in] Buffer The source data buffer for the write. | |
@retval EFI_SUCCESS. Opertion is successful. | |
@retval EFI_DEVICE_ERROR If there is any device errors. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
LibFvbFlashDeviceWrite ( | |
IN UINTN PAddress, | |
IN OUT UINTN *NumBytes, | |
IN UINT8 *Buffer | |
); | |
/** | |
Erase the block starting at PAddress. | |
@param[in] PAddress The starting physical address of the region to be erased. | |
@param[in] LbaLength The length of the region to be erased. This parameter is necessary | |
as the physical block size on a flash device could be different than | |
the logical block size of Firmware Volume Block protocol. Erase on | |
flash chip is always performed block by block. Therefore, the ERASE | |
operation to a logical block is converted a number of ERASE operation | |
(or a partial erase) on the hardware. | |
@retval EFI_SUCCESS. Opertion is successful. | |
@retval EFI_DEVICE_ERROR If there is any device errors. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
LibFvbFlashDeviceBlockErase ( | |
IN UINTN PAddress, | |
IN UINTN LbaLength | |
); | |
/** | |
Lock or unlock the block starting at PAddress. | |
@param[in] PAddress The starting physical address of region to be (un)locked. | |
@param[in] LbaLength The length of the region to be (un)locked. This parameter is necessary | |
as the physical block size on a flash device could be different than | |
the logical block size of Firmware Volume Block protocol. (Un)Lock on | |
flash chip is always performed block by block. Therefore, the (Un)Lock | |
operation to a logical block is converted a number of (Un)Lock operation | |
(or a partial erase) on the hardware. | |
@param[in] Lock TRUE to lock. FALSE to unlock. | |
@retval EFI_SUCCESS. Opertion is successful. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
LibFvbFlashDeviceBlockLock ( | |
IN UINTN PAddress, | |
IN UINTN LbaLength, | |
IN BOOLEAN Lock | |
); | |
PHYSICAL_ADDRESS | |
EFIAPI | |
LibFvbFlashDeviceMemoryMap ( | |
); | |
#endif |