]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
Update the copyright notice format
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
index 40bafdf6d23cd83a2f08f132d4f24b10c9688ba3..1ab8264d8e5421fc1033a19ae3246682ad25089e 100644 (file)
@@ -1,8 +1,8 @@
-/**@file\r
+/** @file\r
   Private data structures for the Console Splitter driver\r
 \r
-Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2009, 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
@@ -15,21 +15,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _CON_SPLITTER_H_\r
 #define _CON_SPLITTER_H_\r
 \r
-#include <PiDxe.h>\r
-#include <Guid/PrimaryStandardErrorDevice.h>\r
-#include <Guid/PrimaryConsoleOutDevice.h>\r
-#include <Protocol/GraphicsOutput.h>\r
-#include <Guid/PrimaryConsoleInDevice.h>\r
+#include <Uefi.h>\r
+\r
+#include <Protocol/DevicePath.h>\r
+#include <Protocol/ComponentName.h>\r
+#include <Protocol/DriverBinding.h>\r
 #include <Protocol/SimplePointer.h>\r
 #include <Protocol/AbsolutePointer.h>\r
 #include <Protocol/SimpleTextOut.h>\r
-#include <Guid/ConsoleInDevice.h>\r
 #include <Protocol/SimpleTextIn.h>\r
 #include <Protocol/SimpleTextInEx.h>\r
-#include <Protocol/ConsoleControl.h>\r
+#include <Protocol/GraphicsOutput.h>\r
+#include <Protocol/UgaDraw.h>\r
+\r
+#include <Guid/ConsoleInDevice.h>\r
 #include <Guid/StandardErrorDevice.h>\r
 #include <Guid/ConsoleOutDevice.h>\r
-#include <Protocol/UgaDraw.h>\r
+\r
 #include <Library/PcdLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
@@ -38,6 +40,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/UefiRuntimeServicesTableLib.h>\r
+\r
 \r
 //\r
 // Driver Binding Externs\r
@@ -48,6 +52,7 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;
 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterSimplePointerDriverBinding;\r
 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName;\r
 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterAbsolutePointerDriverBinding;\r
 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterAbsolutePointerComponentName;\r
 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterConOutDriverBinding;\r
@@ -57,10 +62,11 @@ extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterStdErrDriverBinding;
 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName;\r
 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
 \r
-extern EFI_GUID                     gSimpleTextInExNotifyGuid;\r
 \r
+//\r
 // These definitions were in the old Hii protocol, but are not in the new UEFI\r
 // version. So they are defined locally.\r
+//\r
 #define UNICODE_NARROW_CHAR   0xFFF0\r
 #define UNICODE_WIDE_CHAR     0xFFF1\r
 \r
@@ -70,20 +76,24 @@ extern EFI_GUID                     gSimpleTextInExNotifyGuid;
 //\r
 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT  32\r
 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT     32\r
-#define MAX_STD_IN_PASSWORD                   80\r
+\r
 \r
 typedef struct {\r
-  UINTN Columns;\r
-  UINTN Rows;\r
+  UINTN   Column;\r
+  UINTN   Row;\r
+} CONSOLE_OUT_MODE;\r
+\r
+typedef struct {\r
+  UINTN   Columns;\r
+  UINTN   Rows;\r
 } TEXT_OUT_SPLITTER_QUERY_DATA;\r
 \r
-//\r
-// Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter\r
-//\r
-#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
 \r
-#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'n')\r
+#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE    SIGNATURE_32 ('T', 'i', 'S', 'n')\r
 \r
+//\r
+// Private data for Text In Ex Splitter Notify\r
+//\r
 typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {\r
   UINTN                                 Signature;\r
   EFI_HANDLE                            *NotifyHandleList;\r
@@ -93,149 +103,140 @@ typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {
   LIST_ENTRY                            NotifyEntry;\r
 } TEXT_IN_EX_SPLITTER_NOTIFY;\r
 \r
+#define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a)  \\r
+  CR ((a),                                       \\r
+      TEXT_IN_EX_SPLITTER_NOTIFY,                \\r
+      NotifyEntry,                               \\r
+      TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE       \\r
+      )\r
+\r
+#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')\r
+\r
+//\r
+// Private data for the Console In splitter\r
+//\r
 typedef struct {\r
-  UINT64                         Signature;\r
-  EFI_HANDLE                     VirtualHandle;\r
-\r
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
-  UINTN                          CurrentNumberOfConsoles;\r
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
-  UINTN                          TextInListCount;\r
-\r
-  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
-  UINTN                             CurrentNumberOfExConsoles;\r
-  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
-  UINTN                             TextInExListCount;\r
-  LIST_ENTRY                        NotifyList;    \r
-\r
-\r
-  EFI_SIMPLE_POINTER_PROTOCOL    SimplePointer;\r
-  EFI_SIMPLE_POINTER_MODE        SimplePointerMode;\r
-  UINTN                          CurrentNumberOfPointers;\r
-  EFI_SIMPLE_POINTER_PROTOCOL    **PointerList;\r
-  UINTN                          PointerListCount;\r
-\r
-  EFI_ABSOLUTE_POINTER_PROTOCOL         AbsolutePointer;\r
-  EFI_ABSOLUTE_POINTER_MODE             AbsolutePointerMode;\r
-  UINTN                                                         CurrentNumberOfAbsolutePointers;\r
-  EFI_ABSOLUTE_POINTER_PROTOCOL         **AbsolutePointerList;\r
-  UINTN                                                         AbsolutePointerListCount;\r
-  BOOLEAN                                               AbsoluteInputEventSignalState; \r
-\r
-  BOOLEAN                        PasswordEnabled;\r
-  CHAR16                         Password[MAX_STD_IN_PASSWORD];\r
-  UINTN                          PwdIndex;\r
-  CHAR16                         PwdAttempt[MAX_STD_IN_PASSWORD];\r
-  EFI_EVENT                      LockEvent;\r
-\r
-  BOOLEAN                        KeyEventSignalState;\r
-  BOOLEAN                        InputEventSignalState;\r
+  UINT64                             Signature;\r
+  EFI_HANDLE                         VirtualHandle;\r
+\r
+  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     TextIn;\r
+  UINTN                              CurrentNumberOfConsoles;\r
+  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     **TextInList;\r
+  UINTN                              TextInListCount;\r
+\r
+  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  TextInEx;\r
+  UINTN                              CurrentNumberOfExConsoles;\r
+  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  **TextInExList;\r
+  UINTN                              TextInExListCount;\r
+  LIST_ENTRY                         NotifyList;\r
+\r
+\r
+  EFI_SIMPLE_POINTER_PROTOCOL        SimplePointer;\r
+  EFI_SIMPLE_POINTER_MODE            SimplePointerMode;\r
+  UINTN                              CurrentNumberOfPointers;\r
+  EFI_SIMPLE_POINTER_PROTOCOL        **PointerList;\r
+  UINTN                              PointerListCount;\r
+\r
+  EFI_ABSOLUTE_POINTER_PROTOCOL      AbsolutePointer;\r
+  EFI_ABSOLUTE_POINTER_MODE          AbsolutePointerMode;\r
+  UINTN                              CurrentNumberOfAbsolutePointers;\r
+  EFI_ABSOLUTE_POINTER_PROTOCOL      **AbsolutePointerList;\r
+  UINTN                              AbsolutePointerListCount;\r
+  BOOLEAN                            AbsoluteInputEventSignalState;\r
+\r
+  BOOLEAN                            KeyEventSignalState;\r
+  BOOLEAN                            InputEventSignalState;\r
 } TEXT_IN_SPLITTER_PRIVATE_DATA;\r
 \r
 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
-  CR ((a),                                            \\r
+  CR ((a),                                          \\r
       TEXT_IN_SPLITTER_PRIVATE_DATA,                \\r
       TextIn,                                       \\r
       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE       \\r
       )\r
 \r
 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
-  CR ((a),                                                          \\r
+  CR ((a),                                                        \\r
       TEXT_IN_SPLITTER_PRIVATE_DATA,                              \\r
       SimplePointer,                                              \\r
       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE                     \\r
       )\r
 #define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
-  CR (a, \\r
-      TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
-      TextInEx, \\r
-      TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
+  CR (a,                                              \\r
+      TEXT_IN_SPLITTER_PRIVATE_DATA,                  \\r
+      TextInEx,                                       \\r
+      TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE         \\r
       )\r
 \r
 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \\r
-  CR (a, \\r
-      TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
-      AbsolutePointer, \\r
-      TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
+  CR (a,                                                            \\r
+      TEXT_IN_SPLITTER_PRIVATE_DATA,                                \\r
+      AbsolutePointer,                                              \\r
+      TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE                       \\r
       )\r
 \r
-//\r
-// Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
-//\r
-#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE  EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
+\r
+#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('T', 'o', 'S', 'p')\r
 \r
 typedef struct {\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput;\r
   EFI_UGA_DRAW_PROTOCOL            *UgaDraw;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
-  BOOLEAN                          TextOutEnabled;\r
 } TEXT_OUT_AND_GOP_DATA;\r
 \r
+//\r
+// Private data for the Console Out splitter\r
+//\r
 typedef struct {\r
-  UINT32                     HorizontalResolution;\r
-  UINT32                     VerticalResolution;\r
-} TEXT_OUT_GOP_MODE;\r
-\r
-typedef struct {\r
-  UINT64                             Signature;\r
-  EFI_HANDLE                         VirtualHandle;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    TextOut;\r
-  EFI_SIMPLE_TEXT_OUTPUT_MODE        TextOutMode;\r
-\r
-  EFI_UGA_DRAW_PROTOCOL              UgaDraw;\r
-  UINT32                             UgaHorizontalResolution;\r
-  UINT32                             UgaVerticalResolution;\r
-  UINT32                             UgaColorDepth;\r
-  UINT32                             UgaRefreshRate;\r
-  EFI_UGA_PIXEL                      *UgaBlt;\r
-\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL       GraphicsOutput;\r
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL      *GraphicsOutputBlt;\r
-  TEXT_OUT_GOP_MODE                  *GraphicsOutputModeBuffer;\r
-  UINTN                              CurrentNumberOfGraphicsOutput;\r
-  BOOLEAN                            HardwareNeedsStarting;\r
-\r
-  EFI_CONSOLE_CONTROL_PROTOCOL       ConsoleControl;\r
-\r
-  UINTN                              CurrentNumberOfConsoles;\r
-  TEXT_OUT_AND_GOP_DATA              *TextOutList;\r
-  UINTN                              TextOutListCount;\r
-  TEXT_OUT_SPLITTER_QUERY_DATA       *TextOutQueryData;\r
-  UINTN                              TextOutQueryDataCount;\r
-  INT32                              *TextOutModeMap;\r
-\r
-  EFI_CONSOLE_CONTROL_SCREEN_MODE    ConsoleOutputMode;\r
-\r
-  UINTN                              DevNullColumns;\r
-  UINTN                              DevNullRows;\r
-  CHAR16                             *DevNullScreen;\r
-  INT32                              *DevNullAttributes;\r
+  UINT64                                Signature;\r
+  EFI_HANDLE                            VirtualHandle;\r
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL       TextOut;\r
+  EFI_SIMPLE_TEXT_OUTPUT_MODE           TextOutMode;\r
+\r
+  EFI_UGA_DRAW_PROTOCOL                 UgaDraw;\r
+  UINT32                                UgaHorizontalResolution;\r
+  UINT32                                UgaVerticalResolution;\r
+  UINT32                                UgaColorDepth;\r
+  UINT32                                UgaRefreshRate;\r
+\r
+  EFI_GRAPHICS_OUTPUT_PROTOCOL          GraphicsOutput;\r
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GraphicsOutputModeBuffer;\r
+  UINTN                                 CurrentNumberOfGraphicsOutput;\r
+  UINTN                                 CurrentNumberOfUgaDraw;\r
+  BOOLEAN                               HardwareNeedsStarting;\r
+\r
+  UINTN                                 CurrentNumberOfConsoles;\r
+  TEXT_OUT_AND_GOP_DATA                 *TextOutList;\r
+  UINTN                                 TextOutListCount;\r
+  TEXT_OUT_SPLITTER_QUERY_DATA          *TextOutQueryData;\r
+  UINTN                                 TextOutQueryDataCount;\r
+  INT32                                 *TextOutModeMap;\r
 \r
 } TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
 \r
 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
-  CR ((a),                                            \\r
+  CR ((a),                                          \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA,               \\r
       TextOut,                                      \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE      \\r
       )\r
 \r
 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
-  CR ((a),                                                    \\r
+  CR ((a),                                                  \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA,                       \\r
       GraphicsOutput,                                       \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE              \\r
       )\r
 \r
 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
-  CR ((a),                                            \\r
+  CR ((a),                                          \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA,               \\r
       UgaDraw,                                      \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE      \\r
       )\r
 \r
 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
-  CR ((a),                                                    \\r
+  CR ((a),                                                  \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA,                       \\r
       ConsoleControl,                                       \\r
       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE              \\r
@@ -244,101 +245,234 @@ typedef struct {
 //\r
 // Function Prototypes\r
 //\r
+\r
+/**\r
+  The user Entry Point for module ConSplitter. The user code starts with this function.\r
+\r
+  Installs driver module protocols and. Creates virtual device handles for ConIn,\r
+  ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,\r
+  Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.\r
+  Installs Graphics Output protocol and/or UGA Draw protocol if needed.\r
+\r
+  @param[in] ImageHandle    The firmware allocated handle for the EFI image.\r
+  @param[in] SystemTable    A pointer to the EFI System Table.\r
+\r
+  @retval EFI_SUCCESS       The entry point is executed successfully.\r
+  @retval other             Some error occurs when executing this entry point.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterDriverEntry (\r
   IN EFI_HANDLE                       ImageHandle,\r
   IN EFI_SYSTEM_TABLE                 *SystemTable\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Construct console input devices' private data.\r
 \r
+  @param  ConInPrivate             A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
+                                   structure.\r
+\r
+  @retval EFI_OUT_OF_RESOURCES     Out of resources.\r
+  @retval EFI_SUCCESS              Text Input Devcie's private data has been constructed.\r
+  @retval other                    Failed to construct private data.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextInConstructor (\r
-  TEXT_IN_SPLITTER_PRIVATE_DATA       *Private\r
-  )\r
-;\r
+  TEXT_IN_SPLITTER_PRIVATE_DATA       *ConInPrivate\r
+  );\r
+\r
+/**\r
+  Construct console output devices' private data.\r
+\r
+  @param  ConOutPrivate            A pointer to the TEXT_OUT_SPLITTER_PRIVATE_DATA\r
+                                   structure.\r
 \r
+  @retval EFI_OUT_OF_RESOURCES     Out of resources.\r
+  @retval EFI_SUCCESS              Text Input Devcie's private data has been constructed.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextOutConstructor (\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
-  )\r
-;\r
+  TEXT_OUT_SPLITTER_PRIVATE_DATA      *ConOutPrivate\r
+  );\r
 \r
-//\r
-// Driver Binding Functions\r
-//\r
+\r
+/**\r
+  Test to see if Console In Device could be supported on the Controller.\r
+\r
+  @param  This                Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConInDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Test to see if Simple Pointer protocol could be supported on the Controller.\r
 \r
+  @param  This                Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterSimplePointerDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Test to see if Console Out Device could be supported on the Controller.\r
 \r
+  @param  This                Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConOutDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Test to see if Standard Error Device could be supported on the Controller.\r
+\r
+  @param  This                Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterStdErrDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Start Console In Consplitter on device handle.\r
+\r
+  @param  This                 Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS          Console In Consplitter is added to ControllerHandle.\r
+  @retval other                Console In Consplitter does not support this device.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConInDriverBindingStart (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Start Simple Pointer Consplitter on device handle.\r
 \r
+  @param  This                 Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS          Simple Pointer Consplitter is added to ControllerHandle.\r
+  @retval other                Simple Pointer Consplitter does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterSimplePointerDriverBindingStart (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Start Console Out Consplitter on device handle.\r
 \r
+  @param  This                 Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS          Console Out Consplitter is added to ControllerHandle.\r
+  @retval other                Console Out Consplitter does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConOutDriverBindingStart (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Start Standard Error Consplitter on device handle.\r
+\r
+  @param  This                 Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS          Standard Error Consplitter is added to ControllerHandle.\r
+  @retval other                Standard Error Consplitter does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterStdErrDriverBindingStart (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.\r
+\r
+  @param  This              Driver Binding protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConInDriverBindingStop (\r
@@ -346,9 +480,22 @@ ConSplitterConInDriverBindingStop (
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing\r
+  Simple Pointer protocol.\r
+\r
+  @param  This              Driver Binding protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterSimplePointerDriverBindingStop (\r
@@ -356,9 +503,21 @@ ConSplitterSimplePointerDriverBindingStop (
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID.\r
 \r
+  @param  This              Driver Binding protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterConOutDriverBindingStop (\r
@@ -366,9 +525,21 @@ ConSplitterConOutDriverBindingStop (
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.\r
 \r
+  @param  This              Driver Binding protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterStdErrDriverBindingStop (\r
@@ -376,31 +547,63 @@ ConSplitterStdErrDriverBindingStop (
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
 \r
-//\r
-// Driver binding functions\r
-//\r
 \r
+/**\r
+  Test to see if Absolute Pointer protocol could be supported on the Controller.\r
+\r
+  @param  This                Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterAbsolutePointerDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Start Absolute Pointer Consplitter on device handle.\r
 \r
+  @param  This                 Driver Binding protocol instance pointer.\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
+  @retval EFI_SUCCESS          Absolute Pointer Consplitter is added to ControllerHandle.\r
+  @retval other                Absolute Pointer Consplitter does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterAbsolutePointerDriverBindingStart (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing\r
+  Absolute Pointer protocol.\r
+\r
+  @param  This              Driver Binding protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
 \r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterAbsolutePointerDriverBindingStop (\r
@@ -408,81 +611,103 @@ ConSplitterAbsolutePointerDriverBindingStop (
   IN  EFI_HANDLE                      ControllerHandle,\r
   IN  UINTN                           NumberOfChildren,\r
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Add Absolute Pointer Device in Consplitter Absolute Pointer list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  AbsolutePointer          Absolute Pointer protocol pointer.\r
 \r
+  @retval EFI_SUCCESS              Absolute Pointer Device added successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterAbsolutePointerAddDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Remove Absolute Pointer Device from Consplitter Absolute Pointer list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  AbsolutePointer          Absolute Pointer protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Absolute Pointer Device removed successfully.\r
+  @retval EFI_NOT_FOUND            No Absolute Pointer Device found.\r
 \r
+**/\r
 EFI_STATUS\r
 ConSplitterAbsolutePointerDeleteDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // Absolute Pointer protocol interfaces\r
 //\r
 \r
