]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
MdeModulePkg: Clean up source files
[mirror_edk2.git] / MdeModulePkg / Bus / Scsi / ScsiBusDxe / ScsiBus.h
index fb63d0aa95c82ad7ca4f3ef7988409dd19d6caa7..a637042af7bb4a095ba68d91fe4a3fa383af8154 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
   Header file for SCSI Bus Driver.\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 http://opensource.org/licenses/bsd-license.php\r
@@ -33,6 +33,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/UefiScsiLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/DevicePathLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
 \r
 #include <IndustryStandard/Scsi.h>\r
 \r
@@ -40,7 +41,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 typedef union {\r
   UINT32  Scsi;\r
-  UINT8   ExtScsi[4];   \r
+  UINT8   ExtScsi[4];\r
 } SCSI_ID;\r
 \r
 typedef struct _SCSI_TARGET_ID {\r
@@ -54,43 +55,31 @@ typedef struct {
    VOID   *Data2;\r
 } SCSI_EVENT_DATA;\r
 \r
-\r
-typedef struct {\r
-  UINT32                             Signature;\r
-  EFI_HANDLE                         Handle;\r
-  EFI_SCSI_IO_PROTOCOL               ScsiIo;\r
-  EFI_DEVICE_PATH_PROTOCOL           *DevicePath;\r
-  BOOLEAN                            ExtScsiSupport; \r
-  EFI_SCSI_PASS_THRU_PROTOCOL        *ScsiPassThru;\r
-  EFI_EXT_SCSI_PASS_THRU_PROTOCOL    *ExtScsiPassThru;\r
-  SCSI_TARGET_ID                     Pun;\r
-  UINT64                             Lun;\r
-  UINT8                              ScsiDeviceType;\r
-  UINT8                              ScsiVersion;\r
-  BOOLEAN                            RemovableDevice;\r
-} SCSI_IO_DEV;\r
-\r
-#define SCSI_IO_DEV_FROM_THIS(a)  CR (a, SCSI_IO_DEV, ScsiIo, SCSI_IO_DEV_SIGNATURE)\r
-\r
 //\r
 // SCSI Bus Controller device strcuture\r
 //\r
-#define EFI_SCSI_BUS_PROTOCOL_GUID \\r
-  { \\r
-    0x5261213D, 0x3A3D, 0x441E, {0xB3, 0xAF, 0x21, 0xD3, 0xF7, 0xA4, 0xCA, 0x17} \\r
-  }\r
+#define SCSI_BUS_DEVICE_SIGNATURE  SIGNATURE_32 ('s', 'c', 's', 'i')\r
 \r
+//\r
+// SCSI Bus Timeout Experience Value\r
+//\r
+#define SCSI_BUS_TIMEOUT           EFI_TIMER_PERIOD_SECONDS (3)\r
+\r
+//\r
+// The ScsiBusProtocol is just used to locate ScsiBusDev\r
+// structure in the SCSIBusDriverBindingStop(). Then we can\r
+// Close all opened protocols and release this structure.\r
+// ScsiBusProtocol is the private protocol.\r
+// gEfiCallerIdGuid will be used as its protocol guid.\r
+//\r
 typedef struct _EFI_SCSI_BUS_PROTOCOL {\r
   UINT64  Reserved;\r
 } EFI_SCSI_BUS_PROTOCOL;\r
 \r
-#define SCSI_BUS_DEVICE_SIGNATURE  SIGNATURE_32 ('s', 'c', 's', 'i')\r
-\r
-\r
 typedef struct _SCSI_BUS_DEVICE {\r
   UINTN                                 Signature;\r
   EFI_SCSI_BUS_PROTOCOL                 BusIdentify;\r
-  BOOLEAN                               ExtScsiSupport; \r
+  BOOLEAN                               ExtScsiSupport;\r
   EFI_SCSI_PASS_THRU_PROTOCOL           *ScsiInterface;\r
   EFI_EXT_SCSI_PASS_THRU_PROTOCOL       *ExtScsiInterface;\r
   EFI_DEVICE_PATH_PROTOCOL              *DevicePath;\r
@@ -98,6 +87,24 @@ typedef struct _SCSI_BUS_DEVICE {
 \r
 #define SCSI_BUS_CONTROLLER_DEVICE_FROM_THIS(a)  CR (a, SCSI_BUS_DEVICE, BusIdentify, SCSI_BUS_DEVICE_SIGNATURE)\r
 \r
+typedef struct {\r
+  UINT32                             Signature;\r
+  EFI_HANDLE                         Handle;\r
+  EFI_SCSI_IO_PROTOCOL               ScsiIo;\r
+  EFI_DEVICE_PATH_PROTOCOL           *DevicePath;\r
+  BOOLEAN                            ExtScsiSupport;\r
+  EFI_SCSI_PASS_THRU_PROTOCOL        *ScsiPassThru;\r
+  EFI_EXT_SCSI_PASS_THRU_PROTOCOL    *ExtScsiPassThru;\r
+  SCSI_BUS_DEVICE                    *ScsiBusDeviceData;\r
+  SCSI_TARGET_ID                     Pun;\r
+  UINT64                             Lun;\r
+  UINT8                              ScsiDeviceType;\r
+  UINT8                              ScsiVersion;\r
+  BOOLEAN                            RemovableDevice;\r
+} SCSI_IO_DEV;\r
+\r
+#define SCSI_IO_DEV_FROM_THIS(a)  CR (a, SCSI_IO_DEV, ScsiIo, SCSI_IO_DEV_SIGNATURE)\r
+\r
 //\r
 // Global Variables\r
 //\r
@@ -167,7 +174,7 @@ SCSIBusDriverBindingStart (
   restrictions for this service. DisconnectController() must follow these\r
   calling restrictions. If any other agent wishes to call Stop() it must also\r
   follow these calling restrictions.\r
-  \r
+\r
   @param  This              Protocol instance pointer.\r
   @param  ControllerHandle  Handle of device to stop driver on\r
   @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
@@ -288,7 +295,7 @@ ScsiBusComponentNameGetDriverName (
                                 driver specified by This was returned in\r
                                 DriverName.\r
 \r
-  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
 \r
   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
                                 EFI_HANDLE.\r
@@ -320,11 +327,11 @@ ScsiBusComponentNameGetControllerName (
 \r
   @param  This          Protocol instance pointer.\r
   @param  DeviceType    A pointer to the device type information retrieved from\r
-                        the SCSI Controller. \r
+                        the SCSI Controller.\r
 \r
   @retval EFI_SUCCESS             Retrieves the device type information successfully.\r
   @retval EFI_INVALID_PARAMETER   The DeviceType is NULL.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -363,7 +370,7 @@ ScsiGetDeviceLocation (
   @retval  EFI_DEVICE_ERROR  Errors encountered when resetting the SCSI bus.\r
   @retval  EFI_UNSUPPORTED   The bus reset operation is not supported by the\r
                              SCSI Host Controller.\r
-  @retval  EFI_TIMEOUT       A timeout occurred while attempting to reset \r
+  @retval  EFI_TIMEOUT       A timeout occurred while attempting to reset\r
                              the SCSI bus.\r
 **/\r
 EFI_STATUS\r
@@ -393,47 +400,47 @@ ScsiResetDevice (
   Sends a SCSI Request Packet to the SCSI Controller for execution.\r
 \r
   @param  This            Protocol instance pointer.\r
-  @param  CommandPacket   The SCSI request packet to send to the SCSI \r
+  @param  CommandPacket   The SCSI request packet to send to the SCSI\r
                           Controller specified by the device handle.\r
   @param  Event           If the SCSI bus where the SCSI device is attached\r
-                          does not support non-blocking I/O, then Event is \r
-                          ignored, and blocking I/O is performed.  \r
+                          does not support non-blocking I/O, then Event is\r
+                          ignored, and blocking I/O is performed.\r
                           If Event is NULL, then blocking I/O is performed.\r
-                          If Event is not NULL and non-blocking I/O is \r
+                          If Event is not NULL and non-blocking I/O is\r
                           supported, then non-blocking I/O is performed,\r
                           and Event will be signaled when the SCSI Request\r
                           Packet completes.\r
 \r
-  @retval EFI_SUCCESS         The SCSI Request Packet was sent by the host \r
-                              successfully, and TransferLength bytes were \r
-                              transferred to/from DataBuffer.See \r
-                              HostAdapterStatus, TargetStatus, \r
+  @retval EFI_SUCCESS         The SCSI Request Packet was sent by the host\r
+                              successfully, and TransferLength bytes were\r
+                              transferred to/from DataBuffer.See\r
+                              HostAdapterStatus, TargetStatus,\r
                               SenseDataLength, and SenseData in that order\r
                               for additional status information.\r
-  @retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \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. See HostAdapterStatus, \r
-                              TargetStatus, SenseDataLength, and SenseData in \r
+                              in TransferLength. See HostAdapterStatus,\r
+                              TargetStatus, SenseDataLength, and SenseData in\r
                               that order for additional status information.\r
-  @retval EFI_NOT_READY       The SCSI Request Packet could not be sent because \r
-                              there are too many SCSI Command Packets already \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.The caller may retry again later.\r
-  @retval EFI_DEVICE_ERROR    A device error occurred while attempting to send \r
-                              the SCSI Request Packet. See HostAdapterStatus, \r
-                              TargetStatus, SenseDataLength, and SenseData in \r
+  @retval EFI_DEVICE_ERROR    A device error occurred while attempting to send\r
+                              the SCSI Request Packet. See HostAdapterStatus,\r
+                              TargetStatus, SenseDataLength, and SenseData in\r
                               that order for additional status information.\r
-  @retval EFI_INVALID_PARAMETER  The contents of CommandPacket are invalid.  \r
-                                 The SCSI Request Packet was not sent, so no \r
+  @retval EFI_INVALID_PARAMETER  The contents of CommandPacket are invalid.\r
+                                 The SCSI Request Packet was not sent, so no\r
                                  additional status information is available.\r
   @retval EFI_UNSUPPORTED     The command described by the SCSI Request Packet\r
-                              is not supported by the SCSI initiator(i.e., SCSI \r
+                              is not supported by the SCSI initiator(i.e., SCSI\r
                               Host Controller). The SCSI Request Packet was not\r
-                              sent, so no additional status information is \r
+                              sent, so no additional status information is\r
                               available.\r
-  @retval EFI_TIMEOUT         A timeout occurred while waiting for the SCSI \r
+  @retval EFI_TIMEOUT         A timeout occurred while waiting for the SCSI\r
                               Request Packet to execute. See HostAdapterStatus,\r
-                              TargetStatus, SenseDataLength, and SenseData in \r
+                              TargetStatus, SenseDataLength, and SenseData in\r
                               that order for additional status information.\r
 **/\r
 EFI_STATUS\r