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
68 ScsiDiskDriverBindingSupported (
69 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
70 IN EFI_HANDLE Controller
,
71 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
76 ScsiDiskDriverBindingStart (
77 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
78 IN EFI_HANDLE Controller
,
79 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
84 ScsiDiskDriverBindingStop (
85 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
86 IN EFI_HANDLE Controller
,
87 IN UINTN NumberOfChildren
,
88 IN EFI_HANDLE
*ChildHandleBuffer
92 // EFI Component Name Functions
96 ScsiDiskComponentNameGetDriverName (
97 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
99 OUT CHAR16
**DriverName
104 ScsiDiskComponentNameGetControllerName (
105 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
106 IN EFI_HANDLE ControllerHandle
,
107 IN EFI_HANDLE ChildHandle OPTIONAL
,
109 OUT CHAR16
**ControllerName
115 IN EFI_BLOCK_IO_PROTOCOL
*This
,
116 IN BOOLEAN ExtendedVerification
122 TODO: Add function description
126 This - TODO: add argument description
127 ExtendedVerification - TODO: add argument description
131 TODO: add return values
139 IN EFI_BLOCK_IO_PROTOCOL
*This
,
149 TODO: Add function description
153 This - TODO: add argument description
154 MediaId - TODO: add argument description
155 LBA - TODO: add argument description
156 BufferSize - TODO: add argument description
157 Buffer - TODO: add argument description
161 TODO: add return values
168 ScsiDiskWriteBlocks (
169 IN EFI_BLOCK_IO_PROTOCOL
*This
,
179 TODO: Add function description
183 This - TODO: add argument description
184 MediaId - TODO: add argument description
185 LBA - TODO: add argument description
186 BufferSize - TODO: add argument description
187 Buffer - TODO: add argument description
191 TODO: add return values
198 ScsiDiskFlushBlocks (
199 IN EFI_BLOCK_IO_PROTOCOL
*This
205 TODO: Add function description
209 This - TODO: add argument description
213 TODO: add return values
219 ScsiDiskDetectMedia (
220 SCSI_DISK_DEV
*ScsiDiskDevice
,
228 TODO: Add function description
232 ScsiDiskDevice - TODO: add argument description
233 MustReadCap - TODO: add argument description
234 MediaChange - TODO: add argument description
238 TODO: add return values
244 ScsiDiskTestUnitReady (
245 SCSI_DISK_DEV
*ScsiDiskDevice
,
247 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
248 UINTN
*NumberOfSenseKeys
254 TODO: Add function description
258 ScsiDiskDevice - TODO: add argument description
259 NeedRetry - TODO: add argument description
260 SenseDataArray - TODO: add argument description
261 NumberOfSenseKeys - TODO: add argument description
265 TODO: add return values
271 DetectMediaParsingSenseKeys (
272 SCSI_DISK_DEV
*ScsiDiskDevice
,
273 EFI_SCSI_SENSE_DATA
*SenseData
,
274 UINTN NumberOfSenseKeys
,
281 TODO: Add function description
285 ScsiDiskDevice - TODO: add argument description
286 SenseData - TODO: add argument description
287 NumberOfSenseKeys - TODO: add argument description
288 Action - TODO: add argument description
292 TODO: add return values
298 ScsiDiskReadCapacity (
299 SCSI_DISK_DEV
*ScsiDiskDevice
,
301 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
302 UINTN
*NumberOfSenseKeys
308 TODO: Add function description
312 ScsiDiskDevice - TODO: add argument description
313 NeedRetry - TODO: add argument description
314 SenseDataArray - TODO: add argument description
315 NumberOfSenseKeys - TODO: add argument description
319 TODO: add return values
325 CheckHostAdapterStatus (
326 UINT8 HostAdapterStatus
332 TODO: Add function description
336 HostAdapterStatus - TODO: add argument description
340 TODO: add return values
353 TODO: Add function description
357 TargetStatus - TODO: add argument description
361 TODO: add return values
367 ScsiDiskRequestSenseKeys (
368 SCSI_DISK_DEV
*ScsiDiskDevice
,
370 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
371 UINTN
*NumberOfSenseKeys
,
372 BOOLEAN AskResetIfError
378 TODO: Add function description
382 ScsiDiskDevice - TODO: add argument description
383 NeedRetry - TODO: add argument description
384 SenseDataArray - TODO: add argument description
385 NumberOfSenseKeys - TODO: add argument description
386 AskResetIfError - TODO: add argument description
390 TODO: add return values
396 ScsiDiskInquiryDevice (
397 SCSI_DISK_DEV
*ScsiDiskDevice
,
404 TODO: Add function description
408 ScsiDiskDevice - TODO: add argument description
409 NeedRetry - TODO: add argument description
413 TODO: add return values
420 SCSI_DISK_DEV
*ScsiDiskDevice
426 TODO: Add function description
430 ScsiDiskDevice - TODO: add argument description
434 TODO: add return values
440 ScsiDiskReadSectors (
441 SCSI_DISK_DEV
*ScsiDiskDevice
,
450 TODO: Add function description
454 ScsiDiskDevice - TODO: add argument description
455 Buffer - TODO: add argument description
456 Lba - TODO: add argument description
457 NumberOfBlocks - TODO: add argument description
461 TODO: add return values
467 ScsiDiskWriteSectors (
468 SCSI_DISK_DEV
*ScsiDiskDevice
,
477 TODO: Add function description
481 ScsiDiskDevice - TODO: add argument description
482 Buffer - TODO: add argument description
483 Lba - TODO: add argument description
484 NumberOfBlocks - TODO: add argument description
488 TODO: add return values
495 SCSI_DISK_DEV
*ScsiDiskDevice
,
497 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
498 UINTN
*NumberOfSenseKeys
,
509 TODO: Add function description
513 ScsiDiskDevice - TODO: add argument description
514 NeedRetry - TODO: add argument description
515 SenseDataArray - TODO: add argument description
516 NumberOfSenseKeys - TODO: add argument description
517 Timeout - TODO: add argument description
518 DataBuffer - TODO: add argument description
519 DataLength - TODO: add argument description
520 StartLba - TODO: add argument description
521 SectorSize - TODO: add argument description
525 TODO: add return values
532 SCSI_DISK_DEV
*ScsiDiskDevice
,
534 EFI_SCSI_SENSE_DATA
**SenseDataArray
,
535 UINTN
*NumberOfSenseKeys
,
546 TODO: Add function description
550 ScsiDiskDevice - TODO: add argument description
551 NeedRetry - TODO: add argument description
552 SenseDataArray - TODO: add argument description
553 NumberOfSenseKeys - TODO: add argument description
554 Timeout - TODO: add argument description
555 DataBuffer - TODO: add argument description
556 DataLength - TODO: add argument description
557 StartLba - TODO: add argument description
558 SectorSize - TODO: add argument description
562 TODO: add return values
569 SCSI_DISK_DEV
*ScsiDiskDevice
,
570 EFI_SCSI_DISK_CAPACITY_DATA
*Capacity
576 TODO: Add function description
580 ScsiDiskDevice - TODO: add argument description
581 Capacity - TODO: add argument description
585 TODO: add return values
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 ScsiDiskIsMediaError (
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 ScsiDiskIsHardwareError (
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 ScsiDiskIsMediaChange (
661 IN EFI_SCSI_SENSE_DATA
*SenseData
,
668 TODO: Add function description
672 SenseData - TODO: add argument description
673 SenseCounts - TODO: add argument description
677 TODO: add return values
683 ScsiDiskIsResetBefore (
684 IN EFI_SCSI_SENSE_DATA
*SenseData
,
691 TODO: Add function description
695 SenseData - TODO: add argument description
696 SenseCounts - TODO: add argument description
700 TODO: add return values
706 ScsiDiskIsDriveReady (
707 IN EFI_SCSI_SENSE_DATA
*SenseData
,
708 IN UINTN SenseCounts
,
709 OUT BOOLEAN
*NeedRetry
715 TODO: Add function description
719 SenseData - TODO: add argument description
720 SenseCounts - TODO: add argument description
721 NeedRetry - TODO: add argument description
725 TODO: add return values
731 ScsiDiskHaveSenseKey (
732 IN EFI_SCSI_SENSE_DATA
*SenseData
,
739 TODO: Add function description
743 SenseData - TODO: add argument description
744 SenseCounts - TODO: add argument description
748 TODO: add return values
754 ReleaseScsiDiskDeviceResources (
755 IN SCSI_DISK_DEV
*ScsiDiskDevice
761 TODO: Add function description
765 ScsiDiskDevice - TODO: add argument description
769 TODO: add return values