]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/UefiScsiLib.h
Read-Capacity16 command added for SCSI drivers
[mirror_edk2.git] / MdePkg / Include / Library / UefiScsiLib.h
index b990cfded58f5e0356c45fcb180bb74405ba4fd2..7d27a2a0b0e1bb32b85fc0a63eb9d85b5a5956ed 100644 (file)
@@ -1,7 +1,10 @@
 /** @file\r
-\r
   Provides the functions to submit Scsi commands defined in SCSI-2 specification for scsi device.\r
 \r
+  This library class provides the functions to submit SCSI commands defined in SCSI-2 specification\r
+  for hard drive, CD and DVD devices that are the most common SCSI boot targets used by UEFI platforms.\r
+  This library class depends on SCSI I/O Protocol defined in UEFI Specification and SCSI-2 industry standard.\r
+\r
 Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
@@ -45,7 +48,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
                                     If SenseDataLength is 0, then this parameter is\r
                                     optional and may be NULL.\r
   @param[in, out] SenseDataLength   On input, a pointer to the length in bytes of\r
-                                    the SenseData buffer. On output, a poiinter to\r
+                                    the SenseData buffer. On output, a pointer to\r
                                     the number of bytes written to the SenseData buffer. \r
   @param[out]     HostAdapterStatus The status of the SCSI Host Controller that produces\r
                                     the SCSI bus containing the SCSI target specified by\r
@@ -53,7 +56,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
                                     See the EFI SCSI I/O Protocol in the UEFI Specification\r
                                     for details on the possible return values.\r
   @param[out]     TargetStatus      The status returned by the SCSI target specified\r
-                                    by ScsiIo when the SCSI Request Packat was executed\r
+                                    by ScsiIo when the SCSI Request Packet was executed\r
                                     on the SCSI Host Controller. See the EFI SCSI I/O\r
                                     Protocol in the UEFI Specification for details on\r
                                     the possible return values. \r
@@ -79,10 +82,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
                                Packet to execute.  See HostAdapterStatus, TargetStatus,\r
                                SenseDataLength, and SenseData in that order for\r
                                additional status information.\r
-  @retval EFI_BAD_BUFFER_SIZE  The SCSI Request Packet was executed, \r
-                               but the entire DataBuffer could not be transferred.\r
-                               The actual number of bytes transferred is returned\r
-                               in InTransferLength.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -132,7 +131,7 @@ ScsiTestUnitReadyCommand (
                                          SCSI I/O Protocol in the UEFI Specification\r
                                          for details on the possible return values.\r
   @param[out]     TargetStatus           The status returned by the SCSI target specified\r
-                                         by ScsiIo when the SCSI Request Packat was\r
+                                         by ScsiIo when the SCSI Request Packet was\r
                                          executed on the SCSI Host Controller.\r
                                          See the EFI SCSI I/O Protocol in the UEFI\r
                                          Specification for details on the possible\r
@@ -228,7 +227,7 @@ ScsiInquiryCommand (
                                      UEFI Specification for details on the possible\r
                                      return values.\r
   @param[out]     TargetStatus       The status returned by the SCSI target specified\r
-                                     by ScsiIo when the SCSI Request Packat was executed\r
+                                     by ScsiIo when the SCSI Request Packet was executed\r
                                      on the SCSI Host Controller.  See the EFI SCSI\r
                                      I/O Protocol in the UEFI Specification for details\r
                                      on the possible return values.\r
@@ -378,6 +377,53 @@ ScsiReadCapacityCommand (
   );\r
 \r
 \r
+/**\r
+  Function to submit read capacity16 command.\r
+\r
+  @param  ScsiIo            A pointer to SCSI IO protocol.\r
+  @param  Timeout           The length of timeout period.\r
+  @param  SenseData         A pointer to output sense data.\r
+  @param  SenseDataLength   The length of output sense data.\r
+  @param  HostAdapterStatus The status of Host Adapter.\r
+  @param  TargetStatus      The status of the target.\r
+  @param  DataBuffer        A pointer to a data buffer.\r
+  @param  DataLength        The length of data buffer.\r
+  @param  PMI               Partial medium indicator.\r
+\r
+  @retval  EFI_SUCCESS            The status of the unit is tested successfully.\r
+  @retval  EFI_BAD_BUFFER_SIZE    The SCSI Request Packet was executed, \r
+                                  but the entire DataBuffer could not be transferred.\r
+                                  The actual number of bytes transferred is returned\r
+                                  in TransferLength.\r
+  @retval  EFI_NOT_READY          The SCSI Request Packet could not be sent because \r
+                                  there are too many SCSI Command Packets already \r
+                                  queued.\r
+  @retval  EFI_DEVICE_ERROR       A device error occurred while attempting to send \r
+                                  the SCSI Request Packet.\r
+  @retval  EFI_INVALID_PARAMETER  The contents of CommandPacket are invalid.  \r
+  @retval  EFI_UNSUPPORTED        The command described by the SCSI Request Packet\r
+                                  is not supported by the SCSI initiator(i.e., SCSI \r
+                                  Host Controller).\r
+  @retval  EFI_TIMEOUT            A timeout occurred while waiting for the SCSI \r
+                                  Request Packet to execute.\r
+\r
+**/\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ScsiReadCapacity16Command (\r
+  IN  EFI_SCSI_IO_PROTOCOL  *ScsiIo,\r
+  IN  UINT64                Timeout,\r
+  IN  VOID                  *SenseData,\r
+  IN OUT UINT8              *SenseDataLength,\r
+  OUT UINT8                 *HostAdapterStatus,\r
+  OUT UINT8                 *TargetStatus,\r
+  OUT VOID                  *DataBuffer,\r
+  IN OUT UINT32             *DataLength,\r
+  IN  BOOLEAN               PMI\r
+  );\r
+\r
+\r
 /**\r
   Execute Read(10) SCSI command on a specific SCSI target.\r
 \r