]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Bus / Scsi / ScsiBusDxe / ScsiBus.h
index 895d48388ba10e01277dd890b4a45648f227d0bd..68c5c02a916138b3afe062db408f073df07fe57b 100644 (file)
@@ -1,21 +1,14 @@
 /** @file\r
   Header file for SCSI Bus Driver.\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
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef _SCSI_BUS_H_\r
 #define _SCSI_BUS_H_\r
 \r
-\r
 #include <Uefi.h>\r
 \r
 #include <Protocol/ScsiPassThru.h>\r
@@ -33,34 +26,68 @@ 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
-#define SCSI_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 'i', 'o')\r
+#define SCSI_IO_DEV_SIGNATURE  SIGNATURE_32 ('s', 'c', 'i', 'o')\r
 \r
-typedef struct _SCSI_TARGET_ID {\r
- union {\r
-   UINT32  Scsi;\r
-   UINT8   ExtScsi[4];   \r
- } ScsiId;\r
-  UINT8   ExtScsiId[12];\r
-}SCSI_TARGET_ID;\r
+typedef union {\r
+  UINT32    Scsi;\r
+  UINT8     ExtScsi[4];\r
+} SCSI_ID;\r
 \r
+typedef struct _SCSI_TARGET_ID {\r
+  SCSI_ID    ScsiId;\r
+  UINT8      ExtScsiId[12];\r
+} SCSI_TARGET_ID;\r
 \r
 typedef struct {\r
-   VOID   *Data1;\r
-   VOID   *Data2;\r
+  VOID    *Data1;\r
+  VOID    *Data2;\r
 } SCSI_EVENT_DATA;\r
 \r
+//\r
+// SCSI Bus Controller device structure\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
+typedef struct _SCSI_BUS_DEVICE {\r
+  UINTN                              Signature;\r
+  EFI_SCSI_BUS_PROTOCOL              BusIdentify;\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
+} SCSI_BUS_DEVICE;\r
+\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
+  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
@@ -70,32 +97,6 @@ typedef struct {
 \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
-\r
-typedef struct _EFI_SCSI_BUS_PROTOCOL {\r
-  UINT64  Reserved;\r
-} EFI_SCSI_BUS_PROTOCOL;\r
-\r
-#define SCSI_BUS_DEVICE_SIGNATURE  EFI_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
-  EFI_SCSI_PASS_THRU_PROTOCOL           *ScsiInterface;\r
-  EFI_EXT_SCSI_PASS_THRU_PROTOCOL       *ExtScsiInterface;\r
-  EFI_DEVICE_PATH_PROTOCOL              *DevicePath;\r
-} SCSI_BUS_DEVICE;\r
-\r
-#define SCSI_BUS_CONTROLLER_DEVICE_FROM_THIS(a)  CR (a, SCSI_BUS_DEVICE, BusIdentify, SCSI_BUS_DEVICE_SIGNATURE)\r
-\r
 //\r
 // Global Variables\r
 //\r
@@ -165,7 +166,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
@@ -179,15 +180,16 @@ SCSIBusDriverBindingStart (
 EFI_STATUS\r
 EFIAPI\r
 SCSIBusDriverBindingStop (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN  EFI_HANDLE                      Controller,\r
-  IN  UINTN                           NumberOfChildren,\r
-  IN  EFI_HANDLE                      *ChildHandleBuffer\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN  EFI_HANDLE                   Controller,\r
+  IN  UINTN                        NumberOfChildren,\r
+  IN  EFI_HANDLE                   *ChildHandleBuffer\r
   );\r
 \r
 //\r
 // EFI Component Name Functions\r
 //\r
+\r
 /**\r
   Retrieves a Unicode string that is the user readable name of the driver.\r
 \r
@@ -208,7 +210,7 @@ SCSIBusDriverBindingStop (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified\r
-                                in RFC 3066 or ISO 639-2 language code format.\r
+                                in RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  DriverName            A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -272,7 +274,7 @@ ScsiBusComponentNameGetDriverName (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName        A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -286,7 +288,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
@@ -306,11 +308,11 @@ ScsiBusComponentNameGetDriverName (
 EFI_STATUS\r
 EFIAPI\r
 ScsiBusComponentNameGetControllerName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
-  IN  EFI_HANDLE                                      ControllerHandle,\r
-  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
-  IN  CHAR8                                           *Language,\r
-  OUT CHAR16                                          **ControllerName\r
+  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,\r
+  IN  EFI_HANDLE                   ControllerHandle,\r
+  IN  EFI_HANDLE                   ChildHandle        OPTIONAL,\r
+  IN  CHAR8                        *Language,\r
+  OUT CHAR16                       **ControllerName\r
   );\r
 \r
 /**\r
@@ -318,17 +320,17 @@ 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
 ScsiGetDeviceType (\r
-  IN  EFI_SCSI_IO_PROTOCOL     *This,\r
-  OUT UINT8                    *DeviceType\r
+  IN  EFI_SCSI_IO_PROTOCOL  *This,\r
+  OUT UINT8                 *DeviceType\r
   );\r
 \r
 /**\r
@@ -347,9 +349,9 @@ ScsiGetDeviceType (
 EFI_STATUS\r
 EFIAPI\r
 ScsiGetDeviceLocation (\r
-  IN  EFI_SCSI_IO_PROTOCOL    *This,\r
-  IN OUT UINT8                **Target,\r
-  OUT UINT64                  *Lun\r
+  IN  EFI_SCSI_IO_PROTOCOL  *This,\r
+  IN OUT UINT8              **Target,\r
+  OUT UINT64                *Lun\r
   );\r
 \r
 /**\r
@@ -361,13 +363,13 @@ 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
 EFIAPI\r
 ScsiResetBus (\r
-  IN  EFI_SCSI_IO_PROTOCOL     *This\r
+  IN  EFI_SCSI_IO_PROTOCOL  *This\r
   );\r
 \r
 /**\r
@@ -384,54 +386,54 @@ ScsiResetBus (
 EFI_STATUS\r
 EFIAPI\r
 ScsiResetDevice (\r
-  IN  EFI_SCSI_IO_PROTOCOL     *This\r
+  IN  EFI_SCSI_IO_PROTOCOL  *This\r
   );\r
 \r
 /**\r
   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
@@ -447,7 +449,7 @@ ScsiExecuteSCSICommand (
 \r
   @param  This           Protocol instance pointer\r
   @param  Controller     Controller handle\r
-  @param  TargetId       Tartget to be scanned\r
+  @param  TargetId       Target to be scanned\r
   @param  Lun            The Lun of the SCSI device on the SCSI channel.\r
   @param  ScsiBusDev     The pointer of SCSI_BUS_DEVICE\r
 \r
@@ -459,11 +461,11 @@ ScsiExecuteSCSICommand (
 EFI_STATUS\r
 EFIAPI\r
 ScsiScanCreateDevice (\r
-  IN     EFI_DRIVER_BINDING_PROTOCOL   *This,\r
-  IN     EFI_HANDLE                    Controller,\r
-  IN     SCSI_TARGET_ID                *TargetId,\r
-  IN     UINT64                        Lun,\r
-  IN OUT SCSI_BUS_DEVICE               *ScsiBusDev\r
+  IN     EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN     EFI_HANDLE                   Controller,\r
+  IN     SCSI_TARGET_ID               *TargetId,\r
+  IN     UINT64                       Lun,\r
+  IN OUT SCSI_BUS_DEVICE              *ScsiBusDev\r
   );\r
 \r
 /**\r
@@ -477,7 +479,7 @@ ScsiScanCreateDevice (
 **/\r
 BOOLEAN\r
 DiscoverScsiDevice (\r
-  IN  OUT  SCSI_IO_DEV   *ScsiIoDevice\r
+  IN  OUT  SCSI_IO_DEV  *ScsiIoDevice\r
   );\r
 \r
 #endif\r