TianoCore EDK2 master
Loading...
Searching...
No Matches
ScsiIo.h
Go to the documentation of this file.
1
12#ifndef __EFI_SCSI_IO_PROTOCOL_H__
13#define __EFI_SCSI_IO_PROTOCOL_H__
14
15#define EFI_SCSI_IO_PROTOCOL_GUID \
16 { \
17 0x932f47e6, 0x2362, 0x4002, {0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
18 }
19
24
25//
26// SCSI Device type information, defined in the SCSI Primary Commands standard (e.g., SPC-4)
27//
28#define EFI_SCSI_IO_TYPE_DISK 0x00
29#define EFI_SCSI_IO_TYPE_TAPE 0x01
30#define EFI_SCSI_IO_TYPE_PRINTER 0x02
31#define EFI_SCSI_IO_TYPE_PROCESSOR 0x03
32#define EFI_SCSI_IO_TYPE_WORM 0x04
33#define EFI_SCSI_IO_TYPE_CDROM 0x05
34#define EFI_SCSI_IO_TYPE_SCANNER 0x06
35#define EFI_SCSI_IO_TYPE_OPTICAL 0x07
36#define EFI_SCSI_IO_TYPE_MEDIUMCHANGER 0x08
37#define EFI_SCSI_IO_TYPE_COMMUNICATION 0x09
38#define MFI_SCSI_IO_TYPE_A 0x0A
39#define MFI_SCSI_IO_TYPE_B 0x0B
40#define MFI_SCSI_IO_TYPE_RAID 0x0C
41#define MFI_SCSI_IO_TYPE_SES 0x0D
42#define MFI_SCSI_IO_TYPE_RBC 0x0E
43#define MFI_SCSI_IO_TYPE_OCRW 0x0F
44#define MFI_SCSI_IO_TYPE_BRIDGE 0x10
45#define MFI_SCSI_IO_TYPE_OSD 0x11
46#define EFI_SCSI_IO_TYPE_RESERVED_LOW 0x12
47#define EFI_SCSI_IO_TYPE_RESERVED_HIGH 0x1E
48#define EFI_SCSI_IO_TYPE_UNKNOWN 0x1F
49
50//
51// SCSI Data Direction definition
52//
53#define EFI_SCSI_IO_DATA_DIRECTION_READ 0
54#define EFI_SCSI_IO_DATA_DIRECTION_WRITE 1
55#define EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL 2
56
57//
58// SCSI Host Adapter Status definition
59//
60#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK 0x00
61#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND 0x09
62#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT 0x0b
63#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT 0x0d
64#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET 0x0e
65#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR 0x0f
66#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED 0x10
67#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT 0x11
68#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN 0x12
69#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE 0x13
70#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR 0x14
71#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER 0x7f
72
73//
74// SCSI Target Status definition
75//
76#define EFI_SCSI_IO_STATUS_TARGET_GOOD 0x00
77#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION 0x02
78#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET 0x04
79#define EFI_SCSI_IO_STATUS_TARGET_BUSY 0x08
80#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE 0x10
81#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET 0x14
82#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT 0x18
83#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED 0x22
84#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL 0x28
85
86typedef struct {
95 UINT64 Timeout;
115 VOID *Cdb;
153
165typedef
169 OUT UINT8 *DeviceType
170 );
171
185typedef
189 IN OUT UINT8 **Target,
190 OUT UINT64 *Lun
191 );
192
206typedef
210 );
211
226typedef
230 );
231
280typedef
285 IN EFI_EVENT Event OPTIONAL
286 );
287
297
304 UINT32 IoAlign;
305};
306
307extern EFI_GUID gEfiScsiIoProtocolGuid;
308
309#endif
#define OPTIONAL
Definition: Base.h:290
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_BUS)(IN EFI_SCSI_IO_PROTOCOL *This)
Definition: ScsiIo.h:208
EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE)(IN EFI_SCSI_IO_PROTOCOL *This, OUT UINT8 *DeviceType)
Definition: ScsiIo.h:167
EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_DEVICE)(IN EFI_SCSI_IO_PROTOCOL *This)
Definition: ScsiIo.h:228
EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND)(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET *Packet, IN EFI_EVENT Event OPTIONAL)
Definition: ScsiIo.h:282
EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION)(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT UINT8 **Target, OUT UINT64 *Lun)
Definition: ScsiIo.h:187
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_EVENT
Definition: UefiBaseType.h:37
Definition: Base.h:213