]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
Fix the comments to follow UEFI Spec regarding how to check an EFI_HANDLE is valid...
[mirror_edk2.git] / OptionRomPkg / CirrusLogic5430Dxe / CirrusLogic5430.h
index 719cf7c9cb4189cb3db2db97e5d37ea39aca8399..5080de578e6f4573861be47ea0e5d60770925219 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
   Cirrus Logic 5430 Controller Driver\r
 \r
-  Copyright (c) 2006, Intel Corporation\r
-  All rights reserved. This program and the accompanying materials\r
+  Copyright (c) 2006 - 2011, 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
 #include <Protocol/GraphicsOutput.h>\r
 #include <Protocol/PciIo.h>\r
 #include <Protocol/DriverSupportedEfiVersion.h>\r
+#include <Protocol/EdidOverride.h>\r
+#include <Protocol/EdidDiscovered.h>\r
+#include <Protocol/EdidActive.h>\r
+#include <Protocol/DevicePath.h>\r
 \r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
 #include <Library/PcdLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/DevicePathLib.h>\r
+#include <Library/TimerLib.h>\r
 \r
-#include <IndustryStandard/pci22.h>\r
+#include <IndustryStandard/Pci.h>\r
 //\r
 // Cirrus Logic 5430 PCI Configuration Header values\r
 //\r
 #define CIRRUS_LOGIC_5430_MODE_COUNT         3\r
 \r
 typedef struct {\r
+  UINT32  ModeNumber;\r
   UINT32  HorizontalResolution;\r
   UINT32  VerticalResolution;\r
   UINT32  ColorDepth;\r
   UINT32  RefreshRate;\r
 } CIRRUS_LOGIC_5430_MODE_DATA;\r
 \r
+#define PIXEL_RED_SHIFT   0\r
+#define PIXEL_GREEN_SHIFT 3\r
+#define PIXEL_BLUE_SHIFT  6\r
+\r
+#define PIXEL_RED_MASK    (BIT7 | BIT6 | BIT5)\r
+#define PIXEL_GREEN_MASK  (BIT4 | BIT3 | BIT2)\r
+#define PIXEL_BLUE_MASK   (BIT1 | BIT0)\r
+\r
+#define PIXEL_TO_COLOR_BYTE(pixel, mask, shift) ((UINT8) ((pixel & mask) << shift))\r
+#define PIXEL_TO_RED_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_RED_MASK, PIXEL_RED_SHIFT)\r
+#define PIXEL_TO_GREEN_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_GREEN_MASK, PIXEL_GREEN_SHIFT)\r
+#define PIXEL_TO_BLUE_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_BLUE_MASK, PIXEL_BLUE_SHIFT)\r
+\r
+#define RGB_BYTES_TO_PIXEL(Red, Green, Blue) \\r
+  (UINT8) ( (((Red) >> PIXEL_RED_SHIFT) & PIXEL_RED_MASK) | \\r
+            (((Green) >> PIXEL_GREEN_SHIFT) & PIXEL_GREEN_MASK) | \\r
+            (((Blue) >> PIXEL_BLUE_SHIFT) & PIXEL_BLUE_MASK) )\r
+\r
 #define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER  0xffff\r
 \r
 //\r
 // Cirrus Logic 5440 Private Data Structure\r
 //\r
-#define CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE  EFI_SIGNATURE_32 ('C', 'L', '5', '4')\r
+#define CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('C', 'L', '5', '4')\r
 \r
 typedef struct {\r
   UINT64                                Signature;\r
@@ -68,6 +94,10 @@ typedef struct {
   UINT64                                OriginalPciAttributes;\r
   EFI_UGA_DRAW_PROTOCOL                 UgaDraw;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL          GraphicsOutput;\r
+  EFI_EDID_DISCOVERED_PROTOCOL          EdidDiscovered;\r
+  EFI_EDID_ACTIVE_PROTOCOL              EdidActive;\r
+  EFI_DEVICE_PATH_PROTOCOL              *GopDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL              *UgaDevicePath;\r
   UINTN                                 CurrentMode;\r
   UINTN                                 MaxMode;\r
   CIRRUS_LOGIC_5430_MODE_DATA           ModeData[CIRRUS_LOGIC_5430_MODE_COUNT];\r
@@ -134,14 +164,12 @@ extern EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL  gCirrusLogic5430DriverSupporte
 EFI_STATUS\r
 CirrusLogic5430UgaDrawConstructor (\r
   CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private\r
-  )\r
-;\r
+  );\r
 \r
 EFI_STATUS\r
 CirrusLogic5430UgaDrawDestructor (\r
   CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // Graphics Output Hardware abstraction internal worker functions\r
@@ -149,14 +177,12 @@ CirrusLogic5430UgaDrawDestructor (
 EFI_STATUS\r
 CirrusLogic5430GraphicsOutputConstructor (\r
   CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private\r
-  )\r
-;\r
+  );\r
 \r
 EFI_STATUS\r
 CirrusLogic5430GraphicsOutputDestructor (\r
   CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 //\r
@@ -178,8 +204,7 @@ CirrusLogic5430ControllerDriverSupported (
   IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   TODO: Add function description\r
@@ -197,8 +222,7 @@ CirrusLogic5430ControllerDriverStart (
   IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN EFI_HANDLE                   Controller,\r
   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   TODO: Add function description\r
@@ -218,8 +242,7 @@ CirrusLogic5430ControllerDriverStop (
   IN EFI_HANDLE                   Controller,\r
   IN UINTN                        NumberOfChildren,\r
   IN EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // EFI Component Name Functions\r
@@ -244,7 +267,7 @@ CirrusLogic5430ControllerDriverStop (
                                 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
@@ -309,7 +332,7 @@ CirrusLogic5430ComponentNameGetDriverName (
                                 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
@@ -323,7 +346,7 @@ CirrusLogic5430ComponentNameGetDriverName (
                                 driver specified by This was returned in\r
                                 DriverName.\r
 \r
-  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
 \r
   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
                                 EFI_HANDLE.\r
@@ -407,4 +430,9 @@ inw (
   UINTN                           Address\r
   );\r
 \r
+EFI_STATUS\r
+CirrusLogic5430VideoModeSetup (\r
+  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private\r
+  );\r
+\r
 #endif\r