git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			300 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			300 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c) 2006, Intel Corporation                                                         
 | |
| All rights reserved. This program and the accompanying materials                          
 | |
| are licensed and made available under the terms and conditions of the BSD License         
 | |
| which accompanies this distribution.  The full text of the license may be found at        
 | |
| http://opensource.org/licenses/bsd-license.php                                            
 | |
|                                                                                           
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|     ScsiLib.h
 | |
| 
 | |
|  Abstract:
 | |
| 
 | |
|    Common Libarary for SCSI
 | |
| 
 | |
|  Revision History
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef _SCSI_LIB_H
 | |
| #define _SCSI_LIB_H
 | |
| 
 | |
| //
 | |
| // the time unit is 100ns, since the SCSI I/O defines timeout in 100ns unit.
 | |
| //
 | |
| #define EFI_SCSI_STALL_1_MICROSECOND  10
 | |
| #define EFI_SCSI_STALL_1_MILLISECOND  10000
 | |
| #define EFI_SCSI_STALL_1_SECOND       10000000
 | |
| 
 | |
| //
 | |
| // this macro cannot be directly used by the gBS->Stall(),
 | |
| // since the value output by this macro is in 100ns unit,
 | |
| // not 1us unit (1us = 1000ns)
 | |
| //
 | |
| #define EfiScsiStallSeconds(a)  (a) * EFI_SCSI_STALL_1_SECOND
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitTestUnitReadyCommand (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   OUT VOID                  *SenseData,
 | |
|   OUT UINT8                 *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitInquiryCommand (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   IN  VOID                  *SenseData,
 | |
|   IN OUT UINT8              *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus,
 | |
|   IN OUT VOID               *InquiryDataBuffer,
 | |
|   IN OUT UINT32             *InquiryDataLength,
 | |
|   IN  BOOLEAN               EnableVitalProductData
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo                  - TODO: add argument description
 | |
|   Timeout                 - TODO: add argument description
 | |
|   SenseData               - TODO: add argument description
 | |
|   SenseDataLength         - TODO: add argument description
 | |
|   HostAdapterStatus       - TODO: add argument description
 | |
|   TargetStatus            - TODO: add argument description
 | |
|   InquiryDataBuffer       - TODO: add argument description
 | |
|   InquiryDataLength       - TODO: add argument description
 | |
|   EnableVitalProductData  - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitModeSense10Command (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL    *ScsiIo,
 | |
|   IN  UINT64                  Timeout,
 | |
|   IN  VOID                    *SenseData,
 | |
|   IN OUT UINT8                *SenseDataLength,
 | |
|   OUT UINT8                   *HostAdapterStatus,
 | |
|   OUT UINT8                   *TargetStatus,
 | |
|   IN  VOID                    *DataBuffer,
 | |
|   IN OUT UINT32               *DataLength,
 | |
|   IN  UINT8                   DBDField, OPTIONAL
 | |
|   IN  UINT8                   PageControl,
 | |
|   IN  UINT8                   PageCode
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
|   DataBuffer        - TODO: add argument description
 | |
|   DataLength        - TODO: add argument description
 | |
|   DBDField          - TODO: add argument description
 | |
|   PageControl       - TODO: add argument description
 | |
|   PageCode          - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitRequestSenseCommand (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   IN  VOID                  *SenseData,
 | |
|   IN OUT UINT8              *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| //
 | |
| // Commands for direct access command
 | |
| //
 | |
| EFI_STATUS
 | |
| SubmitReadCapacityCommand (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   IN  VOID                  *SenseData,
 | |
|   IN OUT UINT8              *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus,
 | |
|   OUT VOID                  *DataBuffer,
 | |
|   IN OUT UINT32             *DataLength,
 | |
|   IN  BOOLEAN               PMI
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
|   DataBuffer        - TODO: add argument description
 | |
|   DataLength        - TODO: add argument description
 | |
|   PMI               - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitRead10Command (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   IN  VOID                  *SenseData,
 | |
|   IN OUT UINT8              *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus,
 | |
|   OUT VOID                  *DataBuffer,
 | |
|   IN OUT UINT32             *DataLength,
 | |
|   IN  UINT32                StartLba,
 | |
|   IN  UINT32                SectorSize
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
|   DataBuffer        - TODO: add argument description
 | |
|   DataLength        - TODO: add argument description
 | |
|   StartLba          - TODO: add argument description
 | |
|   SectorSize        - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SubmitWrite10Command (
 | |
|   IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,
 | |
|   IN  UINT64                Timeout,
 | |
|   IN  VOID                  *SenseData,
 | |
|   IN OUT UINT8              *SenseDataLength,
 | |
|   OUT UINT8                 *HostAdapterStatus,
 | |
|   OUT UINT8                 *TargetStatus,
 | |
|   OUT VOID                  *DataBuffer,
 | |
|   IN OUT UINT32             *DataLength,
 | |
|   IN  UINT32                StartLba,
 | |
|   IN  UINT32                SectorSize
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   ScsiIo            - TODO: add argument description
 | |
|   Timeout           - TODO: add argument description
 | |
|   SenseData         - TODO: add argument description
 | |
|   SenseDataLength   - TODO: add argument description
 | |
|   HostAdapterStatus - TODO: add argument description
 | |
|   TargetStatus      - TODO: add argument description
 | |
|   DataBuffer        - TODO: add argument description
 | |
|   DataLength        - TODO: add argument description
 | |
|   StartLba          - TODO: add argument description
 | |
|   SectorSize        - TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| #endif
 |