mirror of https://github.com/acidanthera/audk.git
105 lines
3.4 KiB
C
105 lines
3.4 KiB
C
/** @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
|