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
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.
18 Header file for SCSI Disk Driver.
26 #include <IndustryStandard/scsi.h>
28 #define IsDeviceFixed(a) (a)->FixedDevice ? 1 : 0
30 #define SCSI_DISK_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 'd', 'k')
37 EFI_BLOCK_IO_PROTOCOL BlkIo
;
38 EFI_BLOCK_IO_MEDIA BlkIoMedia
;
39 EFI_SCSI_IO_PROTOCOL
*ScsiIo
;
44 EFI_SCSI_SENSE_DATA
*SenseData
;
45 UINTN SenseDataNumber
;
46 EFI_SCSI_INQUIRY_DATA InquiryData
;
48 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
52 #define SCSI_DISK_DEV_FROM_THIS(a) CR (a, SCSI_DISK_DEV, BlkIo, SCSI_DISK_DEV_SIGNATURE)
57 extern EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding
;
58 extern EFI_COMPONENT_NAME_PROTOCOL gScsiDiskComponentName
;
60 // action code used in detect media process
62 #define ACTION_NO_ACTION 0x00
63 #define ACTION_READ_CAPACITY 0x01
64 #define ACTION_RETRY_COMMAND_LATER 0x02
69 IN EFI_BLOCK_IO_PROTOCOL
*This
,
70 IN BOOLEAN ExtendedVerification
76 TODO: Add function description
80 This - TODO: add argument description
81 ExtendedVerification - TODO: add argument description
85 TODO: add return values
93 IN EFI_BLOCK_IO_PROTOCOL
*This
,
103 TODO: Add function description
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
115 TODO: add return values
122 ScsiDiskWriteBlocks (
123 IN EFI_BLOCK_IO_PROTOCOL
*This
,
133 TODO: Add function description
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
145 TODO: add return values
152 ScsiDiskFlushBlocks (
153 IN EFI_BLOCK_IO_PROTOCOL
*This
159 TODO: Add function description
163 This - TODO: add argument description
167 TODO: add return values
173 ScsiDiskDetectMedia (
174 SCSI_DISK_DEV
*ScsiDiskDevice
,
182 TODO: Add function description
186 ScsiDiskDevice - TODO: add argument description
187 MustReadCap - TODO: add argument description
188 MediaChange - TODO: add argument description
192 TODO: add return values
198 ScsiDiskTestUnitReady (
199 SCSI_DISK_DEV
*ScsiDiskDevice
,
201 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
202 UINTN
*NumberOfSenseKeys
208 TODO: Add function description
212 ScsiDiskDevice - TODO: add argument description
213 NeedRetry - TODO: add argument description
214 SenseDataArray - TODO: add argument description
215 NumberOfSenseKeys - TODO: add argument description
219 TODO: add return values
225 DetectMediaParsingSenseKeys (
226 SCSI_DISK_DEV
*ScsiDiskDevice
,
227 EFI_SCSI_SENSE_DATA
*SenseData
,
228 UINTN NumberOfSenseKeys
,
235 TODO: Add function description
239 ScsiDiskDevice - TODO: add argument description
240 SenseData - TODO: add argument description
241 NumberOfSenseKeys - TODO: add argument description
242 Action - TODO: add argument description
246 TODO: add return values
252 ScsiDiskReadCapacity (
253 SCSI_DISK_DEV
*ScsiDiskDevice
,
255 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
256 UINTN
*NumberOfSenseKeys
262 TODO: Add function description
266 ScsiDiskDevice - TODO: add argument description
267 NeedRetry - TODO: add argument description
268 SenseDataArray - TODO: add argument description
269 NumberOfSenseKeys - TODO: add argument description
273 TODO: add return values
279 CheckHostAdapterStatus (
280 UINT8 HostAdapterStatus
286 TODO: Add function description
290 HostAdapterStatus - TODO: add argument description
294 TODO: add return values
307 TODO: Add function description
311 TargetStatus - TODO: add argument description
315 TODO: add return values
321 ScsiDiskRequestSenseKeys (
322 SCSI_DISK_DEV
*ScsiDiskDevice
,
324 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
325 UINTN
*NumberOfSenseKeys
,
326 BOOLEAN AskResetIfError
332 TODO: Add function description
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
344 TODO: add return values
350 ScsiDiskInquiryDevice (
351 SCSI_DISK_DEV
*ScsiDiskDevice
,
358 TODO: Add function description
362 ScsiDiskDevice - TODO: add argument description
363 NeedRetry - TODO: add argument description
367 TODO: add return values
374 SCSI_DISK_DEV
*ScsiDiskDevice
380 TODO: Add function description
384 ScsiDiskDevice - TODO: add argument description
388 TODO: add return values
394 ScsiDiskReadSectors (
395 SCSI_DISK_DEV
*ScsiDiskDevice
,
404 TODO: Add function description
408 ScsiDiskDevice - TODO: add argument description
409 Buffer - TODO: add argument description
410 Lba - TODO: add argument description
411 NumberOfBlocks - TODO: add argument description
415 TODO: add return values
421 ScsiDiskWriteSectors (
422 SCSI_DISK_DEV
*ScsiDiskDevice
,
431 TODO: Add function description
435 ScsiDiskDevice - TODO: add argument description
436 Buffer - TODO: add argument description
437 Lba - TODO: add argument description
438 NumberOfBlocks - TODO: add argument description
442 TODO: add return values
449 SCSI_DISK_DEV
*ScsiDiskDevice
,
451 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
452 UINTN
*NumberOfSenseKeys
,
463 TODO: Add function description
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
479 TODO: add return values
486 SCSI_DISK_DEV
*ScsiDiskDevice
,
488 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
489 UINTN
*NumberOfSenseKeys
,
500 TODO: Add function description
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
516 TODO: add return values
523 SCSI_DISK_DEV
*ScsiDiskDevice
,
524 EFI_SCSI_DISK_CAPACITY_DATA
*Capacity
530 TODO: Add function description
534 ScsiDiskDevice - TODO: add argument description
535 Capacity - TODO: add argument description
539 TODO: add return values
546 IN EFI_SCSI_SENSE_DATA
*SenseData
,
553 TODO: Add function description
557 SenseData - TODO: add argument description
558 SenseCounts - TODO: add argument description
562 TODO: add return values
568 ScsiDiskIsMediaError (
569 IN EFI_SCSI_SENSE_DATA
*SenseData
,
576 TODO: Add function description
580 SenseData - TODO: add argument description
581 SenseCounts - TODO: add argument description
585 TODO: add return values
591 ScsiDiskIsHardwareError (
592 IN EFI_SCSI_SENSE_DATA
*SenseData
,
599 TODO: Add function description
603 SenseData - TODO: add argument description
604 SenseCounts - TODO: add argument description
608 TODO: add return values
614 ScsiDiskIsMediaChange (
615 IN EFI_SCSI_SENSE_DATA
*SenseData
,
622 TODO: Add function description
626 SenseData - TODO: add argument description
627 SenseCounts - TODO: add argument description
631 TODO: add return values
637 ScsiDiskIsResetBefore (
638 IN EFI_SCSI_SENSE_DATA
*SenseData
,
645 TODO: Add function description
649 SenseData - TODO: add argument description
650 SenseCounts - TODO: add argument description
654 TODO: add return values
660 ScsiDiskIsDriveReady (
661 IN EFI_SCSI_SENSE_DATA
*SenseData
,
662 IN UINTN SenseCounts
,
663 OUT BOOLEAN
*NeedRetry
669 TODO: Add function description
673 SenseData - TODO: add argument description
674 SenseCounts - TODO: add argument description
675 NeedRetry - TODO: add argument description
679 TODO: add return values
685 ScsiDiskHaveSenseKey (
686 IN EFI_SCSI_SENSE_DATA
*SenseData
,
693 TODO: Add function description
697 SenseData - TODO: add argument description
698 SenseCounts - TODO: add argument description
702 TODO: add return values
708 ReleaseScsiDiskDeviceResources (
709 IN SCSI_DISK_DEV
*ScsiDiskDevice
715 TODO: Add function description
719 ScsiDiskDevice - TODO: add argument description
723 TODO: add return values