]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Pci/IdeBus/Dxe/ide.h
Add PciBus & IdeBus
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / IdeBus / Dxe / ide.h
diff --git a/IntelFrameworkModulePkg/Bus/Pci/IdeBus/Dxe/ide.h b/IntelFrameworkModulePkg/Bus/Pci/IdeBus/Dxe/ide.h
new file mode 100644 (file)
index 0000000..ec1f9e0
--- /dev/null
@@ -0,0 +1,1328 @@
+/** @file\r
+  Header file for IDE Bus Driver, containing the helper functions'\r
+  entire prototype.\r
+\r
+  Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
+  All rights reserved. This program and the accompanying materials\r
+  are licensed and made available under the terms and conditions of the BSD License\r
+  which accompanies this distribution.  The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+  @par Revision Reference:\r
+  2002-6: Add Atapi6 enhancement, support >120GB hard disk, including\r
+  Add - IDEBlkIoReadBlocksExt() func definition\r
+  Add - IDEBlkIoWriteBlocksExt() func definition\r
+\r
+**/\r
+\r
+#ifndef _IDE_H\r
+#define _IDE_H\r
+\r
+//\r
+// Helper functions Prototype\r
+//\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  This TODO: add argument description\r
+  @param  Controller TODO: add argument description\r
+  @param  Handle TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DeRegisterIdeDevice (\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN  EFI_HANDLE                     Controller,\r
+  IN  EFI_HANDLE                     Handle\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  Controller TODO: add argument description\r
+  @param  PciIo TODO: add argument description\r
+  @param  ParentDevicePath TODO: add argument description\r
+  @param  RemainingDevicePath TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+EnableIdeDevice (\r
+  IN EFI_HANDLE                          Controller,\r
+  IN EFI_PCI_IO_PROTOCOL                 *PciIo,\r
+  IN EFI_DEVICE_PATH_PROTOCOL            *ParentDevicePath,\r
+  IN EFI_DEVICE_PATH_PROTOCOL            *RemainingDevicePath\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+UINT8\r
+IDEReadPortB (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
+  @param  Count TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+IDEReadPortWMultiple (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port,\r
+  IN  UINTN                 Count,\r
+  OUT  VOID                 *Buffer\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
+  @param  Data TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+IDEWritePortB (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port,\r
+  IN  UINT8                 Data\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
+  @param  Data TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+IDEWritePortW (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port,\r
+  IN  UINT16                Data\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
+  @param  Count TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+IDEWritePortWMultiple (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port,\r
+  IN  UINTN                 Count,\r
+  IN  VOID                  *Buffer\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  PciIo TODO: add argument description\r
+  @param  IdeRegsBaseAddr TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+GetIdeRegistersBaseAddr (\r
+  IN  EFI_PCI_IO_PROTOCOL         *PciIo,\r
+  OUT IDE_REGISTERS_BASE_ADDR     *IdeRegsBaseAddr\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+ReassignIdeResources (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DiscoverIdeDevice (\r
+  IN IDE_BLK_IO_DEV *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  This interface is used to initialize all state data related to the\r
+  detection of one channel.\r
+\r
+  @retval EFI_SUCCESS Completed successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+InitializeIDEChannelData (\r
+  VOID\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DetectIDEController (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRQClear (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRQClear2 (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRQReady (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRQReady2 (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+WaitForBSYClear (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TimeoutInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+WaitForBSYClear2 (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DelayInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRDYReady (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           DelayInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DelayInMilliSeconds TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+DRDYReady2 (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           DelayInMilliSeconds\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  Destination TODO: add argument description\r
+  @param  Source TODO: add argument description\r
+  @param  Size TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+SwapStringChars (\r
+  IN CHAR8  *Destination,\r
+  IN CHAR8  *Source,\r
+  IN UINT32 Size\r
+  )\r
+;\r
+\r
+//\r
+//  ATA device functions' prototype\r
+//\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+ATAIdentify (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+PrintAtaModuleName (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Head TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  SectorNumber TODO: add argument description\r
+  @param  CylinderLsb TODO: add argument description\r
+  @param  CylinderMsb TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaPioDataIn (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *Buffer,\r
+  IN  UINT32          ByteCount,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Head,\r
+  IN  UINT8           SectorCount,\r
+  IN  UINT8           SectorNumber,\r
+  IN  UINT8           CylinderLsb,\r
+  IN  UINT8           CylinderMsb\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Head TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  SectorNumber TODO: add argument description\r
+  @param  CylinderLsb TODO: add argument description\r
+  @param  CylinderMsb TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaPioDataOut (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *Buffer,\r
+  IN  UINT32          ByteCount,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Head,\r
+  IN  UINT8           SectorCount,\r
+  IN  UINT8           SectorNumber,\r
+  IN  UINT8           CylinderLsb,\r
+  IN  UINT8           CylinderMsb\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+CheckErrorStatus (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  Lba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaReadSectors (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         Lba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  BufferData TODO: add argument description\r
+  @param  Lba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaWriteSectors (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *BufferData,\r
+  IN  EFI_LBA         Lba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaSoftReset (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeBlkIoDevice TODO: add argument description\r
+  @param  MediaId TODO: add argument description\r
+  @param  LBA TODO: add argument description\r
+  @param  BufferSize TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaBlkIoReadBlocks (\r
+  IN IDE_BLK_IO_DEV   *IdeBlkIoDevice,\r
+  IN UINT32           MediaId,\r
+  IN EFI_LBA          LBA,\r
+  IN UINTN            BufferSize,\r
+  OUT VOID            *Buffer\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeBlkIoDevice TODO: add argument description\r
+  @param  MediaId TODO: add argument description\r
+  @param  LBA TODO: add argument description\r
+  @param  BufferSize TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaBlkIoWriteBlocks (\r
+  IN IDE_BLK_IO_DEV   *IdeBlkIoDevice,\r
+  IN UINT32           MediaId,\r
+  IN EFI_LBA          LBA,\r
+  IN UINTN            BufferSize,\r
+  OUT VOID            *Buffer\r
+  )\r
+;\r
+\r
+//\r
+// ATAPI device functions' prototype\r
+//\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+ATAPIIdentify (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiInquiry (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Packet TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  TimeOut TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiPacketCommandIn (\r
+  IN  IDE_BLK_IO_DEV        *IdeDev,\r
+  IN  ATAPI_PACKET_COMMAND  *Packet,\r
+  IN  UINT16                *Buffer,\r
+  IN  UINT32                ByteCount,\r
+  IN  UINTN                 TimeOut\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Packet TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  TimeOut TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiPacketCommandOut (\r
+  IN  IDE_BLK_IO_DEV        *IdeDev,\r
+  IN  ATAPI_PACKET_COMMAND  *Packet,\r
+  IN  UINT16                *Buffer,\r
+  IN  UINT32                ByteCount,\r
+  IN  UINTN                 TimeOut\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  Read TODO: add argument description\r
+  @param  TimeOut TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+PioReadWriteData (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINT16          *Buffer,\r
+  IN  UINT32          ByteCount,\r
+  IN  BOOLEAN         Read,\r
+  IN  UINTN           TimeOut\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiTestUnitReady (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  OUT UINTN           *SenseCount\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  SenseCounts TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiRequestSense (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  OUT UINTN           *SenseCounts\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiReadCapacity (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  OUT UINTN           *SenseCount\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  MediaChange TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiDetectMedia (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  OUT BOOLEAN         *MediaChange\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  Lba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiReadSectors (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *Buffer,\r
+  IN  EFI_LBA         Lba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  Lba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiWriteSectors (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *Buffer,\r
+  IN  EFI_LBA         Lba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiSoftReset (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeBlkIoDevice TODO: add argument description\r
+  @param  MediaId TODO: add argument description\r
+  @param  LBA TODO: add argument description\r
+  @param  BufferSize TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiBlkIoReadBlocks (\r
+  IN IDE_BLK_IO_DEV   *IdeBlkIoDevice,\r
+  IN UINT32           MediaId,\r
+  IN EFI_LBA          LBA,\r
+  IN UINTN            BufferSize,\r
+  OUT VOID            *Buffer\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeBlkIoDevice TODO: add argument description\r
+  @param  MediaId TODO: add argument description\r
+  @param  LBA TODO: add argument description\r
+  @param  BufferSize TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiBlkIoWriteBlocks (\r
+  IN IDE_BLK_IO_DEV   *IdeBlkIoDevice,\r
+  IN UINT32           MediaId,\r
+  IN EFI_LBA          LBA,\r
+  IN UINTN            BufferSize,\r
+  OUT VOID            *Buffer\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  SenseCount TODO: add argument description\r
+  @param  Result TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+ParseSenseData (\r
+  IN IDE_BLK_IO_DEV     *IdeDev,\r
+  IN UINTN              SenseCount,\r
+  OUT SENSE_RESULT      *Result\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtapiReadPendingData (\r
+  IN IDE_BLK_IO_DEV     *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  WriteProtected TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+IsLS120orZipWriteProtected (\r
+  IN  IDE_BLK_IO_DEV    *IdeDev,\r
+  OUT BOOLEAN           *WriteProtected\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeBlkIoDevice TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+ReleaseIdeResources (\r
+  IN  IDE_BLK_IO_DEV  *IdeBlkIoDevice\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  TransferMode TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+SetDeviceTransferMode (\r
+  IN IDE_BLK_IO_DEV       *IdeDev,\r
+  IN ATA_TRANSFER_MODE    *TransferMode\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  NativeMaxAddress TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+ReadNativeMaxAddress (\r
+  IN  IDE_BLK_IO_DEV                *IdeDev,\r
+  OUT EFI_LBA                       *NativeMaxAddress\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  MaxAddress TODO: add argument description\r
+  @param  bVolatile TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+SetMaxAddress (\r
+  IN  IDE_BLK_IO_DEV                *IdeDev,\r
+  IN  EFI_LBA                       MaxAddress,\r
+  IN  BOOLEAN                       bVolatile\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Device TODO: add argument description\r
+  @param  Feature TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  LbaLow TODO: add argument description\r
+  @param  LbaMiddle TODO: add argument description\r
+  @param  LbaHigh TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaNonDataCommandIn (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Device,\r
+  IN  UINT8           Feature,\r
+  IN  UINT8           SectorCount,\r
+  IN  UINT8           LbaLow,\r
+  IN  UINT8           LbaMiddle,\r
+  IN  UINT8           LbaHigh\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Device TODO: add argument description\r
+  @param  Feature TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  LbaAddress TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaNonDataCommandInExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Device,\r
+  IN  UINT16          Feature,\r
+  IN  UINT16          SectorCount,\r
+  IN  EFI_LBA         LbaAddress\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaReadSectorsExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaWriteSectorsExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaUdmaReadExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaUdmaRead (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaUdmaWriteExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  Perform an ATA Udma operation (Read, ReadExt, Write, WriteExt).\r
+  \r
+  @param[in] *IdeDev\r
+  pointer pointing to IDE_BLK_IO_DEV data structure, used\r
+  to record all the information of the IDE device.\r
+\r
+  @param[in] *DataBuffer\r
+  A pointer to the source buffer for the data.\r
+\r
+  @param[in] StartLba\r
+  The starting logical block address to write to\r
+  on the device media.\r
+\r
+  @param[in] NumberOfBlocks\r
+  The number of transfer data blocks.\r
+  \r
+  @param[in] UdmaOp\r
+  The perform operations could be AtaUdmaReadOp, AtaUdmaReadExOp,\r
+  AtaUdmaWriteOp, AtaUdmaWriteExOp\r
+\r
+  @return The device status of UDMA operation. If the operation is\r
+  successful, return EFI_SUCCESS.\r
+\r
+**/\r
+EFI_STATUS\r
+DoAtaUdma (\r
+  IN  IDE_BLK_IO_DEV      *IdeDev,\r
+  IN  VOID                *DataBuffer,\r
+  IN  EFI_LBA             StartLba,\r
+  IN  UINTN               NumberOfBlocks,\r
+  IN  ATA_UDMA_OPERATION  UdmaOp\r
+  )\r
+;\r
+\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DataBuffer TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  NumberOfBlocks TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaUdmaWrite (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *DataBuffer,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINTN           NumberOfBlocks\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Device TODO: add argument description\r
+  @param  Feature TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  LbaAddress TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaCommandIssueExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Device,\r
+  IN  UINT16          Feature,\r
+  IN  UINT16          SectorCount,\r
+  IN  EFI_LBA         LbaAddress\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  Device TODO: add argument description\r
+  @param  Feature TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+  @param  LbaAddress TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaCommandIssue (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINT8           AtaCommand,\r
+  IN  UINT8           Device,\r
+  IN  UINT16          Feature,\r
+  IN  UINT16          SectorCount,\r
+  IN  EFI_LBA         LbaAddress\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaAtapi6Identify (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+VOID\r
+AtaSMARTSupport (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaPioDataInExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  OUT VOID        *Buffer,\r
+  IN  UINT32          ByteCount,\r
+  IN  UINT8           AtaCommand,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINT16          SectorCount\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  Buffer TODO: add argument description\r
+  @param  ByteCount TODO: add argument description\r
+  @param  AtaCommand TODO: add argument description\r
+  @param  StartLba TODO: add argument description\r
+  @param  SectorCount TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+AtaPioDataOutExt (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  VOID            *Buffer,\r
+  IN  UINT32          ByteCount,\r
+  IN  UINT8           AtaCommand,\r
+  IN  EFI_LBA         StartLba,\r
+  IN  UINT16          SectorCount\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+  @param  DriveParameters TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+SetDriveParameters (\r
+  IN IDE_BLK_IO_DEV       *IdeDev,\r
+  IN ATA_DRIVE_PARMS      *DriveParameters\r
+  )\r
+;\r
+\r
+/**\r
+  TODO: Add function description\r
+\r
+  @param  IdeDev TODO: add argument description\r
+\r
+  TODO: add return values\r
+\r
+**/\r
+EFI_STATUS\r
+EnableInterrupt (\r
+  IN IDE_BLK_IO_DEV       *IdeDev\r
+  )\r
+;\r
+\r
+/**\r
+  Clear pending IDE interrupt before OS loader/kernel take control of the IDE device.\r
+\r
+  @param[in]  Event   Pointer to this event\r
+  @param[in]  Context Event hanlder private data\r
+\r
+  @retval  EFI_SUCCESS - Interrupt cleared\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+ClearInterrupt (\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
+  )\r
+;\r
+\r
+#endif\r