13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2f57387d54bd8f2c0261834b2ad16155f1db63291hhtian Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> 3f57387d54bd8f2c0261834b2ad16155f1db63291hhtian This program and the accompanying materials 43eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang are licensed and made available under the terms and conditions of the BSD License 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang which accompanies this distribution. The full text of the license may be found at 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang http://opensource.org/licenses/bsd-license.php 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name: 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ScsiIo.h 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract: 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL as defined in UEFI 2.0. 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRevision History 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef __EFI_SCSI_IO_PROTOCOL_H__ 233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define __EFI_SCSI_IO_PROTOCOL_H__ 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_PROTOCOL_GUID \ 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang { \ 273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0x932f47e6, 0x2362, 0x4002, {0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \ 283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang } 293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Forward reference for pure ANSI compatability 323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct _EFI_SCSI_IO_PROTOCOL EFI_SCSI_IO_PROTOCOL; 343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// SCSI Data Direction definition 373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_DATA_DIRECTION_READ 0 393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_DATA_DIRECTION_WRITE 1 403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL 2 413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// SCSI Host Adapter Status definition 443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK 0x00 463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND 0x09 // timeout when processing the command 473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT 0x0b // timeout when waiting for the command processing 483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT 0x0d // a message reject was received when processing command 493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET 0x0e // a bus reset was detected 503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR 0x0f 513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED 0x10 // the adapter failed in issuing request sense command 523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT 0x11 // selection timeout 533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN 0x12 // data overrun or data underrun 543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE 0x13 // Unexepected bus free 553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR 0x14 // Target bus phase sequence failure 563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER 0x7f 573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// SCSI Target Status definition 613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_GOOD 0x00 633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION 0x02 // check condition 643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET 0x04 // condition met 653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_BUSY 0x08 // busy 663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE 0x10 // intermediate 673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET 0x14 // intermediate-condition met 683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT 0x18 // reservation conflict 693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED 0x22 // command terminated 703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL 0x28 // queue full 713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct { 733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT64 Timeout; 743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VOID *InDataBuffer; 753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VOID *OutDataBuffer; 763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VOID *SenseData; 773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VOID *Cdb; 783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT32 InTransferLength; 793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT32 OutTransferLength; 803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 CdbLength; 813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 DataDirection; 823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 HostAdapterStatus; 833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 TargetStatus; 843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 SenseDataLength; 853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_SCSI_IO_SCSI_REQUEST_PACKET; 863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE) ( 903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_SCSI_IO_PROTOCOL *This, 913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT8 *DeviceType 923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Retrieves the device type information of the SCSI Controller. 973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DeviceType - A pointer to the device type information 1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang retrieved from the SCSI Controller. 1023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Retrieves the device type information successfully. 1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_INVALID_PARAMETER - The DeviceType is NULL. 1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION) ( 1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_SCSI_IO_PROTOCOL *This, 1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT UINT8 **Target, 1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT64 *Lun 1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Retrieves the device location in the SCSI channel. 1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Target - A pointer to the Target Array which represents ID of a SCSI device 1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang on the SCSI channel. 1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Lun - A pointer to the LUN of the SCSI device on 1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang the SCSI channel. 1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Retrieves the device location successfully. 1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_INVALID_PARAMETER - The Target or Lun is NULL. 1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_SCSI_IO_PROTOCOL_RESET_BUS) ( 1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_SCSI_IO_PROTOCOL *This 1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Resets the SCSI Bus that the SCSI Controller is attached to. 1453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - This Protocol instance pointer. 1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - The SCSI bus is reset successfully. 1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_DEVICE_ERROR - Errors encountered when resetting the SCSI bus. 1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - The bus reset operation is not supported by the 1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SCSI Host Controller. 1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_TIMEOUT - A timeout occurred while attempting to reset 1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang the SCSI bus. 1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_SCSI_IO_PROTOCOL_RESET_DEVICE) ( 1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_SCSI_IO_PROTOCOL *This 1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Resets the SCSI Controller that the device handle specifies. 1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Reset the SCSI controller successfully. 1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_DEVICE_ERROR - Errors are encountered when resetting the 1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SCSI Controller. 1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - The SCSI bus does not support a device 1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang reset operation. 1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_TIMEOUT - A timeout occurred while attempting to 1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang reset the SCSI Controller. 1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND) ( 1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_SCSI_IO_PROTOCOL *This, 1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET *Packet, 1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_EVENT Event OPTIONAL 1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Sends a SCSI Request Packet to the SCSI Controller for execution. 1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Packet - The SCSI request packet to send to the SCSI 2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Controller specified by the device handle. 2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Event - If the SCSI bus where the SCSI device is attached 2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang does not support non-blocking I/O, then Event is 2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ignored, and blocking I/O is performed. 2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang If Event is NULL, then blocking I/O is performed. 2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang If Event is not NULL and non-blocking I/O is 2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang supported, then non-blocking I/O is performed, 2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang and Event will be signaled when the SCSI Request 2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Packet completes. 2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - The SCSI Request Packet was sent by the host 2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang successfully, and TransferLength bytes were 2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang transferred to/from DataBuffer.See 2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HostAdapterStatus, TargetStatus, 2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SenseDataLength, and SenseData in that order 2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang for additional status information. 2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_BAD_BUFFER_SIZE - The SCSI Request Packet was executed, 2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang but the entire DataBuffer could not be transferred. 2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang The actual number of bytes transferred is returned 2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang in TransferLength. See HostAdapterStatus, 2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang TargetStatus, SenseDataLength, and SenseData in 2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang that order for additional status information. 2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_NOT_READY - The SCSI Request Packet could not be sent because 2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang there are too many SCSI Command Packets already 2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang queued.The caller may retry again later. 2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_DEVICE_ERROR - A device error occurred while attempting to send 2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang the SCSI Request Packet. See HostAdapterStatus, 2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang TargetStatus, SenseDataLength, and SenseData in 2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang that order for additional status information. 2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_INVALID_PARAMETER - The contents of CommandPacket are invalid. 2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang The SCSI Request Packet was not sent, so no 2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang additional status information is available. 2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - The command described by the SCSI Request Packet 2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang is not supported by the SCSI initiator(i.e., SCSI 2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Host Controller). The SCSI Request Packet was not 2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang sent, so no additional status information is 2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang available. 2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_TIMEOUT - A timeout occurred while waiting for the SCSI 2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Request Packet to execute. See HostAdapterStatus, 2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang TargetStatus, SenseDataLength, and SenseData in 2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang that order for additional status information. 2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangstruct _EFI_SCSI_IO_PROTOCOL { 2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE GetDeviceType; 2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION GetDeviceLocation; 2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL_RESET_BUS ResetBus; 2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL_RESET_DEVICE ResetDevice; 2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND ExecuteScsiCommand; 2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT32 IoAlign; 2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}; 2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiScsiIoProtocolGuid; 2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif 257