]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.c
Code Scrub:
[mirror_edk2.git] / MdeModulePkg / Bus / Scsi / ScsiBusDxe / ScsiBus.c
index 4efee5b05baed93ab076074a67ebe6a7394d2fe0..73038c453a5de1b25ec5b35000c8eed592500cb5 100644 (file)
@@ -14,27 +14,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 \r
 \r
-#include <Uefi.h>\r
-\r
-\r
-#include <Protocol/ScsiPassThru.h>\r
-#include <Protocol/ScsiPassThruExt.h>\r
-#include <Protocol/ScsiIo.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/ScsiLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DevicePathLib.h>\r
-\r
 #include "ScsiBus.h"\r
 \r
+\r
 EFI_DRIVER_BINDING_PROTOCOL gSCSIBusDriverBinding = {\r
   SCSIBusDriverBindingSupported,\r
   SCSIBusDriverBindingStart,\r
@@ -52,37 +34,59 @@ EFI_DRIVER_BINDING_PROTOCOL gSCSIBusDriverBinding = {
 //\r
 EFI_GUID  mScsiBusProtocolGuid = EFI_SCSI_BUS_PROTOCOL_GUID;\r
 \r
-VOID  *WorkingBuffer;\r
+VOID  *mWorkingBuffer;\r
+\r
+/**\r
+  Convert EFI_SCSI_IO_SCSI_REQUEST_PACKET packet to EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet.\r
 \r
+  @param  Packet         The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
+  @param  CommandPacket  The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ScsiioToPassThruPacket (\r
   IN      EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet,\r
-  IN OUT  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *CommandPacket\r
+  OUT     EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *CommandPacket\r
   );\r
 \r
+/**\r
+  Convert EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet to EFI_SCSI_IO_SCSI_REQUEST_PACKET packet.\r
+\r
+  @param  ScsiPacket  The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
+  @param  Packet      The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 PassThruToScsiioPacket (\r
   IN     EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *ScsiPacket,\r
-  IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet\r
+  OUT    EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet\r
   );\r
+\r
+/**\r
+  Notify Function in which convert EFI1.0 PassThru Packet back to UEF2.0\r
+  SCSI IO Packet.\r
+\r
+  @param  Event    The instance of EFI_EVENT.\r
+  @param  Context  The parameter passed in.\r
+\r
+**/\r
 VOID\r
 EFIAPI\r
 NotifyFunction (\r
-  EFI_EVENT  Event,\r
-  VOID       *Context\r
+  IN  EFI_EVENT  Event,\r
+  IN  VOID       *Context\r
   );\r
 \r
 /**\r
   The user Entry Point for module ScsiBus. The user code starts with this function.\r
 \r
-  @param[in] ImageHandle    The firmware allocated handle for the EFI image.\r
-  @param[in] SystemTable    A pointer to the EFI System Table.\r
+  @param  ImageHandle    The firmware allocated handle for the EFI image.\r
+  @param  SystemTable    A pointer to the EFI System Table.\r
 \r
-  @retval EFI_SUCCESS       The entry point is executed successfully.\r
-  @retval other             Some error occurs when executing this entry point.\r
+  @retval EFI_SUCCESS    The entry point is executed successfully.\r
+  @retval other          Some error occurs when executing this entry point.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -110,6 +114,26 @@ InitializeScsiBus(
   return Status;\r
 }\r
 \r
+\r
+/**\r
+  Test to see if this driver supports ControllerHandle.\r
+\r
+  This service is called by the EFI boot service ConnectController(). In order\r
+  to make drivers as small as possible, there are a few calling restrictions for\r
+  this service. ConnectController() must follow these calling restrictions. If\r
+  any other agent wishes to call Supported() it must also follow these calling\r
+  restrictions.\r
+\r
+  @param  This                Protocol instance pointer.\r
+  @param  ControllerHandle    Handle of device to test\r
+  @param  RemainingDevicePath Optional parameter use to pick a specific child\r
+                              device to start.\r
+\r
+  @retval EFI_SUCCESS         This driver supports this device\r
+  @retval EFI_ALREADY_STARTED This driver is already running on this device\r
+  @retval other               This driver does not support this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 SCSIBusDriverBindingSupported (\r
@@ -117,26 +141,6 @@ SCSIBusDriverBindingSupported (
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Test to see if this driver supports ControllerHandle. Any ControllerHandle\r
-  that has ExtScsiPassThruProtocol/ScsiPassThruProtocol installed will be supported.\r
-\r
-Arguments:\r
-\r
-  This                - Protocol instance pointer.\r
-  Controller          - Handle of device to test\r
-  RemainingDevicePath - Not used\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS         - This driver supports this device.\r
-  EFI_UNSUPPORTED     - This driver does not support this device.\r
-\r
---*/\r
-\r
 {\r
   EFI_STATUS  Status;\r
   EFI_SCSI_PASS_THRU_PROTOCOL *PassThru;\r
@@ -194,6 +198,26 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
+\r
+/**\r
+  Start this driver on ControllerHandle.\r
+\r
+  This service is called by the EFI boot service ConnectController(). In order\r
+  to make drivers as small as possible, there are a few calling restrictions for\r
+  this service. ConnectController() must follow these calling restrictions. If\r
+  any other agent wishes to call Start() it must also follow these calling\r
+  restrictions.\r
+\r
+  @param  This                 Protocol instance pointer.\r
+  @param  ControllerHandle     Handle of device to bind driver to\r
+  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
+                               device to start.\r
+\r
+  @retval EFI_SUCCESS          This driver is added to ControllerHandle\r
+  @retval EFI_ALREADY_STARTED  This driver is already running on ControllerHandle\r
+  @retval other                This driver does not support this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 SCSIBusDriverBindingStart (\r
@@ -201,22 +225,6 @@ SCSIBusDriverBindingStart (
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-  Starting the SCSI Bus Driver\r
-\r
-Arguments:\r
-  This                - Protocol instance pointer.\r
-  Controller          - Handle of device to test\r
-  RemainingDevicePath - Not used\r
-\r
-Returns:\r
-  EFI_SUCCESS         - This driver supports this device.\r
-  EFI_UNSUPPORTED     - This driver does not support this device.\r
-  EFI_DEVICE_ERROR    - This driver cannot be started due to device Error\r
-\r
---*/\r
 {\r
   UINT64                                Lun;\r
   UINT8                                 *TargetId;\r
@@ -239,7 +247,7 @@ Returns:
   FromFirstTarget = FALSE;\r
   ExtScsiSupport  = FALSE;\r
   PassThruStatus  = EFI_SUCCESS;\r
-    \r
+  \r
   ScsiTargetId = AllocateZeroPool(sizeof(SCSI_TARGET_ID));\r
   if (ScsiTargetId == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -419,7 +427,7 @@ Returns:
     //\r
     Status = ScsiScanCreateDevice (This, Controller, ScsiTargetId, Lun, ScsiBusDev);\r
   }\r
-  gBS->FreePool (ScsiTargetId);\r
+  FreePool (ScsiTargetId);\r
   return EFI_SUCCESS;\r
   \r
 ErrorExit:\r
@@ -454,6 +462,25 @@ ErrorExit:
   return Status;\r
 }\r
 \r
+/**\r
+  Stop this driver on ControllerHandle.\r
+\r
+  This service is called by the EFI boot service DisconnectController().\r
+  In order to make drivers as small as possible, there are a few calling\r
+  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
+  @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
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 SCSIBusDriverBindingStop (\r
@@ -462,25 +489,6 @@ SCSIBusDriverBindingStop (
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Stop this driver on ControllerHandle. Support stoping any child handles\r
-  created by this driver.\r
-\r
-Arguments:\r
-\r
-  This              - Protocol instance pointer.\r
-  Controller        - Handle of device to stop driver on\r
-  NumberOfChildren  - Number of Children in the ChildHandleBuffer\r
-  ChildHandleBuffer - List of handles for the children we need to stop.\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-  Others\r
---*/\r
 {\r
   EFI_STATUS                  Status;\r
   BOOLEAN                     AllChildrenStopped;\r
@@ -627,30 +635,24 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
+\r
+/**\r
+  Retrieves the device type information of the SCSI Controller.\r
+\r
+  @param  This          Protocol instance pointer.\r
+  @param  DeviceType    A pointer to the device type information retrieved from\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
 EFI_STATUS\r
 EFIAPI\r
 ScsiGetDeviceType (\r
   IN  EFI_SCSI_IO_PROTOCOL     *This,\r
   OUT UINT8                    *DeviceType\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Retrieves the device type information of the SCSI Controller.\r
-    \r
-Arguments:\r
-\r
-  This                  - Protocol instance pointer.\r
-  DeviceType            - A pointer to the device type information\r
-                            retrieved from the SCSI Controller. \r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS           - Retrieves the device type information successfully.\r
-  EFI_INVALID_PARAMETER - The DeviceType is NULL.\r
-  \r
---*/\r
 {\r
   SCSI_IO_DEV *ScsiIoDevice;\r
 \r
@@ -663,6 +665,20 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
+\r
+/**\r
+  Retrieves the device location in the SCSI channel.\r
+\r
+  @param  This   Protocol instance pointer.\r
+  @param  Target A pointer to the Target ID of a SCSI device\r
+                 on the SCSI channel.\r
+  @param  Lun    A pointer to the LUN of the SCSI device on\r
+                 the SCSI channel.\r
+\r
+  @retval EFI_SUCCESS           Retrieves the device location successfully.\r
+  @retval EFI_INVALID_PARAMETER The Target or Lun is NULL.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ScsiGetDeviceLocation (\r
@@ -670,26 +686,6 @@ ScsiGetDeviceLocation (
   IN OUT UINT8                **Target,\r
   OUT UINT64                  *Lun\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Retrieves the device location in the SCSI channel.\r
-    \r
-Arguments:\r
-\r
-  This                  - Protocol instance pointer.\r
-  Target                - A pointer to the Target Array which represents ID of a SCSI device \r
-                          on the SCSI channel. \r
-  Lun                   - A pointer to the LUN of the SCSI device on \r
-                          the SCSI channel.\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS           - Retrieves the device location successfully.\r
-  EFI_INVALID_PARAMETER - The Target or Lun is NULL.\r
-\r
---*/\r
 {\r
   SCSI_IO_DEV *ScsiIoDevice;\r
 \r
@@ -706,30 +702,23 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Resets the SCSI Bus that the SCSI Controller is attached to.\r
+\r
+  @param  This  Protocol instance pointer.\r
+\r
+  @retval  EFI_SUCCESS       The SCSI bus is reset successfully.\r
+  @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
+                             the SCSI bus.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ScsiResetBus (\r
   IN  EFI_SCSI_IO_PROTOCOL     *This\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Resets the SCSI Bus that the SCSI Controller is attached to.\r
-    \r
-Arguments:\r
-\r
-  This                  - Protocol instance pointer.\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS           - The SCSI bus is reset successfully.\r
-  EFI_DEVICE_ERROR      - Errors encountered when resetting the SCSI bus.\r
-  EFI_UNSUPPORTED       - The bus reset operation is not supported by the\r
-                          SCSI Host Controller.\r
-  EFI_TIMEOUT           - A timeout occurred while attempting to reset \r
-                          the SCSI bus.\r
---*/\r
 {\r
   SCSI_IO_DEV *ScsiIoDevice;\r
 \r
@@ -742,31 +731,23 @@ Returns:
   }\r
 }\r
 \r
+\r
+/**\r
+  Resets the SCSI Controller that the device handle specifies.\r
+\r
+  @param  This  Protocol instance pointer.\r
+\r
+  @retval  EFI_SUCCESS       Reset the SCSI controller successfully.\r
+  @retval  EFI_DEVICE_ERROR  Errors are encountered when resetting the SCSI Controller.\r
+  @retval  EFI_UNSUPPORTED   The SCSI bus does not support a device reset operation.\r
+  @retval  EFI_TIMEOUT       A timeout occurred while attempting to reset the\r
+                             SCSI Controller.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ScsiResetDevice (\r
   IN  EFI_SCSI_IO_PROTOCOL     *This\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Resets the SCSI Controller that the device handle specifies.\r
-    \r
-Arguments:\r
-\r
-  This                  - Protocol instance pointer.\r
-    \r
-Returns:\r
-\r
-  EFI_SUCCESS           - Reset the SCSI controller successfully.\r
-  EFI_DEVICE_ERROR      - Errors are encountered when resetting the\r
-                          SCSI Controller.\r
-  EFI_UNSUPPORTED       - The SCSI bus does not support a device \r
-                          reset operation.\r
-  EFI_TIMEOUT           - A timeout occurred while attempting to \r
-                          reset the SCSI Controller.\r
---*/\r
 {\r
   SCSI_IO_DEV  *ScsiIoDevice;\r
   UINT8        Target[TARGET_MAX_BYTES];\r
@@ -790,25 +771,14 @@ Returns:
   }\r
 }\r
 \r
-EFI_STATUS\r
-EFIAPI\r
-ScsiExecuteSCSICommand (\r
-  IN  EFI_SCSI_IO_PROTOCOL                         *This,\r
-  IN OUT  EFI_SCSI_IO_SCSI_REQUEST_PACKET          *Packet,\r
-  IN EFI_EVENT                                     Event  OPTIONAL\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
 \r
+/**\r
   Sends a SCSI Request Packet to the SCSI Controller for execution.\r
-    \r
-Arguments:\r
 \r
-  This                  - Protocol instance pointer.\r
-  Packet                - The SCSI request packet to send to the SCSI \r
+  @param  This            Protocol instance pointer.\r
+  @param  CommandPacket   The SCSI request packet to send to the SCSI \r
                           Controller specified by the device handle.\r
-  Event                 - If the SCSI bus where the SCSI device is attached\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
                           If Event is NULL, then blocking I/O is performed.\r
@@ -816,40 +786,46 @@ Arguments:
                           supported, then non-blocking I/O is performed,\r
                           and Event will be signaled when the SCSI Request\r
                           Packet completes.\r
-Returns:\r
-\r
-  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
-  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
-                          that order for additional status information.\r
-  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
-  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
-  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
-  EFI_UNSUPPORTED       - The command described by the SCSI Request Packet\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
-                          available.\r
-  EFI_TIMEOUT           - A timeout occurred while waiting for the SCSI \r
-                          Request Packet to execute. See HostAdapterStatus,\r
-                          TargetStatus, SenseDataLength, and SenseData in \r
-                          that order for additional status information.\r
---*/\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
+                              SenseDataLength, and SenseData in that order\r
+                              for 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 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
+                              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
+                              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
+                                 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
+                              Host Controller). The SCSI Request Packet was not\r
+                              sent, so no additional status information is \r
+                              available.\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
+                              that order for additional status information.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ScsiExecuteSCSICommand (\r
+  IN     EFI_SCSI_IO_PROTOCOL                     *This,\r
+  IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET          *Packet,\r
+  IN     EFI_EVENT                                Event  OPTIONAL\r
+  )\r
 {\r
   SCSI_IO_DEV                                 *ScsiIoDevice;\r
   EFI_STATUS                                  Status;\r
@@ -881,7 +857,7 @@ Returns:
     Status = gBS->AllocatePool (\r
                      EfiBootServicesData,\r
                      sizeof(EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET),\r
-                     (VOID**)&WorkingBuffer\r
+                     (VOID**)&mWorkingBuffer\r
                      );\r
 \r
     if (EFI_ERROR (Status)) {\r
@@ -891,9 +867,9 @@ Returns:
     //\r
     // Convert package into EFI1.0, EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET.\r
     //\r
-    Status = ScsiioToPassThruPacket(Packet, (EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)WorkingBuffer);\r
+    Status = ScsiioToPassThruPacket(Packet, (EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)mWorkingBuffer);\r
     if (EFI_ERROR(Status)) {\r
-      gBS->FreePool(WorkingBuffer);\r
+      FreePool(mWorkingBuffer);\r
       return Status;\r
     }\r
 \r
@@ -911,7 +887,7 @@ Returns:
                        &PacketEvent\r
                        );\r
       if (EFI_ERROR(Status)) {\r
-        gBS->FreePool(WorkingBuffer);\r
+        FreePool(mWorkingBuffer);\r
         return Status;\r
       }\r
 \r
@@ -919,12 +895,12 @@ Returns:
                                           ScsiIoDevice->ScsiPassThru,\r
                                           ScsiIoDevice->Pun.ScsiId.Scsi,\r
                                           ScsiIoDevice->Lun,\r
-                                          WorkingBuffer,\r
+                                          mWorkingBuffer,\r
                                           PacketEvent\r
                                           );\r
 \r
       if (EFI_ERROR(Status)) {\r
-        gBS->FreePool(WorkingBuffer);\r
+        gBS->FreePool(mWorkingBuffer);\r
         gBS->CloseEvent(PacketEvent);\r
         return Status;\r
       }\r
@@ -938,70 +914,59 @@ Returns:
                                           ScsiIoDevice->ScsiPassThru,\r
                                           ScsiIoDevice->Pun.ScsiId.Scsi,\r
                                           ScsiIoDevice->Lun,\r
-                                          WorkingBuffer,\r
+                                          mWorkingBuffer,\r
                                           Event\r
                                           );\r
       if (EFI_ERROR(Status)) {\r
-        gBS->FreePool(WorkingBuffer);\r
+        FreePool(mWorkingBuffer);\r
         return Status;\r
       }\r
 \r
-      PassThruToScsiioPacket((EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)WorkingBuffer,Packet);\r
+      PassThruToScsiioPacket((EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)mWorkingBuffer,Packet);\r
       //\r
       // After converting EFI1.0 PassThru Packet back to UEFI2.0 SCSI IO Packet,\r
-      // free WorkingBuffer.\r
+      // free mWorkingBuffer.\r
       //\r
-      gBS->FreePool(WorkingBuffer);\r
+      FreePool(mWorkingBuffer);\r
     }\r
   }\r
   return Status;\r
 }\r
 \r
-EFI_STATUS\r
-EFIAPI\r
-ScsiScanCreateDevice (\r
-  EFI_DRIVER_BINDING_PROTOCOL   *This,\r
-  EFI_HANDLE                    Controller,\r
-  SCSI_TARGET_ID                *TargetId,\r
-  UINT64                        Lun,\r
-  SCSI_BUS_DEVICE               *ScsiBusDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
 \r
+/**\r
   Scan SCSI Bus to discover the device, and attach ScsiIoProtocol to it.\r
 \r
-Arguments:\r
+  @param  This           Protocol instance pointer\r
+  @param  Controller     Controller handle\r
+  @param  TargetId       Tartget 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
-  This              - Protocol instance pointer\r
-  Controller        - Controller handle\r
-  Pun               - The Pun of the SCSI device on the SCSI channel.\r
-  Lun               - The Lun of the SCSI device on the SCSI channel.\r
-  ScsiBusDev        - The pointer of SCSI_BUS_DEVICE\r
+  @retval EFI_SUCCESS           Successfully to discover the device and attach\r
+                                ScsiIoProtocol to it.\r
+  @retval EFI_OUT_OF_RESOURCES  Fail to discover the device.\r
 \r
-Returns:\r
-\r
-  EFI_SUCCESS       - Successfully to discover the device and attach ScsiIoProtocol to it.\r
-  EFI_OUT_OF_RESOURCES - Fail to discover the device.\r
-\r
---*/\r
+**/\r
+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
+  )\r
 {\r
   EFI_STATUS                Status;\r
   SCSI_IO_DEV               *ScsiIoDevice;\r
   EFI_DEVICE_PATH_PROTOCOL  *ScsiDevicePath;\r
 \r
-  Status = gBS->AllocatePool (\r
-                  EfiBootServicesData,\r
-                  sizeof (SCSI_IO_DEV),\r
-                  (VOID **) &ScsiIoDevice\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  ScsiIoDevice = AllocateZeroPool (sizeof (SCSI_IO_DEV));\r
+  if (ScsiIoDevice == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
-  ZeroMem (ScsiIoDevice, sizeof (SCSI_IO_DEV));\r
-\r
   ScsiIoDevice->Signature                 = SCSI_IO_DEV_SIGNATURE;\r
   CopyMem(&ScsiIoDevice->Pun, TargetId, TARGET_MAX_BYTES);\r
   ScsiIoDevice->Lun                       = Lun;\r
@@ -1025,7 +990,7 @@ Returns:
 \r
 \r
   if (!DiscoverScsiDevice (ScsiIoDevice)) {\r
-    gBS->FreePool (ScsiIoDevice);\r
+    FreePool (ScsiIoDevice);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -1040,7 +1005,7 @@ Returns:
                                           &ScsiDevicePath\r
                                           );\r
     if (Status == EFI_OUT_OF_RESOURCES) {\r
-      gBS->FreePool (ScsiIoDevice);\r
+      FreePool (ScsiIoDevice);\r
       return Status;\r
     }\r
   } else {\r
@@ -1051,7 +1016,7 @@ Returns:
                                           &ScsiDevicePath\r
                                           );\r
     if (Status == EFI_OUT_OF_RESOURCES) {\r
-      gBS->FreePool (ScsiIoDevice);\r
+      FreePool (ScsiIoDevice);\r
       return Status;\r
     }\r
   }\r
@@ -1107,27 +1072,20 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
-BOOLEAN\r
-EFIAPI\r
-DiscoverScsiDevice (\r
-  SCSI_IO_DEV   *ScsiIoDevice\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
 \r
+/**\r
   Discovery SCSI Device\r
 \r
-Arguments:\r
-\r
-  ScsiIoDevice    - The pointer of SCSI_IO_DEV\r
-\r
-Returns:\r
+  @param  ScsiIoDevice    The pointer of SCSI_IO_DEV\r
 \r
-  TRUE            - Find SCSI Device and verify it.\r
-  FALSE           - Unable to find SCSI Device.\r
+  @retval  TRUE   Find SCSI Device and verify it.\r
+  @retval  FALSE  Unable to find SCSI Device.\r
 \r
---*/\r
+**/\r
+BOOLEAN\r
+DiscoverScsiDevice (\r
+  IN OUT  SCSI_IO_DEV   *ScsiIoDevice\r
+  )\r
 {\r
   EFI_STATUS            Status;\r
   UINT32                InquiryDataLength;\r
@@ -1157,9 +1115,6 @@ Returns:
             FALSE\r
             );\r
   if (EFI_ERROR (Status)) {\r
-    //\r
-    //    ParseSenseData (&SenseData,SenseDataLength);\r
-    //\r
     return FALSE;\r
   }\r
   //\r
@@ -1198,29 +1153,19 @@ Returns:
 }\r
 \r
 \r
+/**\r
+  Convert EFI_SCSI_IO_SCSI_REQUEST_PACKET packet to EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet.\r
+\r
+  @param  Packet         The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
+  @param  CommandPacket  The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ScsiioToPassThruPacket (\r
   IN      EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet,\r
-  IN OUT  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *CommandPacket\r
+  OUT     EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *CommandPacket\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Convert EFI_SCSI_IO_SCSI_REQUEST_PACKET packet to\r
-  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet\r
-\r
-Arguments:\r
-\r
-  Packet            - The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
-  CommandPacket     - The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
-\r
-Returns:\r
-\r
-  NONE\r
-\r
---*/\r
 {\r
   //\r
   //EFI 1.10 doesn't support Bi-Direction Command.\r
@@ -1251,29 +1196,19 @@ Returns:
 }\r
 \r
 \r
+/**\r
+  Convert EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet to EFI_SCSI_IO_SCSI_REQUEST_PACKET packet.\r
+\r
+  @param  ScsiPacket  The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
+  @param  Packet      The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 PassThruToScsiioPacket (\r
   IN     EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET  *ScsiPacket,\r
-  IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet\r
+  OUT    EFI_SCSI_IO_SCSI_REQUEST_PACKET         *Packet\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Convert EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET packet to\r
-  EFI_SCSI_IO_SCSI_REQUEST_PACKET packet\r
-\r
-Arguments:\r
-\r
-  ScsiPacket        - The pointer of EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET\r
-  Packet            - The pointer of EFI_SCSI_IO_SCSI_REQUEST_PACKET\r
-\r
-Returns:\r
-\r
-  NONE\r
-\r
---*/\r
 {\r
   Packet->Timeout           = ScsiPacket->Timeout;\r
   Packet->Cdb               = ScsiPacket->Cdb;\r
@@ -1295,31 +1230,20 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Notify Function in which convert EFI1.0 PassThru Packet back to UEF2.0\r
+  SCSI IO Packet.\r
 \r
+  @param  Event    The instance of EFI_EVENT.\r
+  @param  Context  The parameter passed in.\r
 \r
+**/\r
 VOID\r
 EFIAPI\r
 NotifyFunction (\r
-  EFI_EVENT  Event,\r
-  VOID       *Context\r
+  IN  EFI_EVENT  Event,\r
+  IN  VOID       *Context\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Notify Function in which convert EFI1.0 PassThru Packet back to UEF2.0\r
-  SCSI IO Packet.\r
-\r
-Arguments:\r
-\r
-  Event          - The instance of EFI_EVENT.\r
-  Context        - The parameter passed in.\r
-\r
-Returns:\r
-\r
-  NONE\r
-\r
---*/\r
 {\r
   EFI_SCSI_IO_SCSI_REQUEST_PACKET          *Packet;\r
   EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET   *ScsiPacket;\r
@@ -1328,7 +1252,7 @@ Returns:
 \r
   PassData = (SCSI_EVENT_DATA*)Context;\r
   Packet  = (EFI_SCSI_IO_SCSI_REQUEST_PACKET *)PassData->Data1;\r
-  ScsiPacket =  (EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)WorkingBuffer;\r
+  ScsiPacket =  (EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET*)mWorkingBuffer;\r
 \r
   //\r
   // Convert EFI1.0 PassThru packet to UEFI2.0 SCSI IO Packet.\r
@@ -1337,9 +1261,9 @@ Returns:
 \r
   //\r
   // After converting EFI1.0 PassThru Packet back to UEFI2.0 SCSI IO Packet,\r
-  // free WorkingBuffer.\r
+  // free mWorkingBuffer.\r
   //\r
-  gBS->FreePool(WorkingBuffer);\r
+  gBS->FreePool(mWorkingBuffer);\r
 \r
   //\r
   // Signal Event to tell caller to pick up UEFI2.0 SCSI IO Packet.\r
@@ -1348,3 +1272,4 @@ Returns:
   gBS->CloseEvent(Event);\r
   gBS->SignalEvent(CallerEvent);\r
 }\r
+\r