]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h
Check comments, format and fix some typo.
[mirror_edk2.git] / MdeModulePkg / Universal / Console / GraphicsConsoleDxe / GraphicsConsole.h
index 115d237415831410e3cc1494ee1cd3981749852f..342fff8f2146ef01ae9898d0f3cddf564bb83898 100644 (file)
@@ -1,30 +1,21 @@
-/*++\r
+/** @file\r
+  Header file for GraphicsConsole 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 - 2008, Intel Corporation. <BR>\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
 \r
-Module Name:\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
-  GraphicsConsole.h\r
-\r
-Abstract:\r
-\r
-  \r
-Revision History\r
-\r
---*/\r
+**/\r
 \r
-#ifndef _GRAPHICS_CONSOLE_H\r
-#define _GRAPHICS_CONSOLE_H\r
+#ifndef _GRAPHICS_CONSOLE_H_\r
+#define _GRAPHICS_CONSOLE_H_\r
 \r
-#include <PiDxe.h>\r
-#include <Protocol/HiiFramework.h>\r
+#include <Uefi.h>\r
 #include <Protocol/SimpleTextOut.h>\r
 #include <Protocol/GraphicsOutput.h>\r
 #include <Protocol/UgaDraw.h>\r
@@ -32,14 +23,68 @@ Revision History
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
 #include <Library/UefiLib.h>\r
-#include <Library/HiiLibFramework.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/HiiLib.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/PcdLib.h>\r
+\r
+#include <MdeModuleHii.h>\r
+\r
+#include <Protocol/HiiFont.h>\r
+#include <Protocol/HiiDatabase.h>\r
 \r
 \r
 extern EFI_COMPONENT_NAME_PROTOCOL   gGraphicsConsoleComponentName;\r
 extern EFI_COMPONENT_NAME2_PROTOCOL  gGraphicsConsoleComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL   gGraphicsConsoleDriverBinding;\r
+extern EFI_NARROW_GLYPH              gUsStdNarrowGlyphData[];\r
+\r
+\r
+//\r
+// User can define valid graphic resolution here\r
+// e.g. 640x480, 800x600, 1024x768...\r
+//\r
+#define CURRENT_HORIZONTAL_RESOLUTION  800\r
+#define CURRENT_VERTICAL_RESOLUTION    600\r
+\r
+typedef union {\r
+  EFI_NARROW_GLYPH  NarrowGlyph;\r
+  EFI_WIDE_GLYPH    WideGlyph;\r
+} GLYPH_UNION;\r
+\r
+//\r
+// Device Structure\r
+//\r
+#define GRAPHICS_CONSOLE_DEV_SIGNATURE  SIGNATURE_32 ('g', 's', 't', 'o')\r
+\r
+typedef struct {\r
+  UINTN   Columns;\r
+  UINTN   Rows;\r
+  INTN    DeltaX;\r
+  INTN    DeltaY;\r
+  UINT32  GopWidth;\r
+  UINT32  GopHeight;\r
+  UINT32  GopModeNumber;\r
+} GRAPHICS_CONSOLE_MODE_DATA;\r
+\r
+#define GRAPHICS_MAX_MODE 4\r
+\r
+typedef struct {\r
+  UINTN                            Signature;\r
+  EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput;\r
+  EFI_UGA_DRAW_PROTOCOL            *UgaDraw;\r
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  SimpleTextOutput;\r
+  EFI_SIMPLE_TEXT_OUTPUT_MODE      SimpleTextOutputMode;\r
+  GRAPHICS_CONSOLE_MODE_DATA       ModeData[GRAPHICS_MAX_MODE];\r
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *LineBuffer;\r
+  EFI_HII_HANDLE                   HiiHandle;\r
+} GRAPHICS_CONSOLE_DEV;\r
+\r
+#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \\r
+  CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)\r
+\r
 \r
 //\r
 // EFI Component Name Functions\r
@@ -171,69 +216,37 @@ GraphicsConsoleComponentNameGetControllerName (
   );\r
 \r
 \r
-//\r
-// Glyph database\r
-//\r
-#define GLYPH_WIDTH   8\r
-#define GLYPH_HEIGHT  19\r
-\r
-typedef union {\r
-  EFI_NARROW_GLYPH  NarrowGlyph;\r
-  EFI_WIDE_GLYPH    WideGlyph;\r
-} GLYPH_UNION;\r
-\r
-extern EFI_NARROW_GLYPH  UsStdNarrowGlyphData[];\r
-extern EFI_WIDE_GLYPH    UsStdWideGlyphData[];\r
 \r
-//\r
-// Device Structure\r
-//\r
-#define GRAPHICS_CONSOLE_DEV_SIGNATURE  EFI_SIGNATURE_32 ('g', 's', 't', 'o')\r
 \r
