]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/IdeBus/Dxe/ide.c
Update comments to conform to the new, Doxygen friendly, coding standard. These...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / IdeBus / Dxe / ide.c
index d318fd23df98c4188be7f8ae3b85c9abd1ff97e3..c41d9958792eb3d06896bf6049982b48d010d09e 100644 (file)
@@ -1,50 +1,34 @@
-/*++\r
+/** @file\r
+  Copyright (c) 2006, Intel Corporation                                                         \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
 \r
-Copyright (c) 2006, Intel Corporation                                                         \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
+  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
 \r
-Module Name:\r
-\r
-    ide.c\r
-    \r
-Abstract: \r
-    \r
-\r
-Revision History\r
---*/\r
+**/\r
 \r
 #include "idebus.h"\r
 \r
 BOOLEAN SlaveDeviceExist  = FALSE;\r
 BOOLEAN MasterDeviceExist = FALSE;\r
 \r
 \r
 #include "idebus.h"\r
 \r
 BOOLEAN SlaveDeviceExist  = FALSE;\r
 BOOLEAN MasterDeviceExist = FALSE;\r
 \r
-UINT8\r
-IDEReadPortB (\r
-  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
-  IN  UINT16                Port\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
+/**\r
   TODO: Add function description\r
 \r
   TODO: Add function description\r
 \r
-Arguments:\r
-\r
-  PciIo - TODO: add argument description\r
-  Port  - TODO: add argument description\r
-\r
-Returns:\r
+  @param  PciIo TODO: add argument description\r
+  @param  Port TODO: add argument description\r
 \r
   TODO: add return values\r
 \r
 \r
   TODO: add return values\r
 \r
---*/\r
+**/\r
+UINT8\r
+IDEReadPortB (\r
+  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
+  IN  UINT16                Port\r
+  )\r
 {\r
   UINT8 Data;\r
 \r
 {\r
   UINT8 Data;\r
 \r
@@ -63,6 +47,17 @@ Returns:
   return Data;\r
 }\r
 \r
   return Data;\r
 }\r
 \r
+/**\r
+  Reads multiple words of data from the IDE data port. \r
+  Call the IO abstraction once to do the complete read,\r
+  not one word at a time\r
+\r
+  @param  PciIo Pointer to the EFI_PCI_IO instance\r
+  @param  Port IO port to read\r
+  @param  Count No. of UINT16's to read\r
+  @param  Buffer Pointer to the data buffer for read\r
+\r
+**/\r
 VOID\r
 IDEReadPortWMultiple (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
 VOID\r
 IDEReadPortWMultiple (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
@@ -70,23 +65,6 @@ IDEReadPortWMultiple (
   IN  UINTN                 Count,\r
   IN  VOID                  *Buffer\r
   )\r
   IN  UINTN                 Count,\r
   IN  VOID                  *Buffer\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-  Reads multiple words of data from the IDE data port. \r
-  Call the IO abstraction once to do the complete read,\r
-  not one word at a time\r
-  \r
-\r
-Arguments:\r
-  PciIo   - Pointer to the EFI_PCI_IO instance\r
-  Port    - IO port to read\r
-  Count   - No. of UINT16's to read\r
-  Buffer  - Pointer to the data buffer for read\r
-\r
-++*/\r
-// TODO: function comment should end with '--*/'\r
-// TODO: function comment is missing 'Returns:'\r
 {\r
   UINT16  *AlignedBuffer;\r
   UINT16  *WorkingBuffer;\r
 {\r
   UINT16  *AlignedBuffer;\r
   UINT16  *WorkingBuffer;\r
@@ -127,29 +105,22 @@ Arguments:
   gBS->FreePool (WorkingBuffer);\r
 }\r
 \r
   gBS->FreePool (WorkingBuffer);\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
 VOID\r
 IDEWritePortB (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
   IN  UINT16                Port,\r
   IN  UINT8                 Data\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciIo - TODO: add argument description\r
-  Port  - TODO: add argument description\r
-  Data  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
 {\r
   //\r
   // perform 1-byte data write to register\r
 {\r
   //\r
   // perform 1-byte data write to register\r
@@ -165,29 +136,22 @@ Returns:
 \r
 }\r
 \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
 VOID\r
 IDEWritePortW (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
   IN  UINT16                Port,\r
   IN  UINT16                Data\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciIo - TODO: add argument description\r
-  Port  - TODO: add argument description\r
-  Data  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
 {\r
   //\r
   // perform 1-word data write to register\r
 {\r
   //\r
   // perform 1-word data write to register\r
@@ -202,6 +166,17 @@ Returns:
               );\r
 }\r
 \r
               );\r
 }\r
 \r
+/**\r
+  Write multiple words of data to the IDE data port. \r
+  Call the IO abstraction once to do the complete read,\r
+  not one word at a time\r
+\r
+  @param  PciIo Pointer to the EFI_PCI_IO instance\r
+  @param  Port IO port to read\r
+  @param  Count No. of UINT16's to read\r
+  @param  Buffer Pointer to the data buffer for read\r
+\r
+**/\r
 VOID\r
 IDEWritePortWMultiple (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
 VOID\r
 IDEWritePortWMultiple (\r
   IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
@@ -209,23 +184,6 @@ IDEWritePortWMultiple (
   IN  UINTN                 Count,\r
   IN  VOID                  *Buffer\r
   )\r
   IN  UINTN                 Count,\r
   IN  VOID                  *Buffer\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-  Write multiple words of data to the IDE data port. \r
-  Call the IO abstraction once to do the complete read,\r
-  not one word at a time\r
-  \r
-\r
-Arguments:\r
-  PciIo   - Pointer to the EFI_PCI_IO instance\r
-  Port    - IO port to read\r
-  Count   - No. of UINT16's to read\r
-  Buffer  - Pointer to the data buffer for read\r
-\r
-++*/\r
-// TODO: function comment should end with '--*/'\r
-// TODO: function comment is missing 'Returns:'\r
 {\r
   UINT16  *AlignedBuffer;\r
   UINT32  *WorkingBuffer;\r
 {\r
   UINT16  *AlignedBuffer;\r
   UINT32  *WorkingBuffer;\r
@@ -267,25 +225,18 @@ Arguments:
   gBS->FreePool (WorkingBuffer);\r
 }\r
 \r
   gBS->FreePool (WorkingBuffer);\r
 }\r
 \r
-BOOLEAN\r
-BadIdeDeviceCheck (\r
-  IN IDE_BLK_IO_DEV *IdeDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
+/**\r
   TODO: Add function description\r
 \r
   TODO: Add function description\r
 \r
-Arguments:\r
-\r
-  IdeDev  - TODO: add argument description\r
-\r
-Returns:\r
+  @param  IdeDev TODO: add argument description\r
 \r
   TODO: add return values\r
 \r
 \r
   TODO: add return values\r
 \r
---*/\r
+**/\r
+BOOLEAN\r
+BadIdeDeviceCheck (\r
+  IN IDE_BLK_IO_DEV *IdeDev\r
+  )\r
 {\r
   //\r
   //  check whether all registers return 0xff,\r
 {\r
   //\r
   //  check whether all registers return 0xff,\r
@@ -341,63 +292,62 @@ Returns:
 //\r
 // GetIdeRegistersBaseAddr\r
 //\r
 //\r
 // GetIdeRegistersBaseAddr\r
 //\r
-EFI_STATUS\r
-GetIdeRegistersBaseAddr (\r
-  IN  EFI_PCI_IO_PROTOCOL         *PciIo,\r
-  OUT IDE_REGISTERS_BASE_ADDR     *IdeRegsBaseAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
   Get IDE IO port registers' base addresses by mode. In 'Compatibility' mode,\r
   use fixed addresses. In Native-PCI mode, get base addresses from BARs in\r
   the PCI IDE controller's Configuration Space.\r
   Get IDE IO port registers' base addresses by mode. In 'Compatibility' mode,\r
   use fixed addresses. In Native-PCI mode, get base addresses from BARs in\r
   the PCI IDE controller's Configuration Space.\r
-  \r
+\r
   The steps to get IDE IO port registers' base addresses for each channel \r
   as follows:\r
 \r
   1. Examine the Programming Interface byte of the Class Code fields in PCI IDE \r
   The steps to get IDE IO port registers' base addresses for each channel \r
   as follows:\r
 \r
   1. Examine the Programming Interface byte of the Class Code fields in PCI IDE \r
-     controller's Configuration Space to determine the operating mode.\r
-     \r
+  controller's Configuration Space to determine the operating mode.\r
+\r
   2. a) In 'Compatibility' mode, use fixed addresses shown in the Table 1 below.\r
   2. a) In 'Compatibility' mode, use fixed addresses shown in the Table 1 below.\r
-                 ___________________________________________\r
-                |           | Command Block | Control Block |\r
-                |  Channel  |   Registers   |   Registers   |\r
-                |___________|_______________|_______________|\r
-                |  Primary  |  1F0h - 1F7h  |  3F6h - 3F7h  |\r
-                |___________|_______________|_______________|\r
-                | Secondary |  170h - 177h  |  376h - 377h  |\r
-                |___________|_______________|_______________|\r
-        \r
-                  Table 1. Compatibility resource mappings\r
-        \r
-     b) In Native-PCI mode, IDE registers are mapped into IO space using the BARs\r
-        in IDE controller's PCI Configuration Space, shown in the Table 2 below.\r
-               ___________________________________________________\r
-              |           |   Command Block   |   Control Block   |\r
-              |  Channel  |     Registers     |     Registers     |\r
-              |___________|___________________|___________________|\r
-              |  Primary  | BAR at offset 0x10| BAR at offset 0x14|\r
-              |___________|___________________|___________________|\r
-              | Secondary | BAR at offset 0x18| BAR at offset 0x1C|\r
-              |___________|___________________|___________________|\r
-      \r
-                        Table 2. BARs for Register Mapping\r
-        Note: Refer to Intel ICH4 datasheet, Control Block Offset: 03F4h for \r
-              primary, 0374h for secondary. So 2 bytes extra offset should be \r
-              added to the base addresses read from BARs.\r
-  \r
+  <pre>\r
+  ___________________________________________\r
+  |           | Command Block | Control Block |\r
+  |  Channel  |   Registers   |   Registers   |\r
+  |___________|_______________|_______________|\r
+  |  Primary  |  1F0h - 1F7h  |  3F6h - 3F7h  |\r
+  |___________|_______________|_______________|\r
+  | Secondary |  170h - 177h  |  376h - 377h  |\r
+  |___________|_______________|_______________|\r
+\r
+  Table 1. Compatibility resource mappings\r
+  </pre>\r
+\r
+  b) In Native-PCI mode, IDE registers are mapped into IO space using the BARs\r
+  in IDE controller's PCI Configuration Space, shown in the Table 2 below.\r
+  <pre>\r
+  ___________________________________________________\r
+  |           |   Command Block   |   Control Block   |\r
+  |  Channel  |     Registers     |     Registers     |\r
+  |___________|___________________|___________________|\r
+  |  Primary  | BAR at offset 0x10| BAR at offset 0x14|\r
+  |___________|___________________|___________________|\r
+  | Secondary | BAR at offset 0x18| BAR at offset 0x1C|\r
+  |___________|___________________|___________________|\r
+\r
+  Table 2. BARs for Register Mapping\r
+  </pre>\r
+  @note Refer to Intel ICH4 datasheet, Control Block Offset: 03F4h for \r
+  primary, 0374h for secondary. So 2 bytes extra offset should be \r
+  added to the base addresses read from BARs.\r
+\r
   For more details, please refer to PCI IDE Controller Specification and Intel \r
   ICH4 Datasheet.\r
   For more details, please refer to PCI IDE Controller Specification and Intel \r
   ICH4 Datasheet.\r
-  \r
-Arguments:\r
-  PciIo             - Pointer to the EFI_PCI_IO_PROTOCOL instance\r
-  IdeRegsBaseAddr   - Pointer to IDE_REGISTERS_BASE_ADDR to \r
-                      receive IDE IO port registers' base addresses\r
-                      \r
-Returns:\r
-    \r
---*/\r
+\r
+  @param  PciIo Pointer to the EFI_PCI_IO_PROTOCOL instance\r
+  @param  IdeRegsBaseAddr Pointer to IDE_REGISTERS_BASE_ADDR to\r
+  receive IDE IO port registers' base addresses\r
+\r
+**/\r
+EFI_STATUS\r
+GetIdeRegistersBaseAddr (\r
+  IN  EFI_PCI_IO_PROTOCOL         *PciIo,\r
+  OUT IDE_REGISTERS_BASE_ADDR     *IdeRegsBaseAddr\r
+  )\r
 // TODO:    EFI_UNSUPPORTED - add return value to function comment\r
 // TODO:    EFI_UNSUPPORTED - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 // TODO:    EFI_UNSUPPORTED - add return value to function comment\r
 // TODO:    EFI_UNSUPPORTED - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
@@ -464,24 +414,19 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-ReassignIdeResources (\r
-  IN  IDE_BLK_IO_DEV  *IdeDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
   This function is used to requery IDE resources. The IDE controller will \r
   probably switch between native and legacy modes during the EFI->CSM->OS \r
   transfer. We do this everytime before an BlkIo operation to ensure its\r
   succeess.\r
   This function is used to requery IDE resources. The IDE controller will \r
   probably switch between native and legacy modes during the EFI->CSM->OS \r
   transfer. We do this everytime before an BlkIo operation to ensure its\r
   succeess.\r
-  \r
-Arguments:\r
-  IdeDev - The BLK_IO private data which specifies the IDE device\r
-  \r
-++*/\r
-// TODO: function comment should end with '--*/'\r
-// TODO: function comment is missing 'Returns:'\r
+\r
+  @param  IdeDev The BLK_IO private data which specifies the IDE device\r
+\r
+**/\r
+EFI_STATUS\r
+ReassignIdeResources (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 {\r
   EFI_STATUS              Status;\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 {\r
   EFI_STATUS              Status;\r
@@ -519,22 +464,16 @@ Arguments:
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Read SATA registers to detect SATA disks\r
+\r
+  @param  IdeDev The BLK_IO private data which specifies the IDE device\r
+\r
+**/\r
 EFI_STATUS\r
 CheckPowerMode (\r
   IDE_BLK_IO_DEV    *IdeDev\r
   )\r
 EFI_STATUS\r
 CheckPowerMode (\r
   IDE_BLK_IO_DEV    *IdeDev\r
   )\r
-/*++\r
- Routine Description:\r
\r
-  Read SATA registers to detect SATA disks\r
-\r
- Arguments:\r
-\r
-  IdeDev - The BLK_IO private data which specifies the IDE device\r
-  \r
-++*/\r
-// TODO: function comment should end with '--*/'\r
-// TODO: function comment is missing 'Returns:'\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
@@ -579,22 +518,16 @@ CheckPowerMode (
 //\r
 // DiscoverIdeDevice\r
 //\r
 //\r
 // DiscoverIdeDevice\r
 //\r
+/**\r
+  Detect if there is disk connected to this port\r
+\r
+  @param  IdeDev The BLK_IO private data which specifies the IDE device\r
+\r
+**/\r
 EFI_STATUS\r
 DiscoverIdeDevice (\r
   IN IDE_BLK_IO_DEV *IdeDev\r
   )\r
 EFI_STATUS\r
 DiscoverIdeDevice (\r
   IN IDE_BLK_IO_DEV *IdeDev\r
   )\r
-/*++\r
- Routine Description:\r
\r
-  Detect if there is disk connected to this port\r
-\r
- Arguments:\r
-\r
-  IdeDev - The BLK_IO private data which specifies the IDE device\r
-  \r
-++*/\r
-// TODO: function comment should end with '--*/'\r
-// TODO: function comment is missing 'Returns:'\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_NOT_FOUND - add return value to function comment\r
 // TODO:    EFI_SUCCESS - add return value to function comment\r
@@ -662,54 +595,42 @@ DiscoverIdeDevice (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-DetectIDEController (\r
-  IN  IDE_BLK_IO_DEV  *IdeDev\r
-  )\r
-/*++\r
-  \r
-  Name: DetectIDEController\r
-\r
-\r
-  Purpose: \r
-      This function is called by DiscoverIdeDevice(). It is used for detect \r
-      whether the IDE device exists in the specified Channel as the specified \r
-      Device Number.\r
-\r
-      There is two IDE channels: one is Primary Channel, the other is \r
-      Secondary Channel.(Channel is the logical name for the physical "Cable".) \r
-      Different channel has different register group.\r
+/**\r
+  This function is called by DiscoverIdeDevice(). It is used for detect \r
+  whether the IDE device exists in the specified Channel as the specified \r
+  Device Number.\r
 \r
 \r
-      On each IDE channel, at most two IDE devices attach, \r
-      one is called Device 0 (Master device), the other is called Device 1 \r
-      (Slave device). The devices on the same channel co-use the same register \r
-      group, so before sending out a command for a specified device via command \r
-      register, it is a must to select the current device to accept the command \r
-      by set the device number in the Head/Device Register.\r
\r
-            \r
-  Parameters:\r
-      IDE_BLK_IO_DEV  IN    *IdeDev\r
-            pointer pointing to IDE_BLK_IO_DEV data structure, used\r
-            to record all the information of the IDE device.\r
+  There is two IDE channels: one is Primary Channel, the other is \r
+  Secondary Channel.(Channel is the logical name for the physical "Cable".) \r
+  Different channel has different register group.\r
 \r
 \r
+  On each IDE channel, at most two IDE devices attach, \r
+  one is called Device 0 (Master device), the other is called Device 1 \r
+  (Slave device). The devices on the same channel co-use the same register \r
+  group, so before sending out a command for a specified device via command \r
+  register, it is a must to select the current device to accept the command \r
+  by set the device number in the Head/Device Register.\r
 \r
 \r
-  Returns:    \r
-      TRUE      \r
-            successfully detects device.\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
 \r
-      FALSE\r
-            any failure during detection process will return this\r
-            value.\r
+  @retval TRUE\r
+  successfully detects device.\r
+  \r
+  @retval FALSE\r
+  any failure during detection process will return this\r
+  value.\r
 \r
 \r
+  @note\r
+  TODO:    EFI_SUCCESS - add return value to function comment\r
+  TODO:    EFI_NOT_FOUND - add return value to function comment\r
 \r
 \r
-  Notes:\r
---*/\r
-// TODO: function comment is missing 'Routine Description:'\r
-// TODO: function comment is missing 'Arguments:'\r
-// TODO:    IdeDev - add argument and description to function comment\r
-// TODO:    EFI_SUCCESS - add return value to function comment\r
-// TODO:    EFI_NOT_FOUND - add return value to function comment\r
+**/\r
+EFI_STATUS\r
+DetectIDEController (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev\r
+  )\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       ErrorReg;\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       ErrorReg;\r
@@ -846,40 +767,33 @@ DetectIDEController (
 \r
 }\r
 \r
 \r
 }\r
 \r
+/**\r
+  This function is used to poll for the DRQ bit clear in the Status \r
+  Register. DRQ is cleared when the device is finished transferring data. \r
+  So this function is called after data transfer is finished.\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] TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ clear.\r
+\r
+  @retval EFI_SUCCESS\r
+  DRQ bit clear within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRQ bit not clear within the time out.\r
+\r
+  @note\r
+  Read Status Register will clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 DRQClear (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
 EFI_STATUS\r
 DRQClear (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
-/*++\r
-  Name:   DRQClear\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the DRQ bit clear in the Status \r
-        Register. DRQ is cleared when the device is finished transferring data. \r
-        So this function is called after data transfer is finished.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-            used to designate the timeout for the DRQ clear.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-            DRQ bit clear within the time out.\r
-\r
-        EFI_TIMEOUT\r
-            DRQ bit not clear within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Status Register will clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -926,41 +840,34 @@ DRQClear (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  This function is used to poll for the DRQ bit clear in the Alternate \r
+  Status Register. DRQ is cleared when the device is finished \r
+  transferring data. So this function is called after data transfer\r
+  is finished.\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] TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ clear.\r
+\r
+  @retval EFI_SUCCESS\r
+  DRQ bit clear within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRQ bit not clear within the time out.\r
+\r
+  @note\r
+  Read Alternate Status Register will not clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 DRQClear2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
 EFI_STATUS\r
 DRQClear2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
-/*++\r
-  Name:   DRQClear2\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the DRQ bit clear in the Alternate \r
-        Status Register. DRQ is cleared when the device is finished \r
-        transferring data. So this function is called after data transfer\r
-        is finished.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ clear.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          DRQ bit clear within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          DRQ bit not clear within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Alternate Status Register will not clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1007,46 +914,38 @@ DRQClear2 (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-DRQReady (\r
-  IN  IDE_BLK_IO_DEV  *IdeDev,\r
-  IN  UINTN           TimeoutInMilliSeconds\r
-  )\r
-/*++\r
-  Name:   DRQReady\r
+/**\r
+  This function is used to poll for the DRQ bit set in the \r
+  Status Register.\r
+  DRQ is set when the device is ready to transfer data. So this function\r
+  is called after the command is sent to the device and before required \r
+  data is transferred.\r
 \r
 \r
+  @param[in] IDE_BLK_IO_DEV  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
   \r
-  Purpose: \r
-        This function is used to poll for the DRQ bit set in the \r
-        Status Register.\r
-        DRQ is set when the device is ready to transfer data. So this function\r
-        is called after the command is sent to the device and before required \r
-        data is transferred.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-            used to designate the timeout for the DRQ ready.\r
-\r
+  @param[in] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
 \r
 \r
-  Returns:  \r
-        EFI_SUCCESS\r
-            DRQ bit set within the time out.\r
-\r
-        EFI_TIMEOUT\r
-            DRQ bit not set within the time out.\r
-            \r
-        EFI_ABORTED\r
-            DRQ bit not set caused by the command abort.\r
+  @retval EFI_SUCCESS\r
+  DRQ bit set within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRQ bit not set within the time out.\r
+  \r
+  @retval EFI_ABORTED\r
+  DRQ bit not set caused by the command abort.\r
 \r
 \r
-  Notes:\r
-        Read Status Register will clear interrupt status.\r
+  @note\r
+  Read Status Register will clear interrupt status.\r
 \r
 \r
---*/\r
+**/\r
+EFI_STATUS\r
+DRQReady (\r
+  IN  IDE_BLK_IO_DEV  *IdeDev,\r
+  IN  UINTN           TimeoutInMilliSeconds\r
+  )\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1093,43 +992,37 @@ DRQReady (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  This function is used to poll for the DRQ bit set in the \r
+  Alternate Status Register. DRQ is set when the device is ready to \r
+  transfer data. So this function is called after the command \r
+  is sent to the device and before required data is transferred.\r
+\r
+  @param[in] IDE_BLK_IO_DEV  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] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
+\r
+  @retval EFI_SUCCESS\r
+  DRQ bit set within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRQ bit not set within the time out.\r
+  \r
+  @retval EFI_ABORTED\r
+  DRQ bit not set caused by the command abort.\r
+\r
+  @note\r
+  Read Alternate Status Register will not clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 DRQReady2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
 EFI_STATUS\r
 DRQReady2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
-/*++\r
-  Name:   DRQReady2\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the DRQ bit set in the \r
-        Alternate Status Register. DRQ is set when the device is ready to \r
-        transfer data. So this function is called after the command \r
-        is sent to the device and before required data is transferred.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ ready.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          DRQ bit set within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          DRQ bit not set within the time out. \r
-        \r
-        EFI_ABORTED\r
-            DRQ bit not set caused by the command abort.\r
-\r
-  Notes:\r
-        Read Alternate Status Register will not clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1176,41 +1069,33 @@ DRQReady2 (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  This function is used to poll for the BSY bit clear in the \r
+  Status Register. BSY is clear when the device is not busy.\r
+  Every command must be sent after device is not busy.\r
+\r
+  @param[in] IDE_BLK_IO_DEV  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] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
+\r
+  @retval EFI_SUCCESS\r
+  BSY bit clear within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  BSY bit not clear within the time out.\r
+\r
+  @note\r
+  Read Status Register will clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 WaitForBSYClear (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
 EFI_STATUS\r
 WaitForBSYClear (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
-/*++\r
-  Name:\r
-        WaitForBSYClear\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the BSY bit clear in the \r
-        Status Register. BSY is clear when the device is not busy.\r
-        Every command must be sent after device is not busy.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ ready.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          BSY bit clear within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          BSY bit not clear within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Status Register will clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1245,41 +1130,33 @@ WaitForBSYClear (
 //\r
 // WaitForBSYClear2\r
 //\r
 //\r
 // WaitForBSYClear2\r
 //\r
+/**\r
+  This function is used to poll for the BSY bit clear in the \r
+  Alternate Status Register. BSY is clear when the device is not busy.\r
+  Every command must be sent after device is not busy.\r
+\r
+  @param[in] IDE_BLK_IO_DEV  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] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
+\r
+  @retval EFI_SUCCESS\r
+  BSY bit clear within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  BSY bit not clear within the time out.\r
+\r
+  @note\r
+  Read Alternate Status Register will not clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 WaitForBSYClear2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
 EFI_STATUS\r
 WaitForBSYClear2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           TimeoutInMilliSeconds\r
   )\r
-/*++\r
-  Name:\r
-        WaitForBSYClear2\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the BSY bit clear in the \r
-        Alternate Status Register. BSY is clear when the device is not busy.\r
-        Every command must be sent after device is not busy.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ ready.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          BSY bit clear within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          BSY bit not clear within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Alternate Status Register will not clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1311,42 +1188,34 @@ WaitForBSYClear2 (
 //\r
 // DRDYReady\r
 //\r
 //\r
 // DRDYReady\r
 //\r
+/**\r
+  This function is used to poll for the DRDY bit set in the \r
+  Status Register. DRDY bit is set when the device is ready \r
+  to accept command. Most ATA commands must be sent after \r
+  DRDY set except the ATAPI Packet Command.\r
+\r
+  @param[in] IDE_BLK_IO_DEV  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] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
+\r
+  @retval EFI_SUCCESS\r
+  DRDY bit set within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRDY bit not set within the time out.\r
+\r
+  @note\r
+  Read Status Register will clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 DRDYReady (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           DelayInMilliSeconds\r
   )\r
 EFI_STATUS\r
 DRDYReady (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           DelayInMilliSeconds\r
   )\r
-/*++\r
-  Name:\r
-        DRDYReady\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the DRDY bit set in the \r
-        Status Register. DRDY bit is set when the device is ready \r
-        to accept command. Most ATA commands must be sent after \r
-        DRDY set except the ATAPI Packet Command.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ ready.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          DRDY bit set within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          DRDY bit not set within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Status Register will clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1390,42 +1259,34 @@ DRDYReady (
 //\r
 // DRDYReady2\r
 //\r
 //\r
 // DRDYReady2\r
 //\r
+/**\r
+  This function is used to poll for the DRDY bit set in the \r
+  Alternate Status Register. DRDY bit is set when the device is ready \r
+  to accept command. Most ATA commands must be sent after \r
+  DRDY set except the ATAPI Packet Command.\r
+\r
+  @param[in] IDE_BLK_IO_DEV  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] UINTN     IN    TimeoutInMilliSeconds\r
+  used to designate the timeout for the DRQ ready.\r
+\r
+  @retval EFI_SUCCESS\r
+  DRDY bit set within the time out.\r
+  \r
+  @retval EFI_TIMEOUT\r
+  DRDY bit not set within the time out.\r
+\r
+  @note\r
+  Read Alternate Status Register will clear interrupt status.\r
+\r
+**/\r
 EFI_STATUS\r
 DRDYReady2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           DelayInMilliSeconds\r
   )\r
 EFI_STATUS\r
 DRDYReady2 (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
   IN  UINTN           DelayInMilliSeconds\r
   )\r
-/*++\r
-  Name:\r
-        DRDYReady2\r
-\r
-\r
-  Purpose: \r
-        This function is used to poll for the DRDY bit set in the \r
-        Alternate Status Register. DRDY bit is set when the device is ready \r
-        to accept command. Most ATA commands must be sent after \r
-        DRDY set except the ATAPI Packet Command.\r
-\r
-\r
-  Parameters:\r
-        IDE_BLK_IO_DEV  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
-        UINTN     IN    TimeoutInMilliSeconds\r
-          used to designate the timeout for the DRQ ready.\r
-\r
-  Returns:  \r
-        EFI_SUCCESS\r
-          DRDY bit set within the time out.\r
-\r
-        EFI_TIMEOUT\r
-          DRDY bit not set within the time out. \r
-\r
-\r
-  Notes:\r
-        Read Alternate Status Register will clear interrupt status.\r
---*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
 // TODO: function comment is missing 'Routine Description:'\r
 // TODO: function comment is missing 'Arguments:'\r
 // TODO:    IdeDev - add argument and description to function comment\r
@@ -1469,52 +1330,34 @@ DRDYReady2 (
 //\r
 // SwapStringChars\r
 //\r
 //\r
 // SwapStringChars\r
 //\r
+/**\r
+  This function is a helper function used to change the char order in a \r
+  string. It is designed specially for the PrintAtaModuleName() function.\r
+  After the IDE device is detected, the IDE driver gets the device module\r
+  name by sending ATA command called ATA Identify Command or ATAPI \r
+  Identify Command to the specified IDE device. The module name returned \r
+  is a string of ASCII characters: the first character is bit8--bit15 \r
+  of the first word, the second character is bit0--bit7 of the first word \r
+  and so on. Thus the string can not be print directly before it is \r
+  preprocessed by this func to change the order of characters in \r
+  each word in the string.\r
+\r
+  @param[in] CHAR8 IN    *Destination\r
+  Indicates the destination string.\r
+  \r
+  @param[in] CHAR8 IN    *Source\r
+  Indicates the source string.\r
+  \r
+  @param[in] UINT8 IN    Size\r
+  the length of the string\r
+\r
+**/\r
 VOID\r
 SwapStringChars (\r
   IN CHAR8  *Destination,\r
   IN CHAR8  *Source,\r
   IN UINT32 Size\r
   )\r
 VOID\r
 SwapStringChars (\r
   IN CHAR8  *Destination,\r
   IN CHAR8  *Source,\r
   IN UINT32 Size\r
   )\r
-/*++\r
-  Name:\r
-        SwapStringChars\r
-\r
-\r
-  Purpose: \r
-        This function is a helper function used to change the char order in a \r
-        string. It is designed specially for the PrintAtaModuleName() function.\r
-        After the IDE device is detected, the IDE driver gets the device module\r
-        name by sending ATA command called ATA Identify Command or ATAPI \r
-        Identify Command to the specified IDE device. The module name returned \r
-        is a string of ASCII characters: the first character is bit8--bit15 \r
-        of the first word, the second character is bit0--bit7 of the first word \r
-        and so on. Thus the string can not be print directly before it is \r
-        preprocessed by this func to change the order of characters in \r
-        each word in the string.\r
-\r
-\r
-  Parameters:\r
-        CHAR8 IN    *Destination\r
-          Indicates the destination string.\r
-\r
-        CHAR8 IN    *Source\r
-          Indicates the source string.\r
-\r
-        UINT8 IN    Size\r
-          the length of the string\r
-\r
-\r
-  Returns:  \r
-        none\r
-\r
-  Notes:\r
-\r
---*/\r
-// TODO: function comment is missing 'Routine Description:'\r
-// TODO: function comment is missing 'Arguments:'\r
-// TODO:    Destination - add argument and description to function comment\r
-// TODO:    Source - add argument and description to function comment\r
-// TODO:    Size - add argument and description to function comment\r
 {\r
   UINT32  Index;\r
   CHAR8   Temp;\r
 {\r
   UINT32  Index;\r
   CHAR8   Temp;\r
@@ -1530,26 +1373,16 @@ SwapStringChars (
 //\r
 // ReleaseIdeResources\r
 //\r
 //\r
 // ReleaseIdeResources\r
 //\r
+/**\r
+  Release resources of an IDE device before stopping it.\r
+\r
+  @param[in] *IdeBlkIoDevice  Standard IDE device private data structure\r
+\r
+**/\r
 VOID\r
 ReleaseIdeResources (\r
   IN  IDE_BLK_IO_DEV  *IdeBlkIoDevice\r
   )\r
 VOID\r
 ReleaseIdeResources (\r
   IN  IDE_BLK_IO_DEV  *IdeBlkIoDevice\r
   )\r
-/*++\r
-Routing Description:\r
-\r
-  Release resources of an IDE device before stopping it.\r
-\r
-Arguments:\r
-\r
-  IdeBlkIoDevice  --  Standard IDE device private data structure\r
-\r
-\r
-Returns:\r
-\r
-    NONE\r
-    \r
----*/\r
-// TODO: function comment is missing 'Routine Description:'\r
 {\r
   if (IdeBlkIoDevice == NULL) {\r
     return ;\r
 {\r
   if (IdeBlkIoDevice == NULL) {\r
     return ;\r
@@ -1601,26 +1434,20 @@ Returns:
 //\r
 // SetDeviceTransferMode\r
 //\r
 //\r
 // SetDeviceTransferMode\r
 //\r
+/**\r
+  Set the calculated Best transfer mode to a detected device\r
+\r
+  @param[in] *IdeDev       Standard IDE device private data structure\r
+  @param[in] *TransferMode The device transfer mode to be set\r
+\r
+  @return Set transfer mode Command execute status\r
+\r
+**/\r
 EFI_STATUS\r
 SetDeviceTransferMode (\r
   IN IDE_BLK_IO_DEV       *IdeDev,\r
   IN ATA_TRANSFER_MODE    *TransferMode\r
   )\r
 EFI_STATUS\r
 SetDeviceTransferMode (\r
   IN IDE_BLK_IO_DEV       *IdeDev,\r
   IN ATA_TRANSFER_MODE    *TransferMode\r
   )\r
-/*++\r
-Routing Description:\r
-\r
-  Set the calculated Best transfer mode to a detected device\r
-\r
-Arguments:\r
-\r
-  IdeDev       --  Standard IDE device private data structure\r
-  TransferMode --  The device transfer mode to be set\r
-\r
-Returns:\r
-\r
-    Set transfer mode Command execute status\r
-    \r
----*/\r
 // TODO: function comment is missing 'Routine Description:'\r
 {\r
   EFI_STATUS  Status;\r
 // TODO: function comment is missing 'Routine Description:'\r
 {\r
   EFI_STATUS  Status;\r
@@ -1648,6 +1475,23 @@ Returns:
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
+/**\r
+  Send ATA command into device with NON_DATA protocol\r
+\r
+  @param  IdeDev Standard IDE device private data structure\r
+  @param  AtaCommand The ATA command to be sent\r
+  @param  Device The value in Device register\r
+  @param  Feature The value in Feature register\r
+  @param  SectorCount The value in SectorCount register\r
+  @param  LbaLow The value in LBA_LOW register\r
+  @param  LbaMiddle The value in LBA_MIDDLE register\r
+  @param  LbaHigh The value in LBA_HIGH register\r
+\r
+  @retval  EFI_SUCCESS Reading succeed\r
+  @retval  EFI_ABORTED Command failed\r
+  @retval  EFI_DEVICE_ERROR Device status error\r
+\r
+**/\r
 EFI_STATUS\r
 AtaNonDataCommandIn (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
 EFI_STATUS\r
 AtaNonDataCommandIn (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
@@ -1659,30 +1503,6 @@ AtaNonDataCommandIn (
   IN  UINT8           LbaMiddle,\r
   IN  UINT8           LbaHigh\r
   )\r
   IN  UINT8           LbaMiddle,\r
   IN  UINT8           LbaHigh\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Send ATA command into device with NON_DATA protocol\r
-\r
-Arguments:\r
-\r
-  IdeDev      - Standard IDE device private data structure\r
-  AtaCommand  - The ATA command to be sent\r
-  Device      - The value in Device register\r
-  Feature     - The value in Feature register\r
-  SectorCount - The value in SectorCount register \r
-  LbaLow      - The value in LBA_LOW register\r
-  LbaMiddle   - The value in LBA_MIDDLE register\r
-  LbaHigh     - The value in LBA_HIGH register\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS      - Reading succeed\r
-  EFI_ABORTED      - Command failed\r
-  EFI_DEVICE_ERROR - Device status error\r
-\r
---*/\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       StatusRegister;\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       StatusRegister;\r
@@ -1743,6 +1563,21 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Send ATA Ext command into device with NON_DATA protocol\r
+\r
+  @param  IdeDev Standard IDE device private data structure\r
+  @param  AtaCommand The ATA command to be sent\r
+  @param  Device The value in Device register\r
+  @param  Feature The value in Feature register\r
+  @param  SectorCount The value in SectorCount register\r
+  @param  LbaAddress The LBA address in 48-bit mode\r
+\r
+  @retval  EFI_SUCCESS Reading succeed\r
+  @retval  EFI_ABORTED Command failed\r
+  @retval  EFI_DEVICE_ERROR Device status error\r
+\r
+**/\r
 EFI_STATUS\r
 AtaNonDataCommandInExt (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
 EFI_STATUS\r
 AtaNonDataCommandInExt (\r
   IN  IDE_BLK_IO_DEV  *IdeDev,\r
@@ -1752,28 +1587,6 @@ AtaNonDataCommandInExt (
   IN  UINT16          SectorCount,\r
   IN  EFI_LBA         LbaAddress\r
   )\r
   IN  UINT16          SectorCount,\r
   IN  EFI_LBA         LbaAddress\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Send ATA Ext command into device with NON_DATA protocol\r
-\r
-Arguments:\r
-\r
-  IdeDev      - Standard IDE device private data structure\r
-  AtaCommand  - The ATA command to be sent\r
-  Device      - The value in Device register\r
-  Feature     - The value in Feature register\r
-  SectorCount - The value in SectorCount register \r
-  LbaAddress - The LBA address in 48-bit mode\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS      - Reading succeed\r
-  EFI_ABORTED      - Command failed\r
-  EFI_DEVICE_ERROR - Device status error\r
-\r
---*/\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       StatusRegister;\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       StatusRegister;\r
@@ -1872,26 +1685,20 @@ Returns:
 //\r
 // SetDriveParameters\r
 //\r
 //\r
 // SetDriveParameters\r
 //\r
+/**\r
+  Set drive parameters for devices not support PACKETS command\r
+\r
+  @param[in] IdeDev       Standard IDE device private data structure\r
+  @param[in] DriveParameters The device parameters to be set into the disk\r
+\r
+  @return SetParameters Command execute status\r
+\r
+**/\r
 EFI_STATUS\r
 SetDriveParameters (\r
   IN IDE_BLK_IO_DEV       *IdeDev,\r
   IN ATA_DRIVE_PARMS      *DriveParameters\r
   )\r
 EFI_STATUS\r
 SetDriveParameters (\r
   IN IDE_BLK_IO_DEV       *IdeDev,\r
   IN ATA_DRIVE_PARMS      *DriveParameters\r
   )\r
-/*++\r
-Routine Description: \r
-\r
-  Set drive parameters for devices not support PACKETS command\r
-\r
-Arguments:\r
-\r
-  IdeDev       --  Standard IDE device private data structure\r
-  DriveParameters --  The device parameters to be set into the disk\r
-\r
-Returns:\r
-\r
-  SetParameters Command execute status\r
-    \r
---*/\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       DeviceSelect;\r
 {\r
   EFI_STATUS  Status;\r
   UINT8       DeviceSelect;\r
@@ -1932,25 +1739,18 @@ Returns:
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
-EFI_STATUS\r
-EnableInterrupt (\r
-  IN IDE_BLK_IO_DEV       *IdeDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
+/**\r
   TODO: Add function description\r
 \r
   TODO: Add function description\r
 \r
-Arguments:\r
-\r
-  IdeDev  - TODO: add argument description\r
+  @param  IdeDev TODO: add argument description\r
 \r
 \r
-Returns:\r
+  @retval  EFI_SUCCESS TODO: Add description for return value\r
 \r
 \r
-  EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
+**/\r
+EFI_STATUS\r
+EnableInterrupt (\r
+  IN IDE_BLK_IO_DEV       *IdeDev\r
+  )\r
 {\r
   UINT8 DeviceControl;\r
 \r
 {\r
   UINT8 DeviceControl;\r
 \r