]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h
IntelFrameworkModulePkg: Clean up source files
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / IsaFloppyDxe / IsaFloppy.h
index f60b146aa01c90358d384b9912e2cf6d2aa160c0..4fdaa64bdd39d390c4e59fb943da0c3b28183723 100644 (file)
@@ -1,41 +1,27 @@
-/*++\r
+/** @file\r
+  Include file for ISA Floppy Driver\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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+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
-Module Name:\r
+**/\r
 \r
-  IsaFloppy.h\r
+#ifndef _ISA_FLOPPY_H_\r
+#define _ISA_FLOPPY_H_\r
 \r
-Abstract:\r
+#include <Uefi.h>\r
 \r
-  Include for ISA Floppy Driver\r
-  Define the data structure and so on\r
-\r
-Revision History:\r
-\r
---*/\r
-\r
-#ifndef _ISA_FLOPPY_H\r
-#define _ISA_FLOPPY_H\r
-\r
-#include <PiDxe.h>\r
-#include <FrameworkPei.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
 #include <Protocol/BlockIo.h>\r
 #include <Protocol/IsaIo.h>\r
 #include <Protocol/DevicePath.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
+#include <Guid/StatusCodeDataTypeId.h>\r
+\r
 #include <Library/TimerLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
@@ -45,15 +31,10 @@ Revision History:
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/ReportStatusCodeLib.h>\r
-//\r
-// Driver Binding Externs\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gIsaFloppyComponentName;\r
+#include <Library/PcdLib.h>\r
+\r
+extern EFI_DRIVER_BINDING_PROTOCOL  gFdcControllerDriver;\r
 \r
-//\r
-// define some value\r
-//\r
 #define STALL_1_SECOND  1000000\r
 #define STALL_1_MSECOND 1000\r
 \r
@@ -65,18 +46,18 @@ extern EFI_COMPONENT_NAME_PROTOCOL gIsaFloppyComponentName;
 //\r
 // Internal Data Structures\r
 //\r