-typedef struct {\r
-  UINTN   Columns;\r
-  UINTN   Rows;\r
-  INTN    DeltaX;\r
-  INTN    DeltaY;\r
-  UINT32  GopWidth;\r
-  UINT32  GopHeight;\r
-  UINT32  GopModeNumber;\r
-} GRAPHICS_CONSOLE_MODE_DATA;\r
-\r
-#define GRAPHICS_MAX_MODE 3\r
-\r
-typedef struct {\r
-  UINTN                            Signature;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput;\r
-  EFI_UGA_DRAW_PROTOCOL            *UgaDraw;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  SimpleTextOutput;\r
-  EFI_SIMPLE_TEXT_OUTPUT_MODE      SimpleTextOutputMode;\r
-  GRAPHICS_CONSOLE_MODE_DATA       ModeData[GRAPHICS_MAX_MODE];\r
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *LineBuffer;\r
-  EFI_HII_HANDLE                   HiiHandle;\r
-} GRAPHICS_CONSOLE_DEV;\r
-\r
-#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \\r
-  CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)\r
+/**\r
+  Returns available Unicode glyphs narrow fonts(8*19 pixels) size.\r
 \r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL   gGraphicsConsoleDriverBinding;\r
+  @return Narrow font size.\r
 \r
-//\r
-// Prototypes\r
-//\r
-UINTN\r
+**/\r
+UINT32\r
 ReturnNarrowFontSize (\r
   VOID\r
   );\r
 \r
