\r
#include "UsbMass.h"\r
\r
-#define USB_MASS_TRANSPORT_COUNT 3\r
+#define USB_MASS_TRANSPORT_COUNT 3\r
//\r
// Array of USB transport interfaces.\r
//\r
-USB_MASS_TRANSPORT *mUsbMassTransport[USB_MASS_TRANSPORT_COUNT] = {\r
+USB_MASS_TRANSPORT *mUsbMassTransport[USB_MASS_TRANSPORT_COUNT] = {\r
&mUsbCbi0Transport,\r
&mUsbCbi1Transport,\r
&mUsbBotTransport,\r
};\r
\r
-EFI_DRIVER_BINDING_PROTOCOL gUSBMassDriverBinding = {\r
+EFI_DRIVER_BINDING_PROTOCOL gUSBMassDriverBinding = {\r
USBMassDriverBindingSupported,\r
USBMassDriverBindingStart,\r
USBMassDriverBindingStop,\r
EFI_STATUS\r
EFIAPI\r
UsbMassReset (\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
- USB_MASS_DEVICE *UsbMass;\r
- EFI_TPL OldTpl;\r
- EFI_STATUS Status;\r
+ USB_MASS_DEVICE *UsbMass;\r
+ EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
\r
//\r
// Raise TPL to TPL_CALLBACK to serialize all its operations\r
// to protect shared data structures.\r
//\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);\r
Status = UsbMass->Transport->Reset (UsbMass->Context, ExtendedVerification);\r
EFI_STATUS\r
EFIAPI\r
UsbMassReadBlocks (\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
USB_MASS_DEVICE *UsbMass;\r
if (UsbMass->Cdb16Byte) {\r
Status = UsbBootReadWriteBlocks16 (UsbMass, FALSE, Lba, TotalBlock, Buffer);\r
} else {\r
- Status = UsbBootReadWriteBlocks (UsbMass, FALSE, (UINT32) Lba, TotalBlock, Buffer);\r
+ Status = UsbBootReadWriteBlocks (UsbMass, FALSE, (UINT32)Lba, TotalBlock, Buffer);\r
}\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
-\r
/**\r
Writes a specified number of blocks to the device.\r
\r
EFI_STATUS\r
EFIAPI\r
UsbMassWriteBlocks (\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
USB_MASS_DEVICE *UsbMass;\r
if (UsbMass->Cdb16Byte) {\r
Status = UsbBootReadWriteBlocks16 (UsbMass, TRUE, Lba, TotalBlock, Buffer);\r
} else {\r
- Status = UsbBootReadWriteBlocks (UsbMass, TRUE, (UINT32) Lba, TotalBlock, Buffer);\r
+ Status = UsbBootReadWriteBlocks (UsbMass, TRUE, (UINT32)Lba, TotalBlock, Buffer);\r
}\r
\r
if (EFI_ERROR (Status)) {\r
**/\r
EFI_STATUS\r
UsbMassInitMedia (\r
- IN USB_MASS_DEVICE *UsbMass\r
+ IN USB_MASS_DEVICE *UsbMass\r
)\r
{\r
- EFI_BLOCK_IO_MEDIA *Media;\r
- EFI_STATUS Status;\r
+ EFI_BLOCK_IO_MEDIA *Media;\r
+ EFI_STATUS Status;\r
\r
Media = &UsbMass->BlockIoMedia;\r
\r
//\r
Status = EFI_SUCCESS;\r
}\r
+\r
return Status;\r
}\r
\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
*Transport = mUsbMassTransport[Index];\r
\r
if (Interface.InterfaceProtocol == (*Transport)->Protocol) {\r
- Status = (*Transport)->Init (UsbIo, Context);\r
+ Status = (*Transport)->Init (UsbIo, Context);\r
break;\r
}\r
}\r
**/\r
EFI_STATUS\r
UsbMassInitMultiLun (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN USB_MASS_TRANSPORT *Transport,\r
- IN VOID *Context,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN UINT8 MaxLun\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN USB_MASS_TRANSPORT *Transport,\r
+ IN VOID *Context,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN UINT8 MaxLun\r
)\r
{\r
USB_MASS_DEVICE *UsbMass;\r
ReturnStatus = EFI_NOT_FOUND;\r
\r
for (Index = 0; Index <= MaxLun; Index++) {\r
-\r
DEBUG ((DEBUG_INFO, "UsbMassInitMultiLun: Start to initialize No.%d logic unit\n", Index));\r
\r
UsbIo = NULL;\r
UsbMass = AllocateZeroPool (sizeof (USB_MASS_DEVICE));\r
ASSERT (UsbMass != NULL);\r
\r
- UsbMass->Signature = USB_MASS_SIGNATURE;\r
- UsbMass->UsbIo = UsbIo;\r
- UsbMass->BlockIo.Media = &UsbMass->BlockIoMedia;\r
- UsbMass->BlockIo.Reset = UsbMassReset;\r
- UsbMass->BlockIo.ReadBlocks = UsbMassReadBlocks;\r
- UsbMass->BlockIo.WriteBlocks = UsbMassWriteBlocks;\r
- UsbMass->BlockIo.FlushBlocks = UsbMassFlushBlocks;\r
- UsbMass->OpticalStorage = FALSE;\r
- UsbMass->Transport = Transport;\r
- UsbMass->Context = Context;\r
- UsbMass->Lun = Index;\r
+ UsbMass->Signature = USB_MASS_SIGNATURE;\r
+ UsbMass->UsbIo = UsbIo;\r
+ UsbMass->BlockIo.Media = &UsbMass->BlockIoMedia;\r
+ UsbMass->BlockIo.Reset = UsbMassReset;\r
+ UsbMass->BlockIo.ReadBlocks = UsbMassReadBlocks;\r
+ UsbMass->BlockIo.WriteBlocks = UsbMassWriteBlocks;\r
+ UsbMass->BlockIo.FlushBlocks = UsbMassFlushBlocks;\r
+ UsbMass->OpticalStorage = FALSE;\r
+ UsbMass->Transport = Transport;\r
+ UsbMass->Context = Context;\r
+ UsbMass->Lun = Index;\r
\r
//\r
// Initialize the media parameter data for EFI_BLOCK_IO_MEDIA of Block I/O Protocol.\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
UsbMass->Controller,\r
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
FreePool (UsbMass);\r
continue;\r
}\r
+\r
ReturnStatus = EFI_SUCCESS;\r
DEBUG ((DEBUG_INFO, "UsbMassInitMultiLun: Success to initialize No.%d logic unit\n", Index));\r
}\r
**/\r
EFI_STATUS\r
UsbMassInitNonLun (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN USB_MASS_TRANSPORT *Transport,\r
- IN VOID *Context\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN USB_MASS_TRANSPORT *Transport,\r
+ IN VOID *Context\r
)\r
{\r
- USB_MASS_DEVICE *UsbMass;\r
- EFI_USB_IO_PROTOCOL *UsbIo;\r
- EFI_STATUS Status;\r
+ USB_MASS_DEVICE *UsbMass;\r
+ EFI_USB_IO_PROTOCOL *UsbIo;\r
+ EFI_STATUS Status;\r
\r
UsbIo = NULL;\r
UsbMass = AllocateZeroPool (sizeof (USB_MASS_DEVICE));\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
goto ON_ERROR;\r
}\r
\r
- UsbMass->Signature = USB_MASS_SIGNATURE;\r
- UsbMass->Controller = Controller;\r
- UsbMass->UsbIo = UsbIo;\r
- UsbMass->BlockIo.Media = &UsbMass->BlockIoMedia;\r
- UsbMass->BlockIo.Reset = UsbMassReset;\r
- UsbMass->BlockIo.ReadBlocks = UsbMassReadBlocks;\r
- UsbMass->BlockIo.WriteBlocks = UsbMassWriteBlocks;\r
- UsbMass->BlockIo.FlushBlocks = UsbMassFlushBlocks;\r
- UsbMass->OpticalStorage = FALSE;\r
- UsbMass->Transport = Transport;\r
- UsbMass->Context = Context;\r
+ UsbMass->Signature = USB_MASS_SIGNATURE;\r
+ UsbMass->Controller = Controller;\r
+ UsbMass->UsbIo = UsbIo;\r
+ UsbMass->BlockIo.Media = &UsbMass->BlockIoMedia;\r
+ UsbMass->BlockIo.Reset = UsbMassReset;\r
+ UsbMass->BlockIo.ReadBlocks = UsbMassReadBlocks;\r
+ UsbMass->BlockIo.WriteBlocks = UsbMassWriteBlocks;\r
+ UsbMass->BlockIo.FlushBlocks = UsbMassFlushBlocks;\r
+ UsbMass->OpticalStorage = FALSE;\r
+ UsbMass->Transport = Transport;\r
+ UsbMass->Context = Context;\r
\r
//\r
// Initialize the media parameter data for EFI_BLOCK_IO_MEDIA of Block I/O Protocol.\r
if (UsbMass != NULL) {\r
FreePool (UsbMass);\r
}\r
+\r
if (UsbIo != NULL) {\r
gBS->CloseProtocol (\r
Controller,\r
Controller\r
);\r
}\r
+\r
return Status;\r
}\r
\r
-\r
/**\r
Check whether the controller is a supported USB mass storage.\r
\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
{\r
- USB_MASS_TRANSPORT *Transport;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- VOID *Context;\r
- UINT8 MaxLun;\r
- EFI_STATUS Status;\r
- EFI_USB_IO_PROTOCOL *UsbIo;\r
- EFI_TPL OldTpl;\r
+ USB_MASS_TRANSPORT *Transport;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ VOID *Context;\r
+ UINT8 MaxLun;\r
+ EFI_STATUS Status;\r
+ EFI_USB_IO_PROTOCOL *UsbIo;\r
+ EFI_TPL OldTpl;\r
\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: UsbMassInitTransport (%r)\n", Status));\r
goto Exit;\r
}\r
+\r
if (MaxLun == 0) {\r
//\r
// Initialize data for device that does not support multiple LUNSs.\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &DevicePath,\r
+ (VOID **)&DevicePath,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
Status = UsbMassInitMultiLun (This, Controller, Transport, Context, DevicePath, MaxLun);\r
if (EFI_ERROR (Status)) {\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiDevicePathProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiUsbIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: UsbMassInitMultiLun (%r) with Maxlun=%d\n", Status, MaxLun));\r
}\r
}\r
+\r
Exit:\r
gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
-\r
/**\r
Stop controlling the device.\r
\r
EFI_STATUS\r
EFIAPI\r
USBMassDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
)\r
{\r
- EFI_STATUS Status;\r
- USB_MASS_DEVICE *UsbMass;\r
- EFI_USB_IO_PROTOCOL *UsbIo;\r
- EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
- UINTN Index;\r
- BOOLEAN AllChildrenStopped;\r
+ EFI_STATUS Status;\r
+ USB_MASS_DEVICE *UsbMass;\r
+ EFI_USB_IO_PROTOCOL *UsbIo;\r
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+ UINTN Index;\r
+ BOOLEAN AllChildrenStopped;\r
\r
//\r
// This is a bus driver stop function since multi-lun is supported.\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiBlockIoProtocolGuid,\r
- (VOID **) &BlockIo,\r
+ (VOID **)&BlockIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
);\r
\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
//\r
// This is a 2nd type handle(multi-lun root), it needs to close devicepath\r
// and usbio protocol.\r
//\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiDevicePathProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiUsbIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
DEBUG ((DEBUG_INFO, "Success to stop multi-lun root handle\n"));\r
return EFI_SUCCESS;\r
}\r
}\r
\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiUsbIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
\r
UsbMass->Transport->CleanUp (UsbMass->Context);\r
FreePool (UsbMass);\r
AllChildrenStopped = TRUE;\r
\r
for (Index = 0; Index < NumberOfChildren; Index++) {\r
-\r
Status = gBS->OpenProtocol (\r
ChildHandleBuffer[Index],\r
&gEfiBlockIoProtocolGuid,\r
- (VOID **) &BlockIo,\r
+ (VOID **)&BlockIo,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
gBS->OpenProtocol (\r
Controller,\r
&gEfiUsbIoProtocolGuid,\r
- (VOID **) &UsbIo,\r
+ (VOID **)&UsbIo,\r
This->DriverBindingHandle,\r
ChildHandleBuffer[Index],\r
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
if (((Index + 1) == NumberOfChildren) && AllChildrenStopped) {\r
UsbMass->Transport->CleanUp (UsbMass->Context);\r
}\r
+\r
FreePool (UsbMass);\r
}\r
}\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "Success to stop all %d multi-lun children handles\n", (UINT32) NumberOfChildren));\r
+ DEBUG ((DEBUG_INFO, "Success to stop all %d multi-lun children handles\n", (UINT32)NumberOfChildren));\r
return EFI_SUCCESS;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
USBMassStorageEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
EFI_STATUS Status;\r