+\r
+/**\r
+  Resets the pointer device hardware.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
+\r
+  @retval EFI_SUCCESS              The device was reset.\r
+  @retval EFI_DEVICE_ERROR         The device is not functioning correctly and\r
+                                   could not be reset.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterAbsolutePointerReset (\r
   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
   IN BOOLEAN                         ExtendedVerification\r
-  )\r
-/*++\r
+  );\r
 \r
-  Routine Description:\r
-    Resets the pointer device hardware.\r
 \r
-  Arguments:\r
-    This                  - Protocol instance pointer.\r
-    ExtendedVerification  - Driver may perform diagnostics on reset.\r
+/**\r
+  Retrieves the current state of a pointer device.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  State                    A pointer to the state information on the\r
+                                   pointer device.\r
 \r
-  Returns:\r
-    EFI_SUCCESS           - The device was reset.\r
-    EFI_DEVICE_ERROR      - The device is not functioning correctly and could \r
-                            not be reset.\r
-                            \r
---*/\r
-;\r
+  @retval EFI_SUCCESS              The state of the pointer device was returned in\r
+                                   State..\r
+  @retval EFI_NOT_READY            The state of the pointer device has not changed\r
+                                   since the last call to GetState().\r
+  @retval EFI_DEVICE_ERROR         A device error occurred while attempting to\r
+                                   retrieve the pointer device's current state.\r
 \r
+**/\r
 EFI_STATUS\r
-EFIAPI \r
+EFIAPI\r
 ConSplitterAbsolutePointerGetState (\r
   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
   IN OUT EFI_ABSOLUTE_POINTER_STATE  *State\r
-  )\r
-/*++\r
+  );\r
 \r
-  Routine Description:\r
-    Retrieves the current state of a pointer device.\r
+/**\r
+  This event agregates all the events of the pointer devices in the splitter.\r
 \r
-  Arguments:\r
-    This                  - Protocol instance pointer.\r
-    State                 - A pointer to the state information on the pointer device.\r
+  If any events of physical pointer devices are signaled, signal the pointer\r
+  splitter event. This will cause the calling code to call\r
+  ConSplitterAbsolutePointerGetState ().\r
 \r
-  Returns:\r
-    EFI_SUCCESS           - The state of the pointer device was returned in State..\r
-    EFI_NOT_READY         - The state of the pointer device has not changed since the last call to\r
-                            GetState().                                                           \r
-    EFI_DEVICE_ERROR      - A device error occurred while attempting to retrieve the pointer\r
-                            device's current state.                                         \r
---*/\r
-;\r
+  @param  Event                    The Event assoicated with callback.\r
+  @param  Context                  Context registered when Event was created.\r
 \r
+**/\r
 VOID\r
 EFIAPI\r
 ConSplitterAbsolutePointerWaitForInput (\r
   IN  EFI_EVENT                       Event,\r
   IN  VOID                            *Context\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Retrieves a Unicode string that is the user readable name of the driver.\r
@@ -504,7 +729,7 @@ ConSplitterAbsolutePointerWaitForInput (
                                 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 3066 or ISO 639-2 language code format.\r
+                                in RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  DriverName[out]       A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -569,7 +794,7 @@ ConSplitterComponentNameGetDriverName (
                                 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 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -648,7 +873,7 @@ ConSplitterConInComponentNameGetControllerName (
                                 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 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -689,6 +914,50 @@ ConSplitterSimplePointerComponentNameGetControllerName (
   OUT CHAR16                                          **ControllerName\r
   );\r
 \r
+/**\r
+  Retrieves a Unicode string that is the user readable name of the controller\r
+  that is being managed by an EFI Driver.\r
+\r
+  @param  This                   A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
+                                 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 the\r
+                                 name of.  This is an optional parameter that may\r
+                                 be NULL.  It will be NULL for device drivers.  It\r
+                                 will also be NULL for a bus drivers that wish to\r
+                                 retrieve the name of the bus controller.  It will\r
+                                 not be NULL for a bus driver that wishes to\r
+                                 retrieve the name of a child controller.\r
+  @param  Language               A pointer to RFC4646 language identifier. This is\r
+                                 the language of the controller name that that the\r
+                                 caller is requesting, and it must match one of the\r
+                                 languages specified in SupportedLanguages.  The\r
+                                 number of languages supported by a driver is up to\r
+                                 the driver writer.\r
+  @param  ControllerName         A pointer to the Unicode string to return.  This\r
+                                 Unicode string is the name of the controller\r
+                                 specified by ControllerHandle and ChildHandle in\r
+                                 the language specified by Language from the point\r
+                                 of view of the driver 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 driver\r
+                                 specified by This was returned in DriverName.\r
+  @retval EFI_INVALID_PARAMETER  ControllerHandle is not a valid EFI_HANDLE.\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 the\r
+                                 language specified by Language.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterAbsolutePointerComponentNameGetControllerName (\r
@@ -697,8 +966,7 @@ ConSplitterAbsolutePointerComponentNameGetControllerName (
   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
   IN  CHAR8                                           *Language,\r
   OUT CHAR16                                          **ControllerName\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Retrieves a Unicode string that is the user readable name of the controller\r
@@ -737,7 +1005,7 @@ ConSplitterAbsolutePointerComponentNameGetControllerName (
                                 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 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -816,7 +1084,7 @@ ConSplitterConOutComponentNameGetControllerName (
                                 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 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -861,168 +1129,278 @@ ConSplitterStdErrComponentNameGetControllerName (
 //\r
 // TextIn Constructor/Destructor functions\r
 //\r
+\r
+/**\r
+  Add Text Input Device in Consplitter Text Input list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  TextIn                   Simple Text Input protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Text Input Device added successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextInAddDevice (\r
-  IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
-  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
-  )\r
-;\r
+  IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
+  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *TextIn\r
+  );\r
+\r
+/**\r
+  Remove Text Input Device from Consplitter Text Input list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  TextIn                   Simple Text protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Simple Text Device removed successfully.\r
+  @retval EFI_NOT_FOUND            No Simple Text Device found.\r
 \r
+**/\r
 EFI_STATUS\r
 ConSplitterTextInDeleteDevice (\r
-  IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
-  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
-  )\r
-;\r
+  IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
+  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *TextIn\r
+  );\r
 \r
 //\r
 // SimplePointer Constuctor/Destructor functions\r
 //\r
+\r
+/**\r
+  Add Simple Pointer Device in Consplitter Simple Pointer list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  SimplePointer            Simple Pointer protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Simple Pointer Device added successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterSimplePointerAddDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Remove Simple Pointer Device from Consplitter Simple Pointer list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  SimplePointer            Simple Pointer protocol pointer.\r
 \r
+  @retval EFI_SUCCESS              Simple Pointer Device removed successfully.\r
+  @retval EFI_NOT_FOUND            No Simple Pointer Device found.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterSimplePointerDeleteDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // TextOut Constuctor/Destructor functions\r
 //\r
+\r
+/**\r
+  Add Text Output Device in Consplitter Text Output list.\r
+\r
+  @param  Private                  Text Out Splitter pointer.\r
+  @param  TextOut                  Simple Text Output protocol pointer.\r
+  @param  GraphicsOutput           Graphics Output protocol pointer.\r
+  @param  UgaDraw                  UGA Draw protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Text Output Device added successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextOutAddDevice (\r
   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut,\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput,\r
   IN  EFI_UGA_DRAW_PROTOCOL              *UgaDraw\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Remove Text Out Device in Consplitter Text Out list.\r
+\r
+  @param  Private                  Text Out Splitter pointer.\r
+  @param  TextOut                  Simple Text Output Pointer protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Text Out Device removed successfully.\r
+  @retval EFI_NOT_FOUND            No Text Out Device found.\r
 \r
+**/\r
 EFI_STATUS\r
 ConSplitterTextOutDeleteDevice (\r
   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // TextIn I/O Functions\r
 //\r
+\r
+/**\r
+  Reset the input device and optionaly run diagnostics\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
+\r
+  @retval EFI_SUCCESS              The device was reset.\r
+  @retval EFI_DEVICE_ERROR         The device is not functioning properly and could\r
+                                   not be reset.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInReset (\r
-  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
-  IN  BOOLEAN                            ExtendedVerification\r
-  )\r
-;\r
+  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,\r
+  IN  BOOLEAN                         ExtendedVerification\r
+  );\r
+\r
+/**\r
+  Reads the next keystroke from the input device. The WaitForKey Event can\r
+  be used to test for existance of a keystroke via WaitForEvent () call.\r
 \r
+  @param  This                     Protocol instance pointer.\r
+  @param  Key                      Driver may perform diagnostics on reset.\r
+\r
+  @retval EFI_SUCCESS              The keystroke information was returned.\r
+  @retval EFI_NOT_READY            There was no keystroke data availiable.\r
+  @retval EFI_DEVICE_ERROR         The keydtroke information was not returned due\r
+                                   to hardware errors.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInReadKeyStroke (\r
-  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
-  OUT EFI_INPUT_KEY                      *Key\r
-  )\r
-;\r
+  IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,\r
+  OUT EFI_INPUT_KEY                   *Key\r
+  );\r
+\r
+/**\r
+  Add Text Input Ex Device in Consplitter Text Input Ex list.\r
+\r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  TextInEx                 Simple Text Input Ex Input protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Text Input Ex Device added successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextInExAddDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Remove Text Ex Device from Consplitter Text Input Ex list.\r
 \r
+  @param  Private                  Text In Splitter pointer.\r
+  @param  TextInEx                 Simple Text Ex protocol pointer.\r
+\r
+  @retval EFI_SUCCESS              Simple Text Input Ex Device removed successfully.\r
+  @retval EFI_NOT_FOUND            No Simple Text Input Ex Device found.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterTextInExDeleteDevice (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // Simple Text Input Ex protocol function prototypes\r
 //\r
 \r
+/**\r
+  Reset the input device and optionaly run diagnostics\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
+\r
+  @retval EFI_SUCCESS              The device was reset.\r
+  @retval EFI_DEVICE_ERROR         The device is not functioning properly and could\r
+                                   not be reset.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInResetEx (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN BOOLEAN                            ExtendedVerification\r
-  )\r
-/*++\r
+  );\r
 \r
-  Routine Description:\r
-    Reset the input device and optionaly run diagnostics\r
 \r
-  Arguments:\r
-    This                 - Protocol instance pointer.\r
-    ExtendedVerification - Driver may perform diagnostics on reset.\r
+/**\r
+  Reads the next keystroke from the input device. The WaitForKey Event can\r
+  be used to test for existance of a keystroke via WaitForEvent () call.\r
 \r
-  Returns:\r
-    EFI_SUCCESS           - The device was reset.\r
-    EFI_DEVICE_ERROR      - The device is not functioning properly and could \r
-                            not be reset.\r
+  @param  This                     Protocol instance pointer.\r
+  @param  KeyData                  A pointer to a buffer that is filled in with the\r
+                                   keystroke state data for the key that was\r
+                                   pressed.\r
 \r
---*/\r
-;\r
+  @retval EFI_SUCCESS              The keystroke information was returned.\r
+  @retval EFI_NOT_READY            There was no keystroke data availiable.\r
+  @retval EFI_DEVICE_ERROR         The keystroke information was not returned due\r
+                                   to hardware errors.\r
+  @retval EFI_INVALID_PARAMETER    KeyData is NULL.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInReadKeyStrokeEx (\r
   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
   OUT EFI_KEY_DATA                      *KeyData\r
-  )\r
-/*++\r
+  );\r
 \r
-  Routine Description:\r
-    Reads the next keystroke from the input device. The WaitForKey Event can \r
-    be used to test for existance of a keystroke via WaitForEvent () call.\r
 \r
-  Arguments:\r
-    This       - Protocol instance pointer.\r
-    KeyData    - A pointer to a buffer that is filled in with the keystroke \r
-                 state data for the key that was pressed.\r
+/**\r
+  Set certain state for the input device.\r
 \r
-  Returns:\r
-    EFI_SUCCESS           - The keystroke information was returned.\r
-    EFI_NOT_READY         - There was no keystroke data availiable.\r
-    EFI_DEVICE_ERROR      - The keystroke information was not returned due to \r
-                            hardware errors.\r
-    EFI_INVALID_PARAMETER - KeyData is NULL.                        \r
+  @param  This                     Protocol instance pointer.\r
+  @param  KeyToggleState           A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
+                                   state for the input device.\r
 \r
---*/\r
-;\r
+  @retval EFI_SUCCESS              The device state was set successfully.\r
+  @retval EFI_DEVICE_ERROR         The device is not functioning correctly and\r
+                                   could not have the setting adjusted.\r
+  @retval EFI_UNSUPPORTED          The device does not have the ability to set its\r
+                                   state.\r
+  @retval EFI_INVALID_PARAMETER    KeyToggleState is NULL.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInSetState (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN EFI_KEY_TOGGLE_STATE               *KeyToggleState\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    Set certain state for the input device.\r
-\r
-  Arguments:\r
-    This                  - Protocol instance pointer.\r
-    KeyToggleState        - A pointer to the EFI_KEY_TOGGLE_STATE to set the \r
-                            state for the input device.\r
-                          \r
-  Returns:                \r
-    EFI_SUCCESS           - The device state was set successfully.\r
-    EFI_DEVICE_ERROR      - The device is not functioning correctly and could \r
-                            not have the setting adjusted.\r
-    EFI_UNSUPPORTED       - The device does not have the ability to set its state.\r
-    EFI_INVALID_PARAMETER - KeyToggleState is NULL.                       \r
-\r
---*/   \r
-;\r
+  );\r
+\r
 \r
+/**\r
+  Register a notification function for a particular keystroke for the input device.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  KeyData                  A pointer to a buffer that is filled in with the\r
+                                   keystroke information data for the key that was\r
+                                   pressed.\r
+  @param  KeyNotificationFunction  Points to the function to be called when the key\r
+                                   sequence is typed specified by KeyData.\r
+  @param  NotifyHandle             Points to the unique handle assigned to the\r
+                                   registered notification.\r
+\r
+  @retval EFI_SUCCESS              The notification function was registered\r
+                                   successfully.\r
+  @retval EFI_OUT_OF_RESOURCES     Unable to allocate resources for necesssary data\r
+                                   structures.\r
+  @retval EFI_INVALID_PARAMETER    KeyData or KeyNotificationFunction or NotifyHandle is NULL.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInRegisterKeyNotify (\r
@@ -1030,145 +1408,211 @@ ConSplitterTextInRegisterKeyNotify (
   IN EFI_KEY_DATA                       *KeyData,\r
   IN EFI_KEY_NOTIFY_FUNCTION            KeyNotificationFunction,\r
   OUT EFI_HANDLE                        *NotifyHandle\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    Register a notification function for a particular keystroke for the input device.\r
-\r
-  Arguments:\r
-    This                    - Protocol instance pointer.\r
-    KeyData                 - A pointer to a buffer that is filled in with the keystroke \r
-                              information data for the key that was pressed.\r
-    KeyNotificationFunction - Points to the function to be called when the key \r
-                              sequence is typed specified by KeyData.                        \r
-    NotifyHandle            - Points to the unique handle assigned to the registered notification.                          \r
-\r
-  Returns:\r
-    EFI_SUCCESS             - The notification function was registered successfully.\r
-    EFI_OUT_OF_RESOURCES    - Unable to allocate resources for necesssary data structures.\r
-    EFI_INVALID_PARAMETER   - KeyData or NotifyHandle is NULL.                       \r
-                              \r
---*/   \r
-;\r
+  );\r
+\r
+\r
+/**\r
+  Remove a registered notification function from a particular keystroke.\r
 \r
+  @param  This                     Protocol instance pointer.\r
+  @param  NotificationHandle       The handle of the notification function being\r
+                                   unregistered.\r
+\r
+  @retval EFI_SUCCESS              The notification function was unregistered\r
+                                   successfully.\r
+  @retval EFI_INVALID_PARAMETER    The NotificationHandle is invalid.\r
+  @retval EFI_NOT_FOUND            Can not find the matching entry in database.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInUnregisterKeyNotify (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN EFI_HANDLE                         NotificationHandle\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    Remove a registered notification function from a particular keystroke.\r
-\r
-  Arguments:\r
-    This                    - Protocol instance pointer.    \r
-    NotificationHandle      - The handle of the notification function being unregistered.\r
-\r
-  Returns:\r
-    EFI_SUCCESS             - The notification function was unregistered successfully.\r
-    EFI_INVALID_PARAMETER   - The NotificationHandle is invalid.\r
-    EFI_NOT_FOUND           - Can not find the matching entry in database.  \r
-                              \r
---*/   \r
-;\r
+  );\r
+\r
+/**\r
+  This event aggregates all the events of the ConIn devices in the spliter.\r
+\r
+  If any events of physical ConIn devices are signaled, signal the ConIn\r
+  spliter event. This will cause the calling code to call\r
+  ConSplitterTextInReadKeyStroke ().\r
+\r
+  @param  Event                    The Event assoicated with callback.\r
+  @param  Context                  Context registered when Event was created.\r
+\r
+**/\r
 VOID\r
 EFIAPI\r
 ConSplitterTextInWaitForKey (\r
   IN  EFI_EVENT                       Event,\r
   IN  VOID                            *Context\r
-  )\r
-;\r
+  );\r
 \r
-BOOLEAN\r
-ConSpliterConssoleControlStdInLocked (\r
-  VOID\r
-  )\r
-;\r
 \r
-VOID\r
-EFIAPI\r
-ConSpliterConsoleControlLockStdInEvent (\r
-  IN  EFI_EVENT                       Event,\r
-  IN  VOID                            *Context\r
-  )\r
-;\r
+/**\r
+  Reads the next keystroke from the input device. The WaitForKey Event can\r
+  be used to test for existance of a keystroke via WaitForEvent () call.\r
 \r
-EFI_STATUS\r
-EFIAPI\r
-ConSpliterConsoleControlLockStdIn (\r
-  IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
-  IN  CHAR16                          *Password\r
-  )\r
-;\r
+  @param  Private                  Protocol instance pointer.\r
+  @param  Key                      Driver may perform diagnostics on reset.\r
 \r
+  @retval EFI_SUCCESS              The keystroke information was returned.\r
+  @retval EFI_NOT_READY            There was no keystroke data availiable.\r
+  @retval EFI_DEVICE_ERROR         The keydtroke information was not returned due\r
+                                   to hardware errors.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextInPrivateReadKeyStroke (\r
   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
   OUT EFI_INPUT_KEY                   *Key\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Reset the input device and optionaly run diagnostics\r
 \r
+  @param  This                     Protocol instance pointer.\r
+  @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
+\r
+  @retval EFI_SUCCESS              The device was reset.\r
+  @retval EFI_DEVICE_ERROR         The device is not functioning properly and could\r
+                                   not be reset.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterSimplePointerReset (\r
   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
   IN  BOOLEAN                         ExtendedVerification\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Reads the next keystroke from the input device. The WaitForKey Event can\r
+  be used to test for existance of a keystroke via WaitForEvent () call.\r
+\r
+  @param  This                     A pointer to protocol instance.\r
+  @param  State                    A pointer to state information on the pointer device\r
 \r
+  @retval EFI_SUCCESS              The keystroke information was returned in State.\r
+  @retval EFI_NOT_READY            There was no keystroke data availiable.\r
+  @retval EFI_DEVICE_ERROR         The keydtroke information was not returned due\r
+                                   to hardware errors.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterSimplePointerGetState (\r
   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
   IN OUT EFI_SIMPLE_POINTER_STATE     *State\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  This event agregates all the events of the ConIn devices in the spliter.\r
+  If any events of physical ConIn devices are signaled, signal the ConIn\r
+  spliter event. This will cause the calling code to call\r
+  ConSplitterTextInReadKeyStroke ().\r
+\r
+  @param  Event                    The Event assoicated with callback.\r
+  @param  Context                  Context registered when Event was created.\r
+\r
+**/\r
 VOID\r
 EFIAPI\r
 ConSplitterSimplePointerWaitForInput (\r
   IN  EFI_EVENT                       Event,\r
   IN  VOID                            *Context\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // TextOut I/O Functions\r
 //\r
-VOID\r
-ConSplitterSynchronizeModeData (\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
-  )\r
-;\r
 \r
+/**\r
+  Reset the text output device hardware and optionaly run diagnostics\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  ExtendedVerification     Driver may perform more exhaustive verfication\r
+                                   operation of the device during reset.\r
+\r
+  @retval EFI_SUCCESS              The text output device was reset.\r
+  @retval EFI_DEVICE_ERROR         The text output device is not functioning\r
+                                   correctly and could not be reset.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutReset (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  BOOLEAN                            ExtendedVerification\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Write a Unicode string to the output device.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  WString                  The NULL-terminated Unicode string to be\r
+                                   displayed on the output device(s). All output\r
+                                   devices must also support the Unicode drawing\r
+                                   defined in this file.\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\r
+                                   output the text.\r
+  @retval EFI_UNSUPPORTED          The output device's mode is not currently in a\r
+                                   defined text mode.\r
+  @retval EFI_WARN_UNKNOWN_GLYPH   This warning code indicates that some of the\r
+                                   characters in the Unicode string could not be\r
+                                   rendered and were skipped.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutOutputString (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  CHAR16                             *WString\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Verifies that all characters in a Unicode string can be output to the\r
+  target device.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  WString                  The NULL-terminated Unicode string to be\r
+                                   examined for the output device(s).\r
 \r
+  @retval EFI_SUCCESS              The device(s) are capable of rendering the\r
+                                   output string.\r
+  @retval EFI_UNSUPPORTED          Some of the characters in the Unicode string\r
+                                   cannot be rendered by one or more of the output\r
+                                   devices mapped by the EFI handle.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutTestString (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  CHAR16                             *WString\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Returns information for an available text mode that the output device(s)\r
+  supports.\r
 \r
+  @param  This                     Protocol instance pointer.\r
+  @param  ModeNumber               The mode number to return information on.\r
+  @param  Columns                  Returns the columns of the text output device\r
+                                   for the requested ModeNumber.\r
+  @param  Rows                     Returns the rows of the text output device\r
+                                   for the requested ModeNumber.\r
+\r
+  @retval EFI_SUCCESS              The requested mode information was returned.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request.\r
+  @retval EFI_UNSUPPORTED          The mode number was not valid.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutQueryMode (\r
@@ -1176,96 +1620,235 @@ ConSplitterTextOutQueryMode (
   IN  UINTN                              ModeNumber,\r
   OUT UINTN                              *Columns,\r
   OUT UINTN                              *Rows\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Sets the output device(s) to a specified mode.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  ModeNumber               The mode number to set.\r
 \r
+  @retval EFI_SUCCESS              The requested text mode was set.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request.\r
+  @retval EFI_UNSUPPORTED          The mode number was not valid.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutSetMode (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  UINTN                              ModeNumber\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Sets the background and foreground colors for the OutputString () and\r
+  ClearScreen () functions.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  Attribute                The attribute to set. Bits 0..3 are the\r
+                                   foreground color, and bits 4..6 are the\r
+                                   background color. All other bits are undefined\r
+                                   and must be zero. The valid Attributes are\r
+                                   defined in this file.\r
 \r
+  @retval EFI_SUCCESS              The attribute was set.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request.\r
+  @retval EFI_UNSUPPORTED          The attribute requested is not defined.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutSetAttribute (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  UINTN                              Attribute\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Clears the output device(s) display to the currently selected background\r
+  color.\r
+\r
+  @param  This                     Protocol instance pointer.\r
+\r
+  @retval EFI_SUCCESS              The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request.\r
+  @retval EFI_UNSUPPORTED          The output device is not in a valid text mode.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutClearScreen (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Sets the current coordinates of the cursor position\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  Column                   The column position to set the cursor to. Must be\r
+                                   greater than or equal to zero and less than the\r
+                                   number of columns by QueryMode ().\r
+  @param  Row                      The row position to set the cursor to. Must be\r
+                                   greater than or equal to zero and less than the\r
+                                   number of rows by QueryMode ().\r
+\r
+  @retval EFI_SUCCESS              The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request.\r
+  @retval EFI_UNSUPPORTED          The output device is not in a valid text mode,\r
+                                   or the cursor position is invalid for the\r
+                                   current mode.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutSetCursorPosition (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  UINTN                              Column,\r
   IN  UINTN                              Row\r
-  )\r
-;\r
+  );\r
+\r
 \r
+/**\r
+  Makes the cursor visible or invisible\r
+\r
+  @param  This                     Protocol instance pointer.\r
+  @param  Visible                  If TRUE, the cursor is set to be visible. If\r
+                                   FALSE, the cursor is set to be invisible.\r
+\r
+  @retval EFI_SUCCESS              The operation completed successfully.\r
+  @retval EFI_DEVICE_ERROR         The device had an error and could not complete\r
+                                   the request, or the device does not support\r
+                                   changing the cursor mode.\r
+  @retval EFI_UNSUPPORTED          The output device is not in a valid text mode.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 ConSplitterTextOutEnableCursor (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
   IN  BOOLEAN                            Visible\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Take the passed in Buffer of size SizeOfCount and grow the buffer\r
+  by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount\r
+  bytes. Copy the current data in Buffer to the new version of Buffer\r
+  and free the old version of buffer.\r
+\r
+  @param  SizeOfCount              Size of element in array.\r
+  @param  Count                    Current number of elements in array.\r
+  @param  Buffer                   Bigger version of passed in Buffer with all the\r
+                                   data.\r
+\r
+  @retval EFI_SUCCESS              Buffer size has grown.\r
+  @retval EFI_OUT_OF_RESOURCES     Could not grow the buffer size.\r
+\r
+**/\r
 EFI_STATUS\r
 ConSplitterGrowBuffer (\r
-  IN  UINTN                           SizeOfCount,\r
-  IN  UINTN                           *Count,\r
+  IN      UINTN                       SizeOfCount,\r
+  IN OUT  UINTN                       *Count,\r
   IN OUT  VOID                        **Buffer\r
-  )\r
-;\r
+  );\r
 \r
-EFI_STATUS\r
-EFIAPI\r
-ConSpliterConsoleControlGetMode (\r
-  IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
-  OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
-  OUT BOOLEAN                         *GopExists,\r
-  OUT BOOLEAN                         *StdInLocked\r
-  )\r
-;\r
+/**\r
+  Returns information for an available graphics mode that the graphics device\r
+  and the set of active video output devices supports.\r
 \r
-EFI_STATUS\r
-EFIAPI\r
-ConSpliterConsoleControlSetMode (\r
-  IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
-  IN  EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
-  )\r
-;\r
+  @param  This                  The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber            The mode number to return information on.\r
+  @param  SizeOfInfo            A pointer to the size, in bytes, of the Info buffer.\r
+  @param  Info                  A pointer to callee allocated buffer that returns information about ModeNumber.\r
 \r
+  @retval EFI_SUCCESS           Mode information returned.\r
+  @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.\r
+  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.\r
+  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
+  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
+  @retval EFI_OUT_OF_RESOURCES  No resource available.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputQueryMode (\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL        *This,\r
-  IN  UINT32                            ModeNumber,\r
-  OUT UINTN                              *SizeOfInfo,\r
+ConSplitterGraphicsOutputQueryMode (\r
+  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,\r
+  IN  UINT32                                ModeNumber,\r
+  OUT UINTN                                 *SizeOfInfo,\r
   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Set the video device into the specified mode and clears the visible portions of\r
+  the output display to black.\r
+\r
+  @param  This                  The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber            Abstraction that defines the current video mode.\r
+\r
+  @retval EFI_SUCCESS           The graphics mode specified by ModeNumber was selected.\r
+  @retval EFI_DEVICE_ERROR      The device had an error and could not complete the request.\r
+  @retval EFI_UNSUPPORTED       ModeNumber is not supported by this device.\r
+  @retval EFI_OUT_OF_RESOURCES  No resource available.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputSetMode (\r
+ConSplitterGraphicsOutputSetMode (\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
   IN  UINT32                       ModeNumber\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  The following table defines actions for BltOperations.\r
+\r
+  EfiBltVideoFill - Write data from the  BltBuffer pixel (SourceX, SourceY)\r
+  directly to every pixel of the video display rectangle\r
+  (DestinationX, DestinationY)\r
+  (DestinationX + Width, DestinationY + Height).\r
+  Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
+  EfiBltVideoToBltBuffer - Read data from the video display rectangle\r
+  (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
+  the BltBuffer rectangle (DestinationX, DestinationY )\r
+  (DestinationX + Width, DestinationY + Height). If DestinationX or\r
+  DestinationY is not zero then Delta must be set to the length in bytes\r
+  of a row in the BltBuffer.\r
+  EfiBltBufferToVideo - Write data from the  BltBuffer rectangle\r
+  (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
+  video display rectangle (DestinationX, DestinationY)\r
+  (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
+  not zero then Delta must be set to the length in bytes of a row in the\r
+  BltBuffer.\r
+  EfiBltVideoToVideo - Copy from the video display rectangle\r
+  (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
+  to the video display rectangle (DestinationX, DestinationY)\r
+  (DestinationX + Width, DestinationY + Height).\r
+  The BltBuffer and Delta  are not used in this mode.\r
+\r
+  @param  This                    Protocol instance pointer.\r
+  @param  BltBuffer               Buffer containing data to blit into video buffer.\r
+                                  This buffer has a size of\r
+                                  Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
+  @param  BltOperation            Operation to perform on BlitBuffer and video\r
+                                  memory\r
+  @param  SourceX                 X coordinate of source for the BltBuffer.\r
+  @param  SourceY                 Y coordinate of source for the BltBuffer.\r
+  @param  DestinationX            X coordinate of destination for the BltBuffer.\r
+  @param  DestinationY            Y coordinate of destination for the BltBuffer.\r
+  @param  Width                   Width of rectangle in BltBuffer in pixels.\r
+  @param  Height                  Hight of rectangle in BltBuffer in pixels.\r
+  @param  Delta                   OPTIONAL.\r
+\r
+  @retval EFI_SUCCESS             The Blt operation completed.\r
+  @retval EFI_INVALID_PARAMETER   BltOperation is not valid.\r
+  @retval EFI_DEVICE_ERROR        A hardware error occured writting to the video\r
+                                  buffer.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputBlt (\r
+ConSplitterGraphicsOutputBlt (\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL                  *This,\r
   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL                 *BltBuffer, OPTIONAL\r
   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION             BltOperation,\r
@@ -1276,42 +1859,109 @@ ConSpliterGraphicsOutputBlt (
   IN  UINTN                                         Width,\r
   IN  UINTN                                         Height,\r
   IN  UINTN                                         Delta         OPTIONAL\r
-  )\r
-;\r
+  );\r
 \r
-EFI_STATUS\r
-DevNullGopSync (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
-  IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
-  )\r
-;\r
 \r
+/**\r
+  Return the current video mode information.\r
+\r
+  @param  This                  The EFI_UGA_DRAW_PROTOCOL instance.\r
+  @param  HorizontalResolution  The size of video screen in pixels in the X dimension.\r
+  @param  VerticalResolution    The size of video screen in pixels in the Y dimension.\r
+  @param  ColorDepth            Number of bits per pixel, currently defined to be 32.\r
+  @param  RefreshRate           The refresh rate of the monitor in Hertz.\r
+\r
+  @retval EFI_SUCCESS           Mode information returned.\r
+  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
+  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawGetMode (\r
+ConSplitterUgaDrawGetMode (\r
   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
   OUT UINT32                          *HorizontalResolution,\r
   OUT UINT32                          *VerticalResolution,\r
   OUT UINT32                          *ColorDepth,\r
   OUT UINT32                          *RefreshRate\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Set the current video mode information.\r
 \r
+  @param  This                 The EFI_UGA_DRAW_PROTOCOL instance.\r
+  @param  HorizontalResolution The size of video screen in pixels in the X dimension.\r
+  @param  VerticalResolution   The size of video screen in pixels in the Y dimension.\r
+  @param  ColorDepth           Number of bits per pixel, currently defined to be 32.\r
+  @param  RefreshRate          The refresh rate of the monitor in Hertz.\r
+\r
+  @retval EFI_SUCCESS          Mode information returned.\r
+  @retval EFI_NOT_STARTED      Video display is not initialized. Call SetMode ()\r
+  @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawSetMode (\r
+ConSplitterUgaDrawSetMode (\r
   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
   IN UINT32                           HorizontalResolution,\r
   IN UINT32                           VerticalResolution,\r
   IN UINT32                           ColorDepth,\r
   IN UINT32                           RefreshRate\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Blt a rectangle of pixels on the graphics screen.\r
+\r
+  The following table defines actions for BltOperations.\r
+\r
+  EfiUgaVideoFill:\r
+    Write data from the  BltBuffer pixel (SourceX, SourceY)\r
+    directly to every pixel of the video display rectangle\r
+    (DestinationX, DestinationY)\r
+    (DestinationX + Width, DestinationY + Height).\r
+    Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
+  EfiUgaVideoToBltBuffer:\r
+    Read data from the video display rectangle\r
+    (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
+    the BltBuffer rectangle (DestinationX, DestinationY )\r
+    (DestinationX + Width, DestinationY + Height). If DestinationX or\r
+    DestinationY is not zero then Delta must be set to the length in bytes\r
+    of a row in the BltBuffer.\r
+  EfiUgaBltBufferToVideo:\r
+    Write data from the  BltBuffer rectangle\r
+    (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
+    video display rectangle (DestinationX, DestinationY)\r
+    (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
+    not zero then Delta must be set to the length in bytes of a row in the\r
+    BltBuffer.\r
+  EfiUgaVideoToVideo:\r
+    Copy from the video display rectangle\r
+    (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
+    to the video display rectangle (DestinationX, DestinationY)\r
+    (DestinationX + Width, DestinationY + Height).\r
+    The BltBuffer and Delta  are not used in this mode.\r
+\r
+  @param  This           Protocol instance pointer.\r
+  @param  BltBuffer      Buffer containing data to blit into video buffer. This\r
+                         buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
+  @param  BltOperation   Operation to perform on BlitBuffer and video memory\r
+  @param  SourceX        X coordinate of source for the BltBuffer.\r
+  @param  SourceY        Y coordinate of source for the BltBuffer.\r
+  @param  DestinationX   X coordinate of destination for the BltBuffer.\r
+  @param  DestinationY   Y coordinate of destination for the BltBuffer.\r
+  @param  Width          Width of rectangle in BltBuffer in pixels.\r
+  @param  Height         Hight of rectangle in BltBuffer in pixels.\r
+  @param  Delta          OPTIONAL\r
+\r
+  @retval EFI_SUCCESS            The Blt operation completed.\r
+  @retval EFI_INVALID_PARAMETER  BltOperation is not valid.\r
+  @retval EFI_DEVICE_ERROR       A hardware error occured writting to the video buffer.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawBlt (\r
+ConSplitterUgaDrawBlt (\r
   IN  EFI_UGA_DRAW_PROTOCOL                         *This,\r
   IN  EFI_UGA_PIXEL                                 *BltBuffer, OPTIONAL\r
   IN  EFI_UGA_BLT_OPERATION                         BltOperation,\r
@@ -1322,56 +1972,20 @@ ConSpliterUgaDrawBlt (
   IN  UINTN                                         Width,\r
   IN  UINTN                                         Height,\r
   IN  UINTN                                         Delta         OPTIONAL\r
-  )\r
-;\r
+  );\r
 \r
-EFI_STATUS\r
-DevNullUgaSync (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
-  IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
-  )\r
-;\r
+/**\r
+  Sets the output device(s) to a specified mode.\r
 \r
-EFI_STATUS\r
-DevNullTextOutOutputString (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  CHAR16                          *WString\r
-  )\r
-;\r
+  @param  Private                 Text Out Splitter pointer.\r
+  @param  ModeNumber              The mode number to set.\r
 \r
-EFI_STATUS\r
-DevNullTextOutSetMode (\r
+**/\r
+VOID\r
+TextOutSetMode (\r
   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
   IN  UINTN                           ModeNumber\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-DevNullTextOutClearScreen (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-DevNullTextOutSetCursorPosition (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  UINTN                           Column,\r
-  IN  UINTN                           Row\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-DevNullTextOutEnableCursor (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  BOOLEAN                         Visible\r
-  )\r
-;\r
+  );\r
 \r
-EFI_STATUS\r
-DevNullSyncGopStdOut (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
-  )\r
-;\r
 \r
 #endif\r