//\r
// Time out value for ATA pass through protocol\r
//\r
-#define ATA_TIMEOUT EFI_TIMER_PERIOD_SECONDS (3)\r
+#define ATA_TIMEOUT EFI_TIMER_PERIOD_SECONDS (3)\r
\r
//\r
// Maximum number of times to retry ATA command\r
//\r
-#define MAX_RETRY_TIMES 3\r
+#define MAX_RETRY_TIMES 3\r
\r
//\r
// The maximum total sectors count in 28 bit addressing mode\r
//\r
-#define MAX_28BIT_ADDRESSING_CAPACITY 0xfffffff\r
+#define MAX_28BIT_ADDRESSING_CAPACITY 0xfffffff\r
\r
//\r
// The maximum ATA transaction sector count in 28 bit addressing mode.\r
//\r
-#define MAX_28BIT_TRANSFER_BLOCK_NUM 0x100\r
+#define MAX_28BIT_TRANSFER_BLOCK_NUM 0x100\r
\r
//\r
// The maximum ATA transaction sector count in 48 bit addressing mode.\r
//\r
-//#define MAX_48BIT_TRANSFER_BLOCK_NUM 0x10000\r
+// #define MAX_48BIT_TRANSFER_BLOCK_NUM 0x10000\r
\r
//\r
// BugBug: if the TransferLength is equal with 0x10000 (the 48bit max length),\r
// seems not ready. Change the Maximum Sector Numbers to 0xFFFF to work round\r
// this issue.\r
//\r
-#define MAX_48BIT_TRANSFER_BLOCK_NUM 0xFFFF\r
+#define MAX_48BIT_TRANSFER_BLOCK_NUM 0xFFFF\r
\r
//\r
// The maximum model name in ATA identify data\r
//\r
-#define MAX_MODEL_NAME_LEN 40\r
+#define MAX_MODEL_NAME_LEN 40\r
\r
-#define ATA_TASK_SIGNATURE SIGNATURE_32 ('A', 'T', 'S', 'K')\r
-#define ATA_DEVICE_SIGNATURE SIGNATURE_32 ('A', 'B', 'I', 'D')\r
-#define ATA_SUB_TASK_SIGNATURE SIGNATURE_32 ('A', 'S', 'T', 'S')\r
-#define IS_ALIGNED(addr, size) (((UINTN) (addr) & (size - 1)) == 0)\r
+#define ATA_TASK_SIGNATURE SIGNATURE_32 ('A', 'T', 'S', 'K')\r
+#define ATA_DEVICE_SIGNATURE SIGNATURE_32 ('A', 'B', 'I', 'D')\r
+#define ATA_SUB_TASK_SIGNATURE SIGNATURE_32 ('A', 'S', 'T', 'S')\r
+#define IS_ALIGNED(addr, size) (((UINTN) (addr) & (size - 1)) == 0)\r
\r
//\r
// ATA bus data structure for ATA controller\r
//\r
typedef struct {\r
- EFI_ATA_PASS_THRU_PROTOCOL *AtaPassThru;\r
- EFI_HANDLE Controller;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
- EFI_HANDLE DriverBindingHandle;\r
+ EFI_ATA_PASS_THRU_PROTOCOL *AtaPassThru;\r
+ EFI_HANDLE Controller;\r
+ EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
+ EFI_HANDLE DriverBindingHandle;\r
} ATA_BUS_DRIVER_DATA;\r
\r
//\r
// ATA device data structure for each child device\r
//\r
typedef struct {\r
- UINT32 Signature;\r
+ UINT32 Signature;\r
\r
- EFI_HANDLE Handle;\r
- EFI_BLOCK_IO_PROTOCOL BlockIo;\r
- EFI_BLOCK_IO2_PROTOCOL BlockIo2;\r
- EFI_BLOCK_IO_MEDIA BlockMedia;\r
- EFI_DISK_INFO_PROTOCOL DiskInfo;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_STORAGE_SECURITY_COMMAND_PROTOCOL StorageSecurity;\r
+ EFI_HANDLE Handle;\r
+ EFI_BLOCK_IO_PROTOCOL BlockIo;\r
+ EFI_BLOCK_IO2_PROTOCOL BlockIo2;\r
+ EFI_BLOCK_IO_MEDIA BlockMedia;\r
+ EFI_DISK_INFO_PROTOCOL DiskInfo;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_STORAGE_SECURITY_COMMAND_PROTOCOL StorageSecurity;\r
\r
- ATA_BUS_DRIVER_DATA *AtaBusDriverData;\r
- UINT16 Port;\r
- UINT16 PortMultiplierPort;\r
+ ATA_BUS_DRIVER_DATA *AtaBusDriverData;\r
+ UINT16 Port;\r
+ UINT16 PortMultiplierPort;\r
\r
//\r
// Buffer for the execution of ATA pass through protocol\r
//\r
- EFI_ATA_PASS_THRU_COMMAND_PACKET Packet;\r
- EFI_ATA_COMMAND_BLOCK Acb;\r
- EFI_ATA_STATUS_BLOCK *Asb;\r
+ EFI_ATA_PASS_THRU_COMMAND_PACKET Packet;\r
+ EFI_ATA_COMMAND_BLOCK Acb;\r
+ EFI_ATA_STATUS_BLOCK *Asb;\r
\r
- BOOLEAN UdmaValid;\r
- BOOLEAN Lba48Bit;\r
+ BOOLEAN UdmaValid;\r
+ BOOLEAN Lba48Bit;\r
\r
//\r
// Cached data for ATA identify data\r
//\r
- ATA_IDENTIFY_DATA *IdentifyData;\r
+ ATA_IDENTIFY_DATA *IdentifyData;\r
\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
- CHAR16 ModelName[MAX_MODEL_NAME_LEN + 1];\r
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
+ CHAR16 ModelName[MAX_MODEL_NAME_LEN + 1];\r
\r
- LIST_ENTRY AtaTaskList;\r
- LIST_ENTRY AtaSubTaskList;\r
- BOOLEAN Abort;\r
+ LIST_ENTRY AtaTaskList;\r
+ LIST_ENTRY AtaSubTaskList;\r
+ BOOLEAN Abort;\r
} ATA_DEVICE;\r
\r
//\r
// Sub-Task for the non blocking I/O\r
//\r
typedef struct {\r
- UINT32 Signature;\r
- ATA_DEVICE *AtaDevice;\r
- EFI_BLOCK_IO2_TOKEN *Token;\r
- UINTN *UnsignalledEventCount;\r
- EFI_ATA_PASS_THRU_COMMAND_PACKET Packet;\r
- BOOLEAN *IsError;// Indicate whether meeting error during source allocation for new task.\r
- LIST_ENTRY TaskEntry;\r
+ UINT32 Signature;\r
+ ATA_DEVICE *AtaDevice;\r
+ EFI_BLOCK_IO2_TOKEN *Token;\r
+ UINTN *UnsignalledEventCount;\r
+ EFI_ATA_PASS_THRU_COMMAND_PACKET Packet;\r
+ BOOLEAN *IsError;// Indicate whether meeting error during source allocation for new task.\r
+ LIST_ENTRY TaskEntry;\r
} ATA_BUS_ASYN_SUB_TASK;\r
\r
//\r
// Task for the non blocking I/O\r
//\r
typedef struct {\r
- UINT32 Signature;\r
- EFI_BLOCK_IO2_TOKEN *Token;\r
- ATA_DEVICE *AtaDevice;\r
- UINT8 *Buffer;\r
- EFI_LBA StartLba;\r
- UINTN NumberOfBlocks;\r
- BOOLEAN IsWrite;\r
- LIST_ENTRY TaskEntry;\r
+ UINT32 Signature;\r
+ EFI_BLOCK_IO2_TOKEN *Token;\r
+ ATA_DEVICE *AtaDevice;\r
+ UINT8 *Buffer;\r
+ EFI_LBA StartLba;\r
+ UINTN NumberOfBlocks;\r
+ BOOLEAN IsWrite;\r
+ LIST_ENTRY TaskEntry;\r
} ATA_BUS_ASYN_TASK;\r
\r
-#define ATA_DEVICE_FROM_BLOCK_IO(a) CR (a, ATA_DEVICE, BlockIo, ATA_DEVICE_SIGNATURE)\r
-#define ATA_DEVICE_FROM_BLOCK_IO2(a) CR (a, ATA_DEVICE, BlockIo2, ATA_DEVICE_SIGNATURE)\r
-#define ATA_DEVICE_FROM_DISK_INFO(a) CR (a, ATA_DEVICE, DiskInfo, ATA_DEVICE_SIGNATURE)\r
-#define ATA_DEVICE_FROM_STORAGE_SECURITY(a) CR (a, ATA_DEVICE, StorageSecurity, ATA_DEVICE_SIGNATURE)\r
-#define ATA_ASYN_SUB_TASK_FROM_ENTRY(a) CR (a, ATA_BUS_ASYN_SUB_TASK, TaskEntry, ATA_SUB_TASK_SIGNATURE)\r
-#define ATA_ASYN_TASK_FROM_ENTRY(a) CR (a, ATA_BUS_ASYN_TASK, TaskEntry, ATA_TASK_SIGNATURE)\r
+#define ATA_DEVICE_FROM_BLOCK_IO(a) CR (a, ATA_DEVICE, BlockIo, ATA_DEVICE_SIGNATURE)\r
+#define ATA_DEVICE_FROM_BLOCK_IO2(a) CR (a, ATA_DEVICE, BlockIo2, ATA_DEVICE_SIGNATURE)\r
+#define ATA_DEVICE_FROM_DISK_INFO(a) CR (a, ATA_DEVICE, DiskInfo, ATA_DEVICE_SIGNATURE)\r
+#define ATA_DEVICE_FROM_STORAGE_SECURITY(a) CR (a, ATA_DEVICE, StorageSecurity, ATA_DEVICE_SIGNATURE)\r
+#define ATA_ASYN_SUB_TASK_FROM_ENTRY(a) CR (a, ATA_BUS_ASYN_SUB_TASK, TaskEntry, ATA_SUB_TASK_SIGNATURE)\r
+#define ATA_ASYN_TASK_FROM_ENTRY(a) CR (a, ATA_BUS_ASYN_TASK, TaskEntry, ATA_TASK_SIGNATURE)\r
\r
//\r
// Global Variables\r
//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gAtaBusDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gAtaBusComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gAtaBusComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL gAtaBusDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gAtaBusComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gAtaBusComponentName2;\r
\r
/**\r
Allocates an aligned buffer for ATA device.\r
**/\r
VOID *\r
AllocateAlignedBuffer (\r
- IN ATA_DEVICE *AtaDevice,\r
- IN UINTN BufferSize\r
+ IN ATA_DEVICE *AtaDevice,\r
+ IN UINTN BufferSize\r
);\r
\r
/**\r
**/\r
VOID\r
FreeAlignedBuffer (\r
- IN VOID *Buffer,\r
- IN UINTN BufferSize\r
+ IN VOID *Buffer,\r
+ IN UINTN BufferSize\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
ResetAtaDevice (\r
- IN ATA_DEVICE *AtaDevice\r
+ IN ATA_DEVICE *AtaDevice\r
);\r
\r
-\r
/**\r
Discovers whether it is a valid ATA device.\r
\r
**/\r
EFI_STATUS\r
DiscoverAtaDevice (\r
- IN OUT ATA_DEVICE *AtaDevice\r
+ IN OUT ATA_DEVICE *AtaDevice\r
);\r
\r
/**\r
\r
**/\r
EFI_STATUS\r
-AccessAtaDevice(\r
- IN OUT ATA_DEVICE *AtaDevice,\r
- IN OUT UINT8 *Buffer,\r
- IN EFI_LBA StartLba,\r
- IN UINTN NumberOfBlocks,\r
- IN BOOLEAN IsWrite,\r
- IN OUT EFI_BLOCK_IO2_TOKEN *Token\r
+AccessAtaDevice (\r
+ IN OUT ATA_DEVICE *AtaDevice,\r
+ IN OUT UINT8 *Buffer,\r
+ IN EFI_LBA StartLba,\r
+ IN UINTN NumberOfBlocks,\r
+ IN BOOLEAN IsWrite,\r
+ IN OUT EFI_BLOCK_IO2_TOKEN *Token\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
TrustTransferAtaDevice (\r
- IN OUT ATA_DEVICE *AtaDevice,\r
- IN OUT VOID *Buffer,\r
- IN UINT8 SecurityProtocolId,\r
- IN UINT16 SecurityProtocolSpecificData,\r
- IN UINTN TransferLength,\r
- IN BOOLEAN IsTrustSend,\r
- IN UINT64 Timeout,\r
- OUT UINTN *TransferLengthOut\r
+ IN OUT ATA_DEVICE *AtaDevice,\r
+ IN OUT VOID *Buffer,\r
+ IN UINT8 SecurityProtocolId,\r
+ IN UINT16 SecurityProtocolSpecificData,\r
+ IN UINTN TransferLength,\r
+ IN BOOLEAN IsTrustSend,\r
+ IN UINT64 Timeout,\r
+ OUT UINTN *TransferLengthOut\r
);\r
\r
//\r
// Protocol interface prototypes\r
//\r
+\r
/**\r
Tests to see if this driver supports a given controller. If a child device is provided,\r
it further tests to see if this driver supports creating a handle for the specified child device.\r
EFI_STATUS\r
EFIAPI\r
AtaBusDriverBindingStop (\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
-\r
/**\r
Retrieves a Unicode string that is the user readable name of the driver.\r
\r
OUT CHAR16 **DriverName\r
);\r
\r
-\r
/**\r
Retrieves a Unicode string that is the user readable name of the controller\r
that is being managed by a driver.\r
EFI_STATUS\r
EFIAPI\r
AtaBusComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE ChildHandle OPTIONAL,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **ControllerName\r
);\r
\r
-\r
/**\r
Reset the Block Device.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaBlockIoReset (\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
-\r
/**\r
Read BufferSize bytes from Lba into Buffer.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaBlockIoReadBlocks (\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
-\r
/**\r
Write BufferSize bytes from Lba into Buffer.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaBlockIoWriteBlocks (\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
-\r
/**\r
Flush the Block Device.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaBlockIoFlushBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This\r
+ IN EFI_BLOCK_IO_PROTOCOL *This\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
AtaTerminateNonBlockingTask (\r
- IN ATA_DEVICE *AtaDevice\r
+ IN ATA_DEVICE *AtaDevice\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
AtaDiskInfoInquiry (\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
-\r
/**\r
Provides identify information for the controller type.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaDiskInfoIdentify (\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
-\r
/**\r
Provides sense data information for the controller type.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaDiskInfoSenseData (\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
-\r
/**\r
This function is used by the IDE bus driver to get controller information.\r
\r
EFI_STATUS\r
EFIAPI\r
AtaDiskInfoWhichIde (\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
/**\r
EFI_STATUS\r
EFIAPI\r
AtaStorageSecurityReceiveData (\r
- IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
- IN UINT32 MediaId,\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,\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
/**\r
EFI_STATUS\r
EFIAPI\r
AtaStorageSecuritySendData (\r
- IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN UINT64 Timeout,\r
- IN UINT8 SecurityProtocolId,\r
- IN UINT16 SecurityProtocolSpecificData,\r
- IN UINTN PayloadBufferSize,\r
- IN VOID *PayloadBuffer\r
+ IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This,\r
+ IN UINT32 MediaId,\r
+ IN UINT64 Timeout,\r
+ IN UINT8 SecurityProtocolId,\r
+ IN UINT16 SecurityProtocolSpecificData,\r
+ IN UINTN PayloadBufferSize,\r
+ IN VOID *PayloadBuffer\r
);\r
\r
/**\r
**/\r
VOID\r
InitiateTPerReset (\r
- IN ATA_DEVICE *AtaDevice\r
+ IN ATA_DEVICE *AtaDevice\r
);\r
\r
#endif\r