\r
**/\r
\r
-\r
#include "ScsiDisk.h"\r
\r
-EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding = {\r
+EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding = {\r
ScsiDiskDriverBindingSupported,\r
ScsiDiskDriverBindingStart,\r
ScsiDiskDriverBindingStop,\r
NULL\r
};\r
\r
-EFI_DISK_INFO_PROTOCOL gScsiDiskInfoProtocolTemplate = {\r
+EFI_DISK_INFO_PROTOCOL gScsiDiskInfoProtocolTemplate = {\r
EFI_DISK_INFO_SCSI_INTERFACE_GUID,\r
ScsiDiskInfoInquiry,\r
ScsiDiskInfoIdentify,\r
**/\r
VOID *\r
AllocateAlignedBuffer (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINTN BufferSize\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINTN BufferSize\r
)\r
{\r
return AllocateAlignedPages (EFI_SIZE_TO_PAGES (BufferSize), ScsiDiskDevice->ScsiIo->IoAlign);\r
**/\r
VOID\r
FreeAlignedBuffer (\r
- IN VOID *Buffer,\r
- IN UINTN BufferSize\r
+ IN VOID *Buffer,\r
+ IN UINTN BufferSize\r
)\r
{\r
if (Buffer != NULL) {\r
**/\r
EFI_STATUS\r
EFIAPI\r
-InitializeScsiDisk(\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+InitializeScsiDisk (\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Install driver model protocol(s).\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
-\r
return Status;\r
}\r
\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiScsiIoProtocolGuid,\r
- (VOID **) &ScsiIo,\r
+ (VOID **)&ScsiIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
if (!EFI_ERROR (Status)) {\r
if ((DeviceType == EFI_SCSI_TYPE_DISK) ||\r
(DeviceType == EFI_SCSI_TYPE_CDROM) ||\r
- (DeviceType == EFI_SCSI_TYPE_WLUN)) {\r
+ (DeviceType == EFI_SCSI_TYPE_WLUN))\r
+ {\r
Status = EFI_SUCCESS;\r
} else {\r
Status = EFI_UNSUPPORTED;\r
return Status;\r
}\r
\r
-\r
/**\r
Start this driver on ControllerHandle.\r
\r
\r
MustReadCapacity = TRUE;\r
\r
- ScsiDiskDevice = (SCSI_DISK_DEV *) AllocateZeroPool (sizeof (SCSI_DISK_DEV));\r
+ ScsiDiskDevice = (SCSI_DISK_DEV *)AllocateZeroPool (sizeof (SCSI_DISK_DEV));\r
if (ScsiDiskDevice == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiScsiIoProtocolGuid,\r
- (VOID **) &ScsiIo,\r
+ (VOID **)&ScsiIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
\r
ScsiIo->GetDeviceType (ScsiIo, &(ScsiDiskDevice->DeviceType));\r
switch (ScsiDiskDevice->DeviceType) {\r
- case EFI_SCSI_TYPE_DISK:\r
- ScsiDiskDevice->BlkIo.Media->BlockSize = 0x200;\r
- MustReadCapacity = TRUE;\r
- break;\r
+ case EFI_SCSI_TYPE_DISK:\r
+ ScsiDiskDevice->BlkIo.Media->BlockSize = 0x200;\r
+ MustReadCapacity = TRUE;\r
+ break;\r
\r
- case EFI_SCSI_TYPE_CDROM:\r
- ScsiDiskDevice->BlkIo.Media->BlockSize = 0x800;\r
- ScsiDiskDevice->BlkIo.Media->ReadOnly = TRUE;\r
- MustReadCapacity = FALSE;\r
- break;\r
+ case EFI_SCSI_TYPE_CDROM:\r
+ ScsiDiskDevice->BlkIo.Media->BlockSize = 0x800;\r
+ ScsiDiskDevice->BlkIo.Media->ReadOnly = TRUE;\r
+ MustReadCapacity = FALSE;\r
+ break;\r
\r
- case EFI_SCSI_TYPE_WLUN:\r
- MustReadCapacity = FALSE;\r
- break;\r
+ case EFI_SCSI_TYPE_WLUN:\r
+ MustReadCapacity = FALSE;\r
+ break;\r
}\r
+\r
//\r
// The Sense Data Array's initial size is 6\r
//\r
ScsiDiskDevice->SenseDataNumber = 6;\r
- ScsiDiskDevice->SenseData = (EFI_SCSI_SENSE_DATA *) AllocateZeroPool (\r
- sizeof (EFI_SCSI_SENSE_DATA) * ScsiDiskDevice->SenseDataNumber\r
- );\r
+ ScsiDiskDevice->SenseData = (EFI_SCSI_SENSE_DATA *)AllocateZeroPool (\r
+ sizeof (EFI_SCSI_SENSE_DATA) * ScsiDiskDevice->SenseDataNumber\r
+ );\r
if (ScsiDiskDevice->SenseData == NULL) {\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiScsiIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiScsiIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
FreePool (ScsiDiskDevice);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// The second parameter "TRUE" means must\r
// retrieve media capacity\r
DEBUG ((DEBUG_ERROR, "ScsiDisk: Failed to install the Erase Block Protocol! Status = %r\n", Status));\r
}\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, Controller)) {\r
Status = gBS->InstallProtocolInterface (\r
&Controller,\r
DEBUG ((DEBUG_ERROR, "ScsiDisk: Failed to install the Storage Security Command Protocol! Status = %r\n", Status));\r
}\r
}\r
+\r
ScsiDiskDevice->ControllerNameTable = NULL;\r
AddUnicodeString2 (\r
"eng",\r
Controller\r
);\r
return Status;\r
-\r
}\r
\r
-\r
/**\r
Stop this driver on ControllerHandle.\r
\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer OPTIONAL\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer OPTIONAL\r
)\r
{\r
- EFI_BLOCK_IO_PROTOCOL *BlkIo;\r
- EFI_ERASE_BLOCK_PROTOCOL *EraseBlock;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
- EFI_STATUS Status;\r
+ EFI_BLOCK_IO_PROTOCOL *BlkIo;\r
+ EFI_ERASE_BLOCK_PROTOCOL *EraseBlock;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_STATUS Status;\r
\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiBlockIoProtocolGuid,\r
- (VOID **) &BlkIo,\r
+ (VOID **)&BlkIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
//\r
// Wait for the BlockIo2 requests queue to become empty\r
//\r
- while (!IsListEmpty (&ScsiDiskDevice->AsyncTaskQueue));\r
+ while (!IsListEmpty (&ScsiDiskDevice->AsyncTaskQueue)) {\r
+ }\r
\r
//\r
// If Erase Block Protocol is installed, then uninstall this protocol.\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiEraseBlockProtocolGuid,\r
- (VOID **) &EraseBlock,\r
+ (VOID **)&EraseBlock,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// errors met\r
//\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskReset (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
+ IN EFI_BLOCK_IO_PROTOCOL *This,\r
+ IN BOOLEAN ExtendedVerification\r
)\r
{\r
- EFI_TPL OldTpl;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
- EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_STATUS Status;\r
\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO (This);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO (This);\r
\r
- Status = ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
+ Status = ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
\r
if (EFI_ERROR (Status)) {\r
if (Status == EFI_UNSUPPORTED) {\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskReadBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_BLOCK_IO_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO (This);\r
Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
-\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
+\r
//\r
// Get the intrinsic block size\r
//\r
- BlockSize = Media->BlockSize;\r
+ BlockSize = Media->BlockSize;\r
\r
if (BlockSize == 0) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
\r
- NumberOfBlocks = BufferSize / BlockSize;\r
+ NumberOfBlocks = BufferSize / BlockSize;\r
\r
if (!(Media->MediaPresent)) {\r
Status = EFI_NO_MEDIA;\r
goto Done;\r
}\r
\r
- if ((Media->IoAlign > 1) && (((UINTN) Buffer & (Media->IoAlign - 1)) != 0)) {\r
+ if ((Media->IoAlign > 1) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskWriteBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
+ IN EFI_BLOCK_IO_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO (This);\r
Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
-\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
+\r
//\r
// Get the intrinsic block size\r
//\r
- BlockSize = Media->BlockSize;\r
+ BlockSize = Media->BlockSize;\r
\r
if (BlockSize == 0) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
\r
- NumberOfBlocks = BufferSize / BlockSize;\r
+ NumberOfBlocks = BufferSize / BlockSize;\r
\r
if (!(Media->MediaPresent)) {\r
Status = EFI_NO_MEDIA;\r
goto Done;\r
}\r
\r
- if ((Media->IoAlign > 1) && (((UINTN) Buffer & (Media->IoAlign - 1)) != 0)) {\r
+ if ((Media->IoAlign > 1) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
+\r
//\r
// if all the parameters are valid, then perform read sectors command\r
// to transfer data from device to host.\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskFlushBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This\r
+ IN EFI_BLOCK_IO_PROTOCOL *This\r
)\r
{\r
//\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Reset SCSI Disk.\r
\r
IN BOOLEAN ExtendedVerification\r
)\r
{\r
- EFI_TPL OldTpl;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
- EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_STATUS Status;\r
\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO2 (This);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO2 (This);\r
\r
- Status = ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
+ Status = ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
\r
if (EFI_ERROR (Status)) {\r
if (Status == EFI_UNSUPPORTED) {\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskReadBlocksEx (\r
- IN EFI_BLOCK_IO2_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN OUT EFI_BLOCK_IO2_TOKEN *Token,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_BLOCK_IO2_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN EFI_LBA Lba,\r
+ IN OUT EFI_BLOCK_IO2_TOKEN *Token,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO2 (This);\r
Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
-\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
+\r
//\r
// Get the intrinsic block size\r
//\r
- BlockSize = Media->BlockSize;\r
+ BlockSize = Media->BlockSize;\r
\r
if (BlockSize == 0) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
\r
- NumberOfBlocks = BufferSize / BlockSize;\r
+ NumberOfBlocks = BufferSize / BlockSize;\r
\r
if (!(Media->MediaPresent)) {\r
Status = EFI_NO_MEDIA;\r
goto Done;\r
}\r
\r
- if ((Media->IoAlign > 1) && (((UINTN) Buffer & (Media->IoAlign - 1)) != 0)) {\r
+ if ((Media->IoAlign > 1) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
//\r
if ((Token != NULL) && (Token->Event != NULL)) {\r
Token->TransactionStatus = EFI_SUCCESS;\r
- Status = ScsiDiskAsyncReadSectors (\r
- ScsiDiskDevice,\r
- Buffer,\r
- Lba,\r
- NumberOfBlocks,\r
- Token\r
- );\r
+ Status = ScsiDiskAsyncReadSectors (\r
+ ScsiDiskDevice,\r
+ Buffer,\r
+ Lba,\r
+ NumberOfBlocks,\r
+ Token\r
+ );\r
} else {\r
Status = ScsiDiskReadSectors (\r
ScsiDiskDevice,\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskWriteBlocksEx (\r
- IN EFI_BLOCK_IO2_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN OUT EFI_BLOCK_IO2_TOKEN *Token,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
+ IN EFI_BLOCK_IO2_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN EFI_LBA Lba,\r
+ IN OUT EFI_BLOCK_IO2_TOKEN *Token,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO2 (This);\r
Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
-\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
+\r
//\r
// Get the intrinsic block size\r
//\r
- BlockSize = Media->BlockSize;\r
+ BlockSize = Media->BlockSize;\r
\r
if (BlockSize == 0) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
\r
- NumberOfBlocks = BufferSize / BlockSize;\r
+ NumberOfBlocks = BufferSize / BlockSize;\r
\r
if (!(Media->MediaPresent)) {\r
Status = EFI_NO_MEDIA;\r
goto Done;\r
}\r
\r
- if ((Media->IoAlign > 1) && (((UINTN) Buffer & (Media->IoAlign - 1)) != 0)) {\r
+ if ((Media->IoAlign > 1) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
//\r
if ((Token != NULL) && (Token->Event != NULL)) {\r
Token->TransactionStatus = EFI_SUCCESS;\r
- Status = ScsiDiskAsyncWriteSectors (\r
- ScsiDiskDevice,\r
- Buffer,\r
- Lba,\r
- NumberOfBlocks,\r
- Token\r
- );\r
+ Status = ScsiDiskAsyncWriteSectors (\r
+ ScsiDiskDevice,\r
+ Buffer,\r
+ Lba,\r
+ NumberOfBlocks,\r
+ Token\r
+ );\r
} else {\r
Status = ScsiDiskWriteSectors (\r
ScsiDiskDevice,\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_BLKIO2 (This);\r
Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
-\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
//\r
// Wait for the BlockIo2 requests queue to become empty\r
//\r
- while (!IsListEmpty (&ScsiDiskDevice->AsyncTaskQueue));\r
+ while (!IsListEmpty (&ScsiDiskDevice->AsyncTaskQueue)) {\r
+ }\r
\r
Status = EFI_SUCCESS;\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Internal helper notify function which process the result of an asynchronous\r
SCSI UNMAP Command and signal the event passed from EraseBlocks.\r
\r
gBS->CloseEvent (Event);\r
\r
- EraseBlkReq = (SCSI_ERASEBLK_REQUEST *) Context;\r
+ EraseBlkReq = (SCSI_ERASEBLK_REQUEST *)Context;\r
CommandPacket = &EraseBlkReq->CommandPacket;\r
Token = EraseBlkReq->Token;\r
Token->TransactionStatus = EFI_SUCCESS;\r
\r
Status = CheckHostAdapterStatus (CommandPacket->HostAdapterStatus);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((\r
DEBUG_ERROR,\r
"ScsiDiskAsyncUnmapNotify: Host adapter indicating error status 0x%x.\n",\r
}\r
\r
Status = CheckTargetStatus (CommandPacket->TargetStatus);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((\r
DEBUG_ERROR,\r
"ScsiDiskAsyncUnmapNotify: Target indicating error status 0x%x.\n",\r
**/\r
EFI_STATUS\r
ScsiDiskUnmap (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINT64 Lba,\r
- IN UINTN Blocks,\r
- IN EFI_ERASE_BLOCK_TOKEN *Token OPTIONAL\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINT64 Lba,\r
+ IN UINTN Blocks,\r
+ IN EFI_ERASE_BLOCK_TOKEN *Token OPTIONAL\r
)\r
{\r
EFI_SCSI_IO_PROTOCOL *ScsiIo;\r
AsyncUnmapEvent = NULL;\r
ReturnStatus = EFI_SUCCESS;\r
\r
- if (Blocks / (UINTN) MaxLbaCnt > MaxBlkDespCnt) {\r
+ if (Blocks / (UINTN)MaxLbaCnt > MaxBlkDespCnt) {\r
ReturnStatus = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
goto Done;\r
}\r
\r
- BlkDespCnt = (UINT32) ((Blocks - 1) / MaxLbaCnt + 1);\r
- UnmapParamListLen = (UINT16) (sizeof (EFI_SCSI_DISK_UNMAP_PARAM_LIST_HEADER)\r
- + BlkDespCnt * sizeof (EFI_SCSI_DISK_UNMAP_BLOCK_DESP));\r
- UnmapParamList = AllocateZeroPool (UnmapParamListLen);\r
+ BlkDespCnt = (UINT32)((Blocks - 1) / MaxLbaCnt + 1);\r
+ UnmapParamListLen = (UINT16)(sizeof (EFI_SCSI_DISK_UNMAP_PARAM_LIST_HEADER)\r
+ + BlkDespCnt * sizeof (EFI_SCSI_DISK_UNMAP_BLOCK_DESP));\r
+ UnmapParamList = AllocateZeroPool (UnmapParamListLen);\r
if (UnmapParamList == NULL) {\r
ReturnStatus = EFI_DEVICE_ERROR;\r
goto Done;\r
if (Blocks > MaxLbaCnt) {\r
*(UINT64 *)(&BlkDespPtr->Lba) = SwapBytes64 (Lba);\r
*(UINT32 *)(&BlkDespPtr->BlockNum) = SwapBytes32 (MaxLbaCnt);\r
- Blocks -= MaxLbaCnt;\r
- Lba += MaxLbaCnt;\r
+ Blocks -= MaxLbaCnt;\r
+ Lba += MaxLbaCnt;\r
} else {\r
*(UINT64 *)(&BlkDespPtr->Lba) = SwapBytes64 (Lba);\r
- *(UINT32 *)(&BlkDespPtr->BlockNum) = SwapBytes32 ((UINT32) Blocks);\r
- Blocks = 0;\r
+ *(UINT32 *)(&BlkDespPtr->BlockNum) = SwapBytes32 ((UINT32)Blocks);\r
+ Blocks = 0;\r
}\r
\r
BlkDespPtr++;\r
EraseBlkReq,\r
&AsyncUnmapEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
ReturnStatus = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
CommandPacket,\r
AsyncUnmapEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
ReturnStatus = EFI_DEVICE_ERROR;\r
\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
CommandPacket,\r
NULL\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
ReturnStatus = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
// Only blocking UNMAP request will reach here.\r
//\r
Status = CheckHostAdapterStatus (CommandPacket->HostAdapterStatus);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((\r
DEBUG_ERROR,\r
"ScsiDiskUnmap: Host adapter indicating error status 0x%x.\n",\r
}\r
\r
Status = CheckTargetStatus (CommandPacket->TargetStatus);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((\r
DEBUG_ERROR,\r
"ScsiDiskUnmap: Target indicating error status 0x%x.\n",\r
if (EraseBlkReq->CommandPacket.Cdb != NULL) {\r
FreePool (EraseBlkReq->CommandPacket.Cdb);\r
}\r
+\r
FreePool (EraseBlkReq);\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskEraseBlocks (\r
- IN EFI_ERASE_BLOCK_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN OUT EFI_ERASE_BLOCK_TOKEN *Token,\r
- IN UINTN Size\r
+ IN EFI_ERASE_BLOCK_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN EFI_LBA Lba,\r
+ IN OUT EFI_ERASE_BLOCK_TOKEN *Token,\r
+ IN UINTN Size\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
ScsiDiskDevice = SCSI_DISK_DEV_FROM_ERASEBLK (This);\r
\r
- if (!IS_DEVICE_FIXED(ScsiDiskDevice)) {\r
+ if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_DEVICE_ERROR;\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
Status = EFI_MEDIA_CHANGED;\r
goto Done;\r
}\r
}\r
+\r
//\r
// Get the intrinsic block size\r
//\r
Token->TransactionStatus = EFI_SUCCESS;\r
gBS->SignalEvent (Token->Event);\r
}\r
+\r
Status = EFI_SUCCESS;\r
goto Done;\r
}\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskReceiveData (\r
- IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
- IN UINT32 MediaId OPTIONAL,\r
- IN UINT64 Timeout,\r
- IN UINT8 SecurityProtocolId,\r
- IN UINT16 SecurityProtocolSpecificData,\r
- IN UINTN PayloadBufferSize,\r
- OUT VOID *PayloadBuffer,\r
- OUT UINTN *PayloadTransferSize\r
+ IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
+ IN UINT32 MediaId OPTIONAL,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 SecurityProtocolId,\r
+ IN UINT16 SecurityProtocolSpecificData,\r
+ IN UINTN PayloadBufferSize,\r
+ OUT VOID *PayloadBuffer,\r
+ OUT UINTN *PayloadTransferSize\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
VOID *AlignedBuffer;\r
BOOLEAN AlignedBufferAllocated;\r
\r
- AlignedBuffer = NULL;\r
- MediaChange = FALSE;\r
- AlignedBufferAllocated = FALSE;\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_STORSEC (This);\r
- Media = ScsiDiskDevice->BlkIo.Media;\r
+ AlignedBuffer = NULL;\r
+ MediaChange = FALSE;\r
+ AlignedBufferAllocated = FALSE;\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_STORSEC (This);\r
+ Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
\r
if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
ZeroMem (AlignedBuffer, PayloadBufferSize);\r
AlignedBufferAllocated = TRUE;\r
} else {\r
}\r
\r
Status = ScsiSecurityProtocolInCommand (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- SecurityProtocolId,\r
- SecurityProtocolSpecificData,\r
- FALSE,\r
- PayloadBufferSize,\r
- AlignedBuffer,\r
- PayloadTransferSize\r
- );\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ SecurityProtocolId,\r
+ SecurityProtocolSpecificData,\r
+ FALSE,\r
+ PayloadBufferSize,\r
+ AlignedBuffer,\r
+ PayloadTransferSize\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
ZeroMem (AlignedBuffer, PayloadBufferSize);\r
FreeAlignedBuffer (AlignedBuffer, PayloadBufferSize);\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskSendData (\r
- IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
- IN UINT32 MediaId OPTIONAL,\r
- IN UINT64 Timeout,\r
- IN UINT8 SecurityProtocolId,\r
- IN UINT16 SecurityProtocolSpecificData,\r
- IN UINTN PayloadBufferSize,\r
- OUT VOID *PayloadBuffer\r
+ IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
+ IN UINT32 MediaId OPTIONAL,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 SecurityProtocolId,\r
+ IN UINT16 SecurityProtocolSpecificData,\r
+ IN UINTN PayloadBufferSize,\r
+ OUT VOID *PayloadBuffer\r
)\r
{\r
SCSI_DISK_DEV *ScsiDiskDevice;\r
VOID *AlignedBuffer;\r
BOOLEAN AlignedBufferAllocated;\r
\r
- AlignedBuffer = NULL;\r
- MediaChange = FALSE;\r
- AlignedBufferAllocated = FALSE;\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_STORSEC (This);\r
- Media = ScsiDiskDevice->BlkIo.Media;\r
+ AlignedBuffer = NULL;\r
+ MediaChange = FALSE;\r
+ AlignedBufferAllocated = FALSE;\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_STORSEC (This);\r
+ Media = ScsiDiskDevice->BlkIo.Media;\r
\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
\r
if (!IS_DEVICE_FIXED (ScsiDiskDevice)) {\r
Status = ScsiDiskDetectMedia (ScsiDiskDevice, FALSE, &MediaChange);\r
\r
if (MediaChange) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiBlockIoProtocolGuid,\r
- &ScsiDiskDevice->BlkIo,\r
- &ScsiDiskDevice->BlkIo\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &ScsiDiskDevice->BlkIo,\r
+ &ScsiDiskDevice->BlkIo\r
+ );\r
gBS->ReinstallProtocolInterface (\r
ScsiDiskDevice->Handle,\r
&gEfiBlockIo2ProtocolGuid,\r
&ScsiDiskDevice->EraseBlock\r
);\r
}\r
+\r
if (DetermineInstallStorageSecurity (ScsiDiskDevice, ScsiDiskDevice->Handle)) {\r
gBS->ReinstallProtocolInterface (\r
- ScsiDiskDevice->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- &ScsiDiskDevice->StorageSecurity,\r
- &ScsiDiskDevice->StorageSecurity\r
- );\r
+ ScsiDiskDevice->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ &ScsiDiskDevice->StorageSecurity,\r
+ &ScsiDiskDevice->StorageSecurity\r
+ );\r
}\r
+\r
if (Media->MediaPresent) {\r
Status = EFI_MEDIA_CHANGED;\r
} else {\r
Status = EFI_NO_MEDIA;\r
}\r
+\r
goto Done;\r
}\r
}\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
CopyMem (AlignedBuffer, PayloadBuffer, PayloadBufferSize);\r
AlignedBufferAllocated = TRUE;\r
} else {\r
}\r
\r
Status = ScsiSecurityProtocolOutCommand (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- SecurityProtocolId,\r
- SecurityProtocolSpecificData,\r
- FALSE,\r
- PayloadBufferSize,\r
- AlignedBuffer\r
- );\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ SecurityProtocolId,\r
+ SecurityProtocolSpecificData,\r
+ FALSE,\r
+ PayloadBufferSize,\r
+ AlignedBuffer\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
ZeroMem (AlignedBuffer, PayloadBufferSize);\r
FreeAlignedBuffer (AlignedBuffer, PayloadBufferSize);\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
-\r
/**\r
Detect Device and read out capacity ,if error occurs, parse the sense key.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskDetectMedia (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN BOOLEAN MustReadCapacity,\r
- OUT BOOLEAN *MediaChange\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN BOOLEAN MustReadCapacity,\r
+ OUT BOOLEAN *MediaChange\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SCSI_SENSE_DATA *SenseData;\r
- UINTN NumberOfSenseKeys;\r
- BOOLEAN NeedRetry;\r
- BOOLEAN NeedReadCapacity;\r
- UINT8 Retry;\r
- UINT8 MaxRetry;\r
- EFI_BLOCK_IO_MEDIA OldMedia;\r
- UINTN Action;\r
- EFI_EVENT TimeoutEvt;\r
-\r
- Status = EFI_SUCCESS;\r
- SenseData = NULL;\r
- NumberOfSenseKeys = 0;\r
- Retry = 0;\r
- MaxRetry = 3;\r
- Action = ACTION_NO_ACTION;\r
- NeedReadCapacity = FALSE;\r
- *MediaChange = FALSE;\r
- TimeoutEvt = NULL;\r
+ EFI_STATUS Status;\r
+ EFI_SCSI_SENSE_DATA *SenseData;\r
+ UINTN NumberOfSenseKeys;\r
+ BOOLEAN NeedRetry;\r
+ BOOLEAN NeedReadCapacity;\r
+ UINT8 Retry;\r
+ UINT8 MaxRetry;\r
+ EFI_BLOCK_IO_MEDIA OldMedia;\r
+ UINTN Action;\r
+ EFI_EVENT TimeoutEvt;\r
+\r
+ Status = EFI_SUCCESS;\r
+ SenseData = NULL;\r
+ NumberOfSenseKeys = 0;\r
+ Retry = 0;\r
+ MaxRetry = 3;\r
+ Action = ACTION_NO_ACTION;\r
+ NeedReadCapacity = FALSE;\r
+ *MediaChange = FALSE;\r
+ TimeoutEvt = NULL;\r
\r
CopyMem (&OldMedia, ScsiDiskDevice->BlkIo.Media, sizeof (OldMedia));\r
\r
return Status;\r
}\r
\r
- Status = gBS->SetTimer (TimeoutEvt, TimerRelative, EFI_TIMER_PERIOD_SECONDS(120));\r
+ Status = gBS->SetTimer (TimeoutEvt, TimerRelative, EFI_TIMER_PERIOD_SECONDS (120));\r
if (EFI_ERROR (Status)) {\r
goto EXIT;\r
}\r
//\r
while (EFI_ERROR (gBS->CheckEvent (TimeoutEvt))) {\r
Status = ScsiDiskTestUnitReady (\r
- ScsiDiskDevice,\r
- &NeedRetry,\r
- &SenseData,\r
- &NumberOfSenseKeys\r
- );\r
+ ScsiDiskDevice,\r
+ &NeedRetry,\r
+ &SenseData,\r
+ &NumberOfSenseKeys\r
+ );\r
if (!EFI_ERROR (Status)) {\r
Status = DetectMediaParsingSenseKeys (\r
ScsiDiskDevice,\r
// READ_CAPACITY command is not supported by any of the UFS WLUNs.\r
//\r
if (ScsiDiskDevice->DeviceType == EFI_SCSI_TYPE_WLUN) {\r
- NeedReadCapacity = FALSE;\r
- MustReadCapacity = FALSE;\r
+ NeedReadCapacity = FALSE;\r
+ MustReadCapacity = FALSE;\r
ScsiDiskDevice->BlkIo.Media->MediaPresent = TRUE;\r
}\r
\r
}\r
\r
if (ScsiDiskDevice->BlkIo.Media->ReadOnly != OldMedia.ReadOnly) {\r
- *MediaChange = TRUE;\r
+ *MediaChange = TRUE;\r
ScsiDiskDevice->BlkIo.Media->MediaId += 1;\r
}\r
\r
if (ScsiDiskDevice->BlkIo.Media->BlockSize != OldMedia.BlockSize) {\r
- *MediaChange = TRUE;\r
+ *MediaChange = TRUE;\r
ScsiDiskDevice->BlkIo.Media->MediaId += 1;\r
}\r
\r
if (ScsiDiskDevice->BlkIo.Media->LastBlock != OldMedia.LastBlock) {\r
- *MediaChange = TRUE;\r
+ *MediaChange = TRUE;\r
ScsiDiskDevice->BlkIo.Media->MediaId += 1;\r
}\r
\r
if (TimeoutEvt != NULL) {\r
gBS->CloseEvent (TimeoutEvt);\r
}\r
+\r
return Status;\r
}\r
\r
-\r
/**\r
Send out Inquiry command to Device.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskInquiryDevice (\r
- IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry\r
+ IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry\r
)\r
{\r
- UINT32 InquiryDataLength;\r
- UINT8 SenseDataLength;\r
- UINT8 HostAdapterStatus;\r
- UINT8 TargetStatus;\r
- EFI_SCSI_SENSE_DATA *SenseDataArray;\r
- UINTN NumberOfSenseKeys;\r
- EFI_STATUS Status;\r
- UINT8 MaxRetry;\r
- UINT8 Index;\r
- EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE *SupportedVpdPages;\r
- EFI_SCSI_BLOCK_LIMITS_VPD_PAGE *BlockLimits;\r
- UINTN PageLength;\r
+ UINT32 InquiryDataLength;\r
+ UINT8 SenseDataLength;\r
+ UINT8 HostAdapterStatus;\r
+ UINT8 TargetStatus;\r
+ EFI_SCSI_SENSE_DATA *SenseDataArray;\r
+ UINTN NumberOfSenseKeys;\r
+ EFI_STATUS Status;\r
+ UINT8 MaxRetry;\r
+ UINT8 Index;\r
+ EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE *SupportedVpdPages;\r
+ EFI_SCSI_BLOCK_LIMITS_VPD_PAGE *BlockLimits;\r
+ UINTN PageLength;\r
\r
InquiryDataLength = sizeof (EFI_SCSI_INQUIRY_DATA);\r
SenseDataLength = 0;\r
\r
Status = ScsiInquiryCommand (\r
- ScsiDiskDevice->ScsiIo,\r
- SCSI_DISK_TIMEOUT,\r
- NULL,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- (VOID *) &(ScsiDiskDevice->InquiryData),\r
- &InquiryDataLength,\r
- FALSE\r
- );\r
- //\r
- // no need to check HostAdapterStatus and TargetStatus\r
- //\r
+ ScsiDiskDevice->ScsiIo,\r
+ SCSI_DISK_TIMEOUT,\r
+ NULL,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ (VOID *)&(ScsiDiskDevice->InquiryData),\r
+ &InquiryDataLength,\r
+ FALSE\r
+ );\r
+ //\r
+ // no need to check HostAdapterStatus and TargetStatus\r
+ //\r
if ((Status == EFI_SUCCESS) || (Status == EFI_WARN_BUFFER_TOO_SMALL)) {\r
ParseInquiryData (ScsiDiskDevice);\r
\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
ZeroMem (SupportedVpdPages, sizeof (EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE));\r
InquiryDataLength = sizeof (EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE);\r
SenseDataLength = 0;\r
- Status = ScsiInquiryCommandEx (\r
- ScsiDiskDevice->ScsiIo,\r
- SCSI_DISK_TIMEOUT,\r
- NULL,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- (VOID *) SupportedVpdPages,\r
- &InquiryDataLength,\r
- TRUE,\r
- EFI_SCSI_PAGE_CODE_SUPPORTED_VPD\r
- );\r
+ Status = ScsiInquiryCommandEx (\r
+ ScsiDiskDevice->ScsiIo,\r
+ SCSI_DISK_TIMEOUT,\r
+ NULL,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ (VOID *)SupportedVpdPages,\r
+ &InquiryDataLength,\r
+ TRUE,\r
+ EFI_SCSI_PAGE_CODE_SUPPORTED_VPD\r
+ );\r
if (!EFI_ERROR (Status)) {\r
PageLength = (SupportedVpdPages->PageLength2 << 8)\r
- | SupportedVpdPages->PageLength1;\r
+ | SupportedVpdPages->PageLength1;\r
\r
//\r
// Sanity checks for coping with broken devices\r
//\r
if (PageLength > sizeof SupportedVpdPages->SupportedVpdPageList) {\r
- DEBUG ((DEBUG_WARN,\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
"%a: invalid PageLength (%u) in Supported VPD Pages page\n",\r
- __FUNCTION__, (UINT32)PageLength));\r
+ __FUNCTION__,\r
+ (UINT32)PageLength\r
+ ));\r
PageLength = 0;\r
}\r
\r
if ((PageLength > 0) &&\r
(SupportedVpdPages->SupportedVpdPageList[0] !=\r
- EFI_SCSI_PAGE_CODE_SUPPORTED_VPD)) {\r
- DEBUG ((DEBUG_WARN,\r
+ EFI_SCSI_PAGE_CODE_SUPPORTED_VPD))\r
+ {\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
"%a: Supported VPD Pages page doesn't start with code 0x%02x\n",\r
- __FUNCTION__, EFI_SCSI_PAGE_CODE_SUPPORTED_VPD));\r
+ __FUNCTION__,\r
+ EFI_SCSI_PAGE_CODE_SUPPORTED_VPD\r
+ ));\r
PageLength = 0;\r
}\r
\r
//\r
if ((Index > 0) &&\r
(SupportedVpdPages->SupportedVpdPageList[Index] <=\r
- SupportedVpdPages->SupportedVpdPageList[Index - 1])) {\r
- DEBUG ((DEBUG_WARN,\r
+ SupportedVpdPages->SupportedVpdPageList[Index - 1]))\r
+ {\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
"%a: non-ascending code in Supported VPD Pages page @ %u\n",\r
- __FUNCTION__, Index));\r
- Index = 0;\r
+ __FUNCTION__,\r
+ Index\r
+ ));\r
+ Index = 0;\r
PageLength = 0;\r
break;\r
}\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
ZeroMem (BlockLimits, sizeof (EFI_SCSI_BLOCK_LIMITS_VPD_PAGE));\r
InquiryDataLength = sizeof (EFI_SCSI_BLOCK_LIMITS_VPD_PAGE);\r
SenseDataLength = 0;\r
- Status = ScsiInquiryCommandEx (\r
- ScsiDiskDevice->ScsiIo,\r
- SCSI_DISK_TIMEOUT,\r
- NULL,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- (VOID *) BlockLimits,\r
- &InquiryDataLength,\r
- TRUE,\r
- EFI_SCSI_PAGE_CODE_BLOCK_LIMITS_VPD\r
- );\r
+ Status = ScsiInquiryCommandEx (\r
+ ScsiDiskDevice->ScsiIo,\r
+ SCSI_DISK_TIMEOUT,\r
+ NULL,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ (VOID *)BlockLimits,\r
+ &InquiryDataLength,\r
+ TRUE,\r
+ EFI_SCSI_PAGE_CODE_BLOCK_LIMITS_VPD\r
+ );\r
if (!EFI_ERROR (Status)) {\r
ScsiDiskDevice->BlkIo.Media->OptimalTransferLengthGranularity =\r
(BlockLimits->OptimalTransferLengthGranularity2 << 8) |\r
- BlockLimits->OptimalTransferLengthGranularity1;\r
+ BlockLimits->OptimalTransferLengthGranularity1;\r
\r
ScsiDiskDevice->UnmapInfo.MaxLbaCnt =\r
(BlockLimits->MaximumUnmapLbaCount4 << 24) |\r
\r
if (!EFI_ERROR (Status)) {\r
return EFI_SUCCESS;\r
-\r
} else if (Status == EFI_NOT_READY) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// go ahead to check HostAdapterStatus and TargetStatus\r
// (EFI_TIMEOUT, EFI_DEVICE_ERROR)\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
} else if (Status == EFI_DEVICE_ERROR) {\r
- //\r
- // reset the scsi channel\r
- //\r
+ //\r
+ // reset the scsi channel\r
+ //\r
ScsiDiskDevice->ScsiIo->ResetBus (ScsiDiskDevice->ScsiIo);\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if (Status == EFI_DEVICE_ERROR) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
MaxRetry = 3;\r
for (Index = 0; Index < MaxRetry; Index++) {\r
Status = ScsiDiskRequestSenseKeys (\r
- ScsiDiskDevice,\r
- NeedRetry,\r
- &SenseDataArray,\r
- &NumberOfSenseKeys,\r
- TRUE\r
- );\r
+ ScsiDiskDevice,\r
+ NeedRetry,\r
+ &SenseDataArray,\r
+ &NumberOfSenseKeys,\r
+ TRUE\r
+ );\r
if (!EFI_ERROR (Status)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// ScsiDiskRequestSenseKeys() failed after several rounds of retry.\r
// set *NeedRetry = FALSE to avoid the outside caller try again.\r
**/\r
EFI_STATUS\r
ScsiDiskTestUnitReady (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
- OUT UINTN *NumberOfSenseKeys\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
+ OUT UINTN *NumberOfSenseKeys\r
)\r
{\r
EFI_STATUS Status;\r
UINT8 Index;\r
UINT8 MaxRetry;\r
\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
- *NumberOfSenseKeys = 0;\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ *NumberOfSenseKeys = 0;\r
\r
//\r
// Parameter 3 and 4: do not require sense data, retrieve it when needed.\r
//\r
Status = ScsiTestUnitReadyCommand (\r
- ScsiDiskDevice->ScsiIo,\r
- SCSI_DISK_TIMEOUT,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus\r
- );\r
+ ScsiDiskDevice->ScsiIo,\r
+ SCSI_DISK_TIMEOUT,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus\r
+ );\r
//\r
// no need to check HostAdapterStatus and TargetStatus\r
//\r
if (Status == EFI_NOT_READY) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// go ahead to check HostAdapterStatus and TargetStatus(in case of EFI_DEVICE_ERROR)\r
//\r
if ((Status == EFI_TIMEOUT) || (Status == EFI_NOT_READY)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if (Status == EFI_DEVICE_ERROR) {\r
//\r
// reset the scsi channel\r
ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if (Status == EFI_DEVICE_ERROR) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
MaxRetry = 3;\r
for (Index = 0; Index < MaxRetry; Index++) {\r
Status = ScsiDiskRequestSenseKeys (\r
- ScsiDiskDevice,\r
- NeedRetry,\r
- SenseDataArray,\r
- NumberOfSenseKeys,\r
- FALSE\r
- );\r
+ ScsiDiskDevice,\r
+ NeedRetry,\r
+ SenseDataArray,\r
+ NumberOfSenseKeys,\r
+ FALSE\r
+ );\r
if (!EFI_ERROR (Status)) {\r
return EFI_SUCCESS;\r
}\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// ScsiDiskRequestSenseKeys() failed after several rounds of retry.\r
// set *NeedRetry = FALSE to avoid the outside caller try again.\r
**/\r
EFI_STATUS\r
DetectMediaParsingSenseKeys (\r
- OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN NumberOfSenseKeys,\r
- OUT UINTN *Action\r
+ OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN NumberOfSenseKeys,\r
+ OUT UINTN *Action\r
)\r
{\r
- BOOLEAN RetryLater;\r
+ BOOLEAN RetryLater;\r
\r
//\r
// Default is to read capacity, unless..\r
if (ScsiDiskDevice->BlkIo.Media->MediaPresent == TRUE) {\r
*Action = ACTION_NO_ACTION;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
if (ScsiDiskDevice->BlkIo.Media->MediaPresent == TRUE) {\r
*Action = ACTION_NO_ACTION;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
if (ScsiDiskIsNoMedia (SenseData, NumberOfSenseKeys)) {\r
ScsiDiskDevice->BlkIo.Media->MediaPresent = FALSE;\r
ScsiDiskDevice->BlkIo.Media->LastBlock = 0;\r
- *Action = ACTION_NO_ACTION;\r
+ *Action = ACTION_NO_ACTION;\r
DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsNoMedia\n"));\r
return EFI_SUCCESS;\r
}\r
DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskDriveNotReady!\n"));\r
return EFI_SUCCESS;\r
}\r
+\r
*Action = ACTION_NO_ACTION;\r
return EFI_DEVICE_ERROR;\r
}\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Send read capacity command to device and get the device parameter.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskReadCapacity (\r
- IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
- OUT UINTN *NumberOfSenseKeys\r
+ IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
+ OUT UINTN *NumberOfSenseKeys\r
)\r
{\r
- UINT8 HostAdapterStatus;\r
- UINT8 TargetStatus;\r
- EFI_STATUS CommandStatus;\r
- EFI_STATUS Status;\r
- UINT8 Index;\r
- UINT8 MaxRetry;\r
- UINT8 SenseDataLength;\r
- UINT32 DataLength10;\r
- UINT32 DataLength16;\r
- EFI_SCSI_DISK_CAPACITY_DATA *CapacityData10;\r
- EFI_SCSI_DISK_CAPACITY_DATA16 *CapacityData16;\r
+ UINT8 HostAdapterStatus;\r
+ UINT8 TargetStatus;\r
+ EFI_STATUS CommandStatus;\r
+ EFI_STATUS Status;\r
+ UINT8 Index;\r
+ UINT8 MaxRetry;\r
+ UINT8 SenseDataLength;\r
+ UINT32 DataLength10;\r
+ UINT32 DataLength16;\r
+ EFI_SCSI_DISK_CAPACITY_DATA *CapacityData10;\r
+ EFI_SCSI_DISK_CAPACITY_DATA16 *CapacityData16;\r
\r
CapacityData10 = AllocateAlignedBuffer (ScsiDiskDevice, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
if (CapacityData10 == NULL) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
CapacityData16 = AllocateAlignedBuffer (ScsiDiskDevice, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
if (CapacityData16 == NULL) {\r
FreeAlignedBuffer (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- SenseDataLength = 0;\r
- DataLength10 = sizeof (EFI_SCSI_DISK_CAPACITY_DATA);\r
- DataLength16 = sizeof (EFI_SCSI_DISK_CAPACITY_DATA16);\r
+ SenseDataLength = 0;\r
+ DataLength10 = sizeof (EFI_SCSI_DISK_CAPACITY_DATA);\r
+ DataLength16 = sizeof (EFI_SCSI_DISK_CAPACITY_DATA16);\r
ZeroMem (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
ZeroMem (CapacityData16, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
\r
- *NumberOfSenseKeys = 0;\r
- *NeedRetry = FALSE;\r
+ *NumberOfSenseKeys = 0;\r
+ *NeedRetry = FALSE;\r
\r
//\r
// submit Read Capacity(10) Command. If it returns capacity of FFFFFFFFh,\r
&SenseDataLength,\r
&HostAdapterStatus,\r
&TargetStatus,\r
- (VOID *) CapacityData10,\r
+ (VOID *)CapacityData10,\r
&DataLength10,\r
FALSE\r
);\r
\r
ScsiDiskDevice->Cdb16Byte = FALSE;\r
if ((!EFI_ERROR (CommandStatus)) && (CapacityData10->LastLba3 == 0xff) && (CapacityData10->LastLba2 == 0xff) &&\r
- (CapacityData10->LastLba1 == 0xff) && (CapacityData10->LastLba0 == 0xff)) {\r
+ (CapacityData10->LastLba1 == 0xff) && (CapacityData10->LastLba0 == 0xff))\r
+ {\r
//\r
// use Read Capacity (16), Read (16) and Write (16) next when hard disk size > 2TB\r
//\r
&SenseDataLength,\r
&HostAdapterStatus,\r
&TargetStatus,\r
- (VOID *) CapacityData16,\r
+ (VOID *)CapacityData16,\r
&DataLength16,\r
FALSE\r
);\r
}\r
\r
- //\r
- // no need to check HostAdapterStatus and TargetStatus\r
- //\r
- if (CommandStatus == EFI_SUCCESS) {\r
- GetMediaInfo (ScsiDiskDevice, CapacityData10, CapacityData16);\r
- FreeAlignedBuffer (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
- FreeAlignedBuffer (CapacityData16, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
- return EFI_SUCCESS;\r
- }\r
-\r
- FreeAlignedBuffer (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
- FreeAlignedBuffer (CapacityData16, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
-\r
- if (CommandStatus == EFI_NOT_READY) {\r
- *NeedRetry = TRUE;\r
- return EFI_DEVICE_ERROR;\r
- } else if ((CommandStatus == EFI_INVALID_PARAMETER) || (CommandStatus == EFI_UNSUPPORTED)) {\r
- *NeedRetry = FALSE;\r
- return EFI_DEVICE_ERROR;\r
- }\r
-\r
- //\r
- // go ahead to check HostAdapterStatus and TargetStatus\r
- // (EFI_TIMEOUT, EFI_DEVICE_ERROR, EFI_WARN_BUFFER_TOO_SMALL)\r
- //\r
-\r
- Status = CheckHostAdapterStatus (HostAdapterStatus);\r
- if ((Status == EFI_TIMEOUT) || (Status == EFI_NOT_READY)) {\r
- *NeedRetry = TRUE;\r
- return EFI_DEVICE_ERROR;\r
-\r
- } else if (Status == EFI_DEVICE_ERROR) {\r
+ //\r
+ // no need to check HostAdapterStatus and TargetStatus\r
+ //\r
+ if (CommandStatus == EFI_SUCCESS) {\r
+ GetMediaInfo (ScsiDiskDevice, CapacityData10, CapacityData16);\r
+ FreeAlignedBuffer (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
+ FreeAlignedBuffer (CapacityData16, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ FreeAlignedBuffer (CapacityData10, sizeof (EFI_SCSI_DISK_CAPACITY_DATA));\r
+ FreeAlignedBuffer (CapacityData16, sizeof (EFI_SCSI_DISK_CAPACITY_DATA16));\r
+\r
+ if (CommandStatus == EFI_NOT_READY) {\r
+ *NeedRetry = TRUE;\r
+ return EFI_DEVICE_ERROR;\r
+ } else if ((CommandStatus == EFI_INVALID_PARAMETER) || (CommandStatus == EFI_UNSUPPORTED)) {\r
+ *NeedRetry = FALSE;\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+\r
+ //\r
+ // go ahead to check HostAdapterStatus and TargetStatus\r
+ // (EFI_TIMEOUT, EFI_DEVICE_ERROR, EFI_WARN_BUFFER_TOO_SMALL)\r
+ //\r
+\r
+ Status = CheckHostAdapterStatus (HostAdapterStatus);\r
+ if ((Status == EFI_TIMEOUT) || (Status == EFI_NOT_READY)) {\r
+ *NeedRetry = TRUE;\r
+ return EFI_DEVICE_ERROR;\r
+ } else if (Status == EFI_DEVICE_ERROR) {\r
//\r
// reset the scsi channel\r
//\r
ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
-\r
} else if (Status == EFI_DEVICE_ERROR) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
//\r
MaxRetry = 3;\r
for (Index = 0; Index < MaxRetry; Index++) {\r
-\r
Status = ScsiDiskRequestSenseKeys (\r
- ScsiDiskDevice,\r
- NeedRetry,\r
- SenseDataArray,\r
- NumberOfSenseKeys,\r
- TRUE\r
- );\r
+ ScsiDiskDevice,\r
+ NeedRetry,\r
+ SenseDataArray,\r
+ NumberOfSenseKeys,\r
+ TRUE\r
+ );\r
if (!EFI_ERROR (Status)) {\r
return EFI_SUCCESS;\r
}\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// ScsiDiskRequestSenseKeys() failed after several rounds of retry.\r
// set *NeedRetry = FALSE to avoid the outside caller try again.\r
**/\r
EFI_STATUS\r
CheckHostAdapterStatus (\r
- IN UINT8 HostAdapterStatus\r
+ IN UINT8 HostAdapterStatus\r
)\r
{\r
switch (HostAdapterStatus) {\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK:\r
- return EFI_SUCCESS;\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK:\r
+ return EFI_SUCCESS;\r
\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_TIMEOUT:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND:\r
- return EFI_TIMEOUT;\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_TIMEOUT:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND:\r
+ return EFI_TIMEOUT;\r
\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_MESSAGE_REJECT:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PARITY_ERROR:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_RESET:\r
- return EFI_NOT_READY;\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_MESSAGE_REJECT:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PARITY_ERROR:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_RESET:\r
+ return EFI_NOT_READY;\r
\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_FREE:\r
- case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PHASE_ERROR:\r
- return EFI_DEVICE_ERROR;\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_BUS_FREE:\r
+ case EFI_EXT_SCSI_STATUS_HOST_ADAPTER_PHASE_ERROR:\r
+ return EFI_DEVICE_ERROR;\r
\r
- default:\r
- return EFI_SUCCESS;\r
+ default:\r
+ return EFI_SUCCESS;\r
}\r
}\r
\r
-\r
/**\r
Check the target status and re-interpret it in EFI_STATUS.\r
\r
**/\r
EFI_STATUS\r
CheckTargetStatus (\r
- IN UINT8 TargetStatus\r
+ IN UINT8 TargetStatus\r
)\r
{\r
switch (TargetStatus) {\r
- case EFI_EXT_SCSI_STATUS_TARGET_GOOD:\r
- case EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION:\r
- case EFI_EXT_SCSI_STATUS_TARGET_CONDITION_MET:\r
- return EFI_SUCCESS;\r
+ case EFI_EXT_SCSI_STATUS_TARGET_GOOD:\r
+ case EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION:\r
+ case EFI_EXT_SCSI_STATUS_TARGET_CONDITION_MET:\r
+ return EFI_SUCCESS;\r
\r
- case EFI_EXT_SCSI_STATUS_TARGET_INTERMEDIATE:\r
- case EFI_EXT_SCSI_STATUS_TARGET_INTERMEDIATE_CONDITION_MET:\r
- case EFI_EXT_SCSI_STATUS_TARGET_BUSY:\r
- case EFI_EXT_SCSI_STATUS_TARGET_TASK_SET_FULL:\r
- return EFI_NOT_READY;\r
+ case EFI_EXT_SCSI_STATUS_TARGET_INTERMEDIATE:\r
+ case EFI_EXT_SCSI_STATUS_TARGET_INTERMEDIATE_CONDITION_MET:\r
+ case EFI_EXT_SCSI_STATUS_TARGET_BUSY:\r
+ case EFI_EXT_SCSI_STATUS_TARGET_TASK_SET_FULL:\r
+ return EFI_NOT_READY;\r
\r
- case EFI_EXT_SCSI_STATUS_TARGET_RESERVATION_CONFLICT:\r
- return EFI_DEVICE_ERROR;\r
+ case EFI_EXT_SCSI_STATUS_TARGET_RESERVATION_CONFLICT:\r
+ return EFI_DEVICE_ERROR;\r
\r
- default:\r
- return EFI_SUCCESS;\r
+ default:\r
+ return EFI_SUCCESS;\r
}\r
}\r
\r
-\r
/**\r
Retrieve all sense keys from the device.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskRequestSenseKeys (\r
- IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
- OUT UINTN *NumberOfSenseKeys,\r
- IN BOOLEAN AskResetIfError\r
+ IN OUT SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ OUT EFI_SCSI_SENSE_DATA **SenseDataArray,\r
+ OUT UINTN *NumberOfSenseKeys,\r
+ IN BOOLEAN AskResetIfError\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *PtrSenseData;\r
- UINT8 SenseDataLength;\r
- BOOLEAN SenseReq;\r
- EFI_STATUS Status;\r
- EFI_STATUS FallStatus;\r
- UINT8 HostAdapterStatus;\r
- UINT8 TargetStatus;\r
+ EFI_SCSI_SENSE_DATA *PtrSenseData;\r
+ UINT8 SenseDataLength;\r
+ BOOLEAN SenseReq;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS FallStatus;\r
+ UINT8 HostAdapterStatus;\r
+ UINT8 TargetStatus;\r
\r
FallStatus = EFI_SUCCESS;\r
- SenseDataLength = (UINT8) sizeof (EFI_SCSI_SENSE_DATA);\r
+ SenseDataLength = (UINT8)sizeof (EFI_SCSI_SENSE_DATA);\r
\r
ZeroMem (\r
ScsiDiskDevice->SenseData,\r
sizeof (EFI_SCSI_SENSE_DATA) * (ScsiDiskDevice->SenseDataNumber)\r
);\r
\r
- *NumberOfSenseKeys = 0;\r
- *SenseDataArray = ScsiDiskDevice->SenseData;\r
- Status = EFI_SUCCESS;\r
- PtrSenseData = AllocateAlignedBuffer (ScsiDiskDevice, sizeof (EFI_SCSI_SENSE_DATA));\r
+ *NumberOfSenseKeys = 0;\r
+ *SenseDataArray = ScsiDiskDevice->SenseData;\r
+ Status = EFI_SUCCESS;\r
+ PtrSenseData = AllocateAlignedBuffer (ScsiDiskDevice, sizeof (EFI_SCSI_SENSE_DATA));\r
if (PtrSenseData == NULL) {\r
return EFI_DEVICE_ERROR;\r
}\r
for (SenseReq = TRUE; SenseReq;) {\r
ZeroMem (PtrSenseData, sizeof (EFI_SCSI_SENSE_DATA));\r
Status = ScsiRequestSenseCommand (\r
- ScsiDiskDevice->ScsiIo,\r
- SCSI_DISK_TIMEOUT,\r
- PtrSenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus\r
- );\r
- if ((Status == EFI_SUCCESS) || (Status == EFI_WARN_BUFFER_TOO_SMALL)) {\r
- FallStatus = EFI_SUCCESS;\r
-\r
- } else if ((Status == EFI_TIMEOUT) || (Status == EFI_NOT_READY)) {\r
- *NeedRetry = TRUE;\r
- FallStatus = EFI_DEVICE_ERROR;\r
-\r
- } else if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_UNSUPPORTED)) {\r
- *NeedRetry = FALSE;\r
- FallStatus = EFI_DEVICE_ERROR;\r
-\r
- } else if (Status == EFI_DEVICE_ERROR) {\r
- if (AskResetIfError) {\r
- ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
- }\r
+ ScsiDiskDevice->ScsiIo,\r
+ SCSI_DISK_TIMEOUT,\r
+ PtrSenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus\r
+ );\r
+ if ((Status == EFI_SUCCESS) || (Status == EFI_WARN_BUFFER_TOO_SMALL)) {\r
+ FallStatus = EFI_SUCCESS;\r
+ } else if ((Status == EFI_TIMEOUT) || (Status == EFI_NOT_READY)) {\r
+ *NeedRetry = TRUE;\r
+ FallStatus = EFI_DEVICE_ERROR;\r
+ } else if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_UNSUPPORTED)) {\r
+ *NeedRetry = FALSE;\r
+ FallStatus = EFI_DEVICE_ERROR;\r
+ } else if (Status == EFI_DEVICE_ERROR) {\r
+ if (AskResetIfError) {\r
+ ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo);\r
+ }\r
\r
- FallStatus = EFI_DEVICE_ERROR;\r
+ FallStatus = EFI_DEVICE_ERROR;\r
}\r
\r
if (EFI_ERROR (FallStatus)) {\r
if (*NumberOfSenseKeys != 0) {\r
*NeedRetry = FALSE;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
goto EXIT;\r
} else {\r
Status = EFI_DEVICE_ERROR;\r
// skip the loop.\r
//\r
if ((PtrSenseData->Sense_Key == EFI_SCSI_SK_NO_SENSE) ||\r
- (*NumberOfSenseKeys == ScsiDiskDevice->SenseDataNumber)) {\r
+ (*NumberOfSenseKeys == ScsiDiskDevice->SenseDataNumber))\r
+ {\r
SenseReq = FALSE;\r
}\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
Get information from media read capacity command.\r
\r
IN EFI_SCSI_DISK_CAPACITY_DATA16 *Capacity16\r
)\r
{\r
- UINT8 *Ptr;\r
+ UINT8 *Ptr;\r
\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- ScsiDiskDevice->BlkIo.Media->LastBlock = ((UINT32) Capacity10->LastLba3 << 24) |\r
- (Capacity10->LastLba2 << 16) |\r
- (Capacity10->LastLba1 << 8) |\r
- Capacity10->LastLba0;\r
+ ScsiDiskDevice->BlkIo.Media->LastBlock = ((UINT32)Capacity10->LastLba3 << 24) |\r
+ (Capacity10->LastLba2 << 16) |\r
+ (Capacity10->LastLba1 << 8) |\r
+ Capacity10->LastLba0;\r
\r
ScsiDiskDevice->BlkIo.Media->BlockSize = (Capacity10->BlockSize3 << 24) |\r
(Capacity10->BlockSize2 << 16) |\r
(Capacity10->BlockSize1 << 8) |\r
- Capacity10->BlockSize0;\r
- ScsiDiskDevice->BlkIo.Media->LowestAlignedLba = 0;\r
- ScsiDiskDevice->BlkIo.Media->LogicalBlocksPerPhysicalBlock = 0;\r
+ Capacity10->BlockSize0;\r
+ ScsiDiskDevice->BlkIo.Media->LowestAlignedLba = 0;\r
+ ScsiDiskDevice->BlkIo.Media->LogicalBlocksPerPhysicalBlock = 0;\r
if (!ScsiDiskDevice->BlockLimitsVpdSupported) {\r
- ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32) ScsiDiskDevice->BlkIo.Media->LastBlock;\r
+ ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32)ScsiDiskDevice->BlkIo.Media->LastBlock;\r
}\r
} else {\r
- Ptr = (UINT8*)&ScsiDiskDevice->BlkIo.Media->LastBlock;\r
+ Ptr = (UINT8 *)&ScsiDiskDevice->BlkIo.Media->LastBlock;\r
*Ptr++ = Capacity16->LastLba0;\r
*Ptr++ = Capacity16->LastLba1;\r
*Ptr++ = Capacity16->LastLba2;\r
ScsiDiskDevice->BlkIo.Media->BlockSize = (Capacity16->BlockSize3 << 24) |\r
(Capacity16->BlockSize2 << 16) |\r
(Capacity16->BlockSize1 << 8) |\r
- Capacity16->BlockSize0;\r
+ Capacity16->BlockSize0;\r
\r
ScsiDiskDevice->BlkIo.Media->LowestAlignedLba = (Capacity16->LowestAlignLogic2 << 8) |\r
- Capacity16->LowestAlignLogic1;\r
- ScsiDiskDevice->BlkIo.Media->LogicalBlocksPerPhysicalBlock = (1 << Capacity16->LogicPerPhysical);\r
+ Capacity16->LowestAlignLogic1;\r
+ ScsiDiskDevice->BlkIo.Media->LogicalBlocksPerPhysicalBlock = (1 << Capacity16->LogicPerPhysical);\r
if (!ScsiDiskDevice->BlockLimitsVpdSupported) {\r
- if (ScsiDiskDevice->BlkIo.Media->LastBlock > (UINT32) -1) {\r
- ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32) -1;\r
+ if (ScsiDiskDevice->BlkIo.Media->LastBlock > (UINT32)-1) {\r
+ ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32)-1;\r
} else {\r
- ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32) ScsiDiskDevice->BlkIo.Media->LastBlock;\r
+ ScsiDiskDevice->UnmapInfo.MaxLbaCnt = (UINT32)ScsiDiskDevice->BlkIo.Media->LastBlock;\r
}\r
}\r
}\r
**/\r
VOID\r
ParseInquiryData (\r
- IN OUT SCSI_DISK_DEV *ScsiDiskDevice\r
+ IN OUT SCSI_DISK_DEV *ScsiDiskDevice\r
)\r
{\r
- ScsiDiskDevice->FixedDevice = (BOOLEAN) ((ScsiDiskDevice->InquiryData.Rmb == 1) ? 0 : 1);\r
- ScsiDiskDevice->BlkIoMedia.RemovableMedia = (BOOLEAN) (!ScsiDiskDevice->FixedDevice);\r
+ ScsiDiskDevice->FixedDevice = (BOOLEAN)((ScsiDiskDevice->InquiryData.Rmb == 1) ? 0 : 1);\r
+ ScsiDiskDevice->BlkIoMedia.RemovableMedia = (BOOLEAN)(!ScsiDiskDevice->FixedDevice);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
ScsiDiskReadSectors (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT VOID *Buffer,\r
- IN EFI_LBA Lba,\r
- IN UINTN NumberOfBlocks\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT VOID *Buffer,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN NumberOfBlocks\r
)\r
{\r
- UINTN BlocksRemaining;\r
- UINT8 *PtrBuffer;\r
- UINT32 BlockSize;\r
- UINT32 ByteCount;\r
- UINT32 MaxBlock;\r
- UINT32 SectorCount;\r
- UINT32 NextSectorCount;\r
- UINT64 Timeout;\r
- EFI_STATUS Status;\r
- UINT8 Index;\r
- UINT8 MaxRetry;\r
- BOOLEAN NeedRetry;\r
+ UINTN BlocksRemaining;\r
+ UINT8 *PtrBuffer;\r
+ UINT32 BlockSize;\r
+ UINT32 ByteCount;\r
+ UINT32 MaxBlock;\r
+ UINT32 SectorCount;\r
+ UINT32 NextSectorCount;\r
+ UINT64 Timeout;\r
+ EFI_STATUS Status;\r
+ UINT8 Index;\r
+ UINT8 MaxRetry;\r
+ BOOLEAN NeedRetry;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
- BlocksRemaining = NumberOfBlocks;\r
- BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ BlocksRemaining = NumberOfBlocks;\r
+ BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
\r
//\r
// limit the data bytes that can be transferred by one Read(10) or Read(16) Command\r
//\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- MaxBlock = 0xFFFF;\r
+ MaxBlock = 0xFFFF;\r
} else {\r
- MaxBlock = 0xFFFFFFFF;\r
+ MaxBlock = 0xFFFFFFFF;\r
}\r
\r
PtrBuffer = Buffer;\r
\r
while (BlocksRemaining > 0) {\r
-\r
if (BlocksRemaining <= MaxBlock) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- SectorCount = (UINT16) BlocksRemaining;\r
+ SectorCount = (UINT16)BlocksRemaining;\r
} else {\r
- SectorCount = (UINT32) BlocksRemaining;\r
+ SectorCount = (UINT32)BlocksRemaining;\r
}\r
} else {\r
SectorCount = MaxBlock;\r
// to follow ATA spec in which it mentioned that the device may take up to 30s to respond\r
// commands in the Standby/Idle mode.\r
//\r
- Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
+ Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
\r
- MaxRetry = 2;\r
+ MaxRetry = 2;\r
for (Index = 0; Index < MaxRetry; Index++) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
Status = ScsiDiskRead10 (\r
- ScsiDiskDevice,\r
- &NeedRetry,\r
- Timeout,\r
- PtrBuffer,\r
- &ByteCount,\r
- (UINT32) Lba,\r
- SectorCount\r
- );\r
+ ScsiDiskDevice,\r
+ &NeedRetry,\r
+ Timeout,\r
+ PtrBuffer,\r
+ &ByteCount,\r
+ (UINT32)Lba,\r
+ SectorCount\r
+ );\r
} else {\r
Status = ScsiDiskRead16 (\r
- ScsiDiskDevice,\r
- &NeedRetry,\r
- Timeout,\r
- PtrBuffer,\r
- &ByteCount,\r
- Lba,\r
- SectorCount\r
- );\r
+ ScsiDiskDevice,\r
+ &NeedRetry,\r
+ Timeout,\r
+ PtrBuffer,\r
+ &ByteCount,\r
+ Lba,\r
+ SectorCount\r
+ );\r
}\r
+\r
if (!EFI_ERROR (Status)) {\r
break;\r
}\r
//\r
SectorCount = ByteCount / BlockSize;\r
\r
- Lba += SectorCount;\r
- PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
+ Lba += SectorCount;\r
+ PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
BlocksRemaining -= SectorCount;\r
}\r
\r
**/\r
EFI_STATUS\r
ScsiDiskWriteSectors (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN VOID *Buffer,\r
- IN EFI_LBA Lba,\r
- IN UINTN NumberOfBlocks\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN VOID *Buffer,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN NumberOfBlocks\r
)\r
{\r
- UINTN BlocksRemaining;\r
- UINT8 *PtrBuffer;\r
- UINT32 BlockSize;\r
- UINT32 ByteCount;\r
- UINT32 MaxBlock;\r
- UINT32 SectorCount;\r
- UINT32 NextSectorCount;\r
- UINT64 Timeout;\r
- EFI_STATUS Status;\r
- UINT8 Index;\r
- UINT8 MaxRetry;\r
- BOOLEAN NeedRetry;\r
+ UINTN BlocksRemaining;\r
+ UINT8 *PtrBuffer;\r
+ UINT32 BlockSize;\r
+ UINT32 ByteCount;\r
+ UINT32 MaxBlock;\r
+ UINT32 SectorCount;\r
+ UINT32 NextSectorCount;\r
+ UINT64 Timeout;\r
+ EFI_STATUS Status;\r
+ UINT8 Index;\r
+ UINT8 MaxRetry;\r
+ BOOLEAN NeedRetry;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
- BlocksRemaining = NumberOfBlocks;\r
- BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ BlocksRemaining = NumberOfBlocks;\r
+ BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
\r
//\r
// limit the data bytes that can be transferred by one Read(10) or Read(16) Command\r
//\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- MaxBlock = 0xFFFF;\r
+ MaxBlock = 0xFFFF;\r
} else {\r
- MaxBlock = 0xFFFFFFFF;\r
+ MaxBlock = 0xFFFFFFFF;\r
}\r
\r
PtrBuffer = Buffer;\r
\r
while (BlocksRemaining > 0) {\r
-\r
if (BlocksRemaining <= MaxBlock) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- SectorCount = (UINT16) BlocksRemaining;\r
+ SectorCount = (UINT16)BlocksRemaining;\r
} else {\r
- SectorCount = (UINT32) BlocksRemaining;\r
+ SectorCount = (UINT32)BlocksRemaining;\r
}\r
} else {\r
SectorCount = MaxBlock;\r
// to follow ATA spec in which it mentioned that the device may take up to 30s to respond\r
// commands in the Standby/Idle mode.\r
//\r
- Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
- MaxRetry = 2;\r
+ Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
+ MaxRetry = 2;\r
for (Index = 0; Index < MaxRetry; Index++) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
Status = ScsiDiskWrite10 (\r
- ScsiDiskDevice,\r
- &NeedRetry,\r
- Timeout,\r
- PtrBuffer,\r
- &ByteCount,\r
- (UINT32) Lba,\r
- SectorCount\r
- );\r
+ ScsiDiskDevice,\r
+ &NeedRetry,\r
+ Timeout,\r
+ PtrBuffer,\r
+ &ByteCount,\r
+ (UINT32)Lba,\r
+ SectorCount\r
+ );\r
} else {\r
Status = ScsiDiskWrite16 (\r
- ScsiDiskDevice,\r
- &NeedRetry,\r
- Timeout,\r
- PtrBuffer,\r
- &ByteCount,\r
- Lba,\r
- SectorCount\r
- );\r
- }\r
+ ScsiDiskDevice,\r
+ &NeedRetry,\r
+ Timeout,\r
+ PtrBuffer,\r
+ &ByteCount,\r
+ Lba,\r
+ SectorCount\r
+ );\r
+ }\r
+\r
if (!EFI_ERROR (Status)) {\r
break;\r
}\r
if ((Index == MaxRetry) && (Status != EFI_SUCCESS)) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// actual transferred sectors\r
//\r
SectorCount = ByteCount / BlockSize;\r
\r
- Lba += SectorCount;\r
- PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
+ Lba += SectorCount;\r
+ PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
BlocksRemaining -= SectorCount;\r
}\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncReadSectors (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT VOID *Buffer,\r
- IN EFI_LBA Lba,\r
- IN UINTN NumberOfBlocks,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT VOID *Buffer,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN NumberOfBlocks,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- UINTN BlocksRemaining;\r
- UINT8 *PtrBuffer;\r
- UINT32 BlockSize;\r
- UINT32 ByteCount;\r
- UINT32 MaxBlock;\r
- UINT32 SectorCount;\r
- UINT64 Timeout;\r
- SCSI_BLKIO2_REQUEST *BlkIo2Req;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
+ UINTN BlocksRemaining;\r
+ UINT8 *PtrBuffer;\r
+ UINT32 BlockSize;\r
+ UINT32 ByteCount;\r
+ UINT32 MaxBlock;\r
+ UINT32 SectorCount;\r
+ UINT64 Timeout;\r
+ SCSI_BLKIO2_REQUEST *BlkIo2Req;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if ((Token == NULL) || (Token->Event == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- BlkIo2Req->Token = Token;\r
+ BlkIo2Req->Token = Token;\r
\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
InsertTailList (&ScsiDiskDevice->AsyncTaskQueue, &BlkIo2Req->Link);\r
\r
InitializeListHead (&BlkIo2Req->ScsiRWQueue);\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
- BlocksRemaining = NumberOfBlocks;\r
- BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ BlocksRemaining = NumberOfBlocks;\r
+ BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
\r
//\r
// Limit the data bytes that can be transferred by one Read(10) or Read(16)\r
// Command\r
//\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- MaxBlock = 0xFFFF;\r
+ MaxBlock = 0xFFFF;\r
} else {\r
- MaxBlock = 0xFFFFFFFF;\r
+ MaxBlock = 0xFFFFFFFF;\r
}\r
\r
PtrBuffer = Buffer;\r
\r
while (BlocksRemaining > 0) {\r
-\r
if (BlocksRemaining <= MaxBlock) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- SectorCount = (UINT16) BlocksRemaining;\r
+ SectorCount = (UINT16)BlocksRemaining;\r
} else {\r
- SectorCount = (UINT32) BlocksRemaining;\r
+ SectorCount = (UINT32)BlocksRemaining;\r
}\r
} else {\r
SectorCount = MaxBlock;\r
// 30s is added to follow ATA spec in which it mentioned that the device\r
// may take up to 30s to respond commands in the Standby/Idle mode.\r
//\r
- Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
+ Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
Status = ScsiDiskAsyncRead10 (\r
0,\r
PtrBuffer,\r
ByteCount,\r
- (UINT32) Lba,\r
+ (UINT32)Lba,\r
SectorCount,\r
BlkIo2Req,\r
Token\r
Token\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
//\r
// Some devices will return EFI_DEVICE_ERROR or EFI_TIMEOUT when the data\r
//\r
SectorCount = ByteCount / BlockSize;\r
\r
- Lba += SectorCount;\r
- PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
+ Lba += SectorCount;\r
+ PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
BlocksRemaining -= SectorCount;\r
}\r
\r
\r
gBS->SignalEvent (Token->Event);\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
}\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncWriteSectors (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN VOID *Buffer,\r
- IN EFI_LBA Lba,\r
- IN UINTN NumberOfBlocks,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN VOID *Buffer,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN NumberOfBlocks,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- UINTN BlocksRemaining;\r
- UINT8 *PtrBuffer;\r
- UINT32 BlockSize;\r
- UINT32 ByteCount;\r
- UINT32 MaxBlock;\r
- UINT32 SectorCount;\r
- UINT64 Timeout;\r
- SCSI_BLKIO2_REQUEST *BlkIo2Req;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
+ UINTN BlocksRemaining;\r
+ UINT8 *PtrBuffer;\r
+ UINT32 BlockSize;\r
+ UINT32 ByteCount;\r
+ UINT32 MaxBlock;\r
+ UINT32 SectorCount;\r
+ UINT64 Timeout;\r
+ SCSI_BLKIO2_REQUEST *BlkIo2Req;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if ((Token == NULL) || (Token->Event == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- BlkIo2Req->Token = Token;\r
+ BlkIo2Req->Token = Token;\r
\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
InsertTailList (&ScsiDiskDevice->AsyncTaskQueue, &BlkIo2Req->Link);\r
\r
InitializeListHead (&BlkIo2Req->ScsiRWQueue);\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
- BlocksRemaining = NumberOfBlocks;\r
- BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ BlocksRemaining = NumberOfBlocks;\r
+ BlockSize = ScsiDiskDevice->BlkIo.Media->BlockSize;\r
\r
//\r
// Limit the data bytes that can be transferred by one Read(10) or Read(16)\r
// Command\r
//\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- MaxBlock = 0xFFFF;\r
+ MaxBlock = 0xFFFF;\r
} else {\r
- MaxBlock = 0xFFFFFFFF;\r
+ MaxBlock = 0xFFFFFFFF;\r
}\r
\r
PtrBuffer = Buffer;\r
\r
while (BlocksRemaining > 0) {\r
-\r
if (BlocksRemaining <= MaxBlock) {\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
- SectorCount = (UINT16) BlocksRemaining;\r
+ SectorCount = (UINT16)BlocksRemaining;\r
} else {\r
- SectorCount = (UINT32) BlocksRemaining;\r
+ SectorCount = (UINT32)BlocksRemaining;\r
}\r
} else {\r
SectorCount = MaxBlock;\r
// 30s is added to follow ATA spec in which it mentioned that the device\r
// may take up to 30s to respond commands in the Standby/Idle mode.\r
//\r
- Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
+ Timeout = EFI_TIMER_PERIOD_SECONDS (ByteCount / 2100000 + 31);\r
\r
if (!ScsiDiskDevice->Cdb16Byte) {\r
Status = ScsiDiskAsyncWrite10 (\r
0,\r
PtrBuffer,\r
ByteCount,\r
- (UINT32) Lba,\r
+ (UINT32)Lba,\r
SectorCount,\r
BlkIo2Req,\r
Token\r
Token\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
//\r
// Some devices will return EFI_DEVICE_ERROR or EFI_TIMEOUT when the data\r
//\r
SectorCount = ByteCount / BlockSize;\r
\r
- Lba += SectorCount;\r
- PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
+ Lba += SectorCount;\r
+ PtrBuffer = PtrBuffer + SectorCount * BlockSize;\r
BlocksRemaining -= SectorCount;\r
}\r
\r
\r
gBS->SignalEvent (Token->Event);\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Submit Read(10) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskRead10 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- IN UINT64 Timeout,\r
- OUT UINT8 *DataBuffer,\r
- IN OUT UINT32 *DataLength,\r
- IN UINT32 StartLba,\r
- IN UINT32 SectorCount\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ IN UINT64 Timeout,\r
+ OUT UINT8 *DataBuffer,\r
+ IN OUT UINT32 *DataLength,\r
+ IN UINT32 StartLba,\r
+ IN UINT32 SectorCount\r
)\r
{\r
UINT8 SenseDataLength;\r
// try again till the operation succeeds or fails with one sector transfer length.\r
//\r
BackOff:\r
- *NeedRetry = FALSE;\r
- Action = ACTION_NO_ACTION;\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
- ReturnStatus = ScsiRead10Command (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- DataBuffer,\r
- DataLength,\r
- StartLba,\r
- SectorCount\r
- );\r
+ *NeedRetry = FALSE;\r
+ Action = ACTION_NO_ACTION;\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ ReturnStatus = ScsiRead10Command (\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ DataBuffer,\r
+ DataLength,\r
+ StartLba,\r
+ SectorCount\r
+ );\r
\r
- if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {\r
+ if ((ReturnStatus == EFI_NOT_READY) || (ReturnStatus == EFI_BAD_BUFFER_SIZE)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
} else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Try again with half length if the sense data shows we need to retry.\r
//\r
SectorCount >>= 1;\r
- *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
goto BackOff;\r
} else {\r
*NeedRetry = FALSE;\r
return ReturnStatus;\r
}\r
\r
-\r
/**\r
Submit Write(10) Command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskWrite10 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- IN UINT64 Timeout,\r
- IN UINT8 *DataBuffer,\r
- IN OUT UINT32 *DataLength,\r
- IN UINT32 StartLba,\r
- IN UINT32 SectorCount\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 *DataBuffer,\r
+ IN OUT UINT32 *DataLength,\r
+ IN UINT32 StartLba,\r
+ IN UINT32 SectorCount\r
)\r
{\r
EFI_STATUS Status;\r
// try again till the operation succeeds or fails with one sector transfer length.\r
//\r
BackOff:\r
- *NeedRetry = FALSE;\r
- Action = ACTION_NO_ACTION;\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
- ReturnStatus = ScsiWrite10Command (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- DataBuffer,\r
- DataLength,\r
- StartLba,\r
- SectorCount\r
- );\r
- if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {\r
+ *NeedRetry = FALSE;\r
+ Action = ACTION_NO_ACTION;\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ ReturnStatus = ScsiWrite10Command (\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ DataBuffer,\r
+ DataLength,\r
+ StartLba,\r
+ SectorCount\r
+ );\r
+ if ((ReturnStatus == EFI_NOT_READY) || (ReturnStatus == EFI_BAD_BUFFER_SIZE)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
} else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Try again with half length if the sense data shows we need to retry.\r
//\r
SectorCount >>= 1;\r
- *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
goto BackOff;\r
} else {\r
*NeedRetry = FALSE;\r
return ReturnStatus;\r
}\r
\r
-\r
/**\r
Submit Read(16) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskRead16 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- IN UINT64 Timeout,\r
- OUT UINT8 *DataBuffer,\r
- IN OUT UINT32 *DataLength,\r
- IN UINT64 StartLba,\r
- IN UINT32 SectorCount\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ IN UINT64 Timeout,\r
+ OUT UINT8 *DataBuffer,\r
+ IN OUT UINT32 *DataLength,\r
+ IN UINT64 StartLba,\r
+ IN UINT32 SectorCount\r
)\r
{\r
UINT8 SenseDataLength;\r
// try again till the operation succeeds or fails with one sector transfer length.\r
//\r
BackOff:\r
- *NeedRetry = FALSE;\r
- Action = ACTION_NO_ACTION;\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
- ReturnStatus = ScsiRead16Command (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- DataBuffer,\r
- DataLength,\r
- StartLba,\r
- SectorCount\r
- );\r
- if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {\r
+ *NeedRetry = FALSE;\r
+ Action = ACTION_NO_ACTION;\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ ReturnStatus = ScsiRead16Command (\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ DataBuffer,\r
+ DataLength,\r
+ StartLba,\r
+ SectorCount\r
+ );\r
+ if ((ReturnStatus == EFI_NOT_READY) || (ReturnStatus == EFI_BAD_BUFFER_SIZE)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
} else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Try again with half length if the sense data shows we need to retry.\r
//\r
SectorCount >>= 1;\r
- *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
goto BackOff;\r
} else {\r
*NeedRetry = FALSE;\r
return ReturnStatus;\r
}\r
\r
-\r
/**\r
Submit Write(16) Command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskWrite16 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- OUT BOOLEAN *NeedRetry,\r
- IN UINT64 Timeout,\r
- IN UINT8 *DataBuffer,\r
- IN OUT UINT32 *DataLength,\r
- IN UINT64 StartLba,\r
- IN UINT32 SectorCount\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ OUT BOOLEAN *NeedRetry,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 *DataBuffer,\r
+ IN OUT UINT32 *DataLength,\r
+ IN UINT64 StartLba,\r
+ IN UINT32 SectorCount\r
)\r
{\r
EFI_STATUS Status;\r
// try again till the operation succeeds or fails with one sector transfer length.\r
//\r
BackOff:\r
- *NeedRetry = FALSE;\r
- Action = ACTION_NO_ACTION;\r
- SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
- ReturnStatus = ScsiWrite16Command (\r
- ScsiDiskDevice->ScsiIo,\r
- Timeout,\r
- ScsiDiskDevice->SenseData,\r
- &SenseDataLength,\r
- &HostAdapterStatus,\r
- &TargetStatus,\r
- DataBuffer,\r
- DataLength,\r
- StartLba,\r
- SectorCount\r
- );\r
- if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {\r
+ *NeedRetry = FALSE;\r
+ Action = ACTION_NO_ACTION;\r
+ SenseDataLength = (UINT8)(ScsiDiskDevice->SenseDataNumber * sizeof (EFI_SCSI_SENSE_DATA));\r
+ ReturnStatus = ScsiWrite16Command (\r
+ ScsiDiskDevice->ScsiIo,\r
+ Timeout,\r
+ ScsiDiskDevice->SenseData,\r
+ &SenseDataLength,\r
+ &HostAdapterStatus,\r
+ &TargetStatus,\r
+ DataBuffer,\r
+ DataLength,\r
+ StartLba,\r
+ SectorCount\r
+ );\r
+ if ((ReturnStatus == EFI_NOT_READY) || (ReturnStatus == EFI_BAD_BUFFER_SIZE)) {\r
*NeedRetry = TRUE;\r
return EFI_DEVICE_ERROR;\r
} else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == EFI_UNSUPPORTED)) {\r
*NeedRetry = FALSE;\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Try again with half length if the sense data shows we need to retry.\r
//\r
SectorCount >>= 1;\r
- *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ *DataLength = SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
goto BackOff;\r
} else {\r
*NeedRetry = FALSE;\r
return ReturnStatus;\r
}\r
\r
-\r
/**\r
Internal helper notify function in which determine whether retry of a SCSI\r
Read/Write command is needed and signal the event passed from Block I/O(2) if\r
IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_ASYNC_RW_REQUEST *Request;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
- EFI_BLOCK_IO2_TOKEN *Token;\r
- UINTN Action;\r
- UINT32 OldDataLength;\r
- UINT32 OldSectorCount;\r
- UINT8 MaxRetry;\r
+ EFI_STATUS Status;\r
+ SCSI_ASYNC_RW_REQUEST *Request;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_BLOCK_IO2_TOKEN *Token;\r
+ UINTN Action;\r
+ UINT32 OldDataLength;\r
+ UINT32 OldSectorCount;\r
+ UINT8 MaxRetry;\r
\r
gBS->CloseEvent (Event);\r
\r
- Request = (SCSI_ASYNC_RW_REQUEST *) Context;\r
- ScsiDiskDevice = Request->ScsiDiskDevice;\r
- Token = Request->BlkIo2Req->Token;\r
- OldDataLength = Request->DataLength;\r
- OldSectorCount = Request->SectorCount;\r
- MaxRetry = 2;\r
+ Request = (SCSI_ASYNC_RW_REQUEST *)Context;\r
+ ScsiDiskDevice = Request->ScsiDiskDevice;\r
+ Token = Request->BlkIo2Req->Token;\r
+ OldDataLength = Request->DataLength;\r
+ OldSectorCount = Request->SectorCount;\r
+ MaxRetry = 2;\r
\r
//\r
// If previous sub-tasks already fails, no need to process this sub-task.\r
Token->TransactionStatus = EFI_DEVICE_ERROR;\r
goto Exit;\r
}\r
+\r
//\r
// Try again with two half length request if the sense data shows we need\r
// to retry.\r
//\r
Request->SectorCount >>= 1;\r
- Request->DataLength = Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
- Request->TimesRetry = 0;\r
+ Request->DataLength = Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize;\r
+ Request->TimesRetry = 0;\r
\r
goto Retry;\r
} else {\r
Request->TimesRetry,\r
Request->InBuffer,\r
Request->DataLength,\r
- (UINT32) Request->StartLba,\r
+ (UINT32)Request->StartLba,\r
Request->SectorCount,\r
Request->BlkIo2Req,\r
Token\r
0,\r
Request->InBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
OldDataLength - Request->DataLength,\r
- (UINT32) Request->StartLba + Request->SectorCount,\r
+ (UINT32)Request->StartLba + Request->SectorCount,\r
OldSectorCount - Request->SectorCount,\r
Request->BlkIo2Req,\r
Token\r
Token\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
Token->TransactionStatus = EFI_DEVICE_ERROR;\r
goto Exit;\r
Request->TimesRetry,\r
Request->OutBuffer,\r
Request->DataLength,\r
- (UINT32) Request->StartLba,\r
+ (UINT32)Request->StartLba,\r
Request->SectorCount,\r
Request->BlkIo2Req,\r
Token\r
0,\r
Request->OutBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
OldDataLength - Request->DataLength,\r
- (UINT32) Request->StartLba + Request->SectorCount,\r
+ (UINT32)Request->StartLba + Request->SectorCount,\r
OldSectorCount - Request->SectorCount,\r
Request->BlkIo2Req,\r
Token\r
Token\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
Token->TransactionStatus = EFI_DEVICE_ERROR;\r
goto Exit;\r
Exit:\r
RemoveEntryList (&Request->Link);\r
if ((IsListEmpty (&Request->BlkIo2Req->ScsiRWQueue)) &&\r
- (Request->BlkIo2Req->LastScsiRW)) {\r
+ (Request->BlkIo2Req->LastScsiRW))\r
+ {\r
//\r
// The last SCSI R/W command of a BlockIo2 request completes\r
//\r
FreePool (Request);\r
}\r
\r
-\r
/**\r
Submit Async Read(10) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncRead10 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINT64 Timeout,\r
- IN UINT8 TimesRetry,\r
- OUT UINT8 *DataBuffer,\r
- IN UINT32 DataLength,\r
- IN UINT32 StartLba,\r
- IN UINT32 SectorCount,\r
- IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 TimesRetry,\r
+ OUT UINT8 *DataBuffer,\r
+ IN UINT32 DataLength,\r
+ IN UINT32 StartLba,\r
+ IN UINT32 SectorCount,\r
+ IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_ASYNC_RW_REQUEST *Request;\r
- EFI_EVENT AsyncIoEvent;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ SCSI_ASYNC_RW_REQUEST *Request;\r
+ EFI_EVENT AsyncIoEvent;\r
+ EFI_TPL OldTpl;\r
\r
AsyncIoEvent = NULL;\r
\r
InsertTailList (&BlkIo2Req->ScsiRWQueue, &Request->Link);\r
gBS->RestoreTPL (OldTpl);\r
\r
- Request->SenseDataLength = (UINT8) (6 * sizeof (EFI_SCSI_SENSE_DATA));\r
+ Request->SenseDataLength = (UINT8)(6 * sizeof (EFI_SCSI_SENSE_DATA));\r
Request->SenseData = AllocateZeroPool (Request->SenseDataLength);\r
if (Request->SenseData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ErrorExit;\r
}\r
\r
- Request->ScsiDiskDevice = ScsiDiskDevice;\r
- Request->Timeout = Timeout;\r
- Request->TimesRetry = TimesRetry;\r
- Request->InBuffer = DataBuffer;\r
- Request->DataLength = DataLength;\r
- Request->StartLba = StartLba;\r
- Request->SectorCount = SectorCount;\r
- Request->BlkIo2Req = BlkIo2Req;\r
+ Request->ScsiDiskDevice = ScsiDiskDevice;\r
+ Request->Timeout = Timeout;\r
+ Request->TimesRetry = TimesRetry;\r
+ Request->InBuffer = DataBuffer;\r
+ Request->DataLength = DataLength;\r
+ Request->StartLba = StartLba;\r
+ Request->SectorCount = SectorCount;\r
+ Request->BlkIo2Req = BlkIo2Req;\r
\r
//\r
// Create Event\r
Request,\r
&AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
&Request->TargetStatus,\r
Request->InBuffer,\r
&Request->DataLength,\r
- (UINT32) Request->StartLba,\r
+ (UINT32)Request->StartLba,\r
Request->SectorCount,\r
AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Submit Async Write(10) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncWrite10 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINT64 Timeout,\r
- IN UINT8 TimesRetry,\r
- IN UINT8 *DataBuffer,\r
- IN UINT32 DataLength,\r
- IN UINT32 StartLba,\r
- IN UINT32 SectorCount,\r
- IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 TimesRetry,\r
+ IN UINT8 *DataBuffer,\r
+ IN UINT32 DataLength,\r
+ IN UINT32 StartLba,\r
+ IN UINT32 SectorCount,\r
+ IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_ASYNC_RW_REQUEST *Request;\r
- EFI_EVENT AsyncIoEvent;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ SCSI_ASYNC_RW_REQUEST *Request;\r
+ EFI_EVENT AsyncIoEvent;\r
+ EFI_TPL OldTpl;\r
\r
AsyncIoEvent = NULL;\r
\r
InsertTailList (&BlkIo2Req->ScsiRWQueue, &Request->Link);\r
gBS->RestoreTPL (OldTpl);\r
\r
- Request->SenseDataLength = (UINT8) (6 * sizeof (EFI_SCSI_SENSE_DATA));\r
+ Request->SenseDataLength = (UINT8)(6 * sizeof (EFI_SCSI_SENSE_DATA));\r
Request->SenseData = AllocateZeroPool (Request->SenseDataLength);\r
if (Request->SenseData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ErrorExit;\r
}\r
\r
- Request->ScsiDiskDevice = ScsiDiskDevice;\r
- Request->Timeout = Timeout;\r
- Request->TimesRetry = TimesRetry;\r
- Request->OutBuffer = DataBuffer;\r
- Request->DataLength = DataLength;\r
- Request->StartLba = StartLba;\r
- Request->SectorCount = SectorCount;\r
- Request->BlkIo2Req = BlkIo2Req;\r
+ Request->ScsiDiskDevice = ScsiDiskDevice;\r
+ Request->Timeout = Timeout;\r
+ Request->TimesRetry = TimesRetry;\r
+ Request->OutBuffer = DataBuffer;\r
+ Request->DataLength = DataLength;\r
+ Request->StartLba = StartLba;\r
+ Request->SectorCount = SectorCount;\r
+ Request->BlkIo2Req = BlkIo2Req;\r
\r
//\r
// Create Event\r
Request,\r
&AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
&Request->TargetStatus,\r
Request->OutBuffer,\r
&Request->DataLength,\r
- (UINT32) Request->StartLba,\r
+ (UINT32)Request->StartLba,\r
Request->SectorCount,\r
AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Submit Async Read(16) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncRead16 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINT64 Timeout,\r
- IN UINT8 TimesRetry,\r
- OUT UINT8 *DataBuffer,\r
- IN UINT32 DataLength,\r
- IN UINT64 StartLba,\r
- IN UINT32 SectorCount,\r
- IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 TimesRetry,\r
+ OUT UINT8 *DataBuffer,\r
+ IN UINT32 DataLength,\r
+ IN UINT64 StartLba,\r
+ IN UINT32 SectorCount,\r
+ IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_ASYNC_RW_REQUEST *Request;\r
- EFI_EVENT AsyncIoEvent;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ SCSI_ASYNC_RW_REQUEST *Request;\r
+ EFI_EVENT AsyncIoEvent;\r
+ EFI_TPL OldTpl;\r
\r
AsyncIoEvent = NULL;\r
\r
InsertTailList (&BlkIo2Req->ScsiRWQueue, &Request->Link);\r
gBS->RestoreTPL (OldTpl);\r
\r
- Request->SenseDataLength = (UINT8) (6 * sizeof (EFI_SCSI_SENSE_DATA));\r
+ Request->SenseDataLength = (UINT8)(6 * sizeof (EFI_SCSI_SENSE_DATA));\r
Request->SenseData = AllocateZeroPool (Request->SenseDataLength);\r
if (Request->SenseData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ErrorExit;\r
}\r
\r
- Request->ScsiDiskDevice = ScsiDiskDevice;\r
- Request->Timeout = Timeout;\r
- Request->TimesRetry = TimesRetry;\r
- Request->InBuffer = DataBuffer;\r
- Request->DataLength = DataLength;\r
- Request->StartLba = StartLba;\r
- Request->SectorCount = SectorCount;\r
- Request->BlkIo2Req = BlkIo2Req;\r
+ Request->ScsiDiskDevice = ScsiDiskDevice;\r
+ Request->Timeout = Timeout;\r
+ Request->TimesRetry = TimesRetry;\r
+ Request->InBuffer = DataBuffer;\r
+ Request->DataLength = DataLength;\r
+ Request->StartLba = StartLba;\r
+ Request->SectorCount = SectorCount;\r
+ Request->BlkIo2Req = BlkIo2Req;\r
\r
//\r
// Create Event\r
Request,\r
&AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
Request->SectorCount,\r
AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Submit Async Write(16) command.\r
\r
**/\r
EFI_STATUS\r
ScsiDiskAsyncWrite16 (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN UINT64 Timeout,\r
- IN UINT8 TimesRetry,\r
- IN UINT8 *DataBuffer,\r
- IN UINT32 DataLength,\r
- IN UINT64 StartLba,\r
- IN UINT32 SectorCount,\r
- IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
- IN EFI_BLOCK_IO2_TOKEN *Token\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 TimesRetry,\r
+ IN UINT8 *DataBuffer,\r
+ IN UINT32 DataLength,\r
+ IN UINT64 StartLba,\r
+ IN UINT32 SectorCount,\r
+ IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req,\r
+ IN EFI_BLOCK_IO2_TOKEN *Token\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_ASYNC_RW_REQUEST *Request;\r
- EFI_EVENT AsyncIoEvent;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ SCSI_ASYNC_RW_REQUEST *Request;\r
+ EFI_EVENT AsyncIoEvent;\r
+ EFI_TPL OldTpl;\r
\r
AsyncIoEvent = NULL;\r
\r
InsertTailList (&BlkIo2Req->ScsiRWQueue, &Request->Link);\r
gBS->RestoreTPL (OldTpl);\r
\r
- Request->SenseDataLength = (UINT8) (6 * sizeof (EFI_SCSI_SENSE_DATA));\r
+ Request->SenseDataLength = (UINT8)(6 * sizeof (EFI_SCSI_SENSE_DATA));\r
Request->SenseData = AllocateZeroPool (Request->SenseDataLength);\r
if (Request->SenseData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ErrorExit;\r
}\r
\r
- Request->ScsiDiskDevice = ScsiDiskDevice;\r
- Request->Timeout = Timeout;\r
- Request->TimesRetry = TimesRetry;\r
- Request->OutBuffer = DataBuffer;\r
- Request->DataLength = DataLength;\r
- Request->StartLba = StartLba;\r
- Request->SectorCount = SectorCount;\r
- Request->BlkIo2Req = BlkIo2Req;\r
+ Request->ScsiDiskDevice = ScsiDiskDevice;\r
+ Request->Timeout = Timeout;\r
+ Request->TimesRetry = TimesRetry;\r
+ Request->OutBuffer = DataBuffer;\r
+ Request->DataLength = DataLength;\r
+ Request->StartLba = StartLba;\r
+ Request->SectorCount = SectorCount;\r
+ Request->BlkIo2Req = BlkIo2Req;\r
\r
//\r
// Create Event\r
Request,\r
&AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
Request->SectorCount,\r
AsyncIoEvent\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ErrorExit;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Check sense key to find if media presents.\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsNoMedia (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsNoMedia;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsNoMedia;\r
\r
IsNoMedia = FALSE;\r
SensePtr = SenseData;\r
// Additional Sense Code is ASC_NO_MEDIA (0x3A)\r
//\r
if ((SensePtr->Sense_Key == EFI_SCSI_SK_NOT_READY) &&\r
- (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_NO_MEDIA)) {\r
+ (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_NO_MEDIA))\r
+ {\r
IsNoMedia = TRUE;\r
}\r
+\r
SensePtr++;\r
}\r
\r
return IsNoMedia;\r
}\r
\r
-\r
/**\r
Parse sense key.\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsMediaError (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsError;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsError;\r
\r
- IsError = FALSE;\r
- SensePtr = SenseData;\r
+ IsError = FALSE;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
switch (SensePtr->Sense_Key) {\r
+ case EFI_SCSI_SK_MEDIUM_ERROR:\r
+ //\r
+ // Sense Key is EFI_SCSI_SK_MEDIUM_ERROR (0x3)\r
+ //\r
+ switch (SensePtr->Addnl_Sense_Code) {\r
+ //\r
+ // fall through\r
+ //\r
+ case EFI_SCSI_ASC_MEDIA_ERR1:\r
\r
- case EFI_SCSI_SK_MEDIUM_ERROR:\r
- //\r
- // Sense Key is EFI_SCSI_SK_MEDIUM_ERROR (0x3)\r
- //\r
- switch (SensePtr->Addnl_Sense_Code) {\r
+ //\r
+ // fall through\r
+ //\r
+ case EFI_SCSI_ASC_MEDIA_ERR2:\r
\r
- //\r
- // fall through\r
- //\r
- case EFI_SCSI_ASC_MEDIA_ERR1:\r
+ //\r
+ // fall through\r
+ //\r
+ case EFI_SCSI_ASC_MEDIA_ERR3:\r
+ case EFI_SCSI_ASC_MEDIA_ERR4:\r
+ IsError = TRUE;\r
+ break;\r
\r
- //\r
- // fall through\r
- //\r
- case EFI_SCSI_ASC_MEDIA_ERR2:\r
+ default:\r
+ break;\r
+ }\r
\r
- //\r
- // fall through\r
- //\r
- case EFI_SCSI_ASC_MEDIA_ERR3:\r
- case EFI_SCSI_ASC_MEDIA_ERR4:\r
- IsError = TRUE;\r
break;\r
\r
- default:\r
- break;\r
- }\r
+ case EFI_SCSI_SK_NOT_READY:\r
+ //\r
+ // Sense Key is EFI_SCSI_SK_NOT_READY (0x2)\r
+ //\r
+ switch (SensePtr->Addnl_Sense_Code) {\r
+ //\r
+ // Additional Sense Code is ASC_MEDIA_UPSIDE_DOWN (0x6)\r
+ //\r
+ case EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN:\r
+ IsError = TRUE;\r
+ break;\r
\r
- break;\r
+ default:\r
+ break;\r
+ }\r
\r
- case EFI_SCSI_SK_NOT_READY:\r
- //\r
- // Sense Key is EFI_SCSI_SK_NOT_READY (0x2)\r
- //\r
- switch (SensePtr->Addnl_Sense_Code) {\r
- //\r
- // Additional Sense Code is ASC_MEDIA_UPSIDE_DOWN (0x6)\r
- //\r
- case EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN:\r
- IsError = TRUE;\r
break;\r
\r
default:\r
break;\r
- }\r
- break;\r
-\r
- default:\r
- break;\r
}\r
\r
SensePtr++;\r
return IsError;\r
}\r
\r
-\r
/**\r
Check sense key to find if hardware error happens.\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsHardwareError (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsError;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsError;\r
\r
- IsError = FALSE;\r
- SensePtr = SenseData;\r
+ IsError = FALSE;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
//\r
// Sense Key is EFI_SCSI_SK_HARDWARE_ERROR (0x4)\r
//\r
return IsError;\r
}\r
\r
-\r
/**\r
Check sense key to find if media has changed.\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsMediaChange (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsMediaChanged;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsMediaChanged;\r
\r
- IsMediaChanged = FALSE;\r
- SensePtr = SenseData;\r
+ IsMediaChanged = FALSE;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
//\r
// Additional sense code is EFI_SCSI_ASC_MEDIA_CHANGE (0x28)\r
//\r
if ((SensePtr->Sense_Key == EFI_SCSI_SK_UNIT_ATTENTION) &&\r
- (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_MEDIA_CHANGE)) {\r
+ (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_MEDIA_CHANGE))\r
+ {\r
IsMediaChanged = TRUE;\r
}\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsResetBefore (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsResetBefore;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsResetBefore;\r
\r
IsResetBefore = FALSE;\r
SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
//\r
// Sense Key is EFI_SCSI_SK_UNIT_ATTENTION (0x6)\r
// Additional Sense Code is EFI_SCSI_ASC_RESET (0x29)\r
//\r
if ((SensePtr->Sense_Key == EFI_SCSI_SK_UNIT_ATTENTION) &&\r
- (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_RESET)) {\r
+ (SensePtr->Addnl_Sense_Code == EFI_SCSI_ASC_RESET))\r
+ {\r
IsResetBefore = TRUE;\r
}\r
\r
**/\r
BOOLEAN\r
ScsiDiskIsDriveReady (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts,\r
- OUT BOOLEAN *RetryLater\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts,\r
+ OUT BOOLEAN *RetryLater\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN IsReady;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN IsReady;\r
\r
IsReady = TRUE;\r
*RetryLater = FALSE;\r
SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
switch (SensePtr->Sense_Key) {\r
-\r
- case EFI_SCSI_SK_NOT_READY:\r
- //\r
- // Sense Key is EFI_SCSI_SK_NOT_READY (0x2)\r
- //\r
- switch (SensePtr->Addnl_Sense_Code) {\r
- case EFI_SCSI_ASC_NOT_READY:\r
+ case EFI_SCSI_SK_NOT_READY:\r
//\r
- // Additional Sense Code is EFI_SCSI_ASC_NOT_READY (0x4)\r
+ // Sense Key is EFI_SCSI_SK_NOT_READY (0x2)\r
//\r
- switch (SensePtr->Addnl_Sense_Code_Qualifier) {\r
- case EFI_SCSI_ASCQ_IN_PROGRESS:\r
- //\r
- // Additional Sense Code Qualifier is\r
- // EFI_SCSI_ASCQ_IN_PROGRESS (0x1)\r
- //\r
- IsReady = FALSE;\r
- *RetryLater = TRUE;\r
- break;\r
+ switch (SensePtr->Addnl_Sense_Code) {\r
+ case EFI_SCSI_ASC_NOT_READY:\r
+ //\r
+ // Additional Sense Code is EFI_SCSI_ASC_NOT_READY (0x4)\r
+ //\r
+ switch (SensePtr->Addnl_Sense_Code_Qualifier) {\r
+ case EFI_SCSI_ASCQ_IN_PROGRESS:\r
+ //\r
+ // Additional Sense Code Qualifier is\r
+ // EFI_SCSI_ASCQ_IN_PROGRESS (0x1)\r
+ //\r
+ IsReady = FALSE;\r
+ *RetryLater = TRUE;\r
+ break;\r
+\r
+ default:\r
+ IsReady = FALSE;\r
+ *RetryLater = FALSE;\r
+ break;\r
+ }\r
\r
- default:\r
- IsReady = FALSE;\r
- *RetryLater = FALSE;\r
- break;\r
+ break;\r
+\r
+ default:\r
+ break;\r
}\r
+\r
break;\r
\r
default:\r
break;\r
- }\r
- break;\r
-\r
- default:\r
- break;\r
}\r
\r
SensePtr++;\r
**/\r
BOOLEAN\r
ScsiDiskHaveSenseKey (\r
- IN EFI_SCSI_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN EFI_SCSI_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
- EFI_SCSI_SENSE_DATA *SensePtr;\r
- UINTN Index;\r
- BOOLEAN HaveSenseKey;\r
+ EFI_SCSI_SENSE_DATA *SensePtr;\r
+ UINTN Index;\r
+ BOOLEAN HaveSenseKey;\r
\r
if (SenseCounts == 0) {\r
HaveSenseKey = FALSE;\r
SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
//\r
// Sense Key is SK_NO_SENSE (0x0)\r
//\r
if ((SensePtr->Sense_Key == EFI_SCSI_SK_NO_SENSE) &&\r
- (Index == 0)) {\r
+ (Index == 0))\r
+ {\r
HaveSenseKey = FALSE;\r
}\r
\r
**/\r
VOID\r
ReleaseScsiDiskDeviceResources (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice\r
)\r
{\r
if (ScsiDiskDevice == NULL) {\r
- return ;\r
+ return;\r
}\r
\r
if (ScsiDiskDevice->SenseData != NULL) {\r
**/\r
BOOLEAN\r
DetermineInstallBlockIo (\r
- IN EFI_HANDLE ChildHandle\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
- EFI_SCSI_PASS_THRU_PROTOCOL *ScsiPassThru;\r
- EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiPassThru;\r
+ EFI_SCSI_PASS_THRU_PROTOCOL *ScsiPassThru;\r
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiPassThru;\r
\r
//\r
// Firstly, check if ExtScsiPassThru Protocol parent handle exists. If existence,\r
VOID *\r
EFIAPI\r
GetParentProtocol (\r
- IN EFI_GUID *ProtocolGuid,\r
- IN EFI_HANDLE ChildHandle\r
+ IN EFI_GUID *ProtocolGuid,\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
- UINTN Index;\r
- UINTN HandleCount;\r
- VOID *Interface;\r
- EFI_STATUS Status;\r
- EFI_HANDLE *HandleBuffer;\r
+ UINTN Index;\r
+ UINTN HandleCount;\r
+ VOID *Interface;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE *HandleBuffer;\r
\r
//\r
// Retrieve the list of all handles from the handle database\r
**/\r
BOOLEAN\r
DetermineInstallEraseBlock (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN EFI_HANDLE ChildHandle\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
- UINT8 HostAdapterStatus;\r
- UINT8 TargetStatus;\r
- EFI_STATUS CommandStatus;\r
- EFI_STATUS Status;\r
- BOOLEAN UfsDevice;\r
- BOOLEAN RetVal;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
- UINT8 SenseDataLength;\r
- UINT32 DataLength16;\r
- EFI_SCSI_DISK_CAPACITY_DATA16 *CapacityData16;\r
+ UINT8 HostAdapterStatus;\r
+ UINT8 TargetStatus;\r
+ EFI_STATUS CommandStatus;\r
+ EFI_STATUS Status;\r
+ BOOLEAN UfsDevice;\r
+ BOOLEAN RetVal;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
+ UINT8 SenseDataLength;\r
+ UINT32 DataLength16;\r
+ EFI_SCSI_DISK_CAPACITY_DATA16 *CapacityData16;\r
\r
UfsDevice = FALSE;\r
RetVal = TRUE;\r
Status = gBS->HandleProtocol (\r
ChildHandle,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &DevicePathNode\r
+ (VOID **)&DevicePathNode\r
);\r
//\r
// Device Path protocol must be installed on the device handle.\r
// For now, only support Erase Block Protocol on UFS devices.\r
//\r
if ((DevicePathNode->Type == MESSAGING_DEVICE_PATH) &&\r
- (DevicePathNode->SubType == MSG_UFS_DP)) {\r
+ (DevicePathNode->SubType == MSG_UFS_DP))\r
+ {\r
UfsDevice = TRUE;\r
break;\r
}\r
\r
DevicePathNode = NextDevicePathNode (DevicePathNode);\r
}\r
+\r
if (!UfsDevice) {\r
RetVal = FALSE;\r
goto Done;\r
&SenseDataLength,\r
&HostAdapterStatus,\r
&TargetStatus,\r
- (VOID *) CapacityData16,\r
+ (VOID *)CapacityData16,\r
&DataLength16,\r
FALSE\r
);\r
// Bits TPE and TPRZ should both be set to enable the erase feature on UFS.\r
//\r
if (((CapacityData16->LowestAlignLogic2 & BIT7) == 0) ||\r
- ((CapacityData16->LowestAlignLogic2 & BIT6) == 0)) {\r
+ ((CapacityData16->LowestAlignLogic2 & BIT6) == 0))\r
+ {\r
DEBUG ((\r
DEBUG_VERBOSE,\r
"ScsiDisk EraseBlock: Either TPE or TPRZ is not set: 0x%x.\n",\r
// Check whether the UFS device server implements the UNMAP command.\r
//\r
if ((ScsiDiskDevice->UnmapInfo.MaxLbaCnt == 0) ||\r
- (ScsiDiskDevice->UnmapInfo.MaxBlkDespCnt == 0)) {\r
+ (ScsiDiskDevice->UnmapInfo.MaxBlkDespCnt == 0))\r
+ {\r
DEBUG ((\r
DEBUG_VERBOSE,\r
"ScsiDisk EraseBlock: The device server does not implement the UNMAP command.\n"\r
**/\r
BOOLEAN\r
DetermineInstallStorageSecurity (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN EFI_HANDLE ChildHandle\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
- EFI_STATUS Status;\r
- UFS_DEVICE_PATH *UfsDevice;\r
- BOOLEAN RetVal;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
+ EFI_STATUS Status;\r
+ UFS_DEVICE_PATH *UfsDevice;\r
+ BOOLEAN RetVal;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
\r
- UfsDevice = NULL;\r
- RetVal = TRUE;\r
+ UfsDevice = NULL;\r
+ RetVal = TRUE;\r
\r
Status = gBS->HandleProtocol (\r
ChildHandle,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &DevicePathNode\r
+ (VOID **)&DevicePathNode\r
);\r
//\r
// Device Path protocol must be installed on the device handle.\r
// For now, only support Storage Security Command Protocol on UFS devices.\r
//\r
if ((DevicePathNode->Type == MESSAGING_DEVICE_PATH) &&\r
- (DevicePathNode->SubType == MSG_UFS_DP)) {\r
- UfsDevice = (UFS_DEVICE_PATH *) DevicePathNode;\r
+ (DevicePathNode->SubType == MSG_UFS_DP))\r
+ {\r
+ UfsDevice = (UFS_DEVICE_PATH *)DevicePathNode;\r
break;\r
}\r
\r
DevicePathNode = NextDevicePathNode (DevicePathNode);\r
}\r
+\r
if (UfsDevice == NULL) {\r
RetVal = FALSE;\r
goto Done;\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskInfoInquiry (\r
- IN EFI_DISK_INFO_PROTOCOL *This,\r
- IN OUT VOID *InquiryData,\r
- IN OUT UINT32 *InquiryDataSize\r
+ IN EFI_DISK_INFO_PROTOCOL *This,\r
+ IN OUT VOID *InquiryData,\r
+ IN OUT UINT32 *InquiryDataSize\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_STATUS Status;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
\r
Status = EFI_BUFFER_TOO_SMALL;\r
if (*InquiryDataSize >= sizeof (ScsiDiskDevice->InquiryData)) {\r
Status = EFI_SUCCESS;\r
CopyMem (InquiryData, &ScsiDiskDevice->InquiryData, sizeof (ScsiDiskDevice->InquiryData));\r
}\r
+\r
*InquiryDataSize = sizeof (ScsiDiskDevice->InquiryData);\r
return Status;\r
}\r
\r
-\r
/**\r
Provides identify information for the controller type.\r
\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskInfoIdentify (\r
- IN EFI_DISK_INFO_PROTOCOL *This,\r
- IN OUT VOID *IdentifyData,\r
- IN OUT UINT32 *IdentifyDataSize\r
+ IN EFI_DISK_INFO_PROTOCOL *This,\r
+ IN OUT VOID *IdentifyData,\r
+ IN OUT UINT32 *IdentifyDataSize\r
)\r
{\r
- EFI_STATUS Status;\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
+ EFI_STATUS Status;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
\r
if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid) || CompareGuid (&This->Interface, &gEfiDiskInfoUfsInterfaceGuid)) {\r
//\r
return EFI_NOT_FOUND;\r
}\r
\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
\r
Status = EFI_BUFFER_TOO_SMALL;\r
if (*IdentifyDataSize >= sizeof (ScsiDiskDevice->IdentifyData)) {\r
Status = EFI_SUCCESS;\r
CopyMem (IdentifyData, &ScsiDiskDevice->IdentifyData, sizeof (ScsiDiskDevice->IdentifyData));\r
}\r
+\r
*IdentifyDataSize = sizeof (ScsiDiskDevice->IdentifyData);\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskInfoSenseData (\r
- IN EFI_DISK_INFO_PROTOCOL *This,\r
- IN OUT VOID *SenseData,\r
- IN OUT UINT32 *SenseDataSize,\r
- OUT UINT8 *SenseDataNumber\r
+ IN EFI_DISK_INFO_PROTOCOL *This,\r
+ IN OUT VOID *SenseData,\r
+ IN OUT UINT32 *SenseDataSize,\r
+ OUT UINT8 *SenseDataNumber\r
)\r
{\r
return EFI_NOT_FOUND;\r
}\r
\r
-\r
/**\r
This function is used by the IDE bus driver to get controller information.\r
\r
EFI_STATUS\r
EFIAPI\r
ScsiDiskInfoWhichIde (\r
- IN EFI_DISK_INFO_PROTOCOL *This,\r
- OUT UINT32 *IdeChannel,\r
- OUT UINT32 *IdeDevice\r
+ IN EFI_DISK_INFO_PROTOCOL *This,\r
+ OUT UINT32 *IdeChannel,\r
+ OUT UINT32 *IdeDevice\r
)\r
{\r
- SCSI_DISK_DEV *ScsiDiskDevice;\r
+ SCSI_DISK_DEV *ScsiDiskDevice;\r
\r
if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid) || CompareGuid (&This->Interface, &gEfiDiskInfoUfsInterfaceGuid)) {\r
//\r
return EFI_UNSUPPORTED;\r
}\r
\r
- ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
- *IdeChannel = ScsiDiskDevice->Channel;\r
- *IdeDevice = ScsiDiskDevice->Device;\r
+ ScsiDiskDevice = SCSI_DISK_DEV_FROM_DISKINFO (This);\r
+ *IdeChannel = ScsiDiskDevice->Channel;\r
+ *IdeDevice = ScsiDiskDevice->Device;\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Issues ATA IDENTIFY DEVICE command to identify ATAPI device.\r
\r
**/\r
EFI_STATUS\r
AtapiIdentifyDevice (\r
- IN OUT SCSI_DISK_DEV *ScsiDiskDevice\r
+ IN OUT SCSI_DISK_DEV *ScsiDiskDevice\r
)\r
{\r
- EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
- UINT8 Cdb[6];\r
+ EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT8 Cdb[6];\r
\r
//\r
// Initialize SCSI REQUEST_PACKET and 6-byte Cdb\r
ZeroMem (&CommandPacket, sizeof (CommandPacket));\r
ZeroMem (Cdb, sizeof (Cdb));\r
\r
- Cdb[0] = ATA_CMD_IDENTIFY_DEVICE;\r
- CommandPacket.Timeout = SCSI_DISK_TIMEOUT;\r
- CommandPacket.Cdb = Cdb;\r
- CommandPacket.CdbLength = (UINT8) sizeof (Cdb);\r
- CommandPacket.InDataBuffer = &ScsiDiskDevice->IdentifyData;\r
+ Cdb[0] = ATA_CMD_IDENTIFY_DEVICE;\r
+ CommandPacket.Timeout = SCSI_DISK_TIMEOUT;\r
+ CommandPacket.Cdb = Cdb;\r
+ CommandPacket.CdbLength = (UINT8)sizeof (Cdb);\r
+ CommandPacket.InDataBuffer = &ScsiDiskDevice->IdentifyData;\r
CommandPacket.InTransferLength = sizeof (ScsiDiskDevice->IdentifyData);\r
\r
return ScsiDiskDevice->ScsiIo->ExecuteScsiCommand (ScsiDiskDevice->ScsiIo, &CommandPacket, NULL);\r
}\r
\r
-\r
/**\r
Initialize the installation of DiskInfo protocol.\r
\r
**/\r
VOID\r
InitializeInstallDiskInfo (\r
- IN SCSI_DISK_DEV *ScsiDiskDevice,\r
- IN EFI_HANDLE ChildHandle\r
+ IN SCSI_DISK_DEV *ScsiDiskDevice,\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
EFI_STATUS Status;\r
SATA_DEVICE_PATH *SataDevicePath;\r
UINTN IdentifyRetry;\r
\r
- Status = gBS->HandleProtocol (ChildHandle, &gEfiDevicePathProtocolGuid, (VOID **) &DevicePathNode);\r
+ Status = gBS->HandleProtocol (ChildHandle, &gEfiDevicePathProtocolGuid, (VOID **)&DevicePathNode);\r
//\r
// Device Path protocol must be installed on the device handle.\r
//\r
if ((DevicePathType (DevicePathNode) == HARDWARE_DEVICE_PATH) &&\r
(DevicePathSubType (DevicePathNode) == HW_PCI_DP) &&\r
(DevicePathType (ChildDevicePathNode) == MESSAGING_DEVICE_PATH) &&\r
- ((DevicePathSubType (ChildDevicePathNode) == MSG_ATAPI_DP) ||\r
- (DevicePathSubType (ChildDevicePathNode) == MSG_SATA_DP))) {\r
-\r
+ ((DevicePathSubType (ChildDevicePathNode) == MSG_ATAPI_DP) ||\r
+ (DevicePathSubType (ChildDevicePathNode) == MSG_SATA_DP)))\r
+ {\r
IdentifyRetry = 3;\r
do {\r
//\r
//\r
Status = AtapiIdentifyDevice (ScsiDiskDevice);\r
if (!EFI_ERROR (Status)) {\r
- if (DevicePathSubType(ChildDevicePathNode) == MSG_ATAPI_DP) {\r
+ if (DevicePathSubType (ChildDevicePathNode) == MSG_ATAPI_DP) {\r
//\r
// We find the valid ATAPI device path\r
//\r
- AtapiDevicePath = (ATAPI_DEVICE_PATH *) ChildDevicePathNode;\r
+ AtapiDevicePath = (ATAPI_DEVICE_PATH *)ChildDevicePathNode;\r
ScsiDiskDevice->Channel = AtapiDevicePath->PrimarySecondary;\r
- ScsiDiskDevice->Device = AtapiDevicePath->SlaveMaster;\r
+ ScsiDiskDevice->Device = AtapiDevicePath->SlaveMaster;\r
//\r
// Update the DiskInfo.Interface to IDE interface GUID for the physical ATAPI device.\r
//\r
//\r
// We find the valid SATA device path\r
//\r
- SataDevicePath = (SATA_DEVICE_PATH *) ChildDevicePathNode;\r
+ SataDevicePath = (SATA_DEVICE_PATH *)ChildDevicePathNode;\r
ScsiDiskDevice->Channel = SataDevicePath->HBAPortNumber;\r
- ScsiDiskDevice->Device = SataDevicePath->PortMultiplierPortNumber;\r
+ ScsiDiskDevice->Device = SataDevicePath->PortMultiplierPortNumber;\r
//\r
// Update the DiskInfo.Interface to AHCI interface GUID for the physical AHCI device.\r
//\r
CopyGuid (&ScsiDiskDevice->DiskInfo.Interface, &gEfiDiskInfoAhciInterfaceGuid);\r
}\r
+\r
return;\r
}\r
} while (--IdentifyRetry > 0);\r
} else if ((DevicePathType (ChildDevicePathNode) == MESSAGING_DEVICE_PATH) &&\r
- (DevicePathSubType (ChildDevicePathNode) == MSG_UFS_DP)) {\r
+ (DevicePathSubType (ChildDevicePathNode) == MSG_UFS_DP))\r
+ {\r
CopyGuid (&ScsiDiskDevice->DiskInfo.Interface, &gEfiDiskInfoUfsInterfaceGuid);\r
break;\r
}\r
+\r
DevicePathNode = ChildDevicePathNode;\r
}\r
\r