]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Bus/Scsi/ScsiDisk/Dxe/ScsiDisk.h
• BaseMemoryLib:
[mirror_edk2.git] / EdkModulePkg / Bus / Scsi / ScsiDisk / Dxe / ScsiDisk.h
1 /*++
2
3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 ScsiDisk.h
15
16 Abstract:
17
18 Header file for SCSI Disk Driver.
19
20 --*/
21
22 #ifndef _SCSI_DISK_H
23 #define _SCSI_DISK_H
24
25
26 #include <IndustryStandard/scsi.h>
27
28 #define IsDeviceFixed(a) (a)->FixedDevice ? 1 : 0
29
30 #define SCSI_DISK_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 'd', 'k')
31
32 typedef struct {
33 UINT32 Signature;
34
35 EFI_HANDLE Handle;
36
37 EFI_BLOCK_IO_PROTOCOL BlkIo;
38 EFI_BLOCK_IO_MEDIA BlkIoMedia;
39 EFI_SCSI_IO_PROTOCOL *ScsiIo;
40 UINT8 DeviceType;
41 BOOLEAN FixedDevice;
42 UINT16 Reserved;
43
44 EFI_SCSI_SENSE_DATA *SenseData;
45 UINTN SenseDataNumber;
46 EFI_SCSI_INQUIRY_DATA InquiryData;
47
48 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
49
50 } SCSI_DISK_DEV;
51
52 #define SCSI_DISK_DEV_FROM_THIS(a) CR (a, SCSI_DISK_DEV, BlkIo, SCSI_DISK_DEV_SIGNATURE)
53
54 //
55 // Global Variables
56 //
57 extern EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding;
58 extern EFI_COMPONENT_NAME_PROTOCOL gScsiDiskComponentName;
59 //
60 // action code used in detect media process
61 //
62 #define ACTION_NO_ACTION 0x00
63 #define ACTION_READ_CAPACITY 0x01
64 #define ACTION_RETRY_COMMAND_LATER 0x02
65
66 EFI_STATUS
67 EFIAPI
68 ScsiDiskReset (
69 IN EFI_BLOCK_IO_PROTOCOL *This,
70 IN BOOLEAN ExtendedVerification
71 )
72 /*++
73
74 Routine Description:
75
76 TODO: Add function description
77
78 Arguments:
79
80 This - TODO: add argument description
81 ExtendedVerification - TODO: add argument description
82
83 Returns:
84
85 TODO: add return values
86
87 --*/
88 ;
89
90 EFI_STATUS
91 EFIAPI
92 ScsiDiskReadBlocks (
93 IN EFI_BLOCK_IO_PROTOCOL *This,
94 IN UINT32 MediaId,
95 IN EFI_LBA LBA,
96 IN UINTN BufferSize,
97 OUT VOID *Buffer
98 )
99 /*++
100
101 Routine Description:
102
103 TODO: Add function description
104
105 Arguments:
106
107 This - TODO: add argument description
108 MediaId - TODO: add argument description
109 LBA - TODO: add argument description
110 BufferSize - TODO: add argument description
111 Buffer - TODO: add argument description
112
113 Returns:
114
115 TODO: add return values
116
117 --*/
118 ;
119
120 EFI_STATUS
121 EFIAPI
122 ScsiDiskWriteBlocks (
123 IN EFI_BLOCK_IO_PROTOCOL *This,
124 IN UINT32 MediaId,
125 IN EFI_LBA LBA,
126 IN UINTN BufferSize,
127 IN VOID *Buffer
128 )
129 /*++
130
131 Routine Description:
132
133 TODO: Add function description
134
135 Arguments:
136
137 This - TODO: add argument description
138 MediaId - TODO: add argument description
139 LBA - TODO: add argument description
140 BufferSize - TODO: add argument description
141 Buffer - TODO: add argument description
142
143 Returns:
144
145 TODO: add return values
146
147 --*/
148 ;
149
150 EFI_STATUS
151 EFIAPI
152 ScsiDiskFlushBlocks (
153 IN EFI_BLOCK_IO_PROTOCOL *This
154 )
155 /*++
156
157 Routine Description:
158
159 TODO: Add function description
160
161 Arguments:
162
163 This - TODO: add argument description
164
165 Returns:
166
167 TODO: add return values
168
169 --*/
170 ;
171
172 EFI_STATUS
173 ScsiDiskDetectMedia (
174 SCSI_DISK_DEV *ScsiDiskDevice,
175 BOOLEAN MustReadCap,
176 BOOLEAN *MediaChange
177 )
178 /*++
179
180 Routine Description:
181
182 TODO: Add function description
183
184 Arguments:
185
186 ScsiDiskDevice - TODO: add argument description
187 MustReadCap - TODO: add argument description
188 MediaChange - TODO: add argument description
189
190 Returns:
191
192 TODO: add return values
193
194 --*/
195 ;
196
197 EFI_STATUS
198 ScsiDiskTestUnitReady (
199 SCSI_DISK_DEV *ScsiDiskDevice,
200 BOOLEAN *NeedRetry,
201 EFI_SCSI_SENSE_DATA **SenseDataArray,
202 UINTN *NumberOfSenseKeys
203 )
204 /*++
205
206 Routine Description:
207
208 TODO: Add function description
209
210 Arguments:
211
212 ScsiDiskDevice - TODO: add argument description
213 NeedRetry - TODO: add argument description
214 SenseDataArray - TODO: add argument description
215 NumberOfSenseKeys - TODO: add argument description
216
217 Returns:
218
219 TODO: add return values
220
221 --*/
222 ;
223
224 EFI_STATUS
225 DetectMediaParsingSenseKeys (
226 SCSI_DISK_DEV *ScsiDiskDevice,
227 EFI_SCSI_SENSE_DATA *SenseData,
228 UINTN NumberOfSenseKeys,
229 UINTN *Action
230 )
231 /*++
232
233 Routine Description:
234
235 TODO: Add function description
236
237 Arguments:
238
239 ScsiDiskDevice - TODO: add argument description
240 SenseData - TODO: add argument description
241 NumberOfSenseKeys - TODO: add argument description
242 Action - TODO: add argument description
243
244 Returns:
245
246 TODO: add return values
247
248 --*/
249 ;
250
251 EFI_STATUS
252 ScsiDiskReadCapacity (
253 SCSI_DISK_DEV *ScsiDiskDevice,
254 BOOLEAN *NeedRetry,
255 EFI_SCSI_SENSE_DATA **SenseDataArray,
256 UINTN *NumberOfSenseKeys
257 )
258 /*++
259
260 Routine Description:
261
262 TODO: Add function description
263
264 Arguments:
265
266 ScsiDiskDevice - TODO: add argument description
267 NeedRetry - TODO: add argument description
268 SenseDataArray - TODO: add argument description
269 NumberOfSenseKeys - TODO: add argument description
270
271 Returns:
272
273 TODO: add return values
274
275 --*/
276 ;
277
278 EFI_STATUS
279 CheckHostAdapterStatus (
280 UINT8 HostAdapterStatus
281 )
282 /*++
283
284 Routine Description:
285
286 TODO: Add function description
287
288 Arguments:
289
290 HostAdapterStatus - TODO: add argument description
291
292 Returns:
293
294 TODO: add return values
295
296 --*/
297 ;
298
299 EFI_STATUS
300 CheckTargetStatus (
301 UINT8 TargetStatus
302 )
303 /*++
304
305 Routine Description:
306
307 TODO: Add function description
308
309 Arguments:
310
311 TargetStatus - TODO: add argument description
312
313 Returns:
314
315 TODO: add return values
316
317 --*/
318 ;
319
320 EFI_STATUS
321 ScsiDiskRequestSenseKeys (
322 SCSI_DISK_DEV *ScsiDiskDevice,
323 BOOLEAN *NeedRetry,
324 EFI_SCSI_SENSE_DATA **SenseDataArray,
325 UINTN *NumberOfSenseKeys,
326 BOOLEAN AskResetIfError
327 )
328 /*++
329
330 Routine Description:
331
332 TODO: Add function description
333
334 Arguments:
335
336 ScsiDiskDevice - TODO: add argument description
337 NeedRetry - TODO: add argument description
338 SenseDataArray - TODO: add argument description
339 NumberOfSenseKeys - TODO: add argument description
340 AskResetIfError - TODO: add argument description
341
342 Returns:
343
344 TODO: add return values
345
346 --*/
347 ;
348
349 EFI_STATUS
350 ScsiDiskInquiryDevice (
351 SCSI_DISK_DEV *ScsiDiskDevice,
352 BOOLEAN *NeedRetry
353 )
354 /*++
355
356 Routine Description:
357
358 TODO: Add function description
359
360 Arguments:
361
362 ScsiDiskDevice - TODO: add argument description
363 NeedRetry - TODO: add argument description
364
365 Returns:
366
367 TODO: add return values
368
369 --*/
370 ;
371
372 VOID
373 ParseInquiryData (
374 SCSI_DISK_DEV *ScsiDiskDevice
375 )
376 /*++
377
378 Routine Description:
379
380 TODO: Add function description
381
382 Arguments:
383
384 ScsiDiskDevice - TODO: add argument description
385
386 Returns:
387
388 TODO: add return values
389
390 --*/
391 ;
392
393 EFI_STATUS
394 ScsiDiskReadSectors (
395 SCSI_DISK_DEV *ScsiDiskDevice,
396 VOID *Buffer,
397 EFI_LBA Lba,
398 UINTN NumberOfBlocks
399 )
400 /*++
401
402 Routine Description:
403
404 TODO: Add function description
405
406 Arguments:
407
408 ScsiDiskDevice - TODO: add argument description
409 Buffer - TODO: add argument description
410 Lba - TODO: add argument description
411 NumberOfBlocks - TODO: add argument description
412
413 Returns:
414
415 TODO: add return values
416
417 --*/
418 ;
419
420 EFI_STATUS
421 ScsiDiskWriteSectors (
422 SCSI_DISK_DEV *ScsiDiskDevice,
423 VOID *Buffer,
424 EFI_LBA Lba,
425 UINTN NumberOfBlocks
426 )
427 /*++
428
429 Routine Description:
430
431 TODO: Add function description
432
433 Arguments:
434
435 ScsiDiskDevice - TODO: add argument description
436 Buffer - TODO: add argument description
437 Lba - TODO: add argument description
438 NumberOfBlocks - TODO: add argument description
439
440 Returns:
441
442 TODO: add return values
443
444 --*/
445 ;
446
447 EFI_STATUS
448 ScsiDiskRead10 (
449 SCSI_DISK_DEV *ScsiDiskDevice,
450 BOOLEAN *NeedRetry,
451 EFI_SCSI_SENSE_DATA **SenseDataArray,
452 UINTN *NumberOfSenseKeys,
453 UINT64 Timeout,
454 UINT8 *DataBuffer,
455 UINT32 *DataLength,
456 UINT32 StartLba,
457 UINT32 SectorSize
458 )
459 /*++
460
461 Routine Description:
462
463 TODO: Add function description
464
465 Arguments:
466
467 ScsiDiskDevice - TODO: add argument description
468 NeedRetry - TODO: add argument description
469 SenseDataArray - TODO: add argument description
470 NumberOfSenseKeys - TODO: add argument description
471 Timeout - TODO: add argument description
472 DataBuffer - TODO: add argument description
473 DataLength - TODO: add argument description
474 StartLba - TODO: add argument description
475 SectorSize - TODO: add argument description
476
477 Returns:
478
479 TODO: add return values
480
481 --*/
482 ;
483
484 EFI_STATUS
485 ScsiDiskWrite10 (
486 SCSI_DISK_DEV *ScsiDiskDevice,
487 BOOLEAN *NeedRetry,
488 EFI_SCSI_SENSE_DATA **SenseDataArray,
489 UINTN *NumberOfSenseKeys,
490 UINT64 Timeout,
491 UINT8 *DataBuffer,
492 UINT32 *DataLength,
493 UINT32 StartLba,
494 UINT32 SectorSize
495 )
496 /*++
497
498 Routine Description:
499
500 TODO: Add function description
501
502 Arguments:
503
504 ScsiDiskDevice - TODO: add argument description
505 NeedRetry - TODO: add argument description
506 SenseDataArray - TODO: add argument description
507 NumberOfSenseKeys - TODO: add argument description
508 Timeout - TODO: add argument description
509 DataBuffer - TODO: add argument description
510 DataLength - TODO: add argument description
511 StartLba - TODO: add argument description
512 SectorSize - TODO: add argument description
513
514 Returns:
515
516 TODO: add return values
517
518 --*/
519 ;
520
521 VOID
522 GetMediaInfo (
523 SCSI_DISK_DEV *ScsiDiskDevice,
524 EFI_SCSI_DISK_CAPACITY_DATA *Capacity
525 )
526 /*++
527
528 Routine Description:
529
530 TODO: Add function description
531
532 Arguments:
533
534 ScsiDiskDevice - TODO: add argument description
535 Capacity - TODO: add argument description
536
537 Returns:
538
539 TODO: add return values
540
541 --*/
542 ;
543
544 BOOLEAN
545 ScsiDiskIsNoMedia (
546 IN EFI_SCSI_SENSE_DATA *SenseData,
547 IN UINTN SenseCounts
548 )
549 /*++
550
551 Routine Description:
552
553 TODO: Add function description
554
555 Arguments:
556
557 SenseData - TODO: add argument description
558 SenseCounts - TODO: add argument description
559
560 Returns:
561
562 TODO: add return values
563
564 --*/
565 ;
566
567 BOOLEAN
568 ScsiDiskIsMediaError (
569 IN EFI_SCSI_SENSE_DATA *SenseData,
570 IN UINTN SenseCounts
571 )
572 /*++
573
574 Routine Description:
575
576 TODO: Add function description
577
578 Arguments:
579
580 SenseData - TODO: add argument description
581 SenseCounts - TODO: add argument description
582
583 Returns:
584
585 TODO: add return values
586
587 --*/
588 ;
589
590 BOOLEAN
591 ScsiDiskIsHardwareError (
592 IN EFI_SCSI_SENSE_DATA *SenseData,
593 IN UINTN SenseCounts
594 )
595 /*++
596
597 Routine Description:
598
599 TODO: Add function description
600
601 Arguments:
602
603 SenseData - TODO: add argument description
604 SenseCounts - TODO: add argument description
605
606 Returns:
607
608 TODO: add return values
609
610 --*/
611 ;
612
613 BOOLEAN
614 ScsiDiskIsMediaChange (
615 IN EFI_SCSI_SENSE_DATA *SenseData,
616 IN UINTN SenseCounts
617 )
618 /*++
619
620 Routine Description:
621
622 TODO: Add function description
623
624 Arguments:
625
626 SenseData - TODO: add argument description
627 SenseCounts - TODO: add argument description
628
629 Returns:
630
631 TODO: add return values
632
633 --*/
634 ;
635
636 BOOLEAN
637 ScsiDiskIsResetBefore (
638 IN EFI_SCSI_SENSE_DATA *SenseData,
639 IN UINTN SenseCounts
640 )
641 /*++
642
643 Routine Description:
644
645 TODO: Add function description
646
647 Arguments:
648
649 SenseData - TODO: add argument description
650 SenseCounts - TODO: add argument description
651
652 Returns:
653
654 TODO: add return values
655
656 --*/
657 ;
658
659 BOOLEAN
660 ScsiDiskIsDriveReady (
661 IN EFI_SCSI_SENSE_DATA *SenseData,
662 IN UINTN SenseCounts,
663 OUT BOOLEAN *NeedRetry
664 )
665 /*++
666
667 Routine Description:
668
669 TODO: Add function description
670
671 Arguments:
672
673 SenseData - TODO: add argument description
674 SenseCounts - TODO: add argument description
675 NeedRetry - TODO: add argument description
676
677 Returns:
678
679 TODO: add return values
680
681 --*/
682 ;
683
684 BOOLEAN
685 ScsiDiskHaveSenseKey (
686 IN EFI_SCSI_SENSE_DATA *SenseData,
687 IN UINTN SenseCounts
688 )
689 /*++
690
691 Routine Description:
692
693 TODO: Add function description
694
695 Arguments:
696
697 SenseData - TODO: add argument description
698 SenseCounts - TODO: add argument description
699
700 Returns:
701
702 TODO: add return values
703
704 --*/
705 ;
706
707 VOID
708 ReleaseScsiDiskDeviceResources (
709 IN SCSI_DISK_DEV *ScsiDiskDevice
710 )
711 /*++
712
713 Routine Description:
714
715 TODO: Add function description
716
717 Arguments:
718
719 ScsiDiskDevice - TODO: add argument description
720
721 Returns:
722
723 TODO: add return values
724
725 --*/
726 ;
727
728 #endif