-#define FDC_BLK_IO_DEV_SIGNATURE            EFI_SIGNATURE_32 ('F', 'B', 'I', 'O')\r
-#define FLOPPY_CONTROLLER_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('F', 'D', 'C', 'C')\r
+#define FDC_BLK_IO_DEV_SIGNATURE            SIGNATURE_32 ('F', 'B', 'I', 'O')\r
+#define FLOPPY_CONTROLLER_CONTEXT_SIGNATURE SIGNATURE_32 ('F', 'D', 'C', 'C')\r
 \r
 typedef enum {\r
-  FDC_DISK0   = 0,\r
-  FDC_DISK1   = 1,\r
-  FDC_MAX_DISK= 2\r
+  FdcDisk0   = 0,\r
+  FdcDisk1   = 1,\r
+  FdcMaxDisk = 2\r
 } EFI_FDC_DISK;\r
 \r
 typedef struct {\r
   UINT32          Signature;\r
-  LIST_ENTRY  Link;\r
+  LIST_ENTRY      Link;\r
   BOOLEAN         FddResetPerformed;\r
   EFI_STATUS      FddResetStatus;\r
   BOOLEAN         NeedRecalibrate;\r
@@ -109,11 +90,11 @@ typedef struct {
 \r
 #define FDD_BLK_IO_FROM_THIS(a) CR (a, FDC_BLK_IO_DEV, BlkIo, FDC_BLK_IO_DEV_SIGNATURE)\r
 #define FLOPPY_CONTROLLER_FROM_LIST_ENTRY(a) \\r
-  CR (a, \\r
-      FLOPPY_CONTROLLER_CONTEXT, \\r
-      Link, \\r
-      FLOPPY_CONTROLLER_CONTEXT_SIGNATURE \\r
-      )\r
+          CR (a, \\r
+              FLOPPY_CONTROLLER_CONTEXT, \\r
+              Link, \\r
+              FLOPPY_CONTROLLER_CONTEXT_SIGNATURE \\r
+              )\r
 \r
 #define DISK_1440K_EOT            0x12\r
 #define DISK_1440K_GPL            0x1b\r
@@ -166,9 +147,9 @@ typedef struct {
   UINT8 Status0;\r
   UINT8 Status1;\r
   UINT8 Status2;\r
-  UINT8 C;\r
-  UINT8 H;\r
-  UINT8 S;\r
+  UINT8 Cylinder;\r
+  UINT8 Head;\r
+  UINT8 Sector;\r
   UINT8 Number;\r
 } FDD_RESULT_PACKET;\r
 \r
@@ -176,32 +157,31 @@ typedef struct {
 // FDC Registers\r
 //\r
 //\r
-// 0x3F2 Digital Output Register\r
+// Digital Output Register address offset\r
 //\r
 #define FDC_REGISTER_DOR  2\r
 \r
 //\r
-// 0x3F4 Main Status Register\r
+// Main Status Register address offset\r
 //\r
 #define FDC_REGISTER_MSR  4\r
 \r
 //\r
-// 0x3F5 Data Register\r
+// Data Register address offset\r
 //\r
 #define FDC_REGISTER_DTR  5\r
 \r
 //\r
-// 0x3F7 Configuration Control Register(data rate select)\r
+// Configuration Control Register(data rate select) address offset\r
 //\r
 #define FDC_REGISTER_CCR  7\r
 \r
 //\r
-// 0x3F7 Digital Input Register(diskchange)\r
+// Digital Input Register(diskchange) address offset\r
 //\r
 #define FDC_REGISTER_DIR  7\r
 \r
 \r
-\r
 //\r
 // FDC Register Bit Definitions\r
 //\r
@@ -496,66 +476,68 @@ typedef struct {
 //\r
 #define IC_ATRC 0xC0\r
 \r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gFdcControllerDriver;\r
-\r
 //\r
 // EFI Driver Binding Protocol Functions\r
 //\r
+\r
+/**\r
+  Test controller is a floppy disk drive device\r
+\r
+  @param[in] This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param[in] Controller           The handle of the controller to test.\r
+  @param[in] RemainingDevicePath  A pointer to the remaining portion of a device path.\r
+\r
+  @retval EFI_SUCCESS             The device is supported by this driver.\r
+  @retval EFI_ALREADY_STARTED     The device is already being managed by this driver.\r
+  @retval EFI_ACCESS_DENIED       The device is already being managed by a different driver\r
+                                  or an application that requires exclusive access.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FdcControllerDriverSupported (\r
   IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This                - GC_TODO: add argument description\r
-  Controller          - GC_TODO: add argument description\r
-  RemainingDevicePath - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+  );\r
+\r
+/**\r
+  Start this driver on Controller.\r
+\r
+  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param[in]  ControllerHandle     The handle of the controller to start. This handle\r
+                                   must support a protocol interface that supplies\r
+                                   an I/O abstraction to the driver.\r
+  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.\r
+                                   This parameter is ignored by device drivers, and is optional for bus drivers.\r
+\r
+  @retval EFI_SUCCESS              The device was started.\r
+  @retval EFI_DEVICE_ERROR         The device could not be started due to a device error.\r
+                                   Currently not implemented.\r
+  @retval EFI_OUT_OF_RESOURCES     The request could not be completed due to a lack of resources.\r
+  @retval Others                   The driver failded to start the device.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FdcControllerDriverStart (\r
   IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This                - GC_TODO: add argument description\r
-  Controller          - GC_TODO: add argument description\r
-  RemainingDevicePath - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+  );\r
+\r
+/**\r
+  Stop this driver on ControllerHandle.\r
+\r
+  @param[in]  This              A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param[in]  ControllerHandle  A handle to the device being stopped. The handle must\r
+                                support a bus specific I/O protocol for the driver\r
+                                to use to stop the device.\r
+  @param[in]  NumberOfChildren  The number of child device handles in ChildHandleBuffer.\r
+  @param[in]  ChildHandleBuffer An array of child handles to be freed. May be NULL\r
+                                if NumberOfChildren is 0.\r
+\r
+  @retval EFI_SUCCESS           The device was stopped.\r
+  @retval EFI_DEVICE_ERROR      The device could not be stopped due to a device error.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FdcControllerDriverStop (\r
@@ -563,420 +545,319 @@ FdcControllerDriverStop (
   IN EFI_HANDLE                   Controller,\r
   IN UINTN                        NumberOfChildren,\r
   IN EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This              - GC_TODO: add argument description\r
-  Controller        - GC_TODO: add argument description\r
-  NumberOfChildren  - GC_TODO: add argument description\r
-  ChildHandleBuffer - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  );\r
 \r
 //\r
 // EFI Block I/O Protocol Functions\r
 //\r
+\r
+/**\r
+  Reset the Floppy Logic Drive, call the FddReset function.\r
+\r
+  @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface\r
+  @param ExtendedVerification BOOLEAN: Indicate that the driver may perform a more\r
+                    exhaustive verification operation of the device during\r
+                    reset, now this par is ignored in this driver\r
+  @retval  EFI_SUCCESS:      The Floppy Logic Drive is reset\r
+  @retval  EFI_DEVICE_ERROR: The Floppy Logic Drive is not functioning correctly\r
+                      and can not be reset\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FdcReset (\r
   IN EFI_BLOCK_IO_PROTOCOL  *This,\r
   IN BOOLEAN                ExtendedVerification\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Flush block via fdd controller.\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This                  - GC_TODO: add argument description\r
-  ExtendedVerification  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param  This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface\r
+  @return EFI_SUCCESS\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FddFlushBlocks (\r
   IN EFI_BLOCK_IO_PROTOCOL  *This\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+  );\r
+\r
+/**\r
+  Read the requested number of blocks from the device.\r
+\r
+  @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface\r
+  @param MediaId UINT32:    The media id that the read request is for\r
+  @param  Lba EFI_LBA:     The starting logic block address to read from on the device\r
+  @param  BufferSize UINTN:  The size of the Buffer in bytes\r
+  @param  Buffer VOID *:     A pointer to the destination buffer for the data\r
+\r
+  @retval  EFI_SUCCESS:     The data was read correctly from the device\r
+  @retval  EFI_DEVICE_ERROR:The device reported an error while attempting to perform\r
+                     the read operation\r
+  @retval  EFI_NO_MEDIA:    There is no media in the device\r
+  @retval  EFI_MEDIA_CHANGED:   The MediaId is not for the current media\r
+  @retval  EFI_BAD_BUFFER_SIZE: The BufferSize parameter is not a multiple of the\r
+                         intrinsic block size of the device\r
+  @retval  EFI_INVALID_PARAMETER:The read request contains LBAs that are not valid,\r
+                          or the buffer is not on proper alignment\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FddReadBlocks (\r
   IN  EFI_BLOCK_IO_PROTOCOL  *This,\r
   IN  UINT32                 MediaId,\r
-  IN  EFI_LBA                LBA,\r
+  IN  EFI_LBA                Lba,\r
   IN  UINTN                  BufferSize,\r
   OUT VOID                   *Buffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This        - GC_TODO: add argument description\r
-  MediaId     - GC_TODO: add argument description\r
-  LBA         - GC_TODO: add argument description\r
-  BufferSize  - GC_TODO: add argument description\r
-  Buffer      - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+  );\r
+\r
+/**\r
+  Write a specified number of blocks to the device.\r
+\r
+  @param  This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface\r
+  @param  MediaId UINT32:    The media id that the write request is for\r
+  @param  Lba EFI_LBA:     The starting logic block address to be written\r
+  @param  BufferSize UINTN:  The size in bytes in Buffer\r
+  @param  Buffer VOID *:     A pointer to the source buffer for the data\r
+\r
+  @retval  EFI_SUCCESS:     The data were written correctly to the device\r
+  @retval  EFI_WRITE_PROTECTED: The device can not be written to\r
+  @retval  EFI_NO_MEDIA:    There is no media in the device\r
+  @retval  EFI_MEDIA_CHANGED:   The MediaId is not for the current media\r
+  @retval  EFI_DEVICE_ERROR:  The device reported an error while attempting to perform\r
+                       the write operation\r
+  @retval  EFI_BAD_BUFFER_SIZE: The BufferSize parameter is not a multiple of the\r
+                         intrinsic block size of the device\r
+  @retval  EFI_INVALID_PARAMETER:The write request contains LBAs that are not valid,\r
+                          or the buffer is not on proper alignment\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 FddWriteBlocks (\r
   IN EFI_BLOCK_IO_PROTOCOL  *This,\r
   IN UINT32                 MediaId,\r
-  IN EFI_LBA                LBA,\r
+  IN EFI_LBA                Lba,\r
   IN UINTN                  BufferSize,\r
   IN VOID                   *Buffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  This        - GC_TODO: add argument description\r
-  MediaId     - GC_TODO: add argument description\r
-  LBA         - GC_TODO: add argument description\r
-  BufferSize  - GC_TODO: add argument description\r
-  Buffer      - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  );\r
 \r
 //\r
 // Prototypes of internal functions\r
 //\r
-EFI_STATUS\r
-DiscoverFddDevice (\r
-  IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
 \r
-  GC_TODO: Add function description\r
+  Detect the floppy drive is presented or not.\r
 \r
-Arguments:\r
+  @param  FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV\r
+  @retval EFI_SUCCESS    Drive is presented\r
+  @retval EFI_NOT_FOUND  Drive is not presented\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
+**/\r
+EFI_STATUS\r
+DiscoverFddDevice (\r
+  IN FDC_BLK_IO_DEV  *FdcDev\r
+  );\r
 \r
-Returns:\r
+/**\r
 \r
-  GC_TODO: add return values\r
+  Do recalibrate  and see the drive is presented or not.\r
+  Set the media parameters.\r
 \r
---*/\r
-;\r
+  @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV\r
+  @return the drive is presented or not\r
 \r
+**/\r
 EFI_STATUS\r
 FddIdentify (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
 \r
-Arguments:\r
+  Reset the Floppy Logic Drive.\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
+  @param  FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS:    The Floppy Logic Drive is reset\r
+  @retval EFI_DEVICE_ERROR: The Floppy Logic Drive is not functioning correctly and\r
+                      can not be reset\r
 \r
+**/\r
 EFI_STATUS\r
 FddReset (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
 \r
-Arguments:\r
+  Turn the drive's motor on.\r
+  The drive's motor must be on before any command can be executed.\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
+  @param  FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:       Turn the drive's motor on successfully\r
+  @retval  EFI_DEVICE_ERROR:    The drive is busy, so can not turn motor on\r
+  @retval  EFI_INVALID_PARAMETER: Fail to Set timer(Cancel timer)\r
 \r
+**/\r
 EFI_STATUS\r
 MotorOn (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
 \r
-Arguments:\r
+  Set a Timer and when Timer goes off, turn the motor off.\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
 \r
-Returns:\r
+  @param  FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV\r
 \r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:       Set the Timer successfully\r
+  @retval  EFI_INVALID_PARAMETER: Fail to Set the timer\r
 \r
+**/\r
 EFI_STATUS\r
 MotorOff (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Detect the disk in the drive is changed or not.\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
 \r
+  @retval  EFI_SUCCESS:    No disk media change\r
+  @retval  EFI_DEVICE_ERROR: Fail to do the recalibrate or seek operation\r
+  @retval  EFI_NO_MEDIA:   No disk in the drive\r
+  @retval  EFI_MEDIA_CHANGED:  There is a new disk in the drive\r
+**/\r
 EFI_STATUS\r
 DisketChanged (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Do the Specify command, this command sets DMA operation\r
+  and the initial values for each of the three internal\r
+  times: HUT, SRT and HLT.\r
 \r
-  GC_TODO: add return values\r
+  @param FdcDev    Pointer to instance of FDC_BLK_IO_DEV\r
 \r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Execute the Specify command successfully\r
+  @retval  EFI_DEVICE_ERROR: Fail to execute the command\r
 \r
+**/\r
 EFI_STATUS\r
 Specify (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Set the head of floppy drive to track 0.\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @retval EFI_SUCCESS:    Execute the Recalibrate operation successfully\r
+  @retval EFI_DEVICE_ERROR: Fail to execute the Recalibrate operation\r
 \r
+**/\r
 EFI_STATUS\r
 Recalibrate (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Set the head of floppy drive to the new cylinder.\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param  Lba EFI_LBA     : The logic block address want to seek\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Execute the Seek operation successfully\r
+  @retval  EFI_DEVICE_ERROR: Fail to execute the Seek operation\r
 \r
+**/\r
 EFI_STATUS\r
 Seek (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN EFI_LBA         Lba\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Lba     - GC_TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Do the Sense Interrupt Status command, this command resets the interrupt signal.\r
 \r
-  GC_TODO: add return values\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param  StatusRegister0 UINT8 *: Be used to save Status Register 0 read from FDC\r
+  @param  PresentCylinderNumber  UINT8 *: Be used to save present cylinder number\r
+                                    read from FDC\r
 \r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Execute the Sense Interrupt Status command successfully\r
+  @retval  EFI_DEVICE_ERROR: Fail to execute the command\r
 \r
+**/\r
 EFI_STATUS\r
 SenseIntStatus (\r
   IN     FDC_BLK_IO_DEV  *FdcDev,\r
   IN OUT UINT8           *StatusRegister0,\r
   IN OUT UINT8           *PresentCylinderNumber\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Do the Sense Drive Status command.\r
 \r
-  GC_TODO: Add function description\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param  Lba EFI_LBA     : Logic block address\r
 \r
-Arguments:\r
-\r
-  FdcDev                - GC_TODO: add argument description\r
-  StatusRegister0       - GC_TODO: add argument description\r
-  PresentCylinderNumber - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Execute the Sense Drive Status command successfully\r
+  @retval  EFI_DEVICE_ERROR: Fail to execute the command\r
+  @retval  EFI_WRITE_PROTECTED:The disk is write protected\r
 \r
+**/\r
 EFI_STATUS\r
 SenseDrvStatus (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN EFI_LBA         Lba\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+  );\r
 \r
-  FdcDev  - GC_TODO: add argument description\r
-  Lba     - GC_TODO: add argument description\r
+/**\r
+  Update the disk media properties and if necessary reinstall Block I/O interface.\r
 \r
-Returns:\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
 \r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Do the operation successfully\r
+  @retval  EFI_DEVICE_ERROR: Fail to the operation\r
 \r
+**/\r
 EFI_STATUS\r
 DetectMedia (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-\r
-Returns:\r
+  );\r
 \r
-  GC_TODO: add return values\r
+/**\r
+  Set the data rate and so on.\r
 \r
---*/\r
-;\r
+  @param  FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
 \r
+  @retval EFI_SUCCESS success to set the data rate\r
+**/\r
 EFI_STATUS\r
 Setup (\r
   IN FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Read or Write a number of blocks in the same cylinder.\r
 \r
-  GC_TODO: Add function description\r
+  @param  FdcDev      A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param  HostAddress device address\r
+  @param  Lba         The starting logic block address to read from on the device\r
+  @param  NumberOfBlocks The number of block wanted to be read or write\r
+  @param  Read        Operation type: read or write\r
 \r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS Success operate\r
 \r
+**/\r
 EFI_STATUS\r
 ReadWriteDataSector (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
@@ -984,338 +865,229 @@ ReadWriteDataSector (
   IN EFI_LBA         Lba,\r
   IN UINTN           NumberOfBlocks,\r
   IN BOOLEAN         Read\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+  );\r
 \r
-  FdcDev          - GC_TODO: add argument description\r
-  HostAddress     - GC_TODO: add argument description\r
-  Lba             - GC_TODO: add argument description\r
-  NumberOfBlocks  - GC_TODO: add argument description\r
-  Read            - GC_TODO: add argument description\r
+/**\r
+  Fill in FDD command's parameter.\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param FdcDev   Pointer to instance of FDC_BLK_IO_DEV\r
+  @param Lba      The starting logic block address to read from on the device\r
+  @param Command  FDD command\r
 \r
+**/\r
 VOID\r
 FillPara (\r
   IN FDC_BLK_IO_DEV       *FdcDev,\r
   IN EFI_LBA              Lba,\r
   IN FDD_COMMAND_PACKET1  *Command\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Lba     - GC_TODO: add argument description\r
-  Command - GC_TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Read result byte from Data Register of FDC.\r
 \r
-  GC_TODO: add return values\r
+  @param FdcDev   Pointer to instance of FDC_BLK_IO_DEV\r
+  @param Pointer  Buffer to store the byte read from FDC\r
 \r
---*/\r
-;\r
+  @retval EFI_SUCCESS       Read result byte from FDC successfully\r
+  @retval EFI_DEVICE_ERROR  The FDC is not ready to be read\r
 \r
+**/\r
 EFI_STATUS\r
 DataInByte (\r
-  IN FDC_BLK_IO_DEV  *FdcDev,\r
-  IN UINT8           *Pointer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Pointer - GC_TODO: add argument description\r
+  IN  FDC_BLK_IO_DEV  *FdcDev,\r
+  OUT UINT8           *Pointer\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Write command byte to Data Register of FDC.\r
 \r
-  GC_TODO: add return values\r
+  @param FdcDev  Pointer to instance of FDC_BLK_IO_DEV\r
+  @param Pointer Be used to save command byte written to FDC\r
 \r
---*/\r
-;\r
+  @retval  EFI_SUCCESS:    Write command byte to FDC successfully\r
+  @retval  EFI_DEVICE_ERROR: The FDC is not ready to be written\r
 \r
+**/\r
 EFI_STATUS\r
 DataOutByte (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN UINT8           *Pointer\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Detect the specified floppy logic drive is busy or not within a period of time.\r
 \r
-  GC_TODO: Add function description\r
+  @param FdcDev           Indicate it is drive A or drive B\r
+  @param Timeout          The time period for waiting\r
 \r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Pointer - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS:  The drive and command are not busy\r
+  @retval EFI_TIMEOUT:  The drive or command is still busy after a period time that\r
+                        set by Timeout\r
 \r
+**/\r
 EFI_STATUS\r
 FddWaitForBSYClear (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
-  IN UINTN           TimeoutInSeconds\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  IN UINTN           Timeout\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Determine whether FDC is ready to write or read.\r
 \r
-  FdcDev            - GC_TODO: add argument description\r
-  TimeoutInSeconds  - GC_TODO: add argument description\r
+  @param  FdcDev Pointer to instance of FDC_BLK_IO_DEV\r
+  @param  Dio BOOLEAN:      Indicate the FDC is waiting to write or read\r
+  @param  Timeout           The time period for waiting\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS:  FDC is ready to write or read\r
+  @retval EFI_NOT_READY:  FDC is not ready within the specified time period\r
 \r
+**/\r
 EFI_STATUS\r
 FddDRQReady (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN BOOLEAN         Dio,\r
-  IN UINTN           TimeoutInSeconds\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  IN UINTN           Timeout\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Set FDC control structure's attribute according to result.\r
 \r
-  FdcDev            - GC_TODO: add argument description\r
-  Dio               - GC_TODO: add argument description\r
-  TimeoutInSeconds  - GC_TODO: add argument description\r
+  @param Result  Point to result structure\r
+  @param FdcDev  FDC control structure\r
 \r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_SUCCESS - GC_TODO: Add description for return value\r
 \r
+**/\r
 EFI_STATUS\r
 CheckResult (\r
   IN     FDD_RESULT_PACKET  *Result,\r
   IN OUT FDC_BLK_IO_DEV     *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
+  Check the drive status information.\r
 \r
-Arguments:\r
+  @param StatusRegister3  the value of Status Register 3\r
 \r
-  Result  - GC_TODO: add argument description\r
-  FdcDev  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS           The disk is not write protected\r
+  @retval EFI_WRITE_PROTECTED:  The disk is write protected\r
 \r
+**/\r
 EFI_STATUS\r
 CheckStatus3 (\r
   IN UINT8 StatusRegister3\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+  );\r
 \r
-  StatusRegister3 - GC_TODO: add argument description\r
+/**\r
+  Calculate the number of block in the same cylinder according to Lba.\r
 \r
-Returns:\r
+  @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param Lba EFI_LBA:      The starting logic block address\r
+  @param NumberOfBlocks UINTN: The number of blocks\r
 \r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @return The number of blocks in the same cylinder which the starting\r
+        logic block address is Lba\r
 \r
+**/\r
 UINTN\r
 GetTransferBlockCount (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
-  IN EFI_LBA         LBA,\r
+  IN EFI_LBA         Lba,\r
   IN UINTN           NumberOfBlocks\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev          - GC_TODO: add argument description\r
-  LBA             - GC_TODO: add argument description\r
-  NumberOfBlocks  - GC_TODO: add argument description\r
-\r
-Returns:\r
+  );\r
 \r
-  GC_TODO: add return values\r
+/**\r
+  When the Timer(2s) off, turn the drive's motor off.\r
 \r
---*/\r
-;\r
+  @param Event EFI_EVENT: Event(the timer) whose notification function is being\r
+                     invoked\r
+  @param Context VOID *:  Pointer to the notification function's context\r
 \r
+**/\r
 VOID\r
 EFIAPI\r
 FddTimerProc (\r
   IN EFI_EVENT  Event,\r
   IN VOID       *Context\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  Read I/O port for FDC.\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Event   - GC_TODO: add argument description\r
-  Context - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param Offset The offset address of port\r
 \r
+**/\r
 UINT8\r
 FdcReadPort (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN UINT32          Offset\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
+  Write I/O port for FDC.\r
 \r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Offset  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV\r
+  @param Offset The offset address of port\r
+  @param Data   Value written to port\r
 \r
+**/\r
 VOID\r
 FdcWritePort (\r
   IN FDC_BLK_IO_DEV  *FdcDev,\r
   IN UINT32          Offset,\r
   IN UINT8           Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-  Offset  - GC_TODO: add argument description\r
-  Data    - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+  );\r
+\r
+/**\r
+  Read or Write a number of blocks to floppy device.\r
+\r
+  @param This     Pointer to instance of EFI_BLOCK_IO_PROTOCOL\r
+  @param MediaId  The media id of read/write request\r
+  @param Lba      The starting logic block address to read from on the device\r
+  @param BufferSize The size of the Buffer in bytes\r
+  @param Operation   - GC_TODO: add argument description\r
+  @param Buffer      - GC_TODO: add argument description\r
+\r
+  @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value\r
+  @retval EFI_SUCCESS - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_NO_MEDIA - GC_TODO: Add description for return value\r
+  @retval EFI_MEDIA_CHANGED - GC_TODO: Add description for return value\r
+  @retval EFI_WRITE_PROTECTED - GC_TODO: Add description for return value\r
+  @retval EFI_BAD_BUFFER_SIZE - GC_TODO: Add description for return value\r
+  @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value\r
+  @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value\r
+  @retval EFI_SUCCESS - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value\r
+  @retval EFI_SUCCESS - GC_TODO: Add description for return value\r
+\r
+**/\r
 EFI_STATUS\r
 FddReadWriteBlocks (\r
   IN  EFI_BLOCK_IO_PROTOCOL  *This,\r
   IN  UINT32                 MediaId,\r
-  IN  EFI_LBA                LBA,\r
+  IN  EFI_LBA                Lba,\r
   IN  UINTN                  BufferSize,\r
   IN  BOOLEAN                Operation,\r
   OUT VOID                   *Buffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  GC_TODO: Add function description\r
+/**\r
+  Common interface for free cache.\r
 \r
-Arguments:\r
-\r
-  This        - GC_TODO: add argument description\r
-  MediaId     - GC_TODO: add argument description\r
-  LBA         - GC_TODO: add argument description\r
-  BufferSize  - GC_TODO: add argument description\r
-  Operation   - GC_TODO: add argument description\r
-  Buffer      - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  @param FdcDev  Pointer of FDC_BLK_IO_DEV instance\r
 \r
+**/\r
 VOID\r
 FdcFreeCache (\r
   IN    FDC_BLK_IO_DEV  *FdcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  FdcDev  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
---*/\r
-;\r
+  );\r
 \r
 #endif\r
+\r