EFI_STATUS\r
EFIAPI\r
AtapiPeimEntry (\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
PEI_ATA_CONTROLLER_PPI *AtaControllerPpi;\r
}\r
\r
Status = PeiServicesLocatePpi (\r
- &gPeiAtaControllerPpiGuid,\r
- 0,\r
- NULL,\r
- (VOID **) &AtaControllerPpi\r
- );\r
+ &gPeiAtaControllerPpiGuid,\r
+ 0,\r
+ NULL,\r
+ (VOID **)&AtaControllerPpi\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
AtapiBlkIoDev = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (*AtapiBlkIoDev)));\r
//\r
AtapiEnumerateDevices (AtapiBlkIoDev);\r
\r
- AtapiBlkIoDev->AtapiBlkIo.GetNumberOfBlockDevices = AtapiGetNumberOfBlockDevices;\r
- AtapiBlkIoDev->AtapiBlkIo.GetBlockDeviceMediaInfo = AtapiGetBlockDeviceMediaInfo;\r
- AtapiBlkIoDev->AtapiBlkIo.ReadBlocks = AtapiReadBlocks;\r
+ AtapiBlkIoDev->AtapiBlkIo.GetNumberOfBlockDevices = AtapiGetNumberOfBlockDevices;\r
+ AtapiBlkIoDev->AtapiBlkIo.GetBlockDeviceMediaInfo = AtapiGetBlockDeviceMediaInfo;\r
+ AtapiBlkIoDev->AtapiBlkIo.ReadBlocks = AtapiReadBlocks;\r
AtapiBlkIoDev->AtapiBlkIo2.Revision = EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION;\r
AtapiBlkIoDev->AtapiBlkIo2.GetNumberOfBlockDevices = AtapiGetNumberOfBlockDevices2;\r
AtapiBlkIoDev->AtapiBlkIo2.GetBlockDeviceMediaInfo = AtapiGetBlockDeviceMediaInfo2;\r
AtapiBlkIoDev->AtapiBlkIo2.ReadBlocks = AtapiReadBlocks2;\r
\r
- AtapiBlkIoDev->PpiDescriptor.Flags = EFI_PEI_PPI_DESCRIPTOR_PPI;\r
- AtapiBlkIoDev->PpiDescriptor.Guid = &gEfiPeiVirtualBlockIoPpiGuid;\r
- AtapiBlkIoDev->PpiDescriptor.Ppi = &AtapiBlkIoDev->AtapiBlkIo;\r
+ AtapiBlkIoDev->PpiDescriptor.Flags = EFI_PEI_PPI_DESCRIPTOR_PPI;\r
+ AtapiBlkIoDev->PpiDescriptor.Guid = &gEfiPeiVirtualBlockIoPpiGuid;\r
+ AtapiBlkIoDev->PpiDescriptor.Ppi = &AtapiBlkIoDev->AtapiBlkIo;\r
\r
- AtapiBlkIoDev->PpiDescriptor2.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
- AtapiBlkIoDev->PpiDescriptor2.Guid = &gEfiPeiVirtualBlockIo2PpiGuid;\r
- AtapiBlkIoDev->PpiDescriptor2.Ppi = &AtapiBlkIoDev->AtapiBlkIo2;\r
+ AtapiBlkIoDev->PpiDescriptor2.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
+ AtapiBlkIoDev->PpiDescriptor2.Guid = &gEfiPeiVirtualBlockIo2PpiGuid;\r
+ AtapiBlkIoDev->PpiDescriptor2.Ppi = &AtapiBlkIoDev->AtapiBlkIo2;\r
\r
DEBUG ((DEBUG_INFO, "Atatpi Device Count is %d\n", AtapiBlkIoDev->DeviceCount));\r
if (AtapiBlkIoDev->DeviceCount != 0) {\r
EFI_STATUS\r
EFIAPI\r
AtapiGetNumberOfBlockDevices (\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
ATAPI_BLK_IO_DEV *AtapiBlkIoDev;\r
\r
AtapiBlkIoDev = NULL;\r
\r
- AtapiBlkIoDev = PEI_RECOVERY_ATAPI_FROM_BLKIO_THIS (This);\r
+ AtapiBlkIoDev = PEI_RECOVERY_ATAPI_FROM_BLKIO_THIS (This);\r
\r
*NumberBlockDevices = AtapiBlkIoDev->DeviceCount;\r
\r
EFI_STATUS\r
EFIAPI\r
AtapiGetBlockDeviceMediaInfo (\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
UINTN DeviceCount;\r
\r
AtapiBlkIoDev = NULL;\r
\r
- if (This == NULL || MediaInfo == NULL) {\r
+ if ((This == NULL) || (MediaInfo == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
AtapiBlkIoDev = PEI_RECOVERY_ATAPI_FROM_BLKIO_THIS (This);\r
\r
- DeviceCount = AtapiBlkIoDev->DeviceCount;\r
+ DeviceCount = AtapiBlkIoDev->DeviceCount;\r
\r
//\r
// DeviceIndex is a value from 1 to NumberBlockDevices.\r
//\r
// Get media info from AtapiBlkIoDev\r
//\r
- CopyMem (MediaInfo, &AtapiBlkIoDev->DeviceInfo[Index].MediaInfo, sizeof(EFI_PEI_BLOCK_IO_MEDIA));\r
+ CopyMem (MediaInfo, &AtapiBlkIoDev->DeviceInfo[Index].MediaInfo, sizeof (EFI_PEI_BLOCK_IO_MEDIA));\r
\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
AtapiReadBlocks (\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
-\r
EFI_PEI_BLOCK_IO_MEDIA MediaInfo;\r
EFI_STATUS Status;\r
UINTN NumberOfBlocks;\r
}\r
\r
Status = AtapiGetBlockDeviceMediaInfo (\r
- PeiServices,\r
- This,\r
- DeviceIndex,\r
- &MediaInfo\r
- );\r
+ PeiServices,\r
+ This,\r
+ DeviceIndex,\r
+ &MediaInfo\r
+ );\r
if (Status != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
\r
Status = ReadSectors (\r
- AtapiBlkIoDev,\r
- AtapiBlkIoDev->DeviceInfo[DeviceIndex - 1].DevicePosition,\r
- Buffer,\r
- StartLBA,\r
- NumberOfBlocks,\r
- BlockSize\r
- );\r
+ AtapiBlkIoDev,\r
+ AtapiBlkIoDev->DeviceInfo[DeviceIndex - 1].DevicePosition,\r
+ Buffer,\r
+ StartLBA,\r
+ NumberOfBlocks,\r
+ BlockSize\r
+ );\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
}\r
EFI_STATUS\r
EFIAPI\r
AtapiGetNumberOfBlockDevices2 (\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
EFI_STATUS Status;\r
EFI_STATUS\r
EFIAPI\r
AtapiGetBlockDeviceMediaInfo2 (\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
- ATAPI_BLK_IO_DEV *AtapiBlkIoDev;\r
- EFI_STATUS Status;\r
- EFI_PEI_BLOCK_IO_MEDIA Media;\r
+ ATAPI_BLK_IO_DEV *AtapiBlkIoDev;\r
+ EFI_STATUS Status;\r
+ EFI_PEI_BLOCK_IO_MEDIA Media;\r
\r
AtapiBlkIoDev = NULL;\r
\r
- if (This == NULL || MediaInfo == NULL) {\r
+ if ((This == NULL) || (MediaInfo == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
// Get media info from AtapiBlkIoDev\r
//\r
- CopyMem (MediaInfo, &AtapiBlkIoDev->DeviceInfo[DeviceIndex - 1].MediaInfo2, sizeof(EFI_PEI_BLOCK_IO2_MEDIA));\r
+ CopyMem (MediaInfo, &AtapiBlkIoDev->DeviceInfo[DeviceIndex - 1].MediaInfo2, sizeof (EFI_PEI_BLOCK_IO2_MEDIA));\r
\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
AtapiReadBlocks2 (\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
- EFI_STATUS Status;\r
- ATAPI_BLK_IO_DEV *AtapiBlkIoDev;\r
+ EFI_STATUS Status;\r
+ ATAPI_BLK_IO_DEV *AtapiBlkIoDev;\r
\r
AtapiBlkIoDev = NULL;\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Enumerate Atapi devices.\r
\r
IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev\r
)\r
{\r
- UINT8 Index1;\r
- UINT8 Index2;\r
- UINTN DevicePosition;\r
- EFI_PEI_BLOCK_IO_MEDIA MediaInfo;\r
- EFI_PEI_BLOCK_IO2_MEDIA MediaInfo2;\r
- EFI_STATUS Status;\r
- UINTN DeviceCount;\r
- UINT16 CommandBlockBaseAddr;\r
- UINT16 ControlBlockBaseAddr;\r
- UINT32 IdeEnabledNumber;\r
- IDE_REGS_BASE_ADDR IdeRegsBaseAddr[MAX_IDE_CHANNELS];\r
-\r
- DeviceCount = 0;\r
+ UINT8 Index1;\r
+ UINT8 Index2;\r
+ UINTN DevicePosition;\r
+ EFI_PEI_BLOCK_IO_MEDIA MediaInfo;\r
+ EFI_PEI_BLOCK_IO2_MEDIA MediaInfo2;\r
+ EFI_STATUS Status;\r
+ UINTN DeviceCount;\r
+ UINT16 CommandBlockBaseAddr;\r
+ UINT16 ControlBlockBaseAddr;\r
+ UINT32 IdeEnabledNumber;\r
+ IDE_REGS_BASE_ADDR IdeRegsBaseAddr[MAX_IDE_CHANNELS];\r
+\r
+ DeviceCount = 0;\r
DevicePosition = 0;\r
\r
//\r
// Enable Sata and IDE controller.\r
//\r
AtapiBlkIoDev->AtaControllerPpi->EnableAtaChannel (\r
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer(),\r
- AtapiBlkIoDev->AtaControllerPpi,\r
- PEI_ICH_IDE_PRIMARY | PEI_ICH_IDE_SECONDARY\r
- );\r
+ (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (),\r
+ AtapiBlkIoDev->AtaControllerPpi,\r
+ PEI_ICH_IDE_PRIMARY | PEI_ICH_IDE_SECONDARY\r
+ );\r
\r
//\r
// Allow SATA Devices to spin-up. This is needed if\r
// Get four channels (primary or secondary Pata, Sata Channel) Command and Control Regs Base address.\r
//\r
IdeEnabledNumber = AtapiBlkIoDev->AtaControllerPpi->GetIdeRegsBaseAddr (\r
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer(),\r
- AtapiBlkIoDev->AtaControllerPpi,\r
- IdeRegsBaseAddr\r
- );\r
+ (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (),\r
+ AtapiBlkIoDev->AtaControllerPpi,\r
+ IdeRegsBaseAddr\r
+ );\r
\r
//\r
// Using Command and Control Regs Base Address to fill other registers.\r
//\r
- for (Index1 = 0; Index1 < IdeEnabledNumber; Index1 ++) {\r
- CommandBlockBaseAddr = IdeRegsBaseAddr[Index1].CommandBlockBaseAddr;\r
+ for (Index1 = 0; Index1 < IdeEnabledNumber; Index1++) {\r
+ CommandBlockBaseAddr = IdeRegsBaseAddr[Index1].CommandBlockBaseAddr;\r
AtapiBlkIoDev->IdeIoPortReg[Index1].Data = CommandBlockBaseAddr;\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].Reg1.Feature = (UINT16) (CommandBlockBaseAddr + 0x1);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].SectorCount = (UINT16) (CommandBlockBaseAddr + 0x2);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].SectorNumber = (UINT16) (CommandBlockBaseAddr + 0x3);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].CylinderLsb = (UINT16) (CommandBlockBaseAddr + 0x4);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].CylinderMsb = (UINT16) (CommandBlockBaseAddr + 0x5);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].Head = (UINT16) (CommandBlockBaseAddr + 0x6);\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].Reg.Command = (UINT16) (CommandBlockBaseAddr + 0x7);\r
-\r
- ControlBlockBaseAddr = IdeRegsBaseAddr[Index1].ControlBlockBaseAddr;\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].Reg1.Feature = (UINT16)(CommandBlockBaseAddr + 0x1);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].SectorCount = (UINT16)(CommandBlockBaseAddr + 0x2);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].SectorNumber = (UINT16)(CommandBlockBaseAddr + 0x3);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].CylinderLsb = (UINT16)(CommandBlockBaseAddr + 0x4);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].CylinderMsb = (UINT16)(CommandBlockBaseAddr + 0x5);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].Head = (UINT16)(CommandBlockBaseAddr + 0x6);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].Reg.Command = (UINT16)(CommandBlockBaseAddr + 0x7);\r
+\r
+ ControlBlockBaseAddr = IdeRegsBaseAddr[Index1].ControlBlockBaseAddr;\r
AtapiBlkIoDev->IdeIoPortReg[Index1].Alt.DeviceControl = ControlBlockBaseAddr;\r
- AtapiBlkIoDev->IdeIoPortReg[Index1].DriveAddress = (UINT16) (ControlBlockBaseAddr + 0x1);\r
+ AtapiBlkIoDev->IdeIoPortReg[Index1].DriveAddress = (UINT16)(ControlBlockBaseAddr + 0x1);\r
\r
//\r
// Scan IDE bus for ATAPI devices IDE or Sata device\r
//\r
// Retrieve Media Info\r
//\r
- Status = DetectMedia (AtapiBlkIoDev, DevicePosition, &MediaInfo, &MediaInfo2);\r
+ Status = DetectMedia (AtapiBlkIoDev, DevicePosition, &MediaInfo, &MediaInfo2);\r
CopyMem (&(AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo), &MediaInfo, sizeof (MediaInfo));\r
CopyMem (&(AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo2), &MediaInfo2, sizeof (MediaInfo2));\r
\r
DEBUG ((DEBUG_INFO, "Atatpi BlockSize is 0x%x\n", MediaInfo.BlockSize));\r
\r
if (EFI_ERROR (Status)) {\r
- AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo.MediaPresent = FALSE;\r
- AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo.LastBlock = 0;\r
+ AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo.MediaPresent = FALSE;\r
+ AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo.LastBlock = 0;\r
AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo2.MediaPresent = FALSE;\r
AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo2.LastBlock = 0;\r
}\r
+\r
DeviceCount += 1;\r
}\r
}\r
**/\r
BOOLEAN\r
DiscoverAtapiDevice (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
- OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
+ OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
)\r
{\r
EFI_STATUS Status;\r
if (!DetectIDEController (AtapiBlkIoDev, DevicePosition)) {\r
return FALSE;\r
}\r
+\r
//\r
// test if it is an ATAPI device (only supported device)\r
//\r
if (ATAPIIdentify (AtapiBlkIoDev, DevicePosition) == EFI_SUCCESS) {\r
-\r
Status = Inquiry (AtapiBlkIoDev, DevicePosition, MediaInfo, MediaInfo2);\r
if (!EFI_ERROR (Status)) {\r
return TRUE;\r
**/\r
EFI_STATUS\r
CheckPowerMode (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- IN UINT8 AtaCommand\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ IN UINT8 AtaCommand\r
)\r
{\r
UINT8 Channel;\r
UINT8 ErrorValue;\r
UINT8 SectorCountValue;\r
\r
- Channel = (UINT8) (DevicePosition / 2);\r
- Device = (UINT8) (DevicePosition % 2);\r
+ Channel = (UINT8)(DevicePosition / 2);\r
+ Device = (UINT8)(DevicePosition % 2);\r
\r
ASSERT (Channel < MAX_IDE_CHANNELS);\r
\r
//\r
// select device\r
//\r
- IoWrite8 (HeadRegister, (UINT8) ((Device << 4) | 0xe0));\r
+ IoWrite8 (HeadRegister, (UINT8)((Device << 4) | 0xe0));\r
\r
//\r
// refresh the SectorCount register\r
//\r
// select device\r
//\r
- IoWrite8 (HeadRegister, (UINT8) ((Device << 4) | 0xe0));\r
+ IoWrite8 (HeadRegister, (UINT8)((Device << 4) | 0xe0));\r
\r
Status = DRDYReady (AtapiBlkIoDev, &(AtapiBlkIoDev->IdeIoPortReg[Channel]), 100);\r
\r
//\r
// select device\r
//\r
- IoWrite8 (HeadRegister, (UINT8) ((Device << 4) | 0xe0));\r
+ IoWrite8 (HeadRegister, (UINT8)((Device << 4) | 0xe0));\r
//\r
// send 'check power' commandd via Command Register\r
//\r
// Write SectorCount 0x55 but return valid state value. Maybe no device\r
// exists or some slow kind of ATAPI device exists.\r
//\r
- IoWrite8 (HeadRegister, (UINT8) ((Device << 4) | 0xe0));\r
+ IoWrite8 (HeadRegister, (UINT8)((Device << 4) | 0xe0));\r
\r
//\r
// write 0x55 and 0xaa to SectorCounter register,\r
if (SectorCountValue != 0x55) {\r
return EFI_NOT_FOUND;\r
}\r
+\r
//\r
// Send a "ATAPI TEST UNIT READY" command ... slow but accurate\r
//\r
**/\r
BOOLEAN\r
DetectIDEController (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition\r
)\r
{\r
UINT8 Channel;\r
EFI_STATUS Status;\r
UINT8 AtaCommand;\r
\r
- Channel = (UINT8) (DevicePosition / 2);\r
+ Channel = (UINT8)(DevicePosition / 2);\r
\r
ASSERT (Channel < MAX_IDE_CHANNELS);\r
//\r
if (EFI_ERROR (Status)) {\r
return FALSE;\r
}\r
+\r
//\r
// Send 'check power' command for IDE device\r
//\r
- AtaCommand = 0xE5;\r
- Status = CheckPowerMode (AtapiBlkIoDev, DevicePosition, AtaCommand);\r
+ AtaCommand = 0xE5;\r
+ Status = CheckPowerMode (AtapiBlkIoDev, DevicePosition, AtaCommand);\r
if ((Status == EFI_ABORTED) || (Status == EFI_SUCCESS)) {\r
return TRUE;\r
}\r
UINT16 StatusRegister;\r
UINT8 StatusValue;\r
\r
- StatusValue = 0;\r
+ StatusValue = 0;\r
\r
- StatusRegister = IdeIoRegisters->Reg.Status;\r
+ StatusRegister = IdeIoRegisters->Reg.Status;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
StatusValue = IoRead8 (StatusRegister);\r
if ((StatusValue & ATA_STSREG_BSY) == 0x00) {\r
break;\r
}\r
+\r
MicroSecondDelay (250);\r
\r
Delay--;\r
-\r
} while (Delay != 0);\r
\r
if (Delay == 0) {\r
UINT8 StatusValue;\r
UINT8 ErrValue;\r
\r
- StatusValue = 0;\r
+ StatusValue = 0;\r
\r
- StatusRegister = IdeIoRegisters->Reg.Status;\r
+ StatusRegister = IdeIoRegisters->Reg.Status;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
StatusValue = IoRead8 (StatusRegister);\r
//\r
break;\r
}\r
\r
- if ((StatusValue & (ATA_STSREG_ERR | ATA_STSREG_BSY)) == ATA_STSREG_ERR) {\r
- ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
- if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
- return EFI_ABORTED;\r
+ if ((StatusValue & (ATA_STSREG_ERR | ATA_STSREG_BSY)) == ATA_STSREG_ERR) {\r
+ ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
+ if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
+ return EFI_ABORTED;\r
+ }\r
}\r
- }\r
\r
MicroSecondDelay (250);\r
\r
Delay--;\r
-\r
} while (Delay != 0);\r
\r
if (Delay == 0) {\r
UINT8 StatusValue;\r
UINT8 ErrValue;\r
\r
- StatusValue = 0;\r
+ StatusValue = 0;\r
\r
- StatusRegister = IdeIoRegisters->Reg.Status;\r
+ StatusRegister = IdeIoRegisters->Reg.Status;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
-\r
StatusValue = IoRead8 (StatusRegister);\r
\r
//\r
break;\r
}\r
\r
- if ((StatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
- ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
- if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
- return EFI_ABORTED;\r
+ if ((StatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
+ ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
+ if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
+ return EFI_ABORTED;\r
+ }\r
}\r
- }\r
\r
MicroSecondDelay (250);\r
\r
UINT8 AltStatusValue;\r
UINT8 ErrValue;\r
\r
- AltStatusValue = 0;\r
+ AltStatusValue = 0;\r
\r
AltStatusRegister = IdeIoRegisters->Alt.AltStatus;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
-\r
AltStatusValue = IoRead8 (AltStatusRegister);\r
\r
//\r
break;\r
}\r
\r
- if ((AltStatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
- ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
- if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
- return EFI_ABORTED;\r
+ if ((AltStatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
+ ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
+ if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
+ return EFI_ABORTED;\r
+ }\r
}\r
- }\r
\r
MicroSecondDelay (250);\r
\r
UINT8 StatusValue;\r
UINT8 ErrValue;\r
\r
- StatusValue = 0;\r
- ErrValue = 0;\r
+ StatusValue = 0;\r
+ ErrValue = 0;\r
\r
- StatusRegister = IdeIoRegisters->Reg.Status;\r
+ StatusRegister = IdeIoRegisters->Reg.Status;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
//\r
// read Status Register will clear interrupt\r
}\r
\r
if ((StatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
-\r
ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
return EFI_ABORTED;\r
}\r
}\r
+\r
MicroSecondDelay (250);\r
\r
Delay--;\r
UINT8 AltStatusValue;\r
UINT8 ErrValue;\r
\r
- AltStatusValue = 0;\r
+ AltStatusValue = 0;\r
\r
AltStatusRegister = IdeIoRegisters->Alt.AltStatus;\r
\r
- Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
+ Delay = ((TimeoutInMilliSeconds * STALL_1_MILLI_SECOND) / 250) + 1;\r
do {\r
-\r
AltStatusValue = IoRead8 (AltStatusRegister);\r
\r
//\r
}\r
\r
if ((AltStatusValue & (ATA_STSREG_BSY | ATA_STSREG_ERR)) == ATA_STSREG_ERR) {\r
-\r
ErrValue = IoRead8 (IdeIoRegisters->Reg1.Error);\r
if ((ErrValue & ATA_ERRREG_ABRT) == ATA_ERRREG_ABRT) {\r
return EFI_ABORTED;\r
}\r
}\r
+\r
MicroSecondDelay (250);\r
\r
Delay--;\r
**/\r
EFI_STATUS\r
CheckErrorStatus (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINT16 StatusReg\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINT16 StatusReg\r
)\r
{\r
- UINT8 StatusValue;\r
+ UINT8 StatusValue;\r
\r
StatusValue = IoRead8 (StatusReg);\r
\r
if ((StatusValue & (ATA_STSREG_ERR | ATA_STSREG_DWF | ATA_STSREG_CORR)) == 0) {\r
-\r
return EFI_SUCCESS;\r
}\r
\r
return EFI_DEVICE_ERROR;\r
-\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
ATAPIIdentify (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition\r
)\r
{\r
ATAPI_IDENTIFY_DATA AtapiIdentifyData;\r
UINT16 CylinderLsbReg;\r
UINT16 CylinderMsbReg;\r
\r
- UINT32 WordCount;\r
- UINT32 Increment;\r
- UINT32 Index;\r
- UINT32 ByteCount;\r
- UINT16 *Buffer16;\r
+ UINT32 WordCount;\r
+ UINT32 Increment;\r
+ UINT32 Index;\r
+ UINT32 ByteCount;\r
+ UINT16 *Buffer16;\r
\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- ByteCount = sizeof (AtapiIdentifyData);\r
- Buffer16 = (UINT16 *) &AtapiIdentifyData;\r
+ ByteCount = sizeof (AtapiIdentifyData);\r
+ Buffer16 = (UINT16 *)&AtapiIdentifyData;\r
\r
- Channel = (UINT8) (DevicePosition / 2);\r
- Device = (UINT8) (DevicePosition % 2);\r
+ Channel = (UINT8)(DevicePosition / 2);\r
+ Device = (UINT8)(DevicePosition % 2);\r
\r
ASSERT (Channel < MAX_IDE_CHANNELS);\r
\r
AtapiBlkIoDev,\r
&(AtapiBlkIoDev->IdeIoPortReg[Channel]),\r
ATATIMEOUT\r
- ) != EFI_SUCCESS) {\r
+ ) != EFI_SUCCESS)\r
+ {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// select device via Head/Device register.\r
// Before write Head/Device register, BSY and DRQ must be 0.\r
if (DRQClear2 (AtapiBlkIoDev, &(AtapiBlkIoDev->IdeIoPortReg[Channel]), ATATIMEOUT) != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// e0:1110,0000-- bit7 and bit5 are reserved bits.\r
// bit6 set means LBA mode\r
//\r
- IoWrite8 (HeadReg, (UINT8) ((Device << 4) | 0xe0));\r
+ IoWrite8 (HeadReg, (UINT8)((Device << 4) | 0xe0));\r
\r
//\r
// set all the command parameters\r
AtapiBlkIoDev,\r
&(AtapiBlkIoDev->IdeIoPortReg[Channel]),\r
ATATIMEOUT\r
- ) != EFI_SUCCESS) {\r
-\r
+ ) != EFI_SUCCESS)\r
+ {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
}\r
\r
if (CheckErrorStatus (AtapiBlkIoDev, StatusReg) != EFI_SUCCESS) {\r
-\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Get the byte count for one series of read\r
//\r
if ((WordCount + Increment) > ByteCount / 2) {\r
Increment = ByteCount / 2 - WordCount;\r
}\r
+\r
//\r
// perform a series of read without check DRQ ready\r
//\r
}\r
\r
WordCount += Increment;\r
-\r
}\r
+\r
//\r
// while\r
//\r
AtapiBlkIoDev,\r
&(AtapiBlkIoDev->IdeIoPortReg[Channel]),\r
ATATIMEOUT\r
- ) != EFI_SUCCESS) {\r
+ ) != EFI_SUCCESS)\r
+ {\r
return CheckErrorStatus (AtapiBlkIoDev, StatusReg);\r
}\r
\r
return EFI_SUCCESS;\r
-\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
TestUnitReady (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition\r
)\r
{\r
ATAPI_PACKET_COMMAND Packet;\r
//\r
// required transfer data in word unit.\r
//\r
- UINT32 RequiredWordCount;\r
+ UINT32 RequiredWordCount;\r
\r
//\r
// actual transfer data in word unit.\r
//\r
- UINT32 ActualWordCount;\r
+ UINT32 ActualWordCount;\r
\r
- Channel = (UINT8) (DevicePosition / 2);\r
- Device = (UINT8) (DevicePosition % 2);\r
+ Channel = (UINT8)(DevicePosition / 2);\r
+ Device = (UINT8)(DevicePosition % 2);\r
\r
ASSERT (Channel < MAX_IDE_CHANNELS);\r
\r
- StatusReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Status;\r
- HeadReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Head;\r
- CommandReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Command;\r
- FeatureReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg1.Feature;\r
- CylinderLsbReg = AtapiBlkIoDev->IdeIoPortReg[Channel].CylinderLsb;\r
- CylinderMsbReg = AtapiBlkIoDev->IdeIoPortReg[Channel].CylinderMsb;\r
- DeviceControlReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Alt.DeviceControl;\r
- DataReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Data;\r
+ StatusReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Status;\r
+ HeadReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Head;\r
+ CommandReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Command;\r
+ FeatureReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg1.Feature;\r
+ CylinderLsbReg = AtapiBlkIoDev->IdeIoPortReg[Channel].CylinderLsb;\r
+ CylinderMsbReg = AtapiBlkIoDev->IdeIoPortReg[Channel].CylinderMsb;\r
+ DeviceControlReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Alt.DeviceControl;\r
+ DataReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Data;\r
\r
//\r
// Set all the command parameters by fill related registers.\r
AtapiBlkIoDev,\r
&(AtapiBlkIoDev->IdeIoPortReg[Channel]),\r
ATATIMEOUT\r
- ) != EFI_SUCCESS) {\r
+ ) != EFI_SUCCESS)\r
+ {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Select device via Device/Head Register.\r
// DEFAULT_CMD: 0xa0 (1010,0000)\r
//\r
- IoWrite8 (HeadReg, (UINT8) ((Device << 4) | ATA_DEFAULT_CMD));\r
+ IoWrite8 (HeadReg, (UINT8)((Device << 4) | ATA_DEFAULT_CMD));\r
\r
//\r
// No OVL; No DMA\r
// set the transfersize to MAX_ATAPI_BYTE_COUNT to let the device\r
// determine how many data should be transfered.\r
//\r
- IoWrite8 (CylinderLsbReg, (UINT8) (ATAPI_MAX_BYTE_COUNT & 0x00ff));\r
- IoWrite8 (CylinderMsbReg, (UINT8) (ATAPI_MAX_BYTE_COUNT >> 8));\r
+ IoWrite8 (CylinderLsbReg, (UINT8)(ATAPI_MAX_BYTE_COUNT & 0x00ff));\r
+ IoWrite8 (CylinderMsbReg, (UINT8)(ATAPI_MAX_BYTE_COUNT >> 8));\r
\r
//\r
// DEFAULT_CTL:0x0a (0000,1010)\r
if (Status != EFI_SUCCESS) {\r
return Status;\r
}\r
+\r
//\r
// Send out command packet\r
//\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- if (Buffer == NULL || ByteCount == 0) {\r
+ if ((Buffer == NULL) || (ByteCount == 0)) {\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// call PioReadWriteData() function to get\r
// requested transfer data form device.\r
//\r
ActualWordCount = 0;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
while ((Status == EFI_SUCCESS) && (ActualWordCount < RequiredWordCount)) {\r
//\r
// before each data transfer stream, the host should poll DRQ bit ready,\r
AtapiBlkIoDev,\r
&(AtapiBlkIoDev->IdeIoPortReg[Channel]),\r
TimeoutInMilliSeconds\r
- ) != EFI_SUCCESS) {\r
+ ) != EFI_SUCCESS)\r
+ {\r
return CheckErrorStatus (AtapiBlkIoDev, StatusReg);\r
}\r
+\r
//\r
// read Status Register will clear interrupt\r
//\r
//\r
// get current data transfer size from Cylinder Registers.\r
//\r
- WordCount = IoRead8 (CylinderMsbReg) << 8;\r
- WordCount = WordCount | IoRead8 (CylinderLsbReg);\r
- WordCount = WordCount & 0xffff;\r
+ WordCount = IoRead8 (CylinderMsbReg) << 8;\r
+ WordCount = WordCount | IoRead8 (CylinderLsbReg);\r
+ WordCount = WordCount & 0xffff;\r
WordCount /= 2;\r
\r
//\r
// perform a series data In/Out.\r
//\r
for (Index = 0; (Index < WordCount) && (ActualWordCount < RequiredWordCount); Index++, ActualWordCount++) {\r
-\r
*PtrBuffer = IoRead16 (DataReg);\r
\r
PtrBuffer++;\r
-\r
}\r
\r
- if (((ATAPI_REQUEST_SENSE_CMD *) Packet)->opcode == ATA_CMD_REQUEST_SENSE && ActualWordCount >= 4) {\r
+ if ((((ATAPI_REQUEST_SENSE_CMD *)Packet)->opcode == ATA_CMD_REQUEST_SENSE) && (ActualWordCount >= 4)) {\r
RequiredWordCount = MIN (\r
RequiredWordCount,\r
- (UINT32) (4 + (((ATAPI_REQUEST_SENSE_DATA *) Buffer)->addnl_sense_length / 2))\r
+ (UINT32)(4 + (((ATAPI_REQUEST_SENSE_DATA *)Buffer)->addnl_sense_length / 2))\r
);\r
}\r
-\r
}\r
+\r
//\r
// After data transfer is completed, normally, DRQ bit should clear.\r
//\r
if (Status != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// read status register to check whether error happens.\r
//\r
**/\r
EFI_STATUS\r
Inquiry (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
- OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
+ OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
)\r
{\r
- ATAPI_PACKET_COMMAND Packet;\r
- EFI_STATUS Status;\r
- ATAPI_INQUIRY_DATA Idata;\r
+ ATAPI_PACKET_COMMAND Packet;\r
+ EFI_STATUS Status;\r
+ ATAPI_INQUIRY_DATA Idata;\r
\r
//\r
// prepare command packet for the ATAPI Inquiry Packet Command.\r
ZeroMem (&Packet, sizeof (ATAPI_PACKET_COMMAND));\r
ZeroMem (&Idata, sizeof (ATAPI_INQUIRY_DATA));\r
\r
- Packet.Inquiry.opcode = ATA_CMD_INQUIRY;\r
- Packet.Inquiry.page_code = 0;\r
- Packet.Inquiry.allocation_length = (UINT8) sizeof (ATAPI_INQUIRY_DATA);\r
+ Packet.Inquiry.opcode = ATA_CMD_INQUIRY;\r
+ Packet.Inquiry.page_code = 0;\r
+ Packet.Inquiry.allocation_length = (UINT8)sizeof (ATAPI_INQUIRY_DATA);\r
\r
//\r
// Send command packet and get requested Inquiry data.\r
//\r
Status = AtapiPacketCommandIn (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- &Packet,\r
- (UINT16 *) (&Idata),\r
- sizeof (ATAPI_INQUIRY_DATA),\r
- ATAPITIMEOUT\r
- //50\r
- );\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ &Packet,\r
+ (UINT16 *)(&Idata),\r
+ sizeof (ATAPI_INQUIRY_DATA),\r
+ ATAPITIMEOUT\r
+ // 50\r
+ );\r
\r
if (Status != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Identify device type via INQUIRY data.\r
//\r
switch (Idata.peripheral_type & 0x1f) {\r
- case 0x00:\r
- //\r
- // Magnetic Disk\r
- //\r
- MediaInfo->DeviceType = IdeLS120;\r
- MediaInfo->MediaPresent = FALSE;\r
- MediaInfo->LastBlock = 0;\r
- MediaInfo->BlockSize = 0x200;\r
- MediaInfo2->InterfaceType = MSG_ATAPI_DP;\r
- MediaInfo2->RemovableMedia = TRUE;\r
- MediaInfo2->MediaPresent = FALSE;\r
- MediaInfo2->ReadOnly = FALSE;\r
- MediaInfo2->BlockSize = 0x200;\r
- MediaInfo2->LastBlock = 0;\r
- break;\r
-\r
- case 0x05:\r
- //\r
- // CD-ROM\r
- //\r
- MediaInfo->DeviceType = IdeCDROM;\r
- MediaInfo->MediaPresent = FALSE;\r
- MediaInfo->LastBlock = 0;\r
- MediaInfo->BlockSize = 0x800;\r
- MediaInfo2->InterfaceType = MSG_ATAPI_DP;\r
- MediaInfo2->RemovableMedia = TRUE;\r
- MediaInfo2->MediaPresent = FALSE;\r
- MediaInfo2->ReadOnly = TRUE;\r
- MediaInfo2->BlockSize = 0x200;\r
- MediaInfo2->LastBlock = 0;\r
- break;\r
-\r
- default:\r
- return EFI_UNSUPPORTED;\r
+ case 0x00:\r
+ //\r
+ // Magnetic Disk\r
+ //\r
+ MediaInfo->DeviceType = IdeLS120;\r
+ MediaInfo->MediaPresent = FALSE;\r
+ MediaInfo->LastBlock = 0;\r
+ MediaInfo->BlockSize = 0x200;\r
+ MediaInfo2->InterfaceType = MSG_ATAPI_DP;\r
+ MediaInfo2->RemovableMedia = TRUE;\r
+ MediaInfo2->MediaPresent = FALSE;\r
+ MediaInfo2->ReadOnly = FALSE;\r
+ MediaInfo2->BlockSize = 0x200;\r
+ MediaInfo2->LastBlock = 0;\r
+ break;\r
+\r
+ case 0x05:\r
+ //\r
+ // CD-ROM\r
+ //\r
+ MediaInfo->DeviceType = IdeCDROM;\r
+ MediaInfo->MediaPresent = FALSE;\r
+ MediaInfo->LastBlock = 0;\r
+ MediaInfo->BlockSize = 0x800;\r
+ MediaInfo2->InterfaceType = MSG_ATAPI_DP;\r
+ MediaInfo2->RemovableMedia = TRUE;\r
+ MediaInfo2->MediaPresent = FALSE;\r
+ MediaInfo2->ReadOnly = TRUE;\r
+ MediaInfo2->BlockSize = 0x200;\r
+ MediaInfo2->LastBlock = 0;\r
+ break;\r
+\r
+ default:\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
return EFI_SUCCESS;\r
**/\r
EFI_STATUS\r
DetectMedia (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- IN OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
- IN OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ IN OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
+ IN OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
)\r
{\r
-\r
UINTN Index;\r
UINTN RetryNum;\r
UINTN MaxRetryNum;\r
// the device will produce corresponding Sense data.\r
//\r
for (Index = 0; Index < 2; Index++) {\r
-\r
Status = TestUnitReady (AtapiBlkIoDev, DevicePosition);\r
if (Status != EFI_SUCCESS) {\r
Status = ResetDevice (AtapiBlkIoDev, DevicePosition, FALSE);\r
if (Status != EFI_SUCCESS) {\r
ResetDevice (AtapiBlkIoDev, DevicePosition, TRUE);\r
}\r
-\r
} else {\r
break;\r
}\r
}\r
\r
- SenseCounts = MAX_SENSE_KEY_COUNT;\r
- Status = EFI_SUCCESS;\r
- NeedReadCapacity = TRUE;\r
+ SenseCounts = MAX_SENSE_KEY_COUNT;\r
+ Status = EFI_SUCCESS;\r
+ NeedReadCapacity = TRUE;\r
\r
for (Index = 0; Index < 5; Index++) {\r
SenseCounts = MAX_SENSE_KEY_COUNT;\r
- Status = RequestSense (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- SenseBuffers,\r
- &SenseCounts\r
- );\r
+ Status = RequestSense (\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ SenseBuffers,\r
+ &SenseCounts\r
+ );\r
DEBUG ((DEBUG_INFO, "Atapi Request Sense Count is %d\n", SenseCounts));\r
if (IsDeviceStateUnclear (SenseBuffers, SenseCounts) || IsNoMedia (SenseBuffers, SenseCounts)) {\r
//\r
}\r
\r
if (Status == EFI_SUCCESS) {\r
-\r
if (IsNoMedia (SenseBuffers, SenseCounts)) {\r
-\r
- NeedReadCapacity = FALSE;\r
- MediaInfo->MediaPresent = FALSE;\r
- MediaInfo->LastBlock = 0;\r
+ NeedReadCapacity = FALSE;\r
+ MediaInfo->MediaPresent = FALSE;\r
+ MediaInfo->LastBlock = 0;\r
MediaInfo2->MediaPresent = FALSE;\r
MediaInfo2->LastBlock = 0;\r
}\r
// initial retry once\r
//\r
for (Index = 0; (Index < RetryNum) && (Index < MaxRetryNum); Index++) {\r
-\r
Status = ReadCapacity (AtapiBlkIoDev, DevicePosition, MediaInfo, MediaInfo2);\r
MicroSecondDelay (200000);\r
SenseCounts = MAX_SENSE_KEY_COUNT;\r
\r
if (Status != EFI_SUCCESS) {\r
-\r
Status = RequestSense (AtapiBlkIoDev, DevicePosition, SenseBuffers, &SenseCounts);\r
//\r
// If Request Sense data failed, reset the device and retry.\r
//\r
if (Status != EFI_SUCCESS) {\r
-\r
Status = ResetDevice (AtapiBlkIoDev, DevicePosition, FALSE);\r
//\r
// if ATAPI soft reset fail,\r
//\r
continue;\r
}\r
+\r
//\r
// No Media\r
//\r
if (IsNoMedia (SenseBuffers, SenseCounts)) {\r
-\r
- MediaInfo->MediaPresent = FALSE;\r
- MediaInfo->LastBlock = 0;\r
+ MediaInfo->MediaPresent = FALSE;\r
+ MediaInfo->LastBlock = 0;\r
MediaInfo2->MediaPresent = FALSE;\r
MediaInfo2->LastBlock = 0;\r
break;\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// if read capacity fail not for above reasons, retry once more\r
//\r
RetryNum++;\r
-\r
}\r
-\r
}\r
-\r
}\r
\r
return EFI_SUCCESS;\r
UINT8 Channel;\r
UINT8 Device;\r
\r
- Channel = (UINT8) (DevicePosition / 2);\r
- Device = (UINT8) (DevicePosition % 2);\r
+ Channel = (UINT8)(DevicePosition / 2);\r
+ Device = (UINT8)(DevicePosition % 2);\r
\r
ASSERT (Channel < MAX_IDE_CHANNELS);\r
\r
- DeviceControlReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Alt.DeviceControl;\r
- CommandReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Command;\r
- HeadReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Head;\r
+ DeviceControlReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Alt.DeviceControl;\r
+ CommandReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Reg.Command;\r
+ HeadReg = AtapiBlkIoDev->IdeIoPortReg[Channel].Head;\r
\r
if (Extensive) {\r
-\r
- DevControl = 0;\r
+ DevControl = 0;\r
DevControl |= ATA_CTLREG_SRST;\r
//\r
// set SRST bit to initiate soft reset\r
if (WaitForBSYClear (AtapiBlkIoDev, &(AtapiBlkIoDev->IdeIoPortReg[Channel]), 31000) == EFI_TIMEOUT) {\r
return EFI_DEVICE_ERROR;\r
}\r
-\r
} else {\r
//\r
// for ATAPI device, no need to wait DRDY ready after device selecting.\r
// bit7 and bit5 are both set to 1 for backward compatibility\r
//\r
- DeviceSelect = (UINT8) (((BIT7 | BIT5) | (Device << 4)));\r
+ DeviceSelect = (UINT8)(((BIT7 | BIT5) | (Device << 4)));\r
IoWrite8 (HeadReg, DeviceSelect);\r
\r
Command = ATA_CMD_SOFT_RESET;\r
if (WaitForBSYClear (AtapiBlkIoDev, &(AtapiBlkIoDev->IdeIoPortReg[Channel]), 31000) != EFI_SUCCESS) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// stall 5 seconds to make the device status stable\r
//\r
}\r
\r
return EFI_SUCCESS;\r
-\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
RequestSense (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- IN ATAPI_REQUEST_SENSE_DATA *SenseBuffers,\r
- IN OUT UINT8 *SenseCounts\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ IN ATAPI_REQUEST_SENSE_DATA *SenseBuffers,\r
+ IN OUT UINT8 *SenseCounts\r
)\r
{\r
- EFI_STATUS Status;\r
- ATAPI_REQUEST_SENSE_DATA *Sense;\r
- UINT16 *Ptr;\r
- BOOLEAN SenseReq;\r
- ATAPI_PACKET_COMMAND Packet;\r
+ EFI_STATUS Status;\r
+ ATAPI_REQUEST_SENSE_DATA *Sense;\r
+ UINT16 *Ptr;\r
+ BOOLEAN SenseReq;\r
+ ATAPI_PACKET_COMMAND Packet;\r
\r
ZeroMem (SenseBuffers, sizeof (ATAPI_REQUEST_SENSE_DATA) * (*SenseCounts));\r
//\r
//\r
ZeroMem (&Packet, sizeof (ATAPI_PACKET_COMMAND));\r
Packet.RequestSence.opcode = ATA_CMD_REQUEST_SENSE;\r
- Packet.RequestSence.allocation_length = (UINT8) sizeof (ATAPI_REQUEST_SENSE_DATA);\r
+ Packet.RequestSence.allocation_length = (UINT8)sizeof (ATAPI_REQUEST_SENSE_DATA);\r
\r
- Ptr = (UINT16 *) SenseBuffers;\r
+ Ptr = (UINT16 *)SenseBuffers;\r
//\r
// initialize pointer\r
//\r
// request sense data from device continiously until no sense data exists in the device.\r
//\r
for (SenseReq = TRUE; SenseReq;) {\r
-\r
- Sense = (ATAPI_REQUEST_SENSE_DATA *) Ptr;\r
+ Sense = (ATAPI_REQUEST_SENSE_DATA *)Ptr;\r
\r
//\r
// send out Request Sense Packet Command and get one Sense data form device\r
//\r
Status = AtapiPacketCommandIn (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- &Packet,\r
- Ptr,\r
- sizeof (ATAPI_REQUEST_SENSE_DATA),\r
- ATAPITIMEOUT\r
- );\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ &Packet,\r
+ Ptr,\r
+ sizeof (ATAPI_REQUEST_SENSE_DATA),\r
+ ATAPITIMEOUT\r
+ );\r
//\r
// failed to get Sense data\r
//\r
if (*SenseCounts > MAX_SENSE_KEY_COUNT) {\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// We limit MAX sense data count to 20 in order to avoid dead loop. Some\r
// incompatible ATAPI devices don't retrive NO_SENSE when there is no media.\r
// supposed to be large enough for any ATAPI device.\r
//\r
if ((Sense->sense_key != ATA_SK_NO_SENSE) && ((*SenseCounts) < 20)) {\r
-\r
Ptr += sizeof (ATAPI_REQUEST_SENSE_DATA) / 2;\r
//\r
// Ptr is word based pointer\r
**/\r
EFI_STATUS\r
ReadCapacity (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- IN OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
- IN OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ IN OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo,\r
+ IN OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo2\r
)\r
{\r
- EFI_STATUS Status;\r
- ATAPI_PACKET_COMMAND Packet;\r
+ EFI_STATUS Status;\r
+ ATAPI_PACKET_COMMAND Packet;\r
\r
//\r
// used for capacity data returned from ATAPI device\r
//\r
- ATAPI_READ_CAPACITY_DATA Data;\r
- ATAPI_READ_FORMAT_CAPACITY_DATA FormatData;\r
+ ATAPI_READ_CAPACITY_DATA Data;\r
+ ATAPI_READ_FORMAT_CAPACITY_DATA FormatData;\r
\r
ZeroMem (&Data, sizeof (Data));\r
ZeroMem (&FormatData, sizeof (FormatData));\r
\r
if (MediaInfo->DeviceType == IdeCDROM) {\r
-\r
ZeroMem (&Packet, sizeof (ATAPI_PACKET_COMMAND));\r
Packet.Inquiry.opcode = ATA_CMD_READ_CAPACITY;\r
- Status = AtapiPacketCommandIn (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- &Packet,\r
- (UINT16 *) (&Data),\r
- sizeof (ATAPI_READ_CAPACITY_DATA),\r
- ATAPITIMEOUT\r
- );\r
-\r
+ Status = AtapiPacketCommandIn (\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ &Packet,\r
+ (UINT16 *)(&Data),\r
+ sizeof (ATAPI_READ_CAPACITY_DATA),\r
+ ATAPITIMEOUT\r
+ );\r
} else {\r
//\r
// DeviceType == IdeLS120\r
//\r
ZeroMem (&Packet, sizeof (ATAPI_PACKET_COMMAND));\r
- Packet.ReadFormatCapacity.opcode = ATA_CMD_READ_FORMAT_CAPACITY;\r
- Packet.ReadFormatCapacity.allocation_length_lo = 12;\r
- Status = AtapiPacketCommandIn (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- &Packet,\r
- (UINT16 *) (&FormatData),\r
- sizeof (ATAPI_READ_FORMAT_CAPACITY_DATA),\r
- ATAPITIMEOUT*10\r
- );\r
+ Packet.ReadFormatCapacity.opcode = ATA_CMD_READ_FORMAT_CAPACITY;\r
+ Packet.ReadFormatCapacity.allocation_length_lo = 12;\r
+ Status = AtapiPacketCommandIn (\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ &Packet,\r
+ (UINT16 *)(&FormatData),\r
+ sizeof (ATAPI_READ_FORMAT_CAPACITY_DATA),\r
+ ATAPITIMEOUT*10\r
+ );\r
}\r
\r
if (Status == EFI_SUCCESS) {\r
-\r
if (MediaInfo->DeviceType == IdeCDROM) {\r
-\r
- MediaInfo->LastBlock = ((UINT32) Data.LastLba3 << 24) | (Data.LastLba2 << 16) | (Data.LastLba1 << 8) | Data.LastLba0;\r
+ MediaInfo->LastBlock = ((UINT32)Data.LastLba3 << 24) | (Data.LastLba2 << 16) | (Data.LastLba1 << 8) | Data.LastLba0;\r
MediaInfo->MediaPresent = TRUE;\r
//\r
// Because the user data portion in the sector of the Data CD supported\r
// is always 800h\r
//\r
- MediaInfo->BlockSize = 0x800;\r
+ MediaInfo->BlockSize = 0x800;\r
\r
MediaInfo2->LastBlock = MediaInfo->LastBlock;\r
MediaInfo2->MediaPresent = MediaInfo->MediaPresent;\r
}\r
\r
if (MediaInfo->DeviceType == IdeLS120) {\r
-\r
if (FormatData.DesCode == 3) {\r
- MediaInfo->MediaPresent = FALSE;\r
- MediaInfo->LastBlock = 0;\r
+ MediaInfo->MediaPresent = FALSE;\r
+ MediaInfo->LastBlock = 0;\r
MediaInfo2->MediaPresent = FALSE;\r
MediaInfo2->LastBlock = 0;\r
} else {\r
- MediaInfo->LastBlock = ((UINT32) FormatData.LastLba3 << 24) |\r
- (FormatData.LastLba2 << 16) |\r
- (FormatData.LastLba1 << 8) |\r
- FormatData.LastLba0;\r
+ MediaInfo->LastBlock = ((UINT32)FormatData.LastLba3 << 24) |\r
+ (FormatData.LastLba2 << 16) |\r
+ (FormatData.LastLba1 << 8) |\r
+ FormatData.LastLba0;\r
MediaInfo->LastBlock--;\r
\r
MediaInfo->MediaPresent = TRUE;\r
\r
- MediaInfo->BlockSize = 0x200;\r
+ MediaInfo->BlockSize = 0x200;\r
\r
MediaInfo2->LastBlock = MediaInfo->LastBlock;\r
MediaInfo2->MediaPresent = MediaInfo->MediaPresent;\r
MediaInfo2->BlockSize = (UINT32)MediaInfo->BlockSize;\r
-\r
}\r
}\r
\r
return EFI_SUCCESS;\r
-\r
} else {\r
return EFI_DEVICE_ERROR;\r
}\r
**/\r
EFI_STATUS\r
ReadSectors (\r
- IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
- IN UINTN DevicePosition,\r
- IN VOID *Buffer,\r
- IN EFI_PEI_LBA StartLba,\r
- IN UINTN NumberOfBlocks,\r
- IN UINTN BlockSize\r
+ IN ATAPI_BLK_IO_DEV *AtapiBlkIoDev,\r
+ IN UINTN DevicePosition,\r
+ IN VOID *Buffer,\r
+ IN EFI_PEI_LBA StartLba,\r
+ IN UINTN NumberOfBlocks,\r
+ IN UINTN BlockSize\r
)\r
{\r
-\r
ATAPI_PACKET_COMMAND Packet;\r
ATAPI_READ10_CMD *Read10Packet;\r
EFI_STATUS Status;\r
// fill command packet for Read(10) command\r
//\r
ZeroMem (&Packet, sizeof (ATAPI_PACKET_COMMAND));\r
- Read10Packet = &Packet.Read10;\r
- Lba32 = (UINT32) StartLba;\r
- PtrBuffer = Buffer;\r
+ Read10Packet = &Packet.Read10;\r
+ Lba32 = (UINT32)StartLba;\r
+ PtrBuffer = Buffer;\r
\r
//\r
// limit the data bytes that can be transfered by one Read(10) Command\r
//\r
- MaxBlock = (UINT16) (0x10000 / BlockSize);\r
+ MaxBlock = (UINT16)(0x10000 / BlockSize);\r
//\r
// (64k bytes)\r
//\r
BlocksRemaining = NumberOfBlocks;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
while (BlocksRemaining > 0) {\r
-\r
if (BlocksRemaining <= MaxBlock) {\r
- SectorCount = (UINT16) BlocksRemaining;\r
+ SectorCount = (UINT16)BlocksRemaining;\r
} else {\r
SectorCount = MaxBlock;\r
}\r
+\r
//\r
// fill the Packet data sturcture\r
//\r
// Lba0 ~ Lba3 specify the start logical block address of the data transfer.\r
// Lba0 is MSB, Lba3 is LSB\r
//\r
- Read10Packet->Lba3 = (UINT8) (Lba32 & 0xff);\r
- Read10Packet->Lba2 = (UINT8) (Lba32 >> 8);\r
- Read10Packet->Lba1 = (UINT8) (Lba32 >> 16);\r
- Read10Packet->Lba0 = (UINT8) (Lba32 >> 24);\r
+ Read10Packet->Lba3 = (UINT8)(Lba32 & 0xff);\r
+ Read10Packet->Lba2 = (UINT8)(Lba32 >> 8);\r
+ Read10Packet->Lba1 = (UINT8)(Lba32 >> 16);\r
+ Read10Packet->Lba0 = (UINT8)(Lba32 >> 24);\r
\r
//\r
// TranLen0 ~ TranLen1 specify the transfer length in block unit.\r
// TranLen0 is MSB, TranLen is LSB\r
//\r
- Read10Packet->TranLen1 = (UINT8) (SectorCount & 0xff);\r
- Read10Packet->TranLen0 = (UINT8) (SectorCount >> 8);\r
+ Read10Packet->TranLen1 = (UINT8)(SectorCount & 0xff);\r
+ Read10Packet->TranLen0 = (UINT8)(SectorCount >> 8);\r
\r
- ByteCount = (UINT32) (SectorCount * BlockSize);\r
+ ByteCount = (UINT32)(SectorCount * BlockSize);\r
\r
Status = AtapiPacketCommandIn (\r
- AtapiBlkIoDev,\r
- DevicePosition,\r
- &Packet,\r
- (UINT16 *) PtrBuffer,\r
- ByteCount,\r
- ATAPILONGTIMEOUT\r
- );\r
+ AtapiBlkIoDev,\r
+ DevicePosition,\r
+ &Packet,\r
+ (UINT16 *)PtrBuffer,\r
+ ByteCount,\r
+ ATAPILONGTIMEOUT\r
+ );\r
if (Status != EFI_SUCCESS) {\r
return Status;\r
}\r
\r
- Lba32 += SectorCount;\r
- PtrBuffer = (UINT8 *) PtrBuffer + SectorCount * BlockSize;\r
+ Lba32 += SectorCount;\r
+ PtrBuffer = (UINT8 *)PtrBuffer + SectorCount * BlockSize;\r
BlocksRemaining -= SectorCount;\r
}\r
\r
\r
IsNoMedia = FALSE;\r
\r
- SensePtr = SenseData;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
if ((SensePtr->sense_key == ATA_SK_NOT_READY) && (SensePtr->addnl_sense_code == ATA_ASC_NO_MEDIA)) {\r
IsNoMedia = TRUE;\r
}\r
**/\r
BOOLEAN\r
IsDeviceStateUnclear (\r
- IN ATAPI_REQUEST_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts\r
+ IN ATAPI_REQUEST_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts\r
)\r
{\r
ATAPI_REQUEST_SENSE_DATA *SensePtr;\r
UINTN Index;\r
BOOLEAN Unclear;\r
\r
- Unclear = FALSE;\r
+ Unclear = FALSE;\r
\r
- SensePtr = SenseData;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
if (SensePtr->sense_key == 0x06) {\r
//\r
// Sense key is 0x06 means the device is just be reset or media just\r
UINTN Index;\r
BOOLEAN IsError;\r
\r
- IsError = FALSE;\r
+ IsError = FALSE;\r
\r
- SensePtr = SenseData;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
switch (SensePtr->sense_key) {\r
+ case ATA_SK_MEDIUM_ERROR:\r
+ switch (SensePtr->addnl_sense_code) {\r
+ case ATA_ASC_MEDIA_ERR1:\r
+ //\r
+ // fall through\r
+ //\r
+ case ATA_ASC_MEDIA_ERR2:\r
+ //\r
+ // fall through\r
+ //\r
+ case ATA_ASC_MEDIA_ERR3:\r
+ //\r
+ // fall through\r
+ //\r
+ case ATA_ASC_MEDIA_ERR4:\r
+ IsError = TRUE;\r
+ break;\r
\r
- case ATA_SK_MEDIUM_ERROR:\r
- switch (SensePtr->addnl_sense_code) {\r
- case ATA_ASC_MEDIA_ERR1:\r
- //\r
- // fall through\r
- //\r
- case ATA_ASC_MEDIA_ERR2:\r
- //\r
- // fall through\r
- //\r
- case ATA_ASC_MEDIA_ERR3:\r
- //\r
- // fall through\r
- //\r
- case ATA_ASC_MEDIA_ERR4:\r
- IsError = TRUE;\r
- break;\r
+ default:\r
+ break;\r
+ }\r
\r
- default:\r
break;\r
- }\r
\r
- break;\r
+ case ATA_SK_NOT_READY:\r
+ switch (SensePtr->addnl_sense_code) {\r
+ case ATA_ASC_MEDIA_UPSIDE_DOWN:\r
+ IsError = TRUE;\r
+ break;\r
+\r
+ default:\r
+ break;\r
+ }\r
\r
- case ATA_SK_NOT_READY:\r
- switch (SensePtr->addnl_sense_code) {\r
- case ATA_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
**/\r
BOOLEAN\r
IsDriveReady (\r
- IN ATAPI_REQUEST_SENSE_DATA *SenseData,\r
- IN UINTN SenseCounts,\r
- OUT BOOLEAN *NeedRetry\r
+ IN ATAPI_REQUEST_SENSE_DATA *SenseData,\r
+ IN UINTN SenseCounts,\r
+ OUT BOOLEAN *NeedRetry\r
)\r
{\r
ATAPI_REQUEST_SENSE_DATA *SensePtr;\r
UINTN Index;\r
BOOLEAN IsReady;\r
\r
- IsReady = TRUE;\r
- *NeedRetry = FALSE;\r
+ IsReady = TRUE;\r
+ *NeedRetry = FALSE;\r
\r
- SensePtr = SenseData;\r
+ SensePtr = SenseData;\r
\r
for (Index = 0; Index < SenseCounts; Index++) {\r
-\r
switch (SensePtr->sense_key) {\r
-\r
- case ATA_SK_NOT_READY:\r
- switch (SensePtr->addnl_sense_code) {\r
- case ATA_ASC_NOT_READY:\r
- switch (SensePtr->addnl_sense_code_qualifier) {\r
- case ATA_ASCQ_IN_PROGRESS:\r
- IsReady = FALSE;\r
- *NeedRetry = TRUE;\r
- break;\r
-\r
- default:\r
- IsReady = FALSE;\r
- *NeedRetry = FALSE;\r
- break;\r
+ case ATA_SK_NOT_READY:\r
+ switch (SensePtr->addnl_sense_code) {\r
+ case ATA_ASC_NOT_READY:\r
+ switch (SensePtr->addnl_sense_code_qualifier) {\r
+ case ATA_ASCQ_IN_PROGRESS:\r
+ IsReady = FALSE;\r
+ *NeedRetry = TRUE;\r
+ break;\r
+\r
+ default:\r
+ IsReady = FALSE;\r
+ *NeedRetry = FALSE;\r
+ break;\r
+ }\r
+\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