]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Library/ScsiLib.h
5c2e60b0089e42cbae272af08d6a83d28692286a
[mirror_edk2.git] / MdePkg / Include / Library / ScsiLib.h
1 /** @file
2 Common Libarary for SCSI
3
4 Copyright (c) 2006 - 2007, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _SCSI_LIB_H
16 #define _SCSI_LIB_H
17
18 #include <Protocol/ScsiIo.h>
19
20 //
21 // the time unit is 100ns, since the SCSI I/O defines timeout in 100ns unit.
22 //
23 #define EFI_SCSI_STALL_1_MICROSECOND 10
24 #define EFI_SCSI_STALL_1_MILLISECOND 10000
25 #define EFI_SCSI_STALL_1_SECOND 10000000
26
27 //
28 // this macro cannot be directly used by the gBS->Stall(),
29 // since the value output by this macro is in 100ns unit,
30 // not 1us unit (1us = 1000ns)
31 //
32 #define EfiScsiStallSeconds(a) (a) * EFI_SCSI_STALL_1_SECOND
33
34 EFI_STATUS
35 SubmitTestUnitReadyCommand (
36 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
37 IN UINT64 Timeout,
38 OUT VOID *SenseData,
39 OUT UINT8 *SenseDataLength,
40 OUT UINT8 *HostAdapterStatus,
41 OUT UINT8 *TargetStatus
42 )
43 /*++
44
45 Routine Description:
46
47 TODO: Add function description
48
49 Arguments:
50
51 ScsiIo - TODO: add argument description
52 Timeout - TODO: add argument description
53 SenseData - TODO: add argument description
54 SenseDataLength - TODO: add argument description
55 HostAdapterStatus - TODO: add argument description
56 TargetStatus - TODO: add argument description
57
58 Returns:
59
60 TODO: add return values
61
62 --*/
63 ;
64
65 EFI_STATUS
66 SubmitInquiryCommand (
67 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
68 IN UINT64 Timeout,
69 IN VOID *SenseData,
70 IN OUT UINT8 *SenseDataLength,
71 OUT UINT8 *HostAdapterStatus,
72 OUT UINT8 *TargetStatus,
73 IN OUT VOID *InquiryDataBuffer,
74 IN OUT UINT32 *InquiryDataLength,
75 IN BOOLEAN EnableVitalProductData
76 )
77 /*++
78
79 Routine Description:
80
81 TODO: Add function description
82
83 Arguments:
84
85 ScsiIo - TODO: add argument description
86 Timeout - TODO: add argument description
87 SenseData - TODO: add argument description
88 SenseDataLength - TODO: add argument description
89 HostAdapterStatus - TODO: add argument description
90 TargetStatus - TODO: add argument description
91 InquiryDataBuffer - TODO: add argument description
92 InquiryDataLength - TODO: add argument description
93 EnableVitalProductData - TODO: add argument description
94
95 Returns:
96
97 TODO: add return values
98
99 --*/
100 ;
101
102 EFI_STATUS
103 SubmitModeSense10Command (
104 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
105 IN UINT64 Timeout,
106 IN VOID *SenseData,
107 IN OUT UINT8 *SenseDataLength,
108 OUT UINT8 *HostAdapterStatus,
109 OUT UINT8 *TargetStatus,
110 IN VOID *DataBuffer,
111 IN OUT UINT32 *DataLength,
112 IN UINT8 DBDField, OPTIONAL
113 IN UINT8 PageControl,
114 IN UINT8 PageCode
115 )
116 /*++
117
118 Routine Description:
119
120 TODO: Add function description
121
122 Arguments:
123
124 ScsiIo - TODO: add argument description
125 Timeout - TODO: add argument description
126 SenseData - TODO: add argument description
127 SenseDataLength - TODO: add argument description
128 HostAdapterStatus - TODO: add argument description
129 TargetStatus - TODO: add argument description
130 DataBuffer - TODO: add argument description
131 DataLength - TODO: add argument description
132 DBDField - TODO: add argument description
133 PageControl - TODO: add argument description
134 PageCode - TODO: add argument description
135
136 Returns:
137
138 TODO: add return values
139
140 --*/
141 ;
142
143 EFI_STATUS
144 SubmitRequestSenseCommand (
145 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
146 IN UINT64 Timeout,
147 IN VOID *SenseData,
148 IN OUT UINT8 *SenseDataLength,
149 OUT UINT8 *HostAdapterStatus,
150 OUT UINT8 *TargetStatus
151 )
152 /*++
153
154 Routine Description:
155
156 TODO: Add function description
157
158 Arguments:
159
160 ScsiIo - TODO: add argument description
161 Timeout - TODO: add argument description
162 SenseData - TODO: add argument description
163 SenseDataLength - TODO: add argument description
164 HostAdapterStatus - TODO: add argument description
165 TargetStatus - TODO: add argument description
166
167 Returns:
168
169 TODO: add return values
170
171 --*/
172 ;
173
174 //
175 // Commands for direct access command
176 //
177 EFI_STATUS
178 SubmitReadCapacityCommand (
179 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
180 IN UINT64 Timeout,
181 IN VOID *SenseData,
182 IN OUT UINT8 *SenseDataLength,
183 OUT UINT8 *HostAdapterStatus,
184 OUT UINT8 *TargetStatus,
185 OUT VOID *DataBuffer,
186 IN OUT UINT32 *DataLength,
187 IN BOOLEAN PMI
188 )
189 /*++
190
191 Routine Description:
192
193 TODO: Add function description
194
195 Arguments:
196
197 ScsiIo - TODO: add argument description
198 Timeout - TODO: add argument description
199 SenseData - TODO: add argument description
200 SenseDataLength - TODO: add argument description
201 HostAdapterStatus - TODO: add argument description
202 TargetStatus - TODO: add argument description
203 DataBuffer - TODO: add argument description
204 DataLength - TODO: add argument description
205 PMI - TODO: add argument description
206
207 Returns:
208
209 TODO: add return values
210
211 --*/
212 ;
213
214 EFI_STATUS
215 SubmitRead10Command (
216 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
217 IN UINT64 Timeout,
218 IN VOID *SenseData,
219 IN OUT UINT8 *SenseDataLength,
220 OUT UINT8 *HostAdapterStatus,
221 OUT UINT8 *TargetStatus,
222 OUT VOID *DataBuffer,
223 IN OUT UINT32 *DataLength,
224 IN UINT32 StartLba,
225 IN UINT32 SectorSize
226 )
227 /*++
228
229 Routine Description:
230
231 TODO: Add function description
232
233 Arguments:
234
235 ScsiIo - TODO: add argument description
236 Timeout - TODO: add argument description
237 SenseData - TODO: add argument description
238 SenseDataLength - TODO: add argument description
239 HostAdapterStatus - TODO: add argument description
240 TargetStatus - TODO: add argument description
241 DataBuffer - TODO: add argument description
242 DataLength - TODO: add argument description
243 StartLba - TODO: add argument description
244 SectorSize - TODO: add argument description
245
246 Returns:
247
248 TODO: add return values
249
250 --*/
251 ;
252
253 EFI_STATUS
254 SubmitWrite10Command (
255 IN EFI_SCSI_IO_PROTOCOL *ScsiIo,
256 IN UINT64 Timeout,
257 IN VOID *SenseData,
258 IN OUT UINT8 *SenseDataLength,
259 OUT UINT8 *HostAdapterStatus,
260 OUT UINT8 *TargetStatus,
261 OUT VOID *DataBuffer,
262 IN OUT UINT32 *DataLength,
263 IN UINT32 StartLba,
264 IN UINT32 SectorSize
265 )
266 /*++
267
268 Routine Description:
269
270 TODO: Add function description
271
272 Arguments:
273
274 ScsiIo - TODO: add argument description
275 Timeout - TODO: add argument description
276 SenseData - TODO: add argument description
277 SenseDataLength - TODO: add argument description
278 HostAdapterStatus - TODO: add argument description
279 TargetStatus - TODO: add argument description
280 DataBuffer - TODO: add argument description
281 DataLength - TODO: add argument description
282 StartLba - TODO: add argument description
283 SectorSize - TODO: add argument description
284
285 Returns:
286
287 TODO: add return values
288
289 --*/
290 ;
291
292 #endif