]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/Console/VgaClassDxe/VgaClass.h
IntelFrameworkModulePkg: Clean up source files
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / Console / VgaClassDxe / VgaClass.h
index 33d870fc709c39de480881cfcab91b057023e358..84a8b1797862b9b8a0bacc80ecbc49efa46c0fbd 100644 (file)
@@ -1,24 +1,23 @@
-/**@file\r
+/** @file\r
+  Internal include file of the VGA Class Driver.\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
+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
 \r
 **/\r
 \r
 \r
-#ifndef _VGA_CLASS_H\r
-#define _VGA_CLASS_H\r
+#ifndef _VGA_CLASS_H__\r
+#define _VGA_CLASS_H__\r
 \r
-#include <PiDxe.h>\r
 #include <FrameworkDxe.h>\r
 \r
-#include <Protocol/SimpleTextIn.h>\r
 #include <Protocol/SimpleTextOut.h>\r
 #include <Protocol/PciIo.h>\r
 #include <Protocol/VgaMiniPort.h>\r
@@ -26,17 +25,29 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/BaseLib.h>\r
 #include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/ReportStatusCodeLib.h>\r
 \r
+#include <IndustryStandard/Pci.h>\r
+\r
+//\r
+// Global Variables\r
+//\r
+extern EFI_DRIVER_BINDING_PROTOCOL   gVgaClassDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL   gVgaClassComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL  gVgaClassComponentName2;\r
 \r
-#include <IndustryStandard/Pci22.h>\r
-#include "ComponentName.h"\r
-#include <Protocol/VgaMiniPort.h>\r
+\r
+//\r
+// Structure for tuple containing mapping among uniocde, PC Ansi and ASCII code.\r
+//\r
+typedef struct {\r
+  CHAR16  Unicode;\r
+  CHAR8   PcAnsi;\r
+  CHAR8   Ascii;\r
+} UNICODE_TO_CHAR;\r
 \r
 //\r
 // VGA specific registers\r
@@ -55,326 +66,419 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define VGA_CLASS_DEV_SIGNATURE SIGNATURE_32 ('V', 'G', 'A', 'C')\r
 \r
 typedef struct {\r
-  UINTN                         Signature;\r
-  EFI_HANDLE                    Handle;\r
+  UINTN                            Signature;\r
+  EFI_HANDLE                       Handle;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  SimpleTextOut;\r
-  EFI_SIMPLE_TEXT_OUTPUT_MODE   SimpleTextOutputMode;\r
-  EFI_VGA_MINI_PORT_PROTOCOL    *VgaMiniPort;\r
-  EFI_PCI_IO_PROTOCOL           *PciIo;\r
-  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;\r
+  EFI_SIMPLE_TEXT_OUTPUT_MODE      SimpleTextOutputMode;\r
+  EFI_VGA_MINI_PORT_PROTOCOL       *VgaMiniPort;\r
+  EFI_PCI_IO_PROTOCOL              *PciIo;\r
+  EFI_DEVICE_PATH_PROTOCOL         *DevicePath;\r
 } VGA_CLASS_DEV;\r
 \r
 #define VGA_CLASS_DEV_FROM_THIS(a)  CR (a, VGA_CLASS_DEV, SimpleTextOut, VGA_CLASS_DEV_SIGNATURE)\r
 \r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gVgaClassDriverBinding;\r
-\r
 //\r
 // Driver Binding Protocol functions\r
 //\r
