TianoCore EDK2 master
|
#include <Uefi.h>
#include <Protocol/ScsiIo.h>
#include <Protocol/ComponentName.h>
#include <Protocol/BlockIo.h>
#include <Protocol/BlockIo2.h>
#include <Protocol/EraseBlock.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/ScsiPassThruExt.h>
#include <Protocol/ScsiPassThru.h>
#include <Protocol/DiskInfo.h>
#include <Protocol/StorageSecurityCommand.h>
#include <Library/DebugLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/UefiLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiScsiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DevicePathLib.h>
#include <Library/PrintLib.h>
#include <IndustryStandard/Scsi.h>
#include <IndustryStandard/Atapi.h>
Go to the source code of this file.
Data Structures | |
struct | SCSI_UNMAP_PARAM_INFO |
struct | SCSI_DISK_DEV |
struct | SCSI_BLKIO2_REQUEST |
struct | SCSI_ASYNC_RW_REQUEST |
struct | SCSI_ERASEBLK_REQUEST |
Functions | |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingStop (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskComponentNameGetDriverName (IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName) |
EFI_STATUS EFIAPI | ScsiDiskComponentNameGetControllerName (IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName) |
EFI_STATUS EFIAPI | ScsiDiskReset (IN EFI_BLOCK_IO_PROTOCOL *This, IN BOOLEAN ExtendedVerification) |
EFI_STATUS EFIAPI | ScsiDiskReadBlocks (IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, OUT VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskWriteBlocks (IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, IN VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskFlushBlocks (IN EFI_BLOCK_IO_PROTOCOL *This) |
EFI_STATUS EFIAPI | ScsiDiskResetEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN BOOLEAN ExtendedVerification) |
EFI_STATUS EFIAPI | ScsiDiskReadBlocksEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, OUT VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskWriteBlocksEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, IN VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskFlushBlocksEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN OUT EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS EFIAPI | ScsiDiskEraseBlocks (IN EFI_ERASE_BLOCK_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN OUT EFI_ERASE_BLOCK_TOKEN *Token, IN UINTN Size) |
EFI_STATUS EFIAPI | ScsiDiskReceiveData (IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This, IN UINT32 MediaId OPTIONAL, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, OUT VOID *PayloadBuffer, OUT UINTN *PayloadTransferSize) |
EFI_STATUS EFIAPI | ScsiDiskSendData (IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This, IN UINT32 MediaId OPTIONAL, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, OUT VOID *PayloadBuffer) |
EFI_STATUS EFIAPI | ScsiDiskInfoInquiry (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *InquiryData, IN OUT UINT32 *InquiryDataSize) |
EFI_STATUS EFIAPI | ScsiDiskInfoIdentify (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *IdentifyData, IN OUT UINT32 *IdentifyDataSize) |
EFI_STATUS EFIAPI | ScsiDiskInfoSenseData (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *SenseData, IN OUT UINT32 *SenseDataSize, OUT UINT8 *SenseDataNumber) |
EFI_STATUS EFIAPI | ScsiDiskInfoWhichIde (IN EFI_DISK_INFO_PROTOCOL *This, OUT UINT32 *IdeChannel, OUT UINT32 *IdeDevice) |
EFI_STATUS | ScsiDiskDetectMedia (IN SCSI_DISK_DEV *ScsiDiskDevice, IN BOOLEAN MustReadCapacity, OUT BOOLEAN *MediaChange) |
EFI_STATUS | ScsiDiskTestUnitReady (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys) |
EFI_STATUS | DetectMediaParsingSenseKeys (OUT SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN NumberOfSenseKeys, OUT UINTN *Action) |
EFI_STATUS | ScsiDiskReadCapacity (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys) |
EFI_STATUS | CheckHostAdapterStatus (IN UINT8 HostAdapterStatus) |
EFI_STATUS | CheckTargetStatus (IN UINT8 TargetStatus) |
EFI_STATUS | ScsiDiskRequestSenseKeys (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys, IN BOOLEAN AskResetIfError) |
EFI_STATUS | ScsiDiskInquiryDevice (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry) |
VOID | ParseInquiryData (IN OUT SCSI_DISK_DEV *ScsiDiskDevice) |
EFI_STATUS | ScsiDiskReadSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks) |
EFI_STATUS | ScsiDiskWriteSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, IN VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks) |
EFI_STATUS | ScsiDiskAsyncReadSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWriteSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, IN VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskRead10 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, OUT UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskWrite10 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, IN UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskRead16 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, OUT UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskWrite16 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, IN UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskAsyncRead10 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, OUT UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT32 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWrite10 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, IN UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT32 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncRead16 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, OUT UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT64 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWrite16 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, IN UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT64 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
VOID | GetMediaInfo (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_SCSI_DISK_CAPACITY_DATA *Capacity10, IN EFI_SCSI_DISK_CAPACITY_DATA16 *Capacity16) |
BOOLEAN | ScsiDiskIsNoMedia (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsMediaError (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsHardwareError (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsMediaChange (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsResetBefore (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsDriveReady (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts, OUT BOOLEAN *RetryLater) |
BOOLEAN | ScsiDiskHaveSenseKey (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
VOID | ReleaseScsiDiskDeviceResources (IN SCSI_DISK_DEV *ScsiDiskDevice) |
BOOLEAN | DetermineInstallBlockIo (IN EFI_HANDLE ChildHandle) |
VOID | InitializeInstallDiskInfo (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
VOID *EFIAPI | GetParentProtocol (IN EFI_GUID *ProtocolGuid, IN EFI_HANDLE ChildHandle) |
BOOLEAN | DetermineInstallEraseBlock (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
BOOLEAN | DetermineInstallStorageSecurity (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
Variables | |
EFI_DRIVER_BINDING_PROTOCOL | gScsiDiskDriverBinding |
EFI_COMPONENT_NAME_PROTOCOL | gScsiDiskComponentName |
EFI_COMPONENT_NAME2_PROTOCOL | gScsiDiskComponentName2 |
Header file for SCSI Disk Driver.
Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.
Copyright (c) 1985 - 2022, American Megatrends International LLC.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file ScsiDisk.h.
#define ACTION_NO_ACTION 0x00 |
Definition at line 173 of file ScsiDisk.h.
#define ACTION_READ_CAPACITY 0x01 |
Definition at line 174 of file ScsiDisk.h.
#define ACTION_RETRY_COMMAND_LATER 0x02 |
Definition at line 175 of file ScsiDisk.h.
#define ACTION_RETRY_WITH_BACKOFF_ALGO 0x03 |
Definition at line 176 of file ScsiDisk.h.
#define IS_DEVICE_FIXED | ( | a | ) | (a)->FixedDevice ? 1 : 0 |
Definition at line 39 of file ScsiDisk.h.
#define PRODUCT_IDENTIFICATION_LENGTH 16 |
Definition at line 187 of file ScsiDisk.h.
#define PRODUCT_IDENTIFICATION_OFFSET 11 |
Definition at line 186 of file ScsiDisk.h.
#define SCSI_COMMAND_VERSION_1 0x01 |
Definition at line 178 of file ScsiDisk.h.
#define SCSI_COMMAND_VERSION_2 0x02 |
Definition at line 179 of file ScsiDisk.h.
#define SCSI_COMMAND_VERSION_3 0x03 |
Definition at line 180 of file ScsiDisk.h.
#define SCSI_DISK_DEV_FROM_BLKIO | ( | a | ) | CR (a, SCSI_DISK_DEV, BlkIo, SCSI_DISK_DEV_SIGNATURE) |
Definition at line 99 of file ScsiDisk.h.
#define SCSI_DISK_DEV_FROM_BLKIO2 | ( | a | ) | CR (a, SCSI_DISK_DEV, BlkIo2, SCSI_DISK_DEV_SIGNATURE) |
Definition at line 100 of file ScsiDisk.h.
#define SCSI_DISK_DEV_FROM_DISKINFO | ( | a | ) | CR (a, SCSI_DISK_DEV, DiskInfo, SCSI_DISK_DEV_SIGNATURE) |
Definition at line 104 of file ScsiDisk.h.
#define SCSI_DISK_DEV_FROM_ERASEBLK | ( | a | ) | CR (a, SCSI_DISK_DEV, EraseBlock, SCSI_DISK_DEV_SIGNATURE) |
Definition at line 101 of file ScsiDisk.h.
#define SCSI_DISK_DEV_FROM_STORSEC | ( | a | ) | CR (a, SCSI_DISK_DEV, StorageSecurity, SCSI_DISK_DEV_SIGNATURE) |
Definition at line 102 of file ScsiDisk.h.
#define SCSI_DISK_DEV_SIGNATURE SIGNATURE_32 ('s', 'c', 'd', 'k') |
Definition at line 49 of file ScsiDisk.h.
#define SCSI_DISK_TIMEOUT EFI_TIMER_PERIOD_SECONDS (30) |
Definition at line 196 of file ScsiDisk.h.
#define UFS_WLUN_RPMB 0xC4 |
Definition at line 41 of file ScsiDisk.h.
#define VENDOR_IDENTIFICATION_LENGTH 8 |
Definition at line 185 of file ScsiDisk.h.
#define VENDOR_IDENTIFICATION_OFFSET 3 |
Definition at line 184 of file ScsiDisk.h.
EFI_STATUS CheckHostAdapterStatus | ( | IN UINT8 | HostAdapterStatus | ) |
Check the HostAdapter status and re-interpret it in EFI_STATUS.
HostAdapterStatus | Host Adapter status |
EFI_SUCCESS | Host adapter is OK. |
EFI_TIMEOUT | Timeout. |
EFI_NOT_READY | Adapter NOT ready. |
EFI_DEVICE_ERROR | Adapter device error. |
Definition at line 3194 of file ScsiDisk.c.
EFI_STATUS CheckTargetStatus | ( | IN UINT8 | TargetStatus | ) |
Check the target status and re-interpret it in EFI_STATUS.
TargetStatus | Target status |
EFI_NOT_READY | Device is NOT ready. |
EFI_DEVICE_ERROR | |
EFI_SUCCESS |
Definition at line 3234 of file ScsiDisk.c.
EFI_STATUS DetectMediaParsingSenseKeys | ( | OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_SCSI_SENSE_DATA * | SenseData, | ||
IN UINTN | NumberOfSenseKeys, | ||
OUT UINTN * | Action | ||
) |
Parsing Sense Keys which got from request sense command.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
NumberOfSenseKeys | The number of sense key |
Action | The pointer of action which indicates what is need to do next |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to complete the parsing |
Definition at line 2923 of file ScsiDisk.c.
BOOLEAN DetermineInstallBlockIo | ( | IN EFI_HANDLE | ChildHandle | ) |
Determine if Block Io should be produced.
ChildHandle | Child Handle to retrieve Parent information. |
TRUE | Should produce Block Io. |
FALSE | Should not produce Block Io. |
Determine if Block Io & Block Io2 should be produced.
ChildHandle | Child Handle to retrieve Parent information. |
TRUE | Should produce Block Io & Block Io2. |
FALSE | Should not produce Block Io & Block Io2. |
Definition at line 5850 of file ScsiDisk.c.
BOOLEAN DetermineInstallEraseBlock | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Determine if EFI Erase Block Protocol should be produced.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Handle of device. |
TRUE | Should produce EFI Erase Block Protocol. |
FALSE | Should not produce EFI Erase Block Protocol. |
Definition at line 5951 of file ScsiDisk.c.
BOOLEAN DetermineInstallStorageSecurity | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Determine if EFI Storage Security Command Protocol should be produced.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Handle of device. |
TRUE | Should produce EFI Storage Security Command Protocol. |
FALSE | Should not produce EFI Storage Security Command Protocol. |
Definition at line 6096 of file ScsiDisk.c.
VOID GetMediaInfo | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_SCSI_DISK_CAPACITY_DATA * | Capacity10, | ||
IN EFI_SCSI_DISK_CAPACITY_DATA16 * | Capacity16 | ||
) |
Get information from media read capacity command.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Capacity10 | The pointer of EFI_SCSI_DISK_CAPACITY_DATA |
Capacity16 | The pointer of EFI_SCSI_DISK_CAPACITY_DATA16 |
Definition at line 3373 of file ScsiDisk.c.
VOID *EFIAPI GetParentProtocol | ( | IN EFI_GUID * | ProtocolGuid, |
IN EFI_HANDLE | ChildHandle | ||
) |
Search protocol database and check to see if the protocol specified by ProtocolGuid is present on a ControllerHandle and opened by ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER. If the ControllerHandle is found, then the protocol specified by ProtocolGuid will be opened on it.
ProtocolGuid | ProtocolGuid pointer. |
ChildHandle | Child Handle to retrieve Parent information. |
Definition at line 5896 of file ScsiDisk.c.
VOID InitializeInstallDiskInfo | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Initialize the installation of DiskInfo protocol.
This function prepares for the installation of DiskInfo protocol on the child handle. By default, it installs DiskInfo protocol with SCSI interface GUID. If it further detects that the physical device is an ATAPI/AHCI device, it then updates interface GUID to be IDE/AHCI interface GUID.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Child handle to install DiskInfo protocol. |
Definition at line 6347 of file ScsiDisk.c.
VOID ParseInquiryData | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice | ) |
Parse Inquiry data.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Definition at line 3434 of file ScsiDisk.c.
VOID ReleaseScsiDiskDeviceResources | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice | ) |
Release resource about disk device.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Definition at line 5816 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncRead10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
OUT UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Read(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer to fill with the read out data. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to read. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5006 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncRead16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
OUT UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Read(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer to fill with the read out data. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to read. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5242 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncReadSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Asynchronously read sector from SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
Buffer | The buffer to fill in the read out data. |
Lba | Logic block address. |
NumberOfBlocks | The number of blocks to read. |
Token | A pointer to the token associated with the non-blocking read request. |
EFI_INVALID_PARAMETER | Token is NULL or Token->Event is NULL. |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3787 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWrite10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
IN UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Write(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer contains the data to write. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to write. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5124 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWrite16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
IN UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Write(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer contains the data to write. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to write. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5360 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWriteSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Asynchronously write sector to SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
Buffer | The buffer of data to be written into SCSI Disk. |
Lba | Logic block address. |
NumberOfBlocks | The number of blocks to read. |
Token | A pointer to the token associated with the non-blocking read request. |
EFI_INVALID_PARAMETER | Token is NULL or Token->Event is NULL |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 4005 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskComponentNameGetControllerName | ( | IN EFI_COMPONENT_NAME_PROTOCOL * | This, |
IN EFI_HANDLE | ControllerHandle, | ||
IN EFI_HANDLE ChildHandle | OPTIONAL, | ||
IN CHAR8 * | Language, | ||
OUT CHAR16 ** | ControllerName | ||
) |
Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver.
This function retrieves the user readable name of the controller specified by ControllerHandle and ChildHandle in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the controller name is returned in ControllerName, and EFI_SUCCESS is returned. If the driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle, then EFI_UNSUPPORTED is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.
This | A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. |
ControllerHandle | The handle of a controller that the driver specified by This is managing. This handle specifies the controller whose name is to be returned. |
ChildHandle | The handle of the child controller to retrieve the name of. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for a bus drivers that wish to retrieve the name of the bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller. |
Language | A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. |
ControllerName | A pointer to the Unicode string to return. This Unicode string is the name of the controller specified by ControllerHandle and ChildHandle in the language specified by Language from the point of view of the driver specified by This. |
EFI_SUCCESS | The Unicode string for the user readable name in the language specified by Language for the driver specified by This was returned in DriverName. |
EFI_INVALID_PARAMETER | ControllerHandle is NULL. |
EFI_INVALID_PARAMETER | ChildHandle is not NULL and it is not a valid EFI_HANDLE. |
EFI_INVALID_PARAMETER | Language is NULL. |
EFI_INVALID_PARAMETER | ControllerName is NULL. |
EFI_UNSUPPORTED | The driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle. |
EFI_UNSUPPORTED | The driver specified by This does not support the language specified by Language. |
Definition at line 160 of file ComponentName.c.
EFI_STATUS EFIAPI ScsiDiskComponentNameGetDriverName | ( | IN EFI_COMPONENT_NAME_PROTOCOL * | This, |
IN CHAR8 * | Language, | ||
OUT CHAR16 ** | DriverName | ||
) |
Retrieves a Unicode string that is the user readable name of the driver.
This function retrieves the user readable name of a driver in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the driver name is returned in DriverName, and EFI_SUCCESS is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.
This | A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. |
Language | A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. |
DriverName | A pointer to the Unicode string to return. This Unicode string is the name of the driver specified by This in the language specified by Language. |
EFI_SUCCESS | The Unicode string for the Driver specified by This and the language specified by Language was returned in DriverName. |
EFI_INVALID_PARAMETER | Language is NULL. |
EFI_INVALID_PARAMETER | DriverName is NULL. |
EFI_UNSUPPORTED | The driver specified by This does not support the language specified by Language. |
Definition at line 75 of file ComponentName.c.
EFI_STATUS ScsiDiskDetectMedia | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN BOOLEAN | MustReadCapacity, | ||
OUT BOOLEAN * | MediaChange | ||
) |
Detect Device and read out capacity ,if error occurs, parse the sense key.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
MustReadCapacity | The flag about reading device capacity |
MediaChange | The pointer of flag indicates if media has changed |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to detect media |
Definition at line 2319 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingStart | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Start this driver on ControllerHandle.
This service is called by the EFI boot service ConnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. ConnectController() must follow these calling restrictions. If any other agent wishes to call Start() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to bind driver to |
RemainingDevicePath | Optional parameter use to pick a specific child device to start. |
EFI_SUCCESS | This driver is added to ControllerHandle |
EFI_ALREADY_STARTED | This driver is already running on ControllerHandle |
other | This driver does not support this device |
Definition at line 220 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingStop | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN UINTN | NumberOfChildren, | ||
IN EFI_HANDLE *ChildHandleBuffer | OPTIONAL | ||
) |
Stop this driver on ControllerHandle.
This service is called by the EFI boot service DisconnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. DisconnectController() must follow these calling restrictions. If any other agent wishes to call Stop() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to stop driver on |
NumberOfChildren | Number of Handles in ChildHandleBuffer. If number of children is zero stop the entire bus driver. |
ChildHandleBuffer | List of Child Handles to Stop. |
EFI_SUCCESS | This driver is removed ControllerHandle |
other | This driver was not removed from this device |
Definition at line 458 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingSupported | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Test to see if this driver supports ControllerHandle.
This service is called by the EFI boot service ConnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. ConnectController() must follow these calling restrictions. If any other agent wishes to call Supported() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to test |
RemainingDevicePath | Optional parameter use to pick a specific child device to start. |
EFI_SUCCESS | This driver supports this device |
EFI_ALREADY_STARTED | This driver is already running on this device |
other | This driver does not support this device |
Definition at line 156 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskEraseBlocks | ( | IN EFI_ERASE_BLOCK_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN OUT EFI_ERASE_BLOCK_TOKEN * | Token, | ||
IN UINTN | Size | ||
) |
Erase a specified number of device blocks.
[in] | This | Indicates a pointer to the calling context. |
[in] | MediaId | The media ID that the erase request is for. |
[in] | Lba | The starting logical block address to be erased. The caller is responsible for erasing only legitimate locations. |
[in,out] | Token | A pointer to the token associated with the transaction. |
[in] | Size | The size in bytes to be erased. This must be a multiple of the physical block size of the device. |
EFI_SUCCESS | The erase request was queued if Event is not NULL. The data was erased correctly to the device if the Event is NULL.to the device. |
EFI_WRITE_PROTECTED | The device cannot be erased due to write protection. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the erase operation. |
EFI_INVALID_PARAMETER | The erase request contains LBAs that are not valid. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
Definition at line 1752 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskFlushBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This | ) |
Flush Block to Disk.
EFI_SUCCESS is returned directly.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
EFI_SUCCESS | All outstanding data was written to the device |
Definition at line 917 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskFlushBlocksEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN OUT EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Flush the Block Device.
This | Indicates a pointer to the calling context. |
Token | A pointer to the token associated with the transaction. |
EFI_SUCCESS | All outstanding data was written to the device. |
EFI_DEVICE_ERROR | The device reported an error while attempting to write data. |
EFI_WRITE_PROTECTED | The device cannot be written to. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
Definition at line 1363 of file ScsiDisk.c.
BOOLEAN ScsiDiskHaveSenseKey | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if it has sense key.
SenseData | - The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | - The number of sense key |
TRUE | It has sense key. |
FALSE | It has NOT any sense key. |
Definition at line 5776 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoIdentify | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | IdentifyData, | ||
IN OUT UINT32 * | IdentifyDataSize | ||
) |
Provides identify information for the controller type.
This function is used by the IDE bus driver to get identify data. Data format of Identify data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | IdentifyData | Pointer to a buffer for the identify data. |
[in,out] | IdentifyDataSize | Pointer to the value for the identify data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class |
EFI_DEVICE_ERROR | Error reading IdentifyData from device |
EFI_BUFFER_TOO_SMALL | IdentifyDataSize not big enough |
Definition at line 6205 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoInquiry | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | InquiryData, | ||
IN OUT UINT32 * | InquiryDataSize | ||
) |
Provides inquiry information for the controller type.
This function is used by the IDE bus driver to get inquiry data. Data format of Identify data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | InquiryData | Pointer to a buffer for the inquiry data. |
[in,out] | InquiryDataSize | Pointer to the value for the inquiry data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class |
EFI_DEVICE_ERROR | Error reading InquiryData from device |
EFI_BUFFER_TOO_SMALL | InquiryDataSize not big enough |
Definition at line 6164 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoSenseData | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | SenseData, | ||
IN OUT UINT32 * | SenseDataSize, | ||
OUT UINT8 * | SenseDataNumber | ||
) |
Provides sense data information for the controller type.
This function is used by the IDE bus driver to get sense data. Data format of Sense data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | SenseData | Pointer to the SenseData. |
[in,out] | SenseDataSize | Size of SenseData in bytes. |
[out] | SenseDataNumber | Pointer to the value for the sense data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class. |
EFI_DEVICE_ERROR | Error reading SenseData from device. |
EFI_BUFFER_TOO_SMALL | SenseDataSize not big enough. |
Definition at line 6252 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoWhichIde | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
OUT UINT32 * | IdeChannel, | ||
OUT UINT32 * | IdeDevice | ||
) |
This function is used by the IDE bus driver to get controller information.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[out] | IdeChannel | Pointer to the Ide Channel number. Primary or secondary. |
[out] | IdeDevice | Pointer to the Ide Device number. Master or slave. |
EFI_SUCCESS | IdeChannel and IdeDevice are valid. |
EFI_UNSUPPORTED | This is not an IDE device. |
Definition at line 6275 of file ScsiDisk.c.
EFI_STATUS ScsiDiskInquiryDevice | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry | ||
) |
Send out Inquiry command to Device.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | Indicates if needs try again when error happens |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to detect media |
Definition at line 2526 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsDriveReady | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts, | ||
OUT BOOLEAN * | RetryLater | ||
) |
Check sense key to find if the drive is ready.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
RetryLater | The flag means if need a retry |
TRUE | Drive is ready. |
FALSE | Drive is NOT ready. |
Definition at line 5706 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsHardwareError | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if hardware error happens.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Hardware error exits. |
FALSE | NO error. |
Definition at line 5589 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsMediaChange | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if media has changed.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Media is changed. |
FALSE | Media is NOT changed. |
Definition at line 5625 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsMediaError | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Parse sense key.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Error |
FALSE | NOT error |
Definition at line 5507 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsNoMedia | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if media presents.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | NOT any media |
FALSE | Media presents |
Definition at line 5467 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsResetBefore | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if reset happens.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | It is reset before. |
FALSE | It is NOT reset before. |
Definition at line 5665 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRead10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
OUT UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Read(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to read |
Definition at line 4221 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRead16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
OUT UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Read(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to read |
Definition at line 4469 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReadBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | BufferSize, | ||
OUT VOID * | Buffer | ||
) |
The function is to Read Block from SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected |
Lba | The logic block address |
BufferSize | The size of Buffer |
Buffer | The buffer to fill the read out data |
EFI_SUCCESS | Successfully to read out block. |
EFI_DEVICE_ERROR | Fail to detect media. |
EFI_NO_MEDIA | Media is not present. |
EFI_MEDIA_CHANGED | Media has changed. |
EFI_BAD_BUFFER_SIZE | The Buffer was not a multiple of the block size of the device. |
EFI_INVALID_PARAMETER | Invalid parameter passed in. |
Definition at line 616 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReadBlocksEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN OUT EFI_BLOCK_IO2_TOKEN * | Token, | ||
IN UINTN | BufferSize, | ||
OUT VOID * | Buffer | ||
) |
The function is to Read Block from SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected. |
Lba | The logic block address. |
Token | A pointer to the token associated with the transaction. |
BufferSize | The size of Buffer. |
Buffer | The buffer to fill the read out data. |
EFI_SUCCESS | The read request was queued if Token-> Event is not NULL. The data was read correctly from the device if theToken-> Event is NULL. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the read operation. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_BAD_BUFFER_SIZE | The BufferSize parameter is not a multiple of the intrinsic block size of the device. |
EFI_INVALID_PARAMETER | The read request contains LBAs that are not valid, or the buffer is not on proper alignment. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 1009 of file ScsiDisk.c.
EFI_STATUS ScsiDiskReadCapacity | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys | ||
) |
Send read capacity command to device and get the device parameter.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates if need a retry |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The number of sense key |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to read capacity |
Send read capacity command to device and get the device parameter.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates if need a retry |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The number of sense key |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to read capacity or sense data is received. |
Definition at line 3017 of file ScsiDisk.c.
EFI_STATUS ScsiDiskReadSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks | ||
) |
Read sector from SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Buffer | The buffer to fill in the read out data |
Lba | Logic block address |
NumberOfBlocks | The number of blocks to read |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3455 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReceiveData | ( | IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL * | This, |
IN UINT32 MediaId | OPTIONAL, | ||
IN UINT64 | Timeout, | ||
IN UINT8 | SecurityProtocolId, | ||
IN UINT16 | SecurityProtocolSpecificData, | ||
IN UINTN | PayloadBufferSize, | ||
OUT VOID * | PayloadBuffer, | ||
OUT UINTN * | PayloadTransferSize | ||
) |
Send a security protocol command to a device that receives data and/or the result of one or more commands sent by SendData.
The ReceiveData function sends a security protocol command to the given MediaId. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. The function returns the data from the security protocol command in PayloadBuffer.
For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL IN command defined in SPC-4.
If PayloadBufferSize is too small to store the available data from the security protocol command, the function shall copy PayloadBufferSize bytes into the PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL.
If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.
If the given MediaId does not support security protocol commands, the function shall return EFI_UNSUPPORTED. If there is no media in the device, the function returns EFI_NO_MEDIA. If the MediaId is not the ID for the current media in the device, the function returns EFI_MEDIA_CHANGED.
If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.
If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.
This | Indicates a pointer to the calling context. |
MediaId | ID of the medium to receive data from. If there is no block IO protocol supported by the physical device, the value of MediaId is undefined. |
Timeout | The timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout. |
SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
PayloadBufferSize | Size in bytes of the payload data buffer. |
PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. The caller is responsible for having either implicit or explicit ownership of the buffer. |
PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given MediaId does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Definition at line 1936 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRequestSenseKeys | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys, | ||
IN BOOLEAN | AskResetIfError | ||
) |
Retrieve all sense keys from the device.
When encountering error during the process, if retrieve sense keys before error encountered, it returns the sense keys with return status set to EFI_SUCCESS, and NeedRetry set to FALSE; otherwise, return the proper return status.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates if need a retry |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The number of sense key |
AskResetIfError | The flag indicates if need reset when error occurs |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to request sense key |
Definition at line 3276 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReset | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN BOOLEAN | ExtendedVerification | ||
) |
Reset SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
ExtendedVerification | The flag about if extend verificate |
EFI_SUCCESS | The device was reset. |
EFI_DEVICE_ERROR | The device is not functioning properly and could not be reset. |
Definition at line 557 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskResetEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN BOOLEAN | ExtendedVerification | ||
) |
Reset SCSI Disk.
This | The pointer of EFI_BLOCK_IO2_PROTOCOL. |
ExtendedVerification | The flag about if extend verificate. |
EFI_SUCCESS | The device was reset. |
EFI_DEVICE_ERROR | The device is not functioning properly and could not be reset. |
Definition at line 941 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskSendData | ( | IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL * | This, |
IN UINT32 MediaId | OPTIONAL, | ||
IN UINT64 | Timeout, | ||
IN UINT8 | SecurityProtocolId, | ||
IN UINT16 | SecurityProtocolSpecificData, | ||
IN UINTN | PayloadBufferSize, | ||
OUT VOID * | PayloadBuffer | ||
) |
Send a security protocol command to a device.
The SendData function sends a security protocol command containing the payload PayloadBuffer to the given MediaId. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. If the underlying protocol command requires a specific padding for the command payload, the SendData function shall add padding bytes to the command payload to satisfy the padding requirements.
For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL OUT command defined in SPC-4.
If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.
If the given MediaId does not support security protocol commands, the function shall return EFI_UNSUPPORTED. If there is no media in the device, the function returns EFI_NO_MEDIA. If the MediaId is not the ID for the current media in the device, the function returns EFI_MEDIA_CHANGED.
If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.
If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.
This | Indicates a pointer to the calling context. |
MediaId | ID of the medium to receive data from. If there is no block IO protocol supported by the physical device, the value of MediaId is undefined. |
Timeout | The timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout. |
SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
PayloadBufferSize | Size in bytes of the payload data buffer. |
PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given MediaId does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Definition at line 2154 of file ScsiDisk.c.
EFI_STATUS ScsiDiskTestUnitReady | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys | ||
) |
To test device.
When Test Unit Ready command succeeds, retrieve Sense Keys via Request Sense; When Test Unit Ready command encounters any error caused by host adapter or target, return error without retrieving Sense Keys.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates try again |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The pointer of the number of sense data array |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to test unit |
Definition at line 2809 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWrite10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
IN UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Write(10) Command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to write |
Definition at line 4346 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWrite16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
IN UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Write(16) Command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to write |
Definition at line 4593 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskWriteBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | BufferSize, | ||
IN VOID * | Buffer | ||
) |
The function is to Write Block to SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
MediaId | The Id of Media detected |
Lba | The logic block address |
BufferSize | The size of Buffer |
Buffer | The buffer to fill the read out data |
EFI_SUCCESS | Successfully to read out block. |
EFI_WRITE_PROTECTED | The device can not be written to. |
EFI_DEVICE_ERROR | Fail to detect media. |
EFI_NO_MEDIA | Media is not present. |
EFI_MEDIA_CHANGED | Media has changed. |
EFI_BAD_BUFFER_SIZE | The Buffer was not a multiple of the block size of the device. |
EFI_INVALID_PARAMETER | Invalid parameter passed in. |
Definition at line 768 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskWriteBlocksEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN OUT EFI_BLOCK_IO2_TOKEN * | Token, | ||
IN UINTN | BufferSize, | ||
IN VOID * | Buffer | ||
) |
The function is to Write Block to SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected. |
Lba | The logic block address. |
Token | A pointer to the token associated with the transaction. |
BufferSize | The size of Buffer. |
Buffer | The buffer to fill the read out data. |
EFI_SUCCESS | The data were written correctly to the device. |
EFI_WRITE_PROTECTED | The device cannot be written to. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the write operation. |
EFI_BAD_BUFFER_SIZE | The BufferSize parameter is not a multiple of the intrinsic block size of the device. |
EFI_INVALID_PARAMETER | The write request contains LBAs that are not valid, or the buffer is not on proper alignment. |
Definition at line 1188 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWriteSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks | ||
) |
Write sector to SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Buffer | The buffer of data to be written into SCSI Disk |
Lba | Logic block address |
NumberOfBlocks | The number of blocks to read |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3620 of file ScsiDisk.c.
|
extern |
Definition at line 14 of file ComponentName.c.
|
extern |
Definition at line 23 of file ComponentName.c.
|
extern |
Definition at line 12 of file ScsiDisk.c.