//\r
// Global function\r
//\r
-EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList = {\r
+EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList = {\r
EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,\r
&gPeiUsbIoPpiGuid,\r
NotifyOnUsbIoPpi\r
};\r
\r
-EFI_PEI_RECOVERY_BLOCK_IO_PPI mRecoveryBlkIoPpi = {\r
+EFI_PEI_RECOVERY_BLOCK_IO_PPI mRecoveryBlkIoPpi = {\r
BotGetNumberOfBlockDevices,\r
BotGetMediaInfo,\r
BotReadBlocks\r
};\r
\r
-EFI_PEI_RECOVERY_BLOCK_IO2_PPI mRecoveryBlkIo2Ppi = {\r
+EFI_PEI_RECOVERY_BLOCK_IO2_PPI mRecoveryBlkIo2Ppi = {\r
EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION,\r
BotGetNumberOfBlockDevices2,\r
BotGetMediaInfo2,\r
BotReadBlocks2\r
};\r
\r
-EFI_PEI_PPI_DESCRIPTOR mPpiList[2] = {\r
+EFI_PEI_PPI_DESCRIPTOR mPpiList[2] = {\r
{\r
EFI_PEI_PPI_DESCRIPTOR_PPI,\r
&gEfiPeiVirtualBlockIoPpiGuid,\r
**/\r
EFI_STATUS\r
PeiBotDetectMedia (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_BOT_DEVICE *PeiBotDev\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_BOT_DEVICE *PeiBotDev\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PeimInitializeUsbBot (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN UsbIoPpiInstance;\r
- EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor;\r
- PEI_USB_IO_PPI *UsbIoPpi;\r
+ EFI_STATUS Status;\r
+ UINTN UsbIoPpiInstance;\r
+ EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor;\r
+ PEI_USB_IO_PPI *UsbIoPpi;\r
\r
//\r
// Shadow this PEIM to run from memory\r
// locate all usb io PPIs\r
//\r
for (UsbIoPpiInstance = 0; UsbIoPpiInstance < PEI_FAT_MAX_USB_IO_PPI; UsbIoPpiInstance++) {\r
-\r
Status = PeiServicesLocatePpi (\r
- &gPeiUsbIoPpiGuid,\r
- UsbIoPpiInstance,\r
- &TempPpiDescriptor,\r
- (VOID **) &UsbIoPpi\r
- );\r
+ &gPeiUsbIoPpiGuid,\r
+ UsbIoPpiInstance,\r
+ &TempPpiDescriptor,\r
+ (VOID **)&UsbIoPpi\r
+ );\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
}\r
+\r
//\r
// Register a notify function\r
//\r
EFI_STATUS\r
EFIAPI\r
NotifyOnUsbIoPpi (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,\r
- IN VOID *InvokePpi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc,\r
+ IN VOID *InvokePpi\r
)\r
{\r
PEI_USB_IO_PPI *UsbIoPpi;\r
\r
- UsbIoPpi = (PEI_USB_IO_PPI *) InvokePpi;\r
+ UsbIoPpi = (PEI_USB_IO_PPI *)InvokePpi;\r
\r
InitUsbBot (PeiServices, UsbIoPpi);\r
\r
**/\r
EFI_STATUS\r
InitUsbBot (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi\r
)\r
{\r
PEI_BOT_DEVICE *PeiBotDevice;\r
// Check its interface\r
//\r
Status = UsbIoPpi->UsbGetInterfaceDescriptor (\r
- PeiServices,\r
- UsbIoPpi,\r
- &InterfaceDesc\r
- );\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ &InterfaceDesc\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
// Check if it is the BOT device we support\r
//\r
if ((InterfaceDesc->InterfaceClass != 0x08) || (InterfaceDesc->InterfaceProtocol != 0x50)) {\r
-\r
return EFI_NOT_FOUND;\r
}\r
\r
MemPages = sizeof (PEI_BOT_DEVICE) / EFI_PAGE_SIZE + 1;\r
- Status = PeiServicesAllocatePages (\r
- EfiBootServicesCode,\r
- MemPages,\r
- &AllocateAddress\r
- );\r
+ Status = PeiServicesAllocatePages (\r
+ EfiBootServicesCode,\r
+ MemPages,\r
+ &AllocateAddress\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- PeiBotDevice = (PEI_BOT_DEVICE *) ((UINTN) AllocateAddress);\r
+ PeiBotDevice = (PEI_BOT_DEVICE *)((UINTN)AllocateAddress);\r
\r
PeiBotDevice->Signature = PEI_BOT_DEVICE_SIGNATURE;\r
PeiBotDevice->UsbIoPpi = UsbIoPpi;\r
- PeiBotDevice->AllocateAddress = (UINTN) AllocateAddress;\r
+ PeiBotDevice->AllocateAddress = (UINTN)AllocateAddress;\r
PeiBotDevice->BotInterface = InterfaceDesc;\r
\r
//\r
// Default value\r
//\r
- PeiBotDevice->Media.DeviceType = UsbMassStorage;\r
- PeiBotDevice->Media.BlockSize = 0x200;\r
- PeiBotDevice->Media2.InterfaceType = MSG_USB_DP;\r
- PeiBotDevice->Media2.BlockSize = 0x200;\r
+ PeiBotDevice->Media.DeviceType = UsbMassStorage;\r
+ PeiBotDevice->Media.BlockSize = 0x200;\r
+ PeiBotDevice->Media2.InterfaceType = MSG_USB_DP;\r
+ PeiBotDevice->Media2.BlockSize = 0x200;\r
PeiBotDevice->Media2.RemovableMedia = FALSE;\r
PeiBotDevice->Media2.ReadOnly = FALSE;\r
\r
//\r
for (Index = 0; Index < 2; Index++) {\r
Status = UsbIoPpi->UsbGetEndpointDescriptor (\r
- PeiServices,\r
- UsbIoPpi,\r
- Index,\r
- &EndpointDesc\r
- );\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ Index,\r
+ &EndpointDesc\r
+ );\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
PeiBotDevice->BlkIoPpiList.Ppi = &PeiBotDevice->BlkIoPpi;\r
PeiBotDevice->BlkIo2PpiList.Ppi = &PeiBotDevice->BlkIo2Ppi;\r
\r
- Status = PeiUsbInquiry (PeiServices, PeiBotDevice);\r
+ Status = PeiUsbInquiry (PeiServices, PeiBotDevice);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
return Status;\r
}\r
\r
- PeiBotDevice->SensePtr = (ATAPI_REQUEST_SENSE_DATA *) ((UINTN) AllocateAddress);\r
+ PeiBotDevice->SensePtr = (ATAPI_REQUEST_SENSE_DATA *)((UINTN)AllocateAddress);\r
\r
Status = PeiServicesInstallPpi (&PeiBotDevice->BlkIoPpiList);\r
\r
EFI_STATUS\r
EFIAPI\r
BotGetNumberOfBlockDevices (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
- OUT UINTN *NumberBlockDevices\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
+ OUT UINTN *NumberBlockDevices\r
)\r
{\r
//\r
EFI_STATUS\r
EFIAPI\r
BotGetMediaInfo (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
- IN UINTN DeviceIndex,\r
- OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo\r
)\r
{\r
PEI_BOT_DEVICE *PeiBotDev;\r
);\r
\r
Status = PeiBotDetectMedia (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
EFI_STATUS\r
EFIAPI\r
BotReadBlocks (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
- IN UINTN DeviceIndex,\r
- IN EFI_PEI_LBA StartLBA,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ IN EFI_PEI_LBA StartLBA,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
PEI_BOT_DEVICE *PeiBotDev;\r
NumberOfBlocks = BufferSize / (PeiBotDev->Media.BlockSize);\r
\r
if (Status == EFI_SUCCESS) {\r
-\r
Status = PeiUsbTestUnitReady (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
if (Status == EFI_SUCCESS) {\r
Status = PeiUsbRead10 (\r
- PeiServices,\r
- PeiBotDev,\r
- Buffer,\r
- StartLBA,\r
- 1\r
- );\r
+ PeiServices,\r
+ PeiBotDev,\r
+ Buffer,\r
+ StartLBA,\r
+ 1\r
+ );\r
}\r
} else {\r
//\r
// update the media info accordingly.\r
//\r
Status = PeiBotDetectMedia (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
if (Status != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
\r
Status = PeiUsbRead10 (\r
- PeiServices,\r
- PeiBotDev,\r
- Buffer,\r
- StartLBA,\r
- NumberOfBlocks\r
- );\r
+ PeiServices,\r
+ PeiBotDev,\r
+ Buffer,\r
+ StartLBA,\r
+ NumberOfBlocks\r
+ );\r
\r
switch (Status) {\r
+ case EFI_SUCCESS:\r
+ return EFI_SUCCESS;\r
\r
- case EFI_SUCCESS:\r
- return EFI_SUCCESS;\r
-\r
- default:\r
- return EFI_DEVICE_ERROR;\r
+ default:\r
+ return EFI_DEVICE_ERROR;\r
}\r
} else {\r
- StartLBA += 1;\r
+ StartLBA += 1;\r
NumberOfBlocks -= 1;\r
- Buffer = (UINT8 *) Buffer + PeiBotDev->Media.BlockSize;\r
+ Buffer = (UINT8 *)Buffer + PeiBotDev->Media.BlockSize;\r
\r
if (NumberOfBlocks == 0) {\r
return EFI_SUCCESS;\r
}\r
\r
Status = PeiUsbRead10 (\r
- PeiServices,\r
- PeiBotDev,\r
- Buffer,\r
- StartLBA,\r
- NumberOfBlocks\r
- );\r
+ PeiServices,\r
+ PeiBotDev,\r
+ Buffer,\r
+ StartLBA,\r
+ NumberOfBlocks\r
+ );\r
switch (Status) {\r
+ case EFI_SUCCESS:\r
+ return EFI_SUCCESS;\r
\r
- case EFI_SUCCESS:\r
- return EFI_SUCCESS;\r
-\r
- default:\r
- return EFI_DEVICE_ERROR;\r
-\r
+ default:\r
+ return EFI_DEVICE_ERROR;\r
}\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
BotGetNumberOfBlockDevices2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- OUT UINTN *NumberBlockDevices\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ OUT UINTN *NumberBlockDevices\r
)\r
{\r
//\r
EFI_STATUS\r
EFIAPI\r
BotGetMediaInfo2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- IN UINTN DeviceIndex,\r
- OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo\r
)\r
{\r
PEI_BOT_DEVICE *PeiBotDev;\r
EFI_STATUS\r
EFIAPI\r
BotReadBlocks2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- IN UINTN DeviceIndex,\r
- IN EFI_PEI_LBA StartLBA,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ IN EFI_PEI_LBA StartLBA,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
PEI_BOT_DEVICE *PeiBotDev;\r
**/\r
EFI_STATUS\r
PeiBotDetectMedia (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_BOT_DEVICE *PeiBotDev\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_BOT_DEVICE *PeiBotDev\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STATUS FloppyStatus;\r
- UINTN SenseCounts;\r
- BOOLEAN NeedReadCapacity;\r
- EFI_PHYSICAL_ADDRESS AllocateAddress;\r
- ATAPI_REQUEST_SENSE_DATA *SensePtr;\r
- UINTN Retry;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS FloppyStatus;\r
+ UINTN SenseCounts;\r
+ BOOLEAN NeedReadCapacity;\r
+ EFI_PHYSICAL_ADDRESS AllocateAddress;\r
+ ATAPI_REQUEST_SENSE_DATA *SensePtr;\r
+ UINTN Retry;\r
\r
//\r
// if there is no media present,or media not changed,\r
// the request sense command will detect faster than read capacity command.\r
// read capacity command can be bypassed, thus improve performance.\r
//\r
- SenseCounts = 0;\r
- NeedReadCapacity = TRUE;\r
+ SenseCounts = 0;\r
+ NeedReadCapacity = TRUE;\r
\r
Status = PeiServicesAllocatePages (\r
EfiBootServicesCode,\r
ZeroMem (SensePtr, EFI_PAGE_SIZE);\r
\r
Status = PeiUsbRequestSense (\r
- PeiServices,\r
- PeiBotDev,\r
- &SenseCounts,\r
- (UINT8 *) SensePtr\r
- );\r
+ PeiServices,\r
+ PeiBotDev,\r
+ &SenseCounts,\r
+ (UINT8 *)SensePtr\r
+ );\r
\r
if (Status == EFI_SUCCESS) {\r
//\r
// No Media\r
//\r
if (IsNoMedia (SensePtr, SenseCounts)) {\r
- NeedReadCapacity = FALSE;\r
- PeiBotDev->Media.MediaPresent = FALSE;\r
- PeiBotDev->Media.LastBlock = 0;\r
+ NeedReadCapacity = FALSE;\r
+ PeiBotDev->Media.MediaPresent = FALSE;\r
+ PeiBotDev->Media.LastBlock = 0;\r
PeiBotDev->Media2.MediaPresent = FALSE;\r
PeiBotDev->Media2.LastBlock = 0;\r
} else {\r
PeiBotDev->Media.MediaPresent = TRUE;\r
PeiBotDev->Media2.MediaPresent = TRUE;\r
}\r
+\r
//\r
// Media Error\r
//\r
//\r
// if media error encountered, make it look like no media present.\r
//\r
- PeiBotDev->Media.MediaPresent = FALSE;\r
- PeiBotDev->Media.LastBlock = 0;\r
+ PeiBotDev->Media.MediaPresent = FALSE;\r
+ PeiBotDev->Media.LastBlock = 0;\r
PeiBotDev->Media2.MediaPresent = FALSE;\r
PeiBotDev->Media2.LastBlock = 0;\r
}\r
-\r
}\r
-\r
}\r
\r
if (NeedReadCapacity) {\r
//\r
for (Retry = 0; Retry < 4; Retry++) {\r
switch (PeiBotDev->DeviceType) {\r
- case USBCDROM:\r
- Status = PeiUsbReadCapacity (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
- break;\r
-\r
- case USBFLOPPY2:\r
- Status = PeiUsbReadFormattedCapacity (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
- if (EFI_ERROR(Status)||\r
- !PeiBotDev->Media.MediaPresent) {\r
- //\r
- // retry the ReadCapacity command\r
- //\r
- PeiBotDev->DeviceType = USBFLOPPY;\r
- Status = EFI_DEVICE_ERROR;\r
- }\r
- break;\r
-\r
- case USBFLOPPY:\r
- Status = PeiUsbReadCapacity (\r
- PeiServices,\r
- PeiBotDev\r
- );\r
- if (EFI_ERROR (Status)) {\r
- //\r
- // retry the ReadFormatCapacity command\r
- //\r
- PeiBotDev->DeviceType = USBFLOPPY2;\r
- }\r
- break;\r
-\r
- default:\r
- return EFI_INVALID_PARAMETER;\r
+ case USBCDROM:\r
+ Status = PeiUsbReadCapacity (\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
+ break;\r
+\r
+ case USBFLOPPY2:\r
+ Status = PeiUsbReadFormattedCapacity (\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
+ if (EFI_ERROR (Status) ||\r
+ !PeiBotDev->Media.MediaPresent)\r
+ {\r
+ //\r
+ // retry the ReadCapacity command\r
+ //\r
+ PeiBotDev->DeviceType = USBFLOPPY;\r
+ Status = EFI_DEVICE_ERROR;\r
+ }\r
+\r
+ break;\r
+\r
+ case USBFLOPPY:\r
+ Status = PeiUsbReadCapacity (\r
+ PeiServices,\r
+ PeiBotDev\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // retry the ReadFormatCapacity command\r
+ //\r
+ PeiBotDev->DeviceType = USBFLOPPY2;\r
+ }\r
+\r
+ break;\r
+\r
+ default:\r
+ return EFI_INVALID_PARAMETER;\r
}\r
\r
SenseCounts = 0;\r
}\r
\r
FloppyStatus = PeiUsbRequestSense (\r
- PeiServices,\r
- PeiBotDev,\r
- &SenseCounts,\r
- (UINT8 *) SensePtr\r
- );\r
+ PeiServices,\r
+ PeiBotDev,\r
+ &SenseCounts,\r
+ (UINT8 *)SensePtr\r
+ );\r
\r
//\r
// If Request Sense data failed,retry.\r
if (EFI_ERROR (FloppyStatus)) {\r
continue;\r
}\r
+\r
//\r
// No Media\r
//\r
if (IsNoMedia (SensePtr, SenseCounts)) {\r
- PeiBotDev->Media.MediaPresent = FALSE;\r
- PeiBotDev->Media.LastBlock = 0;\r
+ PeiBotDev->Media.MediaPresent = FALSE;\r
+ PeiBotDev->Media.LastBlock = 0;\r
PeiBotDev->Media2.MediaPresent = FALSE;\r
PeiBotDev->Media2.LastBlock = 0;\r
break;\r
//\r
// if media error encountered, make it look like no media present.\r
//\r
- PeiBotDev->Media.MediaPresent = FALSE;\r
- PeiBotDev->Media.LastBlock = 0;\r
+ PeiBotDev->Media.MediaPresent = FALSE;\r
+ PeiBotDev->Media.LastBlock = 0;\r
PeiBotDev->Media2.MediaPresent = FALSE;\r
PeiBotDev->Media2.LastBlock = 0;\r
break;\r
}\r
}\r
+\r
//\r
// ENDFOR\r
//\r