-EFI_STATUS\r
-EFIAPI\r
-VgaClassDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL   *This,\r
-  IN EFI_HANDLE                    Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath\r
-  )\r
+\r
 /**\r
+  Tests to see if this driver supports a given controller.\r
+\r
+  This function implments EFI_DRIVER_BINDING_PROTOCOL.Supported().\r
+  It Checks if this driver supports the controller specified. Any Controller\r
+  with VgaMiniPort Protocol and Pci I/O protocol can be supported.\r
 \r
-Routine Description:\r
+  @param  This                A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param  ControllerHandle    Handle of device to test\r
+  @param  RemainingDevicePath Optional parameter use to pick a specific child\r
+                              device to start.\r
 \r
-  GC_TODO: Add function description\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval EFI_ALREADY_STARTED This driver is already running on this device.\r
+  @retval EFI_UNSUPPORTED     This driver does not support this device.\r
 \r
-Arguments:\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+VgaClassDriverBindingSupported (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL\r
+  );\r
 \r
-  This                - GC_TODO: add argument description\r
-  Controller          - GC_TODO: add argument description\r
-  RemainingDevicePath - GC_TODO: add argument description\r
+/**\r
+  Starts the device controller.\r
 \r
-Returns:\r
+  This function implments EFI_DRIVER_BINDING_PROTOCOL.Start().\r
+  It starts the device specified by Controller with the driver based on PCI I/O Protocol\r
+  and VgaMiniPort Protocol. It creates context for device instance and install EFI_SIMPLE_TEXT_OUT_PROTOCOL.\r
 \r
-  GC_TODO: add return values\r
+  @param  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param  ControllerHandle     Handle of device to bind driver to\r
+  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
+                               device to start.\r
 \r
-**/\r
-;\r
+  @retval EFI_SUCCESS          The device was started.\r
+  @retval other                Fail to start the device.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassDriverBindingStart (\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
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL\r
+  );\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Starts the device controller.\r
 \r
-  This                - GC_TODO: add argument description\r
-  Controller          - GC_TODO: add argument description\r
-  RemainingDevicePath - GC_TODO: add argument description\r
+  This function implments EFI_DRIVER_BINDING_PROTOCOL.Stop().\r
+  It stops this driver on Controller. Support stopping any child handles\r
+  created by this driver.\r
 \r
-Returns:\r
+  @param  This              A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.\r
+  @param  ControllerHandle  A handle to the device being stopped.\r
+  @param  NumberOfChildren  The number of child device handles in ChildHandleBuffer.\r
+  @param  ChildHandleBuffer An array of child handles to be freed.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassDriverBindingStop (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN  EFI_HANDLE                   Controller,\r
-  IN  UINTN                        NumberOfChildren,\r
-  IN  EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-/**\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
+  IN  EFI_HANDLE                      Controller,\r
+  IN  UINTN                           NumberOfChildren,\r
+  IN  EFI_HANDLE                      *ChildHandleBuffer OPTIONAL\r
+  );\r
 \r
-Arguments:\r
+//\r
+// EFI Component Name Functions\r
+//\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
+  Retrieves a Unicode string that is the user readable name of the driver.\r
+\r
+  This function retrieves the user readable name of a driver in the form of a\r
+  Unicode string. If the driver specified by This has a user readable name in\r
+  the language specified by Language, then a pointer to the driver name is\r
+  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
+  by This does not support the language specified by Language,\r
+  then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+  @param  Language              A pointer to a Null-terminated ASCII string\r
+                                array indicating the language. This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                languages specified in SupportedLanguages. The\r
+                                number of languages supported by a driver is up\r
+                                to the driver writer. Language is specified\r
+                                in RFC 4646 or ISO 639-2 language code format.\r
+  @param  DriverName            A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                driver specified by This in the language\r
+                                specified by Language.\r
+\r
+  @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
+                                This and the language specified by Language was\r
+                                returned in DriverName.\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+  @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
 \r
-Returns:\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+VgaClassComponentNameGetDriverName (\r
+  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,\r
+  IN  CHAR8                        *Language,\r
+  OUT CHAR16                       **DriverName\r
+  );\r
 \r
-  GC_TODO: add return values\r
+/**\r
+  Retrieves a Unicode string that is the user readable name of the controller\r
+  that is being managed by a driver.\r
+\r
+  This function retrieves the user readable name of the controller specified by\r
+  ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
+  driver specified by This has a user readable name in the language specified by\r
+  Language, then a pointer to the controller name is returned in ControllerName,\r
+  and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
+  managing the controller specified by ControllerHandle and ChildHandle,\r
+  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
+  support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+  @param  ControllerHandle      The handle of a controller that the driver\r
+                                specified by This is managing.  This handle\r
+                                specifies the controller whose name is to be\r
+                                returned.\r
+  @param  ChildHandle           The handle of the child controller to retrieve\r
+                                the name of.  This is an optional parameter that\r
+                                may be NULL.  It will be NULL for device\r
+                                drivers.  It will also be NULL for a bus drivers\r
+                                that wish to retrieve the name of the bus\r
+                                controller.  It will not be NULL for a bus\r
+                                driver that wishes to retrieve the name of a\r
+                                child controller.\r
+  @param  Language              A pointer to a Null-terminated ASCII string\r
+                                array indicating the language.  This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                languages specified in SupportedLanguages. The\r
+                                number of languages supported by a driver is up\r
+                                to the driver writer. Language is specified in\r
+                                RFC 4646 or ISO 639-2 language code format.\r
+  @param  ControllerName        A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                controller specified by ControllerHandle and\r
+                                ChildHandle in the language specified by\r
+                                Language from the point of view of the driver\r
+                                specified by This.\r
+\r
+  @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
+                                the language specified by Language for the\r
+                                driver specified by This was returned in\r
+                                DriverName.\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
+  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
+                                EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+  @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
+  @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
+                                managing the controller specified by\r
+                                ControllerHandle and ChildHandle.\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
 \r
 **/\r
-;\r
+EFI_STATUS\r
+EFIAPI\r
+VgaClassComponentNameGetControllerName (\r
+  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
+  IN  EFI_HANDLE                                      ControllerHandle,\r
+  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
+  IN  CHAR8                                           *Language,\r
+  OUT CHAR16                                          **ControllerName\r
+  );\r
 \r
 //\r
 // Simple Text Output Protocol functions\r
 //\r
-EFI_STATUS\r
-EFIAPI\r
-VgaClassReset (\r
-  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  BOOLEAN                      ExtendedVerification\r
-  )\r
 /**\r
+  Resets the text output device hardware.\r
+\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset().\r
+  It resets the text output device hardware. The cursor position is set to (0, 0),\r
+  and the screen is cleared to the default background color for the output device.\r
 \r
-Routine Description:\r
+  @param  This                 Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  ExtendedVerification Indicates that the driver may perform a more exhaustive\r
+                               verification operation of the device during reset.\r
 \r
-  GC_TODO: Add function description\r
+  @retval EFI_SUCCESS          The text output device was reset.\r
+  @retval EFI_DEVICE_ERROR     The text output device is not functioning correctly and could not be reset.\r
 \r
-Arguments:\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+VgaClassReset (\r
+  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL     *This,\r
+  IN  BOOLEAN                             ExtendedVerification\r
+  );\r
 \r
-  This                  - GC_TODO: add argument description\r
-  ExtendedVerification  - GC_TODO: add argument description\r
+/**\r
+  Writes a Unicode string to the output device.\r
 \r
-Returns:\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString().\r
+  It writes a Unicode string to the output device. This is the most basic output mechanism\r
+  on an output device.\r
 \r
-  GC_TODO: add return values\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  String                 The Null-terminated Unicode string to be displayed on the output device(s).\r
 \r
+  @retval EFI_SUCCESS            The string was output to the device.\r
+  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to output the text.\r
+  @retval EFI_UNSUPPORTED        The output device's mode is not currently in a defined text mode.\r
+  @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the characters in\r
+                                 the Unicode string could not be rendered and were skipped.\r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassOutputString (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  CHAR16                       *WString\r
-  )\r
-/**\r
-\r
-Routine Description:\r
+  IN  CHAR16                          *String\r
+  );\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Verifies that all characters in a Unicode string can be output to the target device.\r
 \r
-  This    - GC_TODO: add argument description\r
-  WString - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.TestString().\r
+  It verifies that all characters in a Unicode string can be output to the target device.\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  String                 The Null-terminated Unicode string to be examined for the output device(s).\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS            The device(s) are capable of rendering the output string.\r
+  @retval EFI_UNSUPPORTED        Some of the characters in the Unicode string cannot be rendered by\r
+                                 one or more of the output devices mapped by the EFI handle.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassTestString (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  CHAR16                       *WString\r
-  )\r
-/**\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  IN  CHAR16                          *String\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Clears the output device(s) display to the currently selected background color.\r
 \r
-  This    - GC_TODO: add argument description\r
-  WString - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.ClearScreen().\r
+  The ClearScreen() function clears the output device(s) display to the currently\r
+  selected background color. The cursor position is set to (0, 0).\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCESS             The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request.\r
+  @retval EFI_UNSUPPORTED        The output device is not in a valid text mode.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassClearScreen (\r
-  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
-  )\r
-/**\r
+  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This\r
+  );\r
 \r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Sets the background and foreground colors for theOutputString() and ClearScreen() functions.\r
 \r
-  This  - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute().\r
+  It sets the background and foreground colors for the OutputString() and ClearScreen() functions.\r
+  The color mask can be set even when the device is in an invalid text mode.\r
+  Devices supporting a different number of text colors are required to emulate the above colors\r
+  to the best of the device's capabilities.\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  Attribute              The attribute to set.\r
+                                 Bits 0..3 are the foreground color,\r
+                                 and bits 4..6 are the background color.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS            The requested attributes were set.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassSetAttribute (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  UINTN                        Attribute\r
-  )\r
-/**\r
-\r
-Routine Description:\r
+  IN  UINTN                           Attribute\r
+  );\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Sets the current coordinates of the cursor position.\r
 \r
-  This      - GC_TODO: add argument description\r
-  Attribute - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition().\r
+  It sets the current coordinates of the cursor position.\r
+  The upper left corner of the screen is defined as coordinate (0, 0).\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  Column                 Column of position to set the cursor to.\r
+  @param  Row                    Row of position to set the cursor to.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS            The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request.\r
+  @retval EFI_UNSUPPORTED        The output device is not in a valid text mode, or the cursor\r
+                                 position is invalid for the current mode.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassSetCursorPosition (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  UINTN                        Column,\r
-  IN  UINTN                        Row\r
-  )\r
-/**\r
-\r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
+  IN  UINTN                           Column,\r
+  IN  UINTN                           Row\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Makes the cursor visible or invisible.\r
 \r
-  This    - GC_TODO: add argument description\r
-  Column  - GC_TODO: add argument description\r
-  Row     - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.EnableCursor().\r
+  It makes the cursor visible or invisible.\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  Visible                If TRUE, the cursor is set to be visible.\r
+                                 If FALSE, the cursor is set to be invisible.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCESS             The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request or the\r
+                                 device does not support changing the cursor mode.\r
+  @retval EFI_UNSUPPORTED        The output device does not support visibility control of the cursor.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassEnableCursor (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  BOOLEAN                      Visible\r
-  )\r
-/**\r
+  IN  BOOLEAN                         Visible\r
+  );\r
 \r
-Routine Description:\r
-\r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Returns information for an available text mode that the output device(s) supports.\r
 \r
-  This    - GC_TODO: add argument description\r
-  Visible - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.QueryMode().\r
+  It returns information for an available text mode that the output device(s) supports.\r
+  It is required that all output devices support at least 80x25 text mode. This mode is defined to be mode 0.\r
+  If the output devices support 80x50, that is defined to be mode 1.\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber             The mode number to return information on.\r
+  @param  Columns                Columen in current mode number\r
+  @param  Rows                   Row in current mode number.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS            The requested mode information was returned.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request.\r
+  @retval EFI_UNSUPPORTED        The mode number was not valid.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassQueryMode (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  UINTN                        ModeNumber,\r
-  OUT UINTN                        *Columns,\r
-  OUT UINTN                        *Rows\r
-  )\r
-/**\r
-\r
-Routine Description:\r
+  IN  UINTN                           ModeNumber,\r
+  OUT UINTN                           *Columns,\r
+  OUT UINTN                           *Rows\r
+  );\r
 \r
-  GC_TODO: Add function description\r
-\r
-Arguments:\r
+/**\r
+  Sets the output device(s) to a specified mode.\r
 \r
-  This        - GC_TODO: add argument description\r
-  ModeNumber  - GC_TODO: add argument description\r
-  Columns     - GC_TODO: add argument description\r
-  Rows        - GC_TODO: add argument description\r
+  This function implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.QueryMode().\r
+  It sets the output device(s) to the requested mode.\r
+  On success the device is in the geometry for the requested mode,\r
+  and the device has been cleared to the current background color with the cursor at (0,0).\r
 \r
-Returns:\r
+  @param  This                   Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber             The text mode to set.\r
 \r
-  GC_TODO: add return values\r
+  @retval EFI_SUCCESS            The requested text mode was set.\r
+  @retval EFI_DEVICE_ERROR       The device had an error and could not complete the request.\r
+  @retval EFI_UNSUPPORTED        The mode number was not valid.\r
 \r
 **/\r
-;\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 VgaClassSetMode (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
-  IN  UINTN                        ModeNumber\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
-  ModeNumber  - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
-  GC_TODO: add return values\r
-\r
-**/\r
-;\r
+  IN  UINTN                           ModeNumber\r
+  );\r
 \r
 #endif\r