-UINTN\r
-ReturnWideFontSize (\r
-  VOID\r
-  );\r
+/**\r
+  Reset the text output device hardware and optionally run diagnostics.\r
+  \r
+  Implements SIMPLE_TEXT_OUTPUT.Reset().\r
+  If ExtendeVerification is TRUE, then perform dependent Graphics Console\r
+  device reset, and set display mode to mode 0.\r
+  If ExtendedVerification is FALSE, only set display mode to mode 0.\r
+\r
+  @param  This                  Protocol instance pointer.\r
+  @param  ExtendedVerification  Indicates that the driver may perform a more\r
+                                exhaustive verification operation of the device\r
+                                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 correctly and\r
+                               could not be reset.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutReset (\r
@@ -241,6 +254,28 @@ GraphicsConsoleConOutReset (
   IN  BOOLEAN                            ExtendedVerification\r
   );\r
 \r
+/**\r
+  Write a Unicode string to the output device.\r
+\r
+  Implements SIMPLE_TEXT_OUTPUT.OutputString(). \r
+  The Unicode string will be converted to Glyphs and will be\r
+  sent to the Graphics Console.\r
+\r
+  @param  This                    Protocol instance pointer.\r
+  @param  WString                 The NULL-terminated Unicode string to be displayed\r
+                                  on the output device(s). All output devices must\r
+                                  also support the Unicode drawing 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 output\r
+                                  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
 GraphicsConsoleConOutOutputString (\r
@@ -248,6 +283,22 @@ GraphicsConsoleConOutOutputString (
   IN  CHAR16                           *WString\r
   );\r
 \r
+/**\r
+  Implements SIMPLE_TEXT_OUTPUT.TestString().\r
+  If one of the characters in the *Wstring is\r
+  neither valid valid Unicode drawing characters,\r
+  not ASCII code, then this function will return\r
+  EFI_UNSUPPORTED.\r
+\r
+  @param  This                  Indicates the calling context.\r
+  @param  WString               The Null-terminated Unicode string to be tested.\r
+\r
+  @return EFI_SUCCESS\r
+  @return The Graphics Console is capable of rendering the output string.\r
+  @return EFI_UNSUPPORTED\r
+  @return Some of the characters in the Unicode string cannot be rendered.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutTestString (\r
@@ -255,6 +306,23 @@ GraphicsConsoleConOutTestString (
   IN  CHAR16                           *WString\r
   );\r
 \r
+/**\r
+  Returns information for an available text mode that the output device(s)\r
+  supports\r
+\r
+  Implements SIMPLE_TEXT_OUTPUT.QueryMode().\r
+  It returnes information for an available text mode that the Graphics Console supports.\r
+  In this driver,we only support text mode 80x25, which is defined as mode 0.\r
+\r
+  @param  This                  Protocol instance pointer.\r
+  @param  ModeNumber            The mode number to return information on.\r
+  @param  Columns               The returned columns of the requested mode.\r
+  @param  Rows                  The returned rows of the requested mode.\r
+\r
+  @retval EFI_SUCCESS           The requested mode information is returned.\r
+  @retval EFI_UNSUPPORTED       The mode number is not valid.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutQueryMode (\r
@@ -264,6 +332,22 @@ GraphicsConsoleConOutQueryMode (
   OUT UINTN                            *Rows\r
   );\r
 \r
+\r
+/**\r
+  Sets the output device(s) to a specified mode.\r
+  \r
+  Implements SIMPLE_TEXT_OUTPUT.SetMode().\r
+  Set the Graphics Console to a specified mode. In this driver, we only support mode 0.\r
+\r
+  @param  This                  Protocol instance pointer.\r
+  @param  ModeNumber            The text mode to set.\r
+\r
+  @retval EFI_SUCCESS           The requested text mode is set.\r
+  @retval EFI_DEVICE_ERROR      The requested text mode cannot be set because of \r
+                                Graphics Console device error.\r
+  @retval EFI_UNSUPPORTED       The text mode number is not valid.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutSetMode (\r
@@ -271,6 +355,18 @@ GraphicsConsoleConOutSetMode (
   IN  UINTN                            ModeNumber\r
   );\r
 \r
+/**\r
+  Implements SIMPLE_TEXT_OUTPUT.SetAttribute().\r
+\r
+  @param  This                  Indicates the calling context.\r
+  @param  Attribute             The attribute to set. Only bit0..6 are valid, all\r
+                                other bits are undefined and must be zero.\r
+\r
+  @return EFI_SUCCESS           The requested attribute is set.\r
+  @return EFI_DEVICE_ERROR      The requested attribute cannot be set due to Graphics Console port error.\r
+  @return EFI_UNSUPPORTED       The attribute requested is not defined by EFI spec.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutSetAttribute (\r
@@ -278,12 +374,41 @@ GraphicsConsoleConOutSetAttribute (
   IN  UINTN                            Attribute\r
   );\r
 \r
+/**\r
+  Clears the output device(s) display to the currently selected background \r
+  color.\r
+\r
+  Implements SIMPLE_TEXT_OUTPUT.ClearScreen().\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 the request.\r
+  @retval  EFI_UNSUPPORTED  The output device is not in a valid text mode.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutClearScreen (\r
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This\r
   );\r
 \r
+/**\r
+  Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition().\r
+\r
+  @param  This                  Indicates the calling context.\r
+  @param  Column                The row to set cursor to.\r
+  @param  Row                   The column to set cursor to.\r
+\r
+  @return EFI_SUCCESS\r
+  @return The operation completed successfully.\r
+  @return EFI_DEVICE_ERROR\r
+  @return The request fails due to Graphics Console device error.\r
+  @return EFI_UNSUPPORTED\r
+  @return The Graphics Console is not in a valid text mode, or the cursor position\r
+  @return is invalid for current mode.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutSetCursorPosition (\r
@@ -292,6 +417,19 @@ GraphicsConsoleConOutSetCursorPosition (
   IN  UINTN                            Row\r
   );\r
 \r
+\r
+/**\r
+  Makes the cursor visible or invisible.\r
+\r
+  Implements SIMPLE_TEXT_OUTPUT.EnableCursor().\r
+\r
+  @param  This                  Protocol instance pointer.\r
+  @param  Visible               If TRUE, the cursor is set to be visible, If FALSE,\r
+                                the cursor is set to be invisible.\r
+\r
+  @retval EFI_SUCCESS           The operation completed successfully.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleConOutEnableCursor (\r
@@ -299,11 +437,22 @@ GraphicsConsoleConOutEnableCursor (
   IN  BOOLEAN                          Visible\r
   );\r
 \r
-EFI_STATUS\r
-EfiLocateHiiProtocol (\r
-  VOID\r
-  );\r
+/**\r
+  Test to see if Graphics Console could be supported on the Controller.\r
+\r
+  Graphics Console could be supported if Graphics Output Protocol or UGA Draw\r
+  Protocol exists on the Controller. (UGA Draw Protocol could be skipped\r
+  if PcdUgaConsumeSupport is set to FALSE.)\r
 \r
+  @param  This                Protocol instance pointer.\r
+  @param  Controller          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
 GraphicsConsoleControllerDriverSupported (\r
@@ -312,6 +461,21 @@ GraphicsConsoleControllerDriverSupported (
   IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
   );\r
 \r
+\r
+/**\r
+  Start this driver on Controller by opening Graphics Output protocol or \r
+  UGA Draw protocol, and installing Simple Text Out protocol on Controller.\r
+  (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
+  \r
+  @param  This                 Protocol instance pointer.\r
+  @param  Controller           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          This driver is added to Controller.\r
+  @retval other                This driver does not support this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleControllerDriverStart (\r
@@ -320,6 +484,24 @@ GraphicsConsoleControllerDriverStart (
   IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
   );\r
 \r
+/**\r
+  Stop this driver on Controller by removing Simple Text Out protocol \r
+  and closing the Graphics Output Protocol or UGA Draw protocol on Controller.\r
+  (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
+  \r
+\r
+  @param  This              Protocol instance pointer.\r
+  @param  Controller        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 Controller.\r
+  @retval EFI_NOT_STARTED   Simple Text Out protocol could not be found the \r
+                            Controller.\r
+  @retval other             This driver was not removed from this device.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GraphicsConsoleControllerDriverStop (\r
@@ -329,4 +511,20 @@ GraphicsConsoleControllerDriverStop (
   IN  EFI_HANDLE                     *ChildHandleBuffer\r
   );\r
 \r
+\r
+/**\r
+  Locate HII Database protocol and HII Font protocol.\r
+\r
+  @retval  EFI_SUCCESS     HII Database protocol and HII Font protocol \r
+                           are located successfully.\r
+  @return  other           Failed to locate HII Database protocol or \r
+                           HII Font protocol.\r
+\r
+**/\r
+EFI_STATUS\r
+EfiLocateHiiProtocol (\r
+  VOID\r
+  );\r
+\r
+\r
 #endif\r