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