diff options
author | Leif Lindholm <leif.lindholm@linaro.org> | 2014-01-24 17:18:26 +0000 |
---|---|---|
committer | Leif Lindholm <leif.lindholm@linaro.org> | 2014-01-24 17:18:26 +0000 |
commit | e1e57aa891deef00276b26a4569802a5cd13ce92 (patch) | |
tree | 9061825c6c9f5c8bed33d5b2087101ce38f23fdf /SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe | |
parent | 18110e987bb049e24ade0fb63b5577def8f99114 (diff) | |
parent | 04d965c0713468e055ef328f9f49903bc5944e54 (diff) |
Merging uefi-next/linaro-release into masterHEADlinaro-uefi-2014.01master
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe')
7 files changed, 0 insertions, 4006 deletions
diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ComponentName.c b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ComponentName.c deleted file mode 100755 index 1918cf862..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ComponentName.c +++ /dev/null @@ -1,182 +0,0 @@ -/** @file - UEFI Component Name(2) protocol implementation for GraphicsConsole driver. - -Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "GraphicsConsole.h" - -// -// EFI Component Name Protocol -// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleComponentName = { - GraphicsConsoleComponentNameGetDriverName, - GraphicsConsoleComponentNameGetControllerName, - "eng" -}; - -// -// EFI Component Name 2 Protocol -// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) GraphicsConsoleComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) GraphicsConsoleComponentNameGetControllerName, - "en" -}; - - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsConsoleDriverNameTable[] = { - { - "eng;en", - (CHAR16 *)L"UGA Console Driver" - }, - { - NULL, - NULL - } -}; - -/** - Retrieves a Unicode string that is the user readable name of the driver. - - This function retrieves the user readable name of a driver in the form of a - Unicode string. If the driver specified by This has a user readable name in - the language specified by Language, then a pointer to the driver name is - returned in DriverName, and EFI_SUCCESS is returned. If the driver specified - by This does not support the language specified by Language, - then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified - in RFC 4646 or ISO 639-2 language code format. - - @param DriverName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - driver specified by This in the language - specified by Language. - - @retval EFI_SUCCESS The Unicode string for the Driver specified by - This and the language specified by Language was - returned in DriverName. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER DriverName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ) -{ - return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mGraphicsConsoleDriverNameTable, - DriverName, - (BOOLEAN)(This == &gGraphicsConsoleComponentName) - ); -} - -/** - Retrieves a Unicode string that is the user readable name of the controller - that is being managed by a driver. - - This function retrieves the user readable name of the controller specified by - ControllerHandle and ChildHandle in the form of a Unicode string. If the - driver specified by This has a user readable name in the language specified by - Language, then a pointer to the controller name is returned in ControllerName, - and EFI_SUCCESS is returned. If the driver specified by This is not currently - managing the controller specified by ControllerHandle and ChildHandle, - then EFI_UNSUPPORTED is returned. If the driver specified by This does not - support the language specified by Language, then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param ControllerHandle[in] The handle of a controller that the driver - specified by This is managing. This handle - specifies the controller whose name is to be - returned. - - @param ChildHandle[in] The handle of the child controller to retrieve - the name of. This is an optional parameter that - may be NULL. It will be NULL for device - drivers. It will also be NULL for a bus drivers - that wish to retrieve the name of the bus - controller. It will not be NULL for a bus - driver that wishes to retrieve the name of a - child controller. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified in - RFC 4646 or ISO 639-2 language code format. - - @param ControllerName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - controller specified by ControllerHandle and - ChildHandle in the language specified by - Language from the point of view of the driver - specified by This. - - @retval EFI_SUCCESS The Unicode string for the user readable name in - the language specified by Language for the - driver specified by This was returned in - DriverName. - - @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. - - @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid - EFI_HANDLE. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER ControllerName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This is not currently - managing the controller specified by - ControllerHandle and ChildHandle. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ) -{ - return EFI_UNSUPPORTED; -} diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.c b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.c deleted file mode 100755 index 72e9f8ac3..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.c +++ /dev/null @@ -1,575 +0,0 @@ -/** @file - Template for Timer Architecture Protocol driver of the ARM flavor - - Copyright (c) 2011, Samsung Electronics Co. All rights reserved.<BR> - - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include <PiDxe.h> - -#include <Library/BaseLib.h> -#include <Library/DebugLib.h> -#include <Library/BaseMemoryLib.h> -#include <Library/UefiBootServicesTableLib.h> -#include <Library/UefiLib.h> -#include <Library/PcdLib.h> -#include <Library/IoLib.h> -#include <Library/TimerLib.h> -#include <Protocol/GraphicsOutput.h> -#include <Protocol/ExynosGpio.h> -#include <Platform/ArmPlatform.h> -#include "ExynosGop.h" -#include "GraphicsConsole.h" - - -//#define LCD_AMS369FG06 -#define LCD_WA101S - -#ifdef LCD_AMS369FG06 -#define LCD_WIDTH 480 -#define LCD_HEIGHT 800 -#define VCLK 24360000 -#endif - -#ifdef LCD_WA101S -#define LCD_WIDTH 1366 -#define LCD_HEIGHT 768 -#define VCLK 72332000 -#endif - -#define SRC_CLK 133333333 -#define FB_ADDR 0x4E000000 - -/** - This function configures the Power Domain of the LCD 0 Module to Normal Mode. -**/ -VOID ConfigureLcdPower(VOID) -{ - UINT32 PrevGateState; - - /* Enable LCD0 power domain */ - PrevGateState = MmioRead32((PcdGet32(PcdCmuBase) + CLKGATE_IP_LCD0_OFFSET)); - - MmioAndThenOr32((PcdGet32(PcdCmuBase) + CLKGATE_IP_LCD0_OFFSET), \ - ~CLK_PPMULCD0_MASK,CLK_PPMULCD0_MASK); - MmioWrite32((PcdGet32(PcdPmuBase) + PMU_LCD0_CONF_OFFSET), \ - LCD0_PWR_NRML_MODE); - while( (MmioRead32((PcdGet32(PcdPmuBase) + PMU_LCD0_STAT_OFFSET)) \ - & LCD0_PWR_NRML_MODE) != LCD0_PWR_NRML_MODE); - - MmioWrite32((PcdGet32(PcdCmuBase) + CLKGATE_IP_LCD0_OFFSET), PrevGateState); -} - -/** - This function configures Clock Source,Clock gating,Clock Divider and Mask values for the - FIMD0 in the LCD0 Module - -**/ -VOID ConfigureLcd0Clk(VOID) -{ - MmioAndThenOr32((PcdGet32(PcdCmuBase) + CLKGATE_IP_LCD0_OFFSET), \ - ~CLKGATE_FIMD0_MASK,CLKGATE_FIMD0_MASK); - /* MPLL is the clock source of FIMD0 IP */ - MmioAndThenOr32((PcdGet32(PcdCmuBase) + CLKSRC_LCD0_OFFSET), \ - ~CLKSRC_FIMD0_MASK, CLKSRC_FIMD0_SEL(FIMD0_SCLKMPLL)); - - /* Considering MPLL=800000000(800 MHz), SCLK_FIMD0=133333333(133.33 MHz) => DIV => (800/133.33) => 6 - The DIV value to be programmed should be (6 -1) = 5 */ - MmioAndThenOr32((PcdGet32(PcdCmuBase) + CLKDIV_LCD0_OFFSET), \ - ~CLKDIV_FIMD0_MASK, CLKDIV_FIMD0_SEL(FIMD0_CLK_DIV)); - - MmioOr32((PcdGet32(PcdCmuBase) + CLKSRC_MASK_LCD0_OFFSET), FIMD0_UNMASK); -} - -/** - This function does the necessary GPIO configuration for the Initialization of the LCD - -**/ -#ifdef LCD_WA101S -VOID ConfigureLcdGpio(VOID) -{ - EFI_STATUS Status; - EXYNOS_GPIO *Gpio; - - Status = gBS->LocateProtocol(&gSamsungPlatformGpioProtocolGuid, NULL, (VOID **)&Gpio); - ASSERT_EFI_ERROR(Status); - -/******************************************************************************** - GPIO Control - Pull Up/Down - Driving strenght Setting of GPIO Port F0 for LCD -********************************************************************************/ - Gpio->Set(Gpio,LCD_HSYNC,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VSYNC,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VDEN,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VCLK,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_0,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_1,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_2,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_3,GPIO_MODE_SPECIAL_FUNCTION_2); - - Gpio->SetPull(Gpio,LCD_HSYNC,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VSYNC,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VDEN,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VCLK,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_0,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_1,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_2,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_3,GPIO_PULL_NONE); - - - Gpio->SetStrength(Gpio,LCD_HSYNC,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VSYNC,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VDEN,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VCLK,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_0,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_1,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_2,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_3,GPIO_DRV_4X); - -/******************************************************************************** - GPIO Control - Pull Up/Down - Driving strenght Setting of GPIO Port F1 for LCD -********************************************************************************/ - Gpio->Set(Gpio,LCD_VD_4,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_5,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_6,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_7,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_8,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_9,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_10,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_11,GPIO_MODE_SPECIAL_FUNCTION_2); - - Gpio->SetPull(Gpio,LCD_VD_4,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_5,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_6,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_7,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_8,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_9,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_10,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_11,GPIO_PULL_NONE); - - - Gpio->SetStrength(Gpio,LCD_VD_4,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_5,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_6,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_7,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_8,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_9,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_10,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_11,GPIO_DRV_4X); - -/******************************************************************************** - GPIO Control - Pull Up/Down - Driving strenght Setting of GPIO Port F2 for LCD -********************************************************************************/ - Gpio->Set(Gpio,LCD_VD_12,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_13,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_14,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_15,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_16,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_17,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_18,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_19,GPIO_MODE_SPECIAL_FUNCTION_2); - - Gpio->SetPull(Gpio,LCD_VD_12,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_13,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_14,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_15,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_16,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_17,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_18,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_19,GPIO_PULL_NONE); - - - Gpio->SetStrength(Gpio,LCD_VD_12,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_13,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_14,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_15,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_16,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_17,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_18,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_19,GPIO_DRV_4X); - -/******************************************************************************** - GPIO Control - Pull Up/Down - Driving strenght Setting of GPIO Port F3 for LCD -********************************************************************************/ - Gpio->Set(Gpio,LCD_VD_20,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_21,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_22,GPIO_MODE_SPECIAL_FUNCTION_2); - Gpio->Set(Gpio,LCD_VD_23,GPIO_MODE_SPECIAL_FUNCTION_2); - - Gpio->SetPull(Gpio,LCD_VD_20,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_21,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_22,GPIO_PULL_NONE); - Gpio->SetPull(Gpio,LCD_VD_23,GPIO_PULL_NONE); - - - Gpio->SetStrength(Gpio,LCD_VD_20,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_21,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_22,GPIO_DRV_4X); - Gpio->SetStrength(Gpio,LCD_VD_23,GPIO_DRV_4X); - - /* Set FIMD0 bypass */ - MmioOr32((PcdGet32(PcdSysBase) + SYS_DISPLAY_CONTROL_OFFSET), FIMDBYPASS_LBLK0); - -} - -/** - This function configures POrt D0 Pin1 as the Output Pin to control the Enable/Disable of - LCD BackLight - -**/ -VOID EnableBackLight(VOID) -{ - EFI_STATUS Status; - EXYNOS_GPIO *Gpio; - - Status = gBS->LocateProtocol(&gSamsungPlatformGpioProtocolGuid, NULL, (VOID **)&Gpio); - ASSERT_EFI_ERROR(Status); - - Gpio->Set(Gpio,LCD_BACKLIGHT,GPIO_MODE_OUTPUT_1); -} - -VOID lcd_on(VOID) -{ -} -#endif - - -VOID LCD_Initialize(VOID) -{ - UINTN div; - UINT32 Fimd0BaseAddr; - gBS->SetMem((VOID *)FB_ADDR, (LCD_WIDTH*LCD_HEIGHT*4), 0x0); - - Fimd0BaseAddr = PcdGet32(PcdFIMD0Base); - ConfigureLcdPower(); - ConfigureLcdGpio(); - ConfigureLcd0Clk(); - - /* Configure FIMD */ - MmioAndThenOr32(Fimd0BaseAddr + VIDCON0_OFFSET, ~S5P_VIDCON0_VIDOUT_MASK, S5P_VIDCON0_VIDOUT_RGB); - - MmioAndThenOr32(Fimd0BaseAddr + VIDCON2_OFFSET, ~(S5P_VIDCON2_WB_MASK | S5P_VIDCON2_TVFORMATSEL_MASK | \ - S5P_VIDCON2_TVFORMATSEL_YUV_MASK), S5P_VIDCON2_WB_DISABLE); - - MmioAndThenOr32(Fimd0BaseAddr + VIDCON0_OFFSET, ~S5P_VIDCON0_PNRMODE_MASK, S5P_VIDCON0_PNRMODE_RGB_P); - -#ifdef LCD_WA101S - MmioOr32(Fimd0BaseAddr + VIDCON1_OFFSET, (S5P_VIDCON1_IVCLK_RISING_EDGE | S5P_VIDCON1_IHSYNC_INVERT | \ - S5P_VIDCON1_IVSYNC_INVERT | S5P_VIDCON1_IVDEN_NORMAL)); - - MmioOr32(Fimd0BaseAddr + VIDTCON0_OFFSET, (S5P_VIDTCON0_VBPDE(-1) | S5P_VIDTCON0_VBPD(13) | \ - S5P_VIDTCON0_VFPD(2) | S5P_VIDTCON0_VSPW(4))); - - MmioOr32(Fimd0BaseAddr + VIDTCON1_OFFSET, (S5P_VIDTCON1_VFPDE(-1) | S5P_VIDTCON1_HBPD(79) | \ - S5P_VIDTCON1_HFPD(47) | S5P_VIDTCON1_HSPW(31))); - -#endif - - MmioOr32(Fimd0BaseAddr + VIDTCON2_OFFSET, (S5P_VIDTCON2_HOZVAL(LCD_WIDTH - 1) | S5P_VIDTCON2_LINEVAL(LCD_HEIGHT - 1))); - - MmioAndThenOr32(Fimd0BaseAddr + WINCON_OFFSET(0), ~(S5P_WINCON_BITSWP_ENABLE | S5P_WINCON_BYTESWP_ENABLE | \ - S5P_WINCON_HAWSWP_ENABLE | S5P_WINCON_WSWP_ENABLE | S5P_WINCON_BURSTLEN_MASK | \ - S5P_WINCON_BPPMODE_MASK | S5P_WINCON_INRGB_MASK | S5P_WINCON_DATAPATH_MASK), \ - (S5P_WINCON_WSWP_ENABLE | S5P_WINCON_BURSTLEN_16WORD | \ - S5P_WINCON_BPPMODE_24BPP_888)); - - MmioOr32(Fimd0BaseAddr + WINSHMAP_OFFSET, S5P_WINSHMAP_PROTECT(0)); - MmioWrite32(Fimd0BaseAddr + VIDOSD_A_OFFSET(0), (S5P_VIDOSD_LEFT_X(0) | S5P_VIDOSD_TOP_Y(0))); - MmioWrite32(Fimd0BaseAddr + VIDOSD_B_OFFSET(0), (S5P_VIDOSD_RIGHT_X(LCD_WIDTH - 1) | \ - S5P_VIDOSD_BOTTOM_Y(LCD_HEIGHT - 1))); - MmioAnd32(Fimd0BaseAddr + WINSHMAP_OFFSET, ~(S5P_WINSHMAP_PROTECT(0))); - - MmioWrite32(Fimd0BaseAddr + VIDOSD_C_OFFSET(0), S5P_VIDOSD_SIZE(LCD_WIDTH * LCD_HEIGHT)); - - MmioOr32(Fimd0BaseAddr + WINSHMAP_OFFSET, S5P_WINSHMAP_PROTECT(0)); - MmioWrite32(Fimd0BaseAddr + VIDADDR_START0_OFFSET(0), FB_ADDR); - MmioWrite32(Fimd0BaseAddr + VIDADDR_END0_OFFSET(0), (FB_ADDR + (LCD_WIDTH * LCD_HEIGHT * 4))); - MmioAnd32(Fimd0BaseAddr + WINSHMAP_OFFSET, ~(S5P_WINSHMAP_PROTECT(0))); - - MmioWrite32(Fimd0BaseAddr + VIDADDR_SIZE_OFFSET(0), (S5P_VIDADDR_PAGEWIDTH(LCD_WIDTH * 4) | S5P_VIDADDR_OFFSIZE(0))); - - div = SRC_CLK / VCLK; - if(SRC_CLK % VCLK) - div++; - - MmioAndThenOr32(Fimd0BaseAddr + VIDCON0_OFFSET, ~(S5P_VIDCON0_CLKVALUP_MASK | S5P_VIDCON0_VCLKEN_MASK), \ - (S5P_VIDCON0_CLKVALUP_ALWAYS | S5P_VIDCON0_VCLKEN_NORMAL | \ - S5P_VIDCON0_CLKVAL_F(div - 1))); - - MmioOr32(Fimd0BaseAddr + WINCON_OFFSET(0), S5P_WINCON_ENWIN_ENABLE); - MmioOr32(Fimd0BaseAddr + WINSHMAP_OFFSET, S5P_WINSHMAP_CH_ENABLE(0)); - - MmioOr32(Fimd0BaseAddr + VIDCON0_OFFSET, (S5P_VIDCON0_ENVID_ENABLE | S5P_VIDCON0_ENVID_F_ENABLE)); - - EnableBackLight(); - - lcd_on(); -} - -EFI_STATUS -EFIAPI -DisplayQueryMode( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber, - OUT UINTN *SizeOfInfo, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info - ); - -EFI_STATUS -EFIAPI -DisplaySetMode( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber - ); - -EFI_STATUS -EFIAPI -DisplayBlt( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta OPTIONAL - ); - -EFI_GRAPHICS_OUTPUT_PROTOCOL gDisplay = { - DisplayQueryMode, - DisplaySetMode, - DisplayBlt, - NULL -}; - - -EFI_STATUS -EFIAPI -DisplayQueryMode( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber, - OUT UINTN *SizeOfInfo, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info - ) -{ - EFI_STATUS Status; - - Status = gBS->AllocatePool( - EfiBootServicesData, - sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION), - (VOID **)Info - ); - ASSERT_EFI_ERROR(Status); - - *SizeOfInfo = sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); - - (*Info)->Version = This->Mode->Info->Version; - (*Info)->HorizontalResolution = This->Mode->Info->HorizontalResolution; - (*Info)->VerticalResolution = This->Mode->Info->VerticalResolution; - (*Info)->PixelFormat = This->Mode->Info->PixelFormat; - (*Info)->PixelsPerScanLine = This->Mode->Info->PixelsPerScanLine; - - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -DisplaySetMode( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber - ) -{ - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -DisplayBlt( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta OPTIONAL - ) -{ - UINT8 *VidBuf, *BltBuf, *VidBuf1; - UINTN i, j; - - switch(BltOperation) { - case EfiBltVideoFill: - BltBuf = (UINT8 *)BltBuffer; - - for(i=0;i<Height;i++) { - VidBuf = (UINT8 *)((UINT32)This->Mode->FrameBufferBase + \ - (DestinationY + i)*This->Mode->Info->PixelsPerScanLine*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + \ - DestinationX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - - for(j=0;j<Width;j++) { - gBS->CopyMem((VOID *)VidBuf, (VOID *)BltBuf, sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - VidBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - } - } - break; - - case EfiBltVideoToBltBuffer: - if(Delta == 0) - Delta = Width * sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - - for(i=0;i<Height;i++) { - VidBuf = (UINT8 *)((UINT32)This->Mode->FrameBufferBase + \ - (SourceY + i)*This->Mode->Info->PixelsPerScanLine*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + \ - SourceX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - BltBuf = (UINT8 *)((UINT32)BltBuffer + (DestinationY + i)*Delta + DestinationX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - - for(j=0;j<Width;j++) { - gBS->CopyMem((VOID *)BltBuf, (VOID *)VidBuf, sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - VidBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - BltBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - } - } - break; - - case EfiBltBufferToVideo: - if(Delta == 0) - Delta = Width * sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - - for(i=0;i<Height;i++) { - VidBuf = (UINT8 *)((UINT32)This->Mode->FrameBufferBase + \ - (DestinationY + i)*This->Mode->Info->PixelsPerScanLine*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + \ - DestinationX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - BltBuf = (UINT8 *)((UINT32)BltBuffer + (SourceY + i)*Delta + SourceX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - - for(j=0;j<Width;j++) { - gBS->CopyMem((VOID *)VidBuf, (VOID *)BltBuf, sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - VidBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - BltBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - } - } - break; - - case EfiBltVideoToVideo: - for(i=0;i<Height;i++) { - VidBuf = (UINT8 *)((UINT32)This->Mode->FrameBufferBase + \ - (SourceY + i)*This->Mode->Info->PixelsPerScanLine*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + \ - SourceX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - - VidBuf1 = (UINT8 *)((UINT32)This->Mode->FrameBufferBase + \ - (DestinationY + i)*This->Mode->Info->PixelsPerScanLine*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + \ - DestinationX*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - - for(j=0;j<Width;j++) { - gBS->CopyMem((VOID *)VidBuf1, (VOID *)VidBuf, sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - VidBuf += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - VidBuf1 += sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - } - } - break; - - default: - ASSERT_EFI_ERROR(Status); - } - - return EFI_SUCCESS; -} - - - - -/** - Initialize the state information for the GOP Architectural Protocol - - @param ImageHandle of the loaded driver - @param SystemTable Pointer to the System Table - - @retval EFI_SUCCESS Protocol registered - @retval EFI_OUT_OF_RESOURCES Cannot allocate protocol data structure - @retval EFI_DEVICE_ERROR Hardware problems - -**/ -EFI_STATUS -ExynosGopConstructor ( - IN GRAPHICS_CONSOLE_DEV *Private - ) -{ - EFI_STATUS Status; - - Status = EFI_SUCCESS; - /* Initialize Display */ - LCD_Initialize(); - if(Private->GraphicsOutput->Mode == NULL){ - Status = gBS->AllocatePool( - EfiBootServicesData, - sizeof(EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE), - (VOID **)&Private->GraphicsOutput->Mode - ); - ASSERT_EFI_ERROR(Status); - ZeroMem(Private->GraphicsOutput->Mode,sizeof(EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE)); - } - if(Private->GraphicsOutput->Mode->Info==NULL){ - Status = gBS->AllocatePool( - EfiBootServicesData, - sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION), - (VOID **)&Private->GraphicsOutput->Mode->Info - ); - ASSERT_EFI_ERROR(Status); - ZeroMem(Private->GraphicsOutput->Mode->Info,sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION)); - } - /* Fill out mode information */ - Private->GraphicsOutput->Mode->MaxMode = 1; - Private->GraphicsOutput->Mode->Mode = 0; - Private->GraphicsOutput->Mode->Info->Version = 0; - Private->GraphicsOutput->Mode->Info->HorizontalResolution = LCD_WIDTH; - Private->GraphicsOutput->Mode->Info->VerticalResolution = LCD_HEIGHT; - Private->GraphicsOutput->Mode->Info->PixelFormat = PixelBlueGreenRedReserved8BitPerColor; - Private->GraphicsOutput->Mode->Info->PixelsPerScanLine = LCD_WIDTH; - Private->GraphicsOutput->Mode->SizeOfInfo = sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); - Private->GraphicsOutput->Mode->FrameBufferBase = FB_ADDR; - Private->GraphicsOutput->Mode->FrameBufferSize = (LCD_WIDTH * LCD_HEIGHT * 4); - return Status; -} - -EFI_STATUS -ExynosGopDestructor ( - GRAPHICS_CONSOLE_DEV *Private - ) -{ - // - // Free graphics output protocol occupied resource - // - if(Private != NULL){ - if(Private->GraphicsOutput != NULL){ - if (Private->GraphicsOutput->Mode != NULL) { - if (Private->GraphicsOutput->Mode->Info != NULL) { - gBS->FreePool (Private->GraphicsOutput->Mode->Info); - Private->GraphicsOutput->Mode->Info =NULL; - } - gBS->FreePool (Private->GraphicsOutput->Mode); - Private->GraphicsOutput->Mode=NULL; - } - } - } - return EFI_SUCCESS; -} diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.h b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.h deleted file mode 100755 index ebf30644a..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/ExynosGop.h +++ /dev/null @@ -1,274 +0,0 @@ -/** @file -* -* Copyright (c) 2011, Samsung Electronics Co. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - - -#ifndef _ExynosGop_H__ -#define _ExynosGop_H__ - -/* - * Bit Definitions -*/ - -/* VIDCON0 */ -#define S5P_VIDCON0_DSI_DISABLE (0 << 30) -#define S5P_VIDCON0_DSI_ENABLE (1 << 30) -#define S5P_VIDCON0_SCAN_PROGRESSIVE (0 << 29) -#define S5P_VIDCON0_SCAN_INTERLACE (1 << 29) -#define S5P_VIDCON0_SCAN_MASK (1 << 29) -#define S5P_VIDCON0_VIDOUT_RGB (0 << 26) -#define S5P_VIDCON0_VIDOUT_ITU (1 << 26) -#define S5P_VIDCON0_VIDOUT_I80LDI0 (2 << 26) -#define S5P_VIDCON0_VIDOUT_I80LDI1 (3 << 26) -#define S5P_VIDCON0_VIDOUT_WB_RGB (4 << 26) -#define S5P_VIDCON0_VIDOUT_WB_I80LDI0 (6 << 26) -#define S5P_VIDCON0_VIDOUT_WB_I80LDI1 (7 << 26) -#define S5P_VIDCON0_VIDOUT_MASK (7 << 26) -#define S5P_VIDCON0_PNRMODE_RGB_P (0 << 17) -#define S5P_VIDCON0_PNRMODE_BGR_P (1 << 17) -#define S5P_VIDCON0_PNRMODE_RGB_S (2 << 17) -#define S5P_VIDCON0_PNRMODE_BGR_S (3 << 17) -#define S5P_VIDCON0_PNRMODE_MASK (3 << 17) -#define S5P_VIDCON0_PNRMODE_SHIFT (17) -#define S5P_VIDCON0_CLKVALUP_ALWAYS (0 << 16) -#define S5P_VIDCON0_CLKVALUP_START_FRAME (1 << 16) -#define S5P_VIDCON0_CLKVALUP_MASK (1 << 16) -#define S5P_VIDCON0_CLKVAL_F(x) (((x) & 0xff) << 6) -#define S5P_VIDCON0_VCLKEN_NORMAL (0 << 5) -#define S5P_VIDCON0_VCLKEN_FREERUN (1 << 5) -#define S5P_VIDCON0_VCLKEN_MASK (1 << 5) -#define S5P_VIDCON0_CLKDIR_DIRECTED (0 << 4) -#define S5P_VIDCON0_CLKDIR_DIVIDED (1 << 4) -#define S5P_VIDCON0_CLKDIR_MASK (1 << 4) -#define S5P_VIDCON0_CLKSEL_HCLK (0 << 2) -#define S5P_VIDCON0_CLKSEL_SCLK (1 << 2) -#define S5P_VIDCON0_CLKSEL_MASK (1 << 2) -#define S5P_VIDCON0_ENVID_ENABLE (1 << 1) -#define S5P_VIDCON0_ENVID_DISABLE (0 << 1) -#define S5P_VIDCON0_ENVID_F_ENABLE (1 << 0) -#define S5P_VIDCON0_ENVID_F_DISABLE (0 << 0) - -/* VIDCON1 */ -#define S5P_VIDCON1_IVCLK_FALLING_EDGE (0 << 7) -#define S5P_VIDCON1_IVCLK_RISING_EDGE (1 << 7) -#define S5P_VIDCON1_IHSYNC_NORMAL (0 << 6) -#define S5P_VIDCON1_IHSYNC_INVERT (1 << 6) -#define S5P_VIDCON1_IVSYNC_NORMAL (0 << 5) -#define S5P_VIDCON1_IVSYNC_INVERT (1 << 5) -#define S5P_VIDCON1_IVDEN_NORMAL (0 << 4) -#define S5P_VIDCON1_IVDEN_INVERT (1 << 4) - -/* VIDCON2 */ -#define S5P_VIDCON2_EN601_DISABLE (0 << 23) -#define S5P_VIDCON2_EN601_ENABLE (1 << 23) -#define S5P_VIDCON2_EN601_MASK (1 << 23) -#define S5P_VIDCON2_WB_DISABLE (0 << 15) -#define S5P_VIDCON2_WB_ENABLE (1 << 15) -#define S5P_VIDCON2_WB_MASK (1 << 15) -#define S5P_VIDCON2_TVFORMATSEL_HW (0 << 14) -#define S5P_VIDCON2_TVFORMATSEL_SW (1 << 14) -#define S5P_VIDCON2_TVFORMATSEL_MASK (1 << 14) -#define S5P_VIDCON2_TVFORMATSEL_YUV422 (1 << 12) -#define S5P_VIDCON2_TVFORMATSEL_YUV444 (2 << 12) -#define S5P_VIDCON2_TVFORMATSEL_YUV_MASK (3 << 12) -#define S5P_VIDCON2_ORGYUV_YCBCR (0 << 8) -#define S5P_VIDCON2_ORGYUV_CBCRY (1 << 8) -#define S5P_VIDCON2_ORGYUV_MASK (1 << 8) -#define S5P_VIDCON2_YUVORD_CBCR (0 << 7) -#define S5P_VIDCON2_YUVORD_CRCB (1 << 7) -#define S5P_VIDCON2_YUVORD_MASK (1 << 7) - -/* PRTCON */ -#define S5P_PRTCON_UPDATABLE (0 << 11) -#define S5P_PRTCON_PROTECT (1 << 11) - -/* VIDTCON0 */ -#define S5P_VIDTCON0_VBPDE(x) (((x) & 0xff) << 24) -#define S5P_VIDTCON0_VBPD(x) (((x) & 0xff) << 16) -#define S5P_VIDTCON0_VFPD(x) (((x) & 0xff) << 8) -#define S5P_VIDTCON0_VSPW(x) (((x) & 0xff) << 0) - -/* VIDTCON1 */ -#define S5P_VIDTCON1_VFPDE(x) (((x) & 0xff) << 24) -#define S5P_VIDTCON1_HBPD(x) (((x) & 0xff) << 16) -#define S5P_VIDTCON1_HFPD(x) (((x) & 0xff) << 8) -#define S5P_VIDTCON1_HSPW(x) (((x) & 0xff) << 0) - -/* VIDTCON2 */ -#define S5P_VIDTCON2_LINEVAL(x) (((x) & 0x7ff) << 11) -#define S5P_VIDTCON2_HOZVAL(x) (((x) & 0x7ff) << 0) - -/* Window 0~4 Control - WINCONx */ -#define S5P_WINCON_DATAPATH_DMA (0 << 22) -#define S5P_WINCON_DATAPATH_LOCAL (1 << 22) -#define S5P_WINCON_DATAPATH_MASK (1 << 22) -#define S5P_WINCON_BUFSEL_0 (0 << 20) -#define S5P_WINCON_BUFSEL_1 (1 << 20) -#define S5P_WINCON_BUFSEL_MASK (1 << 20) -#define S5P_WINCON_BUFSEL_SHIFT (20) -#define S5P_WINCON_BUFAUTO_DISABLE (0 << 19) -#define S5P_WINCON_BUFAUTO_ENABLE (1 << 19) -#define S5P_WINCON_BUFAUTO_MASK (1 << 19) -#define S5P_WINCON_BITSWP_DISABLE (0 << 18) -#define S5P_WINCON_BITSWP_ENABLE (1 << 18) -#define S5P_WINCON_BITSWP_SHIFT (18) -#define S5P_WINCON_BYTESWP_DISABLE (0 << 17) -#define S5P_WINCON_BYTESWP_ENABLE (1 << 17) -#define S5P_WINCON_BYTESWP_SHIFT (17) -#define S5P_WINCON_HAWSWP_DISABLE (0 << 16) -#define S5P_WINCON_HAWSWP_ENABLE (1 << 16) -#define S5P_WINCON_HAWSWP_SHIFT (16) -#define S5P_WINCON_WSWP_DISABLE (0 << 15) -#define S5P_WINCON_WSWP_ENABLE (1 << 15) -#define S5P_WINCON_WSWP_SHIFT (15) -#define S5P_WINCON_INRGB_RGB (0 << 13) -#define S5P_WINCON_INRGB_YUV (1 << 13) -#define S5P_WINCON_INRGB_MASK (1 << 13) -#define S5P_WINCON_BURSTLEN_16WORD (0 << 9) -#define S5P_WINCON_BURSTLEN_8WORD (1 << 9) -#define S5P_WINCON_BURSTLEN_4WORD (2 << 9) -#define S5P_WINCON_BURSTLEN_MASK (3 << 9) -#define S5P_WINCON_ALPHA_MULTI_DISABLE (0 << 7) -#define S5P_WINCON_ALPHA_MULTI_ENABLE (1 << 7) -#define S5P_WINCON_BLD_PLANE (0 << 6) -#define S5P_WINCON_BLD_PIXEL (1 << 6) -#define S5P_WINCON_BLD_MASK (1 << 6) -#define S5P_WINCON_BPPMODE_1BPP (0 << 2) -#define S5P_WINCON_BPPMODE_2BPP (1 << 2) -#define S5P_WINCON_BPPMODE_4BPP (2 << 2) -#define S5P_WINCON_BPPMODE_8BPP_PAL (3 << 2) -#define S5P_WINCON_BPPMODE_8BPP (4 << 2) -#define S5P_WINCON_BPPMODE_16BPP_565 (5 << 2) -#define S5P_WINCON_BPPMODE_16BPP_A555 (6 << 2) -#define S5P_WINCON_BPPMODE_18BPP_666 (8 << 2) -#define S5P_WINCON_BPPMODE_18BPP_A665 (9 << 2) -#define S5P_WINCON_BPPMODE_24BPP_888 (0xb << 2) -#define S5P_WINCON_BPPMODE_24BPP_A887 (0xc << 2) -#define S5P_WINCON_BPPMODE_32BPP (0xd << 2) -#define S5P_WINCON_BPPMODE_16BPP_A444 (0xe << 2) -#define S5P_WINCON_BPPMODE_15BPP_555 (0xf << 2) -#define S5P_WINCON_BPPMODE_MASK (0xf << 2) -#define S5P_WINCON_BPPMODE_SHIFT (2) -#define S5P_WINCON_ALPHA0_SEL (0 << 1) -#define S5P_WINCON_ALPHA1_SEL (1 << 1) -#define S5P_WINCON_ALPHA_SEL_MASK (1 << 1) -#define S5P_WINCON_ENWIN_DISABLE (0 << 0) -#define S5P_WINCON_ENWIN_ENABLE (1 << 0) - -/* WINCON1 special */ -#define S5P_WINCON1_VP_DISABLE (0 << 24) -#define S5P_WINCON1_VP_ENABLE (1 << 24) -#define S5P_WINCON1_LOCALSEL_FIMC1 (0 << 23) -#define S5P_WINCON1_LOCALSEL_VP (1 << 23) -#define S5P_WINCON1_LOCALSEL_MASK (1 << 23) - -/* WINSHMAP */ -#define S5P_WINSHMAP_PROTECT(x) (((x) & 0x1f) << 10) -#define S5P_WINSHMAP_CH_ENABLE(x) (1 << (x)) -#define S5P_WINSHMAP_CH_DISABLE(x) (1 << (x)) -#define S5P_WINSHMAP_LOCAL_ENABLE(x) (0x20 << (x)) -#define S5P_WINSHMAP_LOCAL_DISABLE(x) (0x20 << (x)) - - -/* VIDOSDxA, VIDOSDxB */ -#define S5P_VIDOSD_LEFT_X(x) (((x) & 0x7ff) << 11) -#define S5P_VIDOSD_TOP_Y(x) (((x) & 0x7ff) << 0) -#define S5P_VIDOSD_RIGHT_X(x) (((x) & 0x7ff) << 11) -#define S5P_VIDOSD_BOTTOM_Y(x) (((x) & 0x7ff) << 0) - -/* VIDOSD0C, VIDOSDxD */ -#define S5P_VIDOSD_SIZE(x) (((x) & 0xffffff) << 0) - -/* VIDOSDxC (1~4) */ -#define S5P_VIDOSD_ALPHA0_R(x) (((x) & 0xf) << 20) -#define S5P_VIDOSD_ALPHA0_G(x) (((x) & 0xf) << 16) -#define S5P_VIDOSD_ALPHA0_B(x) (((x) & 0xf) << 12) -#define S5P_VIDOSD_ALPHA1_R(x) (((x) & 0xf) << 8) -#define S5P_VIDOSD_ALPHA1_G(x) (((x) & 0xf) << 4) -#define S5P_VIDOSD_ALPHA1_B(x) (((x) & 0xf) << 0) -#define S5P_VIDOSD_ALPHA0_SHIFT (12) -#define S5P_VIDOSD_ALPHA1_SHIFT (0) - -/* Start Address */ -#define S5P_VIDADDR_START_VBANK(x) (((x) & 0xff) << 24) -#define S5P_VIDADDR_START_VBASEU(x) (((x) & 0xffffff) << 0) - -/* End Address */ -#define S5P_VIDADDR_END_VBASEL(x) (((x) & 0xffffff) << 0) - -/* Buffer Size */ -#define S5P_VIDADDR_OFFSIZE(x) (((x) & 0x1fff) << 13) -#define S5P_VIDADDR_PAGEWIDTH(x) (((x) & 0x1fff) << 0) - -/* WIN Color Map */ -#define S5P_WINMAP_COLOR(x) ((x) & 0xffffff) - -/* VIDINTCON0 */ -#define S5P_VIDINTCON0_SYSMAINCON_DISABLE (0 << 19) -#define S5P_VIDINTCON0_SYSMAINCON_ENABLE (1 << 19) -#define S5P_VIDINTCON0_SYSSUBCON_DISABLE (0 << 18) -#define S5P_VIDINTCON0_SYSSUBCON_ENABLE (1 << 18) -#define S5P_VIDINTCON0_SYSIFDONE_DISABLE (0 << 17) -#define S5P_VIDINTCON0_SYSIFDONE_ENABLE (1 << 17) -#define S5P_VIDINTCON0_FRAMESEL0_BACK (0 << 15) -#define S5P_VIDINTCON0_FRAMESEL0_VSYNC (1 << 15) -#define S5P_VIDINTCON0_FRAMESEL0_ACTIVE (2 << 15) -#define S5P_VIDINTCON0_FRAMESEL0_FRONT (3 << 15) -#define S5P_VIDINTCON0_FRAMESEL0_MASK (3 << 15) -#define S5P_VIDINTCON0_FRAMESEL1_NONE (0 << 13) -#define S5P_VIDINTCON0_FRAMESEL1_BACK (1 << 13) -#define S5P_VIDINTCON0_FRAMESEL1_VSYNC (2 << 13) -#define S5P_VIDINTCON0_FRAMESEL1_FRONT (3 << 13) -#define S5P_VIDINTCON0_INTFRMEN_DISABLE (0 << 12) -#define S5P_VIDINTCON0_INTFRMEN_ENABLE (1 << 12) -#define S5P_VIDINTCON0_FIFOSEL_WIN4 (1 << 11) -#define S5P_VIDINTCON0_FIFOSEL_WIN3 (1 << 10) -#define S5P_VIDINTCON0_FIFOSEL_WIN2 (1 << 9) -#define S5P_VIDINTCON0_FIFOSEL_WIN1 (1 << 6) -#define S5P_VIDINTCON0_FIFOSEL_WIN0 (1 << 5) -#define S5P_VIDINTCON0_FIFOSEL_ALL (0x73 << 5) -#define S5P_VIDINTCON0_FIFOSEL_MASK (0x73 << 5) -#define S5P_VIDINTCON0_FIFOLEVEL_25 (0 << 2) -#define S5P_VIDINTCON0_FIFOLEVEL_50 (1 << 2) -#define S5P_VIDINTCON0_FIFOLEVEL_75 (2 << 2) -#define S5P_VIDINTCON0_FIFOLEVEL_EMPTY (3 << 2) -#define S5P_VIDINTCON0_FIFOLEVEL_FULL (4 << 2) -#define S5P_VIDINTCON0_FIFOLEVEL_MASK (7 << 2) -#define S5P_VIDINTCON0_INTFIFO_DISABLE (0 << 1) -#define S5P_VIDINTCON0_INTFIFO_ENABLE (1 << 1) -#define S5P_VIDINTCON0_INT_DISABLE (0 << 0) -#define S5P_VIDINTCON0_INT_ENABLE (1 << 0) -#define S5P_VIDINTCON0_INT_MASK (1 << 0) - -/* VIDINTCON1 */ -#define S5P_VIDINTCON1_INTVPPEND (1 << 5) -#define S5P_VIDINTCON1_INTI80PEND (1 << 2) -#define S5P_VIDINTCON1_INTFRMPEND (1 << 1) -#define S5P_VIDINTCON1_INTFIFOPEND (1 << 0) - -/* WINMAP */ -#define S5P_WINMAP_ENABLE (1 << 24) - -/* WxKEYCON0 (1~4) */ -#define S5P_KEYCON0_KEYBLEN_DISABLE (0 << 26) -#define S5P_KEYCON0_KEYBLEN_ENABLE (1 << 26) -#define S5P_KEYCON0_KEY_DISABLE (0 << 25) -#define S5P_KEYCON0_KEY_ENABLE (1 << 25) -#define S5P_KEYCON0_DIRCON_MATCH_FG (0 << 24) -#define S5P_KEYCON0_DIRCON_MATCH_BG (1 << 24) -#define S5P_KEYCON0_COMPKEY(x) (((x) & 0xffffff) << 0) - -/* WxKEYCON1 (1~4) */ -#define S5P_KEYCON1_COLVAL(x) (((x) & 0xffffff) << 0) - -#endif // _ExynosGop_H__ diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.c b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.c deleted file mode 100755 index 2c6129ae6..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.c +++ /dev/null @@ -1,2011 +0,0 @@ -/** @file - This is the main routine for initializing the Graphics Console support routines. - -Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "GraphicsConsole.h" - -//#define BIG_FONT - -#ifdef BIG_FONT - -#ifdef EFI_GLYPH_WIDTH - -#undef EFI_GLYPH_WIDTH -#define EFI_GLYPH_WIDTH 12 - -#endif // EFI_GLYPH_WIDTH - -#ifdef EFI_GLYPH_HEIGHT - -#undef EFI_GLYPH_HEIGHT -#define EFI_GLYPH_HEIGHT 28 - -#endif // EFI_GLYPH_HEIGHT - -#endif // BIG_FONT - -// -// Graphics Console Device Private Data template -// -GRAPHICS_CONSOLE_DEV mGraphicsConsoleDevTemplate = { - GRAPHICS_CONSOLE_DEV_SIGNATURE, - (EFI_GRAPHICS_OUTPUT_PROTOCOL *) NULL, - (EFI_UGA_DRAW_PROTOCOL *) NULL, - { - GraphicsConsoleConOutReset, - GraphicsConsoleConOutOutputString, - GraphicsConsoleConOutTestString, - GraphicsConsoleConOutQueryMode, - GraphicsConsoleConOutSetMode, - GraphicsConsoleConOutSetAttribute, - GraphicsConsoleConOutClearScreen, - GraphicsConsoleConOutSetCursorPosition, - GraphicsConsoleConOutEnableCursor, - (EFI_SIMPLE_TEXT_OUTPUT_MODE *) NULL - }, - { - 0, - 0, - EFI_TEXT_ATTR(EFI_LIGHTGRAY, EFI_BLACK), - 0, - 0, - TRUE - }, - { - { 80, 25, 0, 0, 0, 0 }, // Mode 0 - { 80, 50, 0, 0, 0, 0 }, // Mode 1 - { 100,31, 0, 0, 0, 0 }, // Mode 2 - { 0, 0, 0, 0, 0, 0 } // Mode 3 - }, - (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) NULL -}; - -EFI_HII_DATABASE_PROTOCOL *mHiiDatabase; -EFI_HII_FONT_PROTOCOL *mHiiFont; -EFI_HII_HANDLE mHiiHandle; -EFI_EVENT mHiiRegistration; - -EFI_GUID mFontPackageListGuid = {0xf5f219d3, 0x7006, 0x4648, {0xac, 0x8d, 0xd6, 0x1d, 0xfb, 0x7b, 0xc6, 0xad}}; - -CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL }; - -EFI_GRAPHICS_OUTPUT_BLT_PIXEL mGraphicsEfiColors[16] = { - // - // B G R reserved - // - {0x00, 0x00, 0x00, 0x00}, // BLACK - {0x98, 0x00, 0x00, 0x00}, // LIGHTBLUE - {0x00, 0x98, 0x00, 0x00}, // LIGHGREEN - {0x98, 0x98, 0x00, 0x00}, // LIGHCYAN - {0x00, 0x00, 0x98, 0x00}, // LIGHRED - {0x98, 0x00, 0x98, 0x00}, // MAGENTA - {0x00, 0x98, 0x98, 0x00}, // BROWN - {0x98, 0x98, 0x98, 0x00}, // LIGHTGRAY - {0x30, 0x30, 0x30, 0x00}, // DARKGRAY - BRIGHT BLACK - {0xff, 0x00, 0x00, 0x00}, // BLUE - {0x00, 0xff, 0x00, 0x00}, // LIME - {0xff, 0xff, 0x00, 0x00}, // CYAN - {0x00, 0x00, 0xff, 0x00}, // RED - {0xff, 0x00, 0xff, 0x00}, // FUCHSIA - {0x00, 0xff, 0xff, 0x00}, // YELLOW - {0xff, 0xff, 0xff, 0x00} // WHITE -}; - -EFI_NARROW_GLYPH mCursorGlyph = { - 0x0000, - 0x00, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF } -}; - -CHAR16 SpaceStr[] = { NARROW_CHAR, ' ', 0 }; - -EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding = { - GraphicsConsoleControllerDriverSupported, - GraphicsConsoleControllerDriverStart, - GraphicsConsoleControllerDriverStop, - 0xa, - NULL, - NULL -}; - -/** - Test to see if Graphics Console could be supported on the Controller. - - Graphics Console could be supported if Graphics Output Protocol or UGA Draw - Protocol exists on the Controller. (UGA Draw Protocol could be skipped - if PcdUgaConsumeSupport is set to FALSE.) - - @param This Protocol instance pointer. - @param Controller Handle of device to test. - @param RemainingDevicePath Optional parameter use to pick a specific child - device to start. - - @retval EFI_SUCCESS This driver supports this device. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -{ - EFI_STATUS Status; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - - GraphicsOutput = NULL; - UgaDraw = NULL; - // - // Open the IO Abstraction(s) needed to perform the supported test - // - Status = gBS->OpenProtocol ( - Controller, - &gEfiGraphicsOutputProtocolGuid, - (VOID **) &GraphicsOutput, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - - if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // Open Graphics Output Protocol failed, try to open UGA Draw Protocol - // - Status = gBS->OpenProtocol ( - Controller, - &gEfiUgaDrawProtocolGuid, - (VOID **) &UgaDraw, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - } - if (EFI_ERROR (Status)) { - return Status; - } - -#if 0 - // - // We need to ensure that we do not layer on top of a virtual handle. - // We need to ensure that the handles produced by the conspliter do not - // get used. - // - Status = gBS->OpenProtocol ( - Controller, - &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (!EFI_ERROR (Status)) { - gBS->CloseProtocol ( - Controller, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } else { - goto Error; - } -#endif - - // - // Does Hii Exist? If not, we aren't ready to run - // - Status = EfiLocateHiiProtocol (); - - // - // Close the I/O Abstraction(s) used to perform the supported test - // -//Error: - if (GraphicsOutput != NULL) { - gBS->CloseProtocol ( - Controller, - &gEfiGraphicsOutputProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - gBS->CloseProtocol ( - Controller, - &gEfiUgaDrawProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } - return Status; -} - - -/** - Start this driver on Controller by opening Graphics Output protocol or - UGA Draw protocol, and installing Simple Text Out protocol on Controller. - (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.) - - @param This Protocol instance pointer. - @param Controller Handle of device to bind driver to - @param RemainingDevicePath Optional parameter use to pick a specific child - device to start. - - @retval EFI_SUCCESS This driver is added to Controller. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -{ - EFI_STATUS Status; - GRAPHICS_CONSOLE_DEV *Private; - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - UINT32 ColorDepth; - UINT32 RefreshRate; - UINTN MaxMode; - UINTN Columns; - UINTN Rows; - UINT32 ModeNumber; - EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode; - ModeNumber = 0; - - // - // Initialize the Graphics Console device instance - // - Private = AllocateCopyPool ( - sizeof (GRAPHICS_CONSOLE_DEV), - &mGraphicsConsoleDevTemplate - ); - if (Private == NULL) { - return EFI_OUT_OF_RESOURCES; - } - Private->SimpleTextOutput.Mode = &(Private->SimpleTextOutputMode); - - Status = gBS->OpenProtocol ( - Controller, - &gEfiGraphicsOutputProtocolGuid, - (VOID **) &Private->GraphicsOutput, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - - Status = ExynosGopConstructor(Private); - if (EFI_ERROR (Status)) { - goto Error; - } - - if (EFI_ERROR(Status) && FeaturePcdGet (PcdUgaConsumeSupport)) { - Status = gBS->OpenProtocol ( - Controller, - &gEfiUgaDrawProtocolGuid, - (VOID **) &Private->UgaDraw, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - } - - if (EFI_ERROR (Status)) { - goto Error; - } - - // - // If the current mode information can not be retrieved, then attempt to set the default mode - // of 800x600, 32 bit color, 60 Hz refresh. - // - HorizontalResolution = 800; - VerticalResolution = 600; - - if (Private->GraphicsOutput != NULL) { - // - // The console is build on top of Graphics Output Protocol, find the mode number - // for the user-defined mode; if there are multiple video devices, - // graphic console driver will set all the video devices to the same mode. - // - Status = CheckModeSupported ( - Private->GraphicsOutput, - CURRENT_HORIZONTAL_RESOLUTION, - CURRENT_VERTICAL_RESOLUTION, - &ModeNumber - ); - if (!EFI_ERROR(Status)) { - // - // Update default mode to current mode - // - HorizontalResolution = CURRENT_HORIZONTAL_RESOLUTION; - VerticalResolution = CURRENT_VERTICAL_RESOLUTION; - } else { - // - // if not supporting current mode, try 800x600 which is required by UEFI/EFI spec - // - Status = CheckModeSupported ( - Private->GraphicsOutput, - 800, - 600, - &ModeNumber - ); - } - - Mode = Private->GraphicsOutput->Mode; - - if (EFI_ERROR (Status) || (Mode->MaxMode != 0)) { - // - // Set default mode failed or device don't support default mode, then get the current mode information - // - HorizontalResolution = Mode->Info->HorizontalResolution; - VerticalResolution = Mode->Info->VerticalResolution; - ModeNumber = Mode->Mode; - } - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // At first try to set user-defined resolution - // - ColorDepth = 32; - RefreshRate = 60; - Status = Private->UgaDraw->SetMode ( - Private->UgaDraw, - CURRENT_HORIZONTAL_RESOLUTION, - CURRENT_VERTICAL_RESOLUTION, - ColorDepth, - RefreshRate - ); - if (!EFI_ERROR (Status)) { - HorizontalResolution = CURRENT_HORIZONTAL_RESOLUTION; - VerticalResolution = CURRENT_VERTICAL_RESOLUTION; - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // Try to set 800*600 which is required by UEFI/EFI spec - // - Status = Private->UgaDraw->SetMode ( - Private->UgaDraw, - HorizontalResolution, - VerticalResolution, - ColorDepth, - RefreshRate - ); - if (EFI_ERROR (Status)) { - Status = Private->UgaDraw->GetMode ( - Private->UgaDraw, - &HorizontalResolution, - &VerticalResolution, - &ColorDepth, - &RefreshRate - ); - if (EFI_ERROR (Status)) { - goto Error; - } - } - } else { - Status = EFI_UNSUPPORTED; - goto Error; - } - } - - // - // Compute the maximum number of text Rows and Columns that this current graphics mode can support - // - Columns = HorizontalResolution / EFI_GLYPH_WIDTH; - Rows = VerticalResolution / EFI_GLYPH_HEIGHT; - - // - // See if the mode is too small to support the required 80x25 text mode - // - if (Columns < 80 || Rows < 25) { - goto Error; - } - // - // Add Mode #0 that must be 80x25 - // - MaxMode = 0; - Private->ModeData[MaxMode].GopWidth = HorizontalResolution; - Private->ModeData[MaxMode].GopHeight = VerticalResolution; - Private->ModeData[MaxMode].GopModeNumber = ModeNumber; - Private->ModeData[MaxMode].DeltaX = (HorizontalResolution - (80 * EFI_GLYPH_WIDTH)) >> 1; - Private->ModeData[MaxMode].DeltaY = (VerticalResolution - (25 * EFI_GLYPH_HEIGHT)) >> 1; - MaxMode++; - - // - // If it is possible to support Mode #1 - 80x50, than add it as an active mode - // - if (Rows >= 50) { - Private->ModeData[MaxMode].GopWidth = HorizontalResolution; - Private->ModeData[MaxMode].GopHeight = VerticalResolution; - Private->ModeData[MaxMode].GopModeNumber = ModeNumber; - Private->ModeData[MaxMode].DeltaX = (HorizontalResolution - (80 * EFI_GLYPH_WIDTH)) >> 1; - Private->ModeData[MaxMode].DeltaY = (VerticalResolution - (50 * EFI_GLYPH_HEIGHT)) >> 1; - MaxMode++; - } - - // - // If it is not to support Mode #1 - 80x50, then skip it - // - if (MaxMode < 2) { - Private->ModeData[MaxMode].Columns = 0; - Private->ModeData[MaxMode].Rows = 0; - Private->ModeData[MaxMode].GopWidth = HorizontalResolution; - Private->ModeData[MaxMode].GopHeight = VerticalResolution; - Private->ModeData[MaxMode].GopModeNumber = ModeNumber; - Private->ModeData[MaxMode].DeltaX = 0; - Private->ModeData[MaxMode].DeltaY = 0; - MaxMode++; - } - - // - // Add Mode #2 that must be 100x31 (graphic mode >= 800x600) - // - if (Columns >= 100 && Rows >= 31) { - Private->ModeData[MaxMode].GopWidth = HorizontalResolution; - Private->ModeData[MaxMode].GopHeight = VerticalResolution; - Private->ModeData[MaxMode].GopModeNumber = ModeNumber; - Private->ModeData[MaxMode].DeltaX = (HorizontalResolution - (100 * EFI_GLYPH_WIDTH)) >> 1; - Private->ModeData[MaxMode].DeltaY = (VerticalResolution - (31 * EFI_GLYPH_HEIGHT)) >> 1; - MaxMode++; - } - - // - // Add Mode #3 that uses the entire display for user-defined mode - // - if (HorizontalResolution > 800 && VerticalResolution > 600) { - Private->ModeData[MaxMode].Columns = HorizontalResolution/EFI_GLYPH_WIDTH; - Private->ModeData[MaxMode].Rows = VerticalResolution/EFI_GLYPH_HEIGHT; - Private->ModeData[MaxMode].GopWidth = HorizontalResolution; - Private->ModeData[MaxMode].GopHeight = VerticalResolution; - Private->ModeData[MaxMode].GopModeNumber = ModeNumber; - Private->ModeData[MaxMode].DeltaX = (HorizontalResolution % EFI_GLYPH_WIDTH) >> 1; - Private->ModeData[MaxMode].DeltaY = (VerticalResolution % EFI_GLYPH_HEIGHT) >> 1; - MaxMode++; - } - - // - // Update the maximum number of modes - // - Private->SimpleTextOutputMode.MaxMode = (INT32) MaxMode; - - // - // Determine the number of text modes that this protocol can support - // - Status = GraphicsConsoleConOutSetMode (&Private->SimpleTextOutput, 0); - if (EFI_ERROR (Status)) { - goto Error; - } - - DEBUG_CODE_BEGIN (); - GraphicsConsoleConOutOutputString (&Private->SimpleTextOutput, (CHAR16 *)L"Graphics Console Started\n\r"); - DEBUG_CODE_END (); - - // - // Install protocol interfaces for the Graphics Console device. - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &Controller, - &gEfiSimpleTextOutProtocolGuid, - &Private->SimpleTextOutput, - NULL - ); - - if(!EFI_ERROR (Status)) { - gST->ConOut = &Private->SimpleTextOutput; - } - -Error: - if (EFI_ERROR (Status)) { - // - // Close the GOP and UGA Draw Protocol - // - if (Private->GraphicsOutput != NULL) { - gBS->CloseProtocol ( - Controller, - &gEfiGraphicsOutputProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - gBS->CloseProtocol ( - Controller, - &gEfiUgaDrawProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } - - if (Private->LineBuffer != NULL) { - FreePool (Private->LineBuffer); - } - - // - // Free private data - // - FreePool (Private); - } - - return Status; -} - -/** - Stop this driver on Controller by removing Simple Text Out protocol - and closing the Graphics Output Protocol or UGA Draw protocol on Controller. - (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.) - - - @param This Protocol instance pointer. - @param Controller Handle of device to stop driver on - @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of - children is zero stop the entire bus driver. - @param ChildHandleBuffer List of Child Handles to Stop. - - @retval EFI_SUCCESS This driver is removed Controller. - @retval EFI_NOT_STARTED Simple Text Out protocol could not be found the - Controller. - @retval other This driver was not removed from this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ) -{ - EFI_STATUS Status; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOutput; - GRAPHICS_CONSOLE_DEV *Private=NULL; - - Status = gBS->OpenProtocol ( - Controller, - &gEfiSimpleTextOutProtocolGuid, - (VOID **) &SimpleTextOutput, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return EFI_NOT_STARTED; - } - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (SimpleTextOutput); - Status = gBS->UninstallProtocolInterface ( - Controller, - &gEfiSimpleTextOutProtocolGuid, - &Private->SimpleTextOutput - ); - - if (!EFI_ERROR (Status)) { - // - // Close the GOP or UGA IO Protocol - // - Status = ExynosGopDestructor(Private); - if (EFI_ERROR (Status)) { - ASSERT(Status); - } - if (Private->GraphicsOutput != NULL) { - gBS->CloseProtocol ( - Controller, - &gEfiGraphicsOutputProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - gBS->CloseProtocol ( - Controller, - &gEfiUgaDrawProtocolGuid, - This->DriverBindingHandle, - Controller - ); - } - - if (Private->LineBuffer != NULL) { - FreePool (Private->LineBuffer); - } - // - // Free our instance data - // - FreePool (Private); - } - - return Status; -} - -/** - Check if the current specific mode supported the user defined resolution - for the Graphics Console device based on Graphics Output Protocol. - - If yes, set the graphic devcice's current mode to this specific mode. - - @param GraphicsOutput Graphics Output Protocol instance pointer. - @param HorizontalResolution User defined horizontal resolution - @param VerticalResolution User defined vertical resolution. - @param CurrentModeNumber Current specific mode to be check. - - @retval EFI_SUCCESS The mode is supported. - @retval EFI_UNSUPPORTED The specific mode is out of range of graphics - device supported. - @retval other The specific mode does not support user defined - resolution or failed to set the current mode to the - specific mode on graphics device. - -**/ -EFI_STATUS -CheckModeSupported ( - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput, - IN UINT32 HorizontalResolution, - IN UINT32 VerticalResolution, - OUT UINT32 *CurrentModeNumber - ) -{ - UINT32 ModeNumber; - EFI_STATUS Status; - UINTN SizeOfInfo; - EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info; - UINT32 MaxMode; - - Status = EFI_SUCCESS; - MaxMode = GraphicsOutput->Mode->MaxMode; - - for (ModeNumber = 0; ModeNumber < MaxMode; ModeNumber++) { - Status = GraphicsOutput->QueryMode ( - GraphicsOutput, - ModeNumber, - &SizeOfInfo, - &Info - ); - if (!EFI_ERROR (Status)) { - if ((Info->HorizontalResolution == HorizontalResolution) && - (Info->VerticalResolution == VerticalResolution)) { - if ((GraphicsOutput->Mode->Info->HorizontalResolution == HorizontalResolution) && - (GraphicsOutput->Mode->Info->VerticalResolution == VerticalResolution)) { - // - // If video device has been set to this mode, we do not need to SetMode again - // - break; - } else { - Status = GraphicsOutput->SetMode (GraphicsOutput, ModeNumber); - if (!EFI_ERROR (Status)) { - FreePool (Info); - break; - } - } - } - FreePool (Info); - } - } - - if (ModeNumber == GraphicsOutput->Mode->MaxMode) { - Status = EFI_UNSUPPORTED; - } - - *CurrentModeNumber = ModeNumber; - return Status; -} - - -/** - Locate HII Database protocol and HII Font protocol. - - @retval EFI_SUCCESS HII Database protocol and HII Font protocol - are located successfully. - @return other Failed to locate HII Database protocol or - HII Font protocol. - -**/ -EFI_STATUS -EfiLocateHiiProtocol ( - VOID - ) -{ - EFI_HANDLE Handle; - UINTN Size; - EFI_STATUS Status; - - // - // There should only be one - so buffer size is this - // - Size = sizeof (EFI_HANDLE); - - Status = gBS->LocateHandle ( - ByProtocol, - &gEfiHiiDatabaseProtocolGuid, - NULL, - &Size, - (VOID **) &Handle - ); - - if (EFI_ERROR (Status)) { - return Status; - } - - Status = gBS->HandleProtocol ( - Handle, - &gEfiHiiDatabaseProtocolGuid, - (VOID **) &mHiiDatabase - ); - - if (EFI_ERROR (Status)) { - return Status; - } - - Status = gBS->HandleProtocol ( - Handle, - &gEfiHiiFontProtocolGuid, - (VOID **) &mHiiFont - ); - return Status; -} - -// -// Body of the STO functions -// - -/** - Reset the text output device hardware and optionally run diagnostics. - - Implements SIMPLE_TEXT_OUTPUT.Reset(). - If ExtendeVerification is TRUE, then perform dependent Graphics Console - device reset, and set display mode to mode 0. - If ExtendedVerification is FALSE, only set display mode to mode 0. - - @param This Protocol instance pointer. - @param ExtendedVerification Indicates that the driver may perform a more - exhaustive verification operation of the device - during reset. - - @retval EFI_SUCCESS The text output device was reset. - @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and - could not be reset. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutReset ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ) -{ - This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK)); - return This->SetMode (This, 0); -} - - -/** - Write a Unicode string to the output device. - - Implements SIMPLE_TEXT_OUTPUT.OutputString(). - The Unicode string will be converted to Glyphs and will be - sent to the Graphics Console. - - @param This Protocol instance pointer. - @param WString The NULL-terminated Unicode string to be displayed - on the output device(s). All output devices must - also support the Unicode drawing defined in this file. - - @retval EFI_SUCCESS The string was output to the device. - @retval EFI_DEVICE_ERROR The device reported an error while attempting to output - the text. - @retval EFI_UNSUPPORTED The output device's mode is not currently in a - defined text mode. - @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the - characters in the Unicode string could not be - rendered and were skipped. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutOutputString ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *WString - ) -{ - GRAPHICS_CONSOLE_DEV *Private; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - INTN Mode; - UINTN MaxColumn; - UINTN MaxRow; - UINTN Width; - UINTN Height; - UINTN Delta; - EFI_STATUS Status; - BOOLEAN Warning; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background; - UINTN DeltaX; - UINTN DeltaY; - UINTN Count; - UINTN Index; - INT32 OriginAttribute; - EFI_TPL OldTpl; - - Status = EFI_SUCCESS; - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - // - // Current mode - // - Mode = This->Mode->Mode; - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - GraphicsOutput = Private->GraphicsOutput; - UgaDraw = Private->UgaDraw; - - MaxColumn = Private->ModeData[Mode].Columns; - MaxRow = Private->ModeData[Mode].Rows; - DeltaX = (UINTN) Private->ModeData[Mode].DeltaX; - DeltaY = (UINTN) Private->ModeData[Mode].DeltaY; - Width = MaxColumn * EFI_GLYPH_WIDTH; - Height = (MaxRow - 1) * EFI_GLYPH_HEIGHT; - Delta = Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL); - - // - // The Attributes won't change when during the time OutputString is called - // - GetTextColors (This, &Foreground, &Background); - - EraseCursor (This); - - Warning = FALSE; - - // - // Backup attribute - // - OriginAttribute = This->Mode->Attribute; - - while (*WString != L'\0') { - - if (*WString == CHAR_BACKSPACE) { - // - // If the cursor is at the left edge of the display, then move the cursor - // one row up. - // - if (This->Mode->CursorColumn == 0 && This->Mode->CursorRow > 0) { - This->Mode->CursorRow--; - This->Mode->CursorColumn = (INT32) (MaxColumn - 1); - This->OutputString (This, SpaceStr); - EraseCursor (This); - This->Mode->CursorRow--; - This->Mode->CursorColumn = (INT32) (MaxColumn - 1); - } else if (This->Mode->CursorColumn > 0) { - // - // If the cursor is not at the left edge of the display, then move the cursor - // left one column. - // - This->Mode->CursorColumn--; - This->OutputString (This, SpaceStr); - EraseCursor (This); - This->Mode->CursorColumn--; - } - - WString++; - - } else if (*WString == CHAR_LINEFEED) { - // - // If the cursor is at the bottom of the display, then scroll the display one - // row, and do not update the cursor position. Otherwise, move the cursor - // down one row. - // - if (This->Mode->CursorRow == (INT32) (MaxRow - 1)) { - if (GraphicsOutput != NULL) { - // - // Scroll Screen Up One Row - // - GraphicsOutput->Blt ( - GraphicsOutput, - NULL, - EfiBltVideoToVideo, - DeltaX, - DeltaY + EFI_GLYPH_HEIGHT, - DeltaX, - DeltaY, - Width, - Height, - Delta - ); - - // - // Print Blank Line at last line - // - GraphicsOutput->Blt ( - GraphicsOutput, - &Background, - EfiBltVideoFill, - 0, - 0, - DeltaX, - DeltaY + Height, - Width, - EFI_GLYPH_HEIGHT, - Delta - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // Scroll Screen Up One Row - // - UgaDraw->Blt ( - UgaDraw, - NULL, - EfiUgaVideoToVideo, - DeltaX, - DeltaY + EFI_GLYPH_HEIGHT, - DeltaX, - DeltaY, - Width, - Height, - Delta - ); - - // - // Print Blank Line at last line - // - UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) (UINTN) &Background, - EfiUgaVideoFill, - 0, - 0, - DeltaX, - DeltaY + Height, - Width, - EFI_GLYPH_HEIGHT, - Delta - ); - } - } else { - This->Mode->CursorRow++; - } - - WString++; - - } else if (*WString == CHAR_CARRIAGE_RETURN) { - // - // Move the cursor to the beginning of the current row. - // - This->Mode->CursorColumn = 0; - WString++; - - } else if (*WString == WIDE_CHAR) { - - This->Mode->Attribute |= EFI_WIDE_ATTRIBUTE; - WString++; - - } else if (*WString == NARROW_CHAR) { - - This->Mode->Attribute &= (~ (UINT32) EFI_WIDE_ATTRIBUTE); - WString++; - - } else { - // - // Print the character at the current cursor position and move the cursor - // right one column. If this moves the cursor past the right edge of the - // display, then the line should wrap to the beginning of the next line. This - // is equivalent to inserting a CR and an LF. Note that if the cursor is at the - // bottom of the display, and the line wraps, then the display will be scrolled - // one line. - // If wide char is going to be displayed, need to display one character at a time - // Or, need to know the display length of a certain string. - // - // Index is used to determine how many character width units (wide = 2, narrow = 1) - // Count is used to determine how many characters are used regardless of their attributes - // - for (Count = 0, Index = 0; (This->Mode->CursorColumn + Index) < MaxColumn; Count++, Index++) { - if (WString[Count] == CHAR_NULL || - WString[Count] == CHAR_BACKSPACE || - WString[Count] == CHAR_LINEFEED || - WString[Count] == CHAR_CARRIAGE_RETURN || - WString[Count] == WIDE_CHAR || - WString[Count] == NARROW_CHAR) { - break; - } - // - // Is the wide attribute on? - // - if ((This->Mode->Attribute & EFI_WIDE_ATTRIBUTE) != 0) { - // - // If wide, add one more width unit than normal since we are going to increment at the end of the for loop - // - Index++; - // - // This is the end-case where if we are at column 79 and about to print a wide character - // We should prevent this from happening because we will wrap inappropriately. We should - // not print this character until the next line. - // - if ((This->Mode->CursorColumn + Index + 1) > MaxColumn) { - Index++; - break; - } - } - } - - Status = DrawUnicodeWeightAtCursorN (This, WString, Count); - if (EFI_ERROR (Status)) { - Warning = TRUE; - } - // - // At the end of line, output carriage return and line feed - // - WString += Count; - This->Mode->CursorColumn += (INT32) Index; - if (This->Mode->CursorColumn > (INT32) MaxColumn) { - This->Mode->CursorColumn -= 2; - This->OutputString (This, SpaceStr); - } - - if (This->Mode->CursorColumn >= (INT32) MaxColumn) { - EraseCursor (This); - This->OutputString (This, mCrLfString); - EraseCursor (This); - } - } - } - - This->Mode->Attribute = OriginAttribute; - - EraseCursor (This); - - if (Warning) { - Status = EFI_WARN_UNKNOWN_GLYPH; - } - - gBS->RestoreTPL (OldTpl); - return Status; - -} - -/** - Verifies that all characters in a Unicode string can be output to the - target device. - - Implements SIMPLE_TEXT_OUTPUT.TestString(). - If one of the characters in the *Wstring is neither valid valid Unicode - drawing characters, not ASCII code, then this function will return - EFI_UNSUPPORTED - - @param This Protocol instance pointer. - @param WString The NULL-terminated Unicode string to be examined for the output - device(s). - - @retval EFI_SUCCESS The device(s) are capable of rendering the output string. - @retval EFI_UNSUPPORTED Some of the characters in the Unicode string cannot be - rendered by one or more of the output devices mapped - by the EFI handle. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutTestString ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *WString - ) -{ - EFI_STATUS Status; - UINT16 Count; - - EFI_IMAGE_OUTPUT *Blt; - - Blt = NULL; - Count = 0; - - while (WString[Count] != 0) { - Status = mHiiFont->GetGlyph ( - mHiiFont, - WString[Count], - NULL, - &Blt, - NULL - ); - if (Blt != NULL) { - FreePool (Blt); - Blt = NULL; - } - Count++; - - if (EFI_ERROR (Status)) { - return EFI_UNSUPPORTED; - } - } - - return EFI_SUCCESS; -} - - -/** - Returns information for an available text mode that the output device(s) - supports - - Implements SIMPLE_TEXT_OUTPUT.QueryMode(). - It returnes information for an available text mode that the Graphics Console supports. - In this driver,we only support text mode 80x25, which is defined as mode 0. - - @param This Protocol instance pointer. - @param ModeNumber The mode number to return information on. - @param Columns The returned columns of the requested mode. - @param Rows The returned rows of the requested mode. - - @retval EFI_SUCCESS The requested mode information is returned. - @retval EFI_UNSUPPORTED The mode number is not valid. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutQueryMode ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber, - OUT UINTN *Columns, - OUT UINTN *Rows - ) -{ - GRAPHICS_CONSOLE_DEV *Private; - EFI_STATUS Status; - EFI_TPL OldTpl; - - if (ModeNumber >= (UINTN) This->Mode->MaxMode) { - return EFI_UNSUPPORTED; - } - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = EFI_SUCCESS; - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - - *Columns = Private->ModeData[ModeNumber].Columns; - *Rows = Private->ModeData[ModeNumber].Rows; - - if (*Columns <= 0 && *Rows <= 0) { - Status = EFI_UNSUPPORTED; - goto Done; - - } - -Done: - gBS->RestoreTPL (OldTpl); - return Status; -} - - -/** - Sets the output device(s) to a specified mode. - - Implements SIMPLE_TEXT_OUTPUT.SetMode(). - Set the Graphics Console to a specified mode. In this driver, we only support mode 0. - - @param This Protocol instance pointer. - @param ModeNumber The text mode to set. - - @retval EFI_SUCCESS The requested text mode is set. - @retval EFI_DEVICE_ERROR The requested text mode cannot be set because of - Graphics Console device error. - @retval EFI_UNSUPPORTED The text mode number is not valid. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetMode ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber - ) -{ - EFI_STATUS Status; - GRAPHICS_CONSOLE_DEV *Private; - GRAPHICS_CONSOLE_MODE_DATA *ModeData; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL *NewLineBuffer; - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - UINT32 ColorDepth; - UINT32 RefreshRate; - EFI_TPL OldTpl; - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - GraphicsOutput = Private->GraphicsOutput; - UgaDraw = Private->UgaDraw; - ModeData = &(Private->ModeData[ModeNumber]); - - // - // Make sure the requested mode number is supported - // - if (ModeNumber >= (UINTN) This->Mode->MaxMode) { - Status = EFI_UNSUPPORTED; - goto Done; - } - - if (ModeData->Columns <= 0 && ModeData->Rows <= 0) { - Status = EFI_UNSUPPORTED; - goto Done; - } - // - // Attempt to allocate a line buffer for the requested mode number - // - NewLineBuffer = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * ModeData->Columns * EFI_GLYPH_WIDTH * EFI_GLYPH_HEIGHT); - - if (NewLineBuffer == NULL) { - // - // The new line buffer could not be allocated, so return an error. - // No changes to the state of the current console have been made, so the current console is still valid - // - Status = EFI_OUT_OF_RESOURCES; - goto Done; - } - // - // If the mode has been set at least one other time, then LineBuffer will not be NULL - // - if (Private->LineBuffer != NULL) { - // - // Clear the current text window on the current graphics console - // - This->ClearScreen (This); - - // - // If the new mode is the same as the old mode, then just return EFI_SUCCESS - // - if ((INT32) ModeNumber == This->Mode->Mode) { - FreePool (NewLineBuffer); - Status = EFI_SUCCESS; - goto Done; - } - // - // Otherwise, the size of the text console and/or the GOP/UGA mode will be changed, - // so erase the cursor, and free the LineBuffer for the current mode - // - EraseCursor (This); - - FreePool (Private->LineBuffer); - } - // - // Assign the current line buffer to the newly allocated line buffer - // - Private->LineBuffer = NewLineBuffer; - - if (GraphicsOutput != NULL) { - if (ModeData->GopModeNumber != GraphicsOutput->Mode->Mode) { - // - // Either no graphics mode is currently set, or it is set to the wrong resolution, so set the new graphics mode - // - Status = GraphicsOutput->SetMode (GraphicsOutput, ModeData->GopModeNumber); - if (EFI_ERROR (Status)) { - // - // The mode set operation failed - // - goto Done; - } - } else { - // - // The current graphics mode is correct, so simply clear the entire display - // - Status = GraphicsOutput->Blt ( - GraphicsOutput, - &mGraphicsEfiColors[0], - EfiBltVideoFill, - 0, - 0, - 0, - 0, - ModeData->GopWidth, - ModeData->GopHeight, - 0 - ); - } - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // Get the current UGA Draw mode information - // - Status = UgaDraw->GetMode ( - UgaDraw, - &HorizontalResolution, - &VerticalResolution, - &ColorDepth, - &RefreshRate - ); - if (EFI_ERROR (Status) || HorizontalResolution != ModeData->GopWidth || VerticalResolution != ModeData->GopHeight) { - // - // Either no graphics mode is currently set, or it is set to the wrong resolution, so set the new graphics mode - // - Status = UgaDraw->SetMode ( - UgaDraw, - ModeData->GopWidth, - ModeData->GopHeight, - 32, - 60 - ); - if (EFI_ERROR (Status)) { - // - // The mode set operation failed - // - goto Done; - } - } else { - // - // The current graphics mode is correct, so simply clear the entire display - // - Status = UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) (UINTN) &mGraphicsEfiColors[0], - EfiUgaVideoFill, - 0, - 0, - 0, - 0, - ModeData->GopWidth, - ModeData->GopHeight, - 0 - ); - } - } - - // - // The new mode is valid, so commit the mode change - // - This->Mode->Mode = (INT32) ModeNumber; - - // - // Move the text cursor to the upper left hand corner of the display and enable it - // - This->SetCursorPosition (This, 0, 0); - - Status = EFI_SUCCESS; - -Done: - gBS->RestoreTPL (OldTpl); - return Status; -} - - -/** - Sets the background and foreground colors for the OutputString () and - ClearScreen () functions. - - Implements SIMPLE_TEXT_OUTPUT.SetAttribute(). - - @param This Protocol instance pointer. - @param Attribute The attribute to set. Bits 0..3 are the foreground - color, and bits 4..6 are the background color. - All other bits are undefined and must be zero. - - @retval EFI_SUCCESS The requested attribute is set. - @retval EFI_DEVICE_ERROR The requested attribute cannot be set due to Graphics Console port error. - @retval EFI_UNSUPPORTED The attribute requested is not defined. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetAttribute ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Attribute - ) -{ - EFI_TPL OldTpl; - - if ((Attribute | 0xFF) != 0xFF) { - return EFI_UNSUPPORTED; - } - - if ((INT32) Attribute == This->Mode->Attribute) { - return EFI_SUCCESS; - } - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - - EraseCursor (This); - - This->Mode->Attribute = (INT32) Attribute; - - EraseCursor (This); - - gBS->RestoreTPL (OldTpl); - - return EFI_SUCCESS; -} - - -/** - Clears the output device(s) display to the currently selected background - color. - - Implements SIMPLE_TEXT_OUTPUT.ClearScreen(). - - @param This Protocol instance pointer. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutClearScreen ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This - ) -{ - EFI_STATUS Status; - GRAPHICS_CONSOLE_DEV *Private; - GRAPHICS_CONSOLE_MODE_DATA *ModeData; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background; - EFI_TPL OldTpl; - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - GraphicsOutput = Private->GraphicsOutput; - UgaDraw = Private->UgaDraw; - ModeData = &(Private->ModeData[This->Mode->Mode]); - - GetTextColors (This, &Foreground, &Background); - if (GraphicsOutput != NULL) { - Status = GraphicsOutput->Blt ( - GraphicsOutput, - &Background, - EfiBltVideoFill, - 0, - 0, - 0, - 0, - ModeData->GopWidth, - ModeData->GopHeight, - 0 - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - Status = UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) (UINTN) &Background, - EfiUgaVideoFill, - 0, - 0, - 0, - 0, - ModeData->GopWidth, - ModeData->GopHeight, - 0 - ); - } else { - Status = EFI_UNSUPPORTED; - } - - This->Mode->CursorColumn = 0; - This->Mode->CursorRow = 0; - - EraseCursor (This); - - gBS->RestoreTPL (OldTpl); - - return Status; -} - - -/** - Sets the current coordinates of the cursor position. - - Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition(). - - @param This Protocol instance pointer. - @param Column The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - @param Row The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the - cursor position is invalid for the current mode. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetCursorPosition ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Column, - IN UINTN Row - ) -{ - GRAPHICS_CONSOLE_DEV *Private; - GRAPHICS_CONSOLE_MODE_DATA *ModeData; - EFI_STATUS Status; - EFI_TPL OldTpl; - - Status = EFI_SUCCESS; - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - ModeData = &(Private->ModeData[This->Mode->Mode]); - - if ((Column >= ModeData->Columns) || (Row >= ModeData->Rows)) { - Status = EFI_UNSUPPORTED; - goto Done; - } - - if ((This->Mode->CursorColumn == (INT32) Column) && (This->Mode->CursorRow == (INT32) Row)) { - Status = EFI_SUCCESS; - goto Done; - } - - EraseCursor (This); - - This->Mode->CursorColumn = (INT32) Column; - This->Mode->CursorRow = (INT32) Row; - - EraseCursor (This); - -Done: - gBS->RestoreTPL (OldTpl); - - return Status; -} - - -/** - Makes the cursor visible or invisible. - - Implements SIMPLE_TEXT_OUTPUT.EnableCursor(). - - @param This Protocol instance pointer. - @param Visible If TRUE, the cursor is set to be visible, If FALSE, - the cursor is set to be invisible. - - @retval EFI_SUCCESS The operation completed successfully. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutEnableCursor ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN Visible - ) -{ - EFI_TPL OldTpl; - - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - - EraseCursor (This); - - This->Mode->CursorVisible = Visible; - - EraseCursor (This); - - gBS->RestoreTPL (OldTpl); - return EFI_SUCCESS; -} - -/** - Gets Graphics Console devcie's foreground color and background color. - - @param This Protocol instance pointer. - @param Foreground Returned text foreground color. - @param Background Returned text background color. - - @retval EFI_SUCCESS It returned always. - -**/ -EFI_STATUS -GetTextColors ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Foreground, - OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Background - ) -{ - INTN Attribute; - - Attribute = This->Mode->Attribute & 0x7F; - - *Foreground = mGraphicsEfiColors[Attribute & 0x0f]; - *Background = mGraphicsEfiColors[Attribute >> 4]; - - return EFI_SUCCESS; -} - -/** - Draw Unicode string on the Graphics Console device's screen. - - @param This Protocol instance pointer. - @param UnicodeWeight One Unicode string to be displayed. - @param Count The count of Unicode string. - - @retval EFI_OUT_OF_RESOURCES If no memory resource to use. - @retval EFI_UNSUPPORTED If no Graphics Output protocol and UGA Draw - protocol exist. - @retval EFI_SUCCESS Drawing Unicode string implemented successfully. - -**/ -EFI_STATUS -DrawUnicodeWeightAtCursorN ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *UnicodeWeight, - IN UINTN Count - ) -{ - EFI_STATUS Status; - GRAPHICS_CONSOLE_DEV *Private; - EFI_IMAGE_OUTPUT *Blt; - EFI_STRING String; - EFI_FONT_DISPLAY_INFO *FontInfo; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - EFI_HII_ROW_INFO *RowInfoArray; - UINTN RowInfoArraySize; - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - Blt = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT)); - if (Blt == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Blt->Width = (UINT16) (Private->ModeData[This->Mode->Mode].GopWidth); - Blt->Height = (UINT16) (Private->ModeData[This->Mode->Mode].GopHeight); - - String = AllocateCopyPool ((Count + 1) * sizeof (CHAR16), UnicodeWeight); - if (String == NULL) { - FreePool (Blt); - return EFI_OUT_OF_RESOURCES; - } - // - // Set the end character - // - *(String + Count) = L'\0'; - - FontInfo = (EFI_FONT_DISPLAY_INFO *) AllocateZeroPool (sizeof (EFI_FONT_DISPLAY_INFO)); - if (FontInfo == NULL) { - FreePool (Blt); - FreePool (String); - return EFI_OUT_OF_RESOURCES; - } - // - // Get current foreground and background colors. - // - GetTextColors (This, &FontInfo->ForegroundColor, &FontInfo->BackgroundColor); - - if (Private->GraphicsOutput != NULL) { - // - // If Graphics Output protocol exists, using HII Font protocol to draw. - // - Blt->Image.Screen = Private->GraphicsOutput; - - Status = mHiiFont->StringToImage ( - mHiiFont, - EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_DIRECT_TO_SCREEN | EFI_HII_IGNORE_LINE_BREAK, - String, - FontInfo, - &Blt, - This->Mode->CursorColumn * EFI_GLYPH_WIDTH + Private->ModeData[This->Mode->Mode].DeltaX, - This->Mode->CursorRow * EFI_GLYPH_HEIGHT + Private->ModeData[This->Mode->Mode].DeltaY, - NULL, - NULL, - NULL - ); - - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - // - // If Graphics Output protocol cannot be found and PcdUgaConsumeSupport enabled, - // using UGA Draw protocol to draw. - // - ASSERT (Private->UgaDraw!= NULL); - - UgaDraw = Private->UgaDraw; - - Blt->Image.Bitmap = AllocateZeroPool (Blt->Width * Blt->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)); - if (Blt->Image.Bitmap == NULL) { - FreePool (Blt); - FreePool (String); - return EFI_OUT_OF_RESOURCES; - } - - RowInfoArray = NULL; - // - // StringToImage only support blt'ing image to device using GOP protocol. If GOP is not supported in this platform, - // we ask StringToImage to print the string to blt buffer, then blt to device using UgaDraw. - // - Status = mHiiFont->StringToImage ( - mHiiFont, - EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_IGNORE_LINE_BREAK, - String, - FontInfo, - &Blt, - This->Mode->CursorColumn * EFI_GLYPH_WIDTH + Private->ModeData[This->Mode->Mode].DeltaX, - This->Mode->CursorRow * EFI_GLYPH_HEIGHT + Private->ModeData[This->Mode->Mode].DeltaY, - &RowInfoArray, - &RowInfoArraySize, - NULL - ); - - if (!EFI_ERROR (Status)) { - // - // Line breaks are handled by caller of DrawUnicodeWeightAtCursorN, so the updated parameter RowInfoArraySize by StringToImage will - // always be 1 or 0 (if there is no valid Unicode Char can be printed). ASSERT here to make sure. - // - ASSERT (RowInfoArraySize <= 1); - - Status = UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) Blt->Image.Bitmap, - EfiUgaBltBufferToVideo, - This->Mode->CursorColumn * EFI_GLYPH_WIDTH + Private->ModeData[This->Mode->Mode].DeltaX, - (This->Mode->CursorRow) * EFI_GLYPH_HEIGHT + Private->ModeData[This->Mode->Mode].DeltaY, - This->Mode->CursorColumn * EFI_GLYPH_WIDTH + Private->ModeData[This->Mode->Mode].DeltaX, - (This->Mode->CursorRow) * EFI_GLYPH_HEIGHT + Private->ModeData[This->Mode->Mode].DeltaY, - RowInfoArray[0].LineWidth, - RowInfoArray[0].LineHeight, - Blt->Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) - ); - } - - FreePool (RowInfoArray); - FreePool (Blt->Image.Bitmap); - } else { - Status = EFI_UNSUPPORTED; - } - - if (Blt != NULL) { - FreePool (Blt); - } - if (String != NULL) { - FreePool (String); - } - if (FontInfo != NULL) { - FreePool (FontInfo); - } - return Status; -} - -/** - Erase the cursor on the screen. - - @param This Protocol instance pointer. - - @retval EFI_SUCCESS The cursor is erased successfully. - -**/ -EFI_STATUS -EraseCursor ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This - ) -{ - GRAPHICS_CONSOLE_DEV *Private; - EFI_SIMPLE_TEXT_OUTPUT_MODE *CurrentMode; - INTN GlyphX; - INTN GlyphY; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Foreground; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Background; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION BltChar[EFI_GLYPH_HEIGHT][EFI_GLYPH_WIDTH]; - UINTN PosX; - UINTN PosY; - - CurrentMode = This->Mode; - - if (!CurrentMode->CursorVisible) { - return EFI_SUCCESS; - } - - Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This); - GraphicsOutput = Private->GraphicsOutput; - UgaDraw = Private->UgaDraw; - - // - // In this driver, only narrow character was supported. - // - // - // Blt a character to the screen - // - GlyphX = (CurrentMode->CursorColumn * EFI_GLYPH_WIDTH) + Private->ModeData[CurrentMode->Mode].DeltaX; - GlyphY = (CurrentMode->CursorRow * EFI_GLYPH_HEIGHT) + Private->ModeData[CurrentMode->Mode].DeltaY; - if (GraphicsOutput != NULL) { - GraphicsOutput->Blt ( - GraphicsOutput, - (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) BltChar, - EfiBltVideoToBltBuffer, - GlyphX, - GlyphY, - 0, - 0, - EFI_GLYPH_WIDTH, - EFI_GLYPH_HEIGHT, - EFI_GLYPH_WIDTH * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) (UINTN) BltChar, - EfiUgaVideoToBltBuffer, - GlyphX, - GlyphY, - 0, - 0, - EFI_GLYPH_WIDTH, - EFI_GLYPH_HEIGHT, - EFI_GLYPH_WIDTH * sizeof (EFI_UGA_PIXEL) - ); - } - - GetTextColors (This, &Foreground.Pixel, &Background.Pixel); - - // - // Convert Monochrome bitmap of the Glyph to BltBuffer structure - // - for (PosY = 0; PosY < EFI_GLYPH_HEIGHT; PosY++) { - for (PosX = 0; PosX < EFI_GLYPH_WIDTH; PosX++) { - if ((mCursorGlyph.GlyphCol1[PosY] & (BIT0 << PosX)) != 0) { - BltChar[PosY][EFI_GLYPH_WIDTH - PosX - 1].Raw ^= Foreground.Raw; - } - } - } - - if (GraphicsOutput != NULL) { - GraphicsOutput->Blt ( - GraphicsOutput, - (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) BltChar, - EfiBltBufferToVideo, - 0, - 0, - GlyphX, - GlyphY, - EFI_GLYPH_WIDTH, - EFI_GLYPH_HEIGHT, - EFI_GLYPH_WIDTH * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) - ); - } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { - UgaDraw->Blt ( - UgaDraw, - (EFI_UGA_PIXEL *) (UINTN) BltChar, - EfiUgaBltBufferToVideo, - 0, - 0, - GlyphX, - GlyphY, - EFI_GLYPH_WIDTH, - EFI_GLYPH_HEIGHT, - EFI_GLYPH_WIDTH * sizeof (EFI_UGA_PIXEL) - ); - } - - return EFI_SUCCESS; -} - -/** - HII Database Protocol notification event handler. - - Register font package when HII Database Protocol has been installed. - - @param[in] Event Event whose notification function is being invoked. - @param[in] Context Pointer to the notification function's context. -**/ -VOID -EFIAPI -RegisterFontPackage ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - EFI_HII_SIMPLE_FONT_PACKAGE_HDR *SimplifiedFont; - UINT32 PackageLength; - UINT8 *Package; - UINT8 *Location; - EFI_HII_DATABASE_PROTOCOL *HiiDatabase; - - // - // Locate HII Database Protocol - // - Status = gBS->LocateProtocol ( - &gEfiHiiDatabaseProtocolGuid, - NULL, - (VOID **) &HiiDatabase - ); - ASSERT_EFI_ERROR (Status); - - // - // Add 4 bytes to the header for entire length for HiiAddPackages use only. - // - // +--------------------------------+ <-- Package - // | | - // | PackageLength(4 bytes) | - // | | - // |--------------------------------| <-- SimplifiedFont - // | | - // |EFI_HII_SIMPLE_FONT_PACKAGE_HDR | - // | | - // |--------------------------------| <-- Location - // | | - // | gUsStdNarrowGlyphData | - // | | - // +--------------------------------+ - - PackageLength = sizeof (EFI_HII_SIMPLE_FONT_PACKAGE_HDR) + mNarrowFontSize + 4; - Package = AllocateZeroPool (PackageLength); - ASSERT (Package != NULL); - - WriteUnaligned32((UINT32 *) Package,PackageLength); - SimplifiedFont = (EFI_HII_SIMPLE_FONT_PACKAGE_HDR *) (Package + 4); - SimplifiedFont->Header.Length = (UINT32) (PackageLength - 4); - SimplifiedFont->Header.Type = EFI_HII_PACKAGE_SIMPLE_FONTS; - SimplifiedFont->NumberOfNarrowGlyphs = (UINT16) (mNarrowFontSize / sizeof (EFI_NARROW_GLYPH)); - - Location = (UINT8 *) (&SimplifiedFont->NumberOfWideGlyphs + 1); - CopyMem (Location, gUsStdNarrowGlyphData, mNarrowFontSize); - - // - // Add this simplified font package to a package list then install it. - // - mHiiHandle = HiiAddPackages ( - &mFontPackageListGuid, - NULL, - Package, - NULL - ); - ASSERT (mHiiHandle != NULL); - FreePool (Package); -} - - -/** - The user Entry Point for module GraphicsConsole. The user code starts with this function. - - @param[in] ImageHandle The firmware allocated handle for the EFI image. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @return other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -InitializeGraphicsConsole ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - Status = gBS->InstallMultipleProtocolInterfaces( - &ImageHandle, - &gEfiGraphicsOutputProtocolGuid,&gDisplay, - NULL - ); - ASSERT_EFI_ERROR(Status); - - // - // Register notify function on HII Database Protocol to add font package. - // - EfiCreateProtocolNotifyEvent ( - &gEfiHiiDatabaseProtocolGuid, - TPL_CALLBACK, - RegisterFontPackage, - NULL, - &mHiiRegistration - ); - - // - // Install driver model protocol(s). - // - Status = EfiLibInstallDriverBindingComponentName2 ( - ImageHandle, - SystemTable, - &gGraphicsConsoleDriverBinding, - ImageHandle, - &gGraphicsConsoleComponentName, - &gGraphicsConsoleComponentName2 - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.h b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.h deleted file mode 100755 index 6e2c7955d..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsole.h +++ /dev/null @@ -1,615 +0,0 @@ -/** @file - Header file for GraphicsConsole driver. - -Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _GRAPHICS_CONSOLE_H_ -#define _GRAPHICS_CONSOLE_H_ - -#include <Uefi.h> -#include <Protocol/SimpleTextOut.h> -#include <Protocol/GraphicsOutput.h> -#include <Protocol/UgaDraw.h> -#include <Protocol/DevicePath.h> -#include <Library/DebugLib.h> -#include <Library/UefiDriverEntryPoint.h> -#include <Library/UefiLib.h> -#include <Library/BaseMemoryLib.h> -#include <Library/MemoryAllocationLib.h> -#include <Library/UefiBootServicesTableLib.h> -#include <Library/HiiLib.h> -#include <Library/BaseLib.h> -#include <Library/PcdLib.h> - -#include <Guid/MdeModuleHii.h> - -#include <Protocol/HiiFont.h> -#include <Protocol/HiiDatabase.h> - - -extern EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2; -extern EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding; -extern EFI_NARROW_GLYPH gUsStdNarrowGlyphData[]; -extern EFI_GRAPHICS_OUTPUT_PROTOCOL gDisplay; -extern UINT32 mNarrowFontSize; -// -// User can define valid graphic resolution here -// e.g. 640x480, 800x600, 1024x768... -// -#define CURRENT_HORIZONTAL_RESOLUTION 1366 -#define CURRENT_VERTICAL_RESOLUTION 768 - -typedef union { - EFI_NARROW_GLYPH NarrowGlyph; - EFI_WIDE_GLYPH WideGlyph; -} GLYPH_UNION; - -// -// Device Structure -// -#define GRAPHICS_CONSOLE_DEV_SIGNATURE SIGNATURE_32 ('g', 's', 't', 'o') - - -typedef struct { - UINTN Columns; - UINTN Rows; - INTN DeltaX; - INTN DeltaY; - UINT32 GopWidth; - UINT32 GopHeight; - UINT32 GopModeNumber; -} GRAPHICS_CONSOLE_MODE_DATA; - - -#define GRAPHICS_MAX_MODE 4 - -typedef struct { - UINTN Signature; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_UGA_DRAW_PROTOCOL *UgaDraw; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput; - EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode; - GRAPHICS_CONSOLE_MODE_DATA ModeData[GRAPHICS_MAX_MODE]; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer; -} GRAPHICS_CONSOLE_DEV; - - -#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \ - CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE) - - -// -// EFI Component Name Functions -// -/** - Retrieves a Unicode string that is the user readable name of the driver. - - This function retrieves the user readable name of a driver in the form of a - Unicode string. If the driver specified by This has a user readable name in - the language specified by Language, then a pointer to the driver name is - returned in DriverName, and EFI_SUCCESS is returned. If the driver specified - by This does not support the language specified by Language, - then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified - in RFC 4646 or ISO 639-2 language code format. - - @param DriverName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - driver specified by This in the language - specified by Language. - - @retval EFI_SUCCESS The Unicode string for the Driver specified by - This and the language specified by Language was - returned in DriverName. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER DriverName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ); - - -/** - Retrieves a Unicode string that is the user readable name of the controller - that is being managed by a driver. - - This function retrieves the user readable name of the controller specified by - ControllerHandle and ChildHandle in the form of a Unicode string. If the - driver specified by This has a user readable name in the language specified by - Language, then a pointer to the controller name is returned in ControllerName, - and EFI_SUCCESS is returned. If the driver specified by This is not currently - managing the controller specified by ControllerHandle and ChildHandle, - then EFI_UNSUPPORTED is returned. If the driver specified by This does not - support the language specified by Language, then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param ControllerHandle[in] The handle of a controller that the driver - specified by This is managing. This handle - specifies the controller whose name is to be - returned. - - @param ChildHandle[in] The handle of the child controller to retrieve - the name of. This is an optional parameter that - may be NULL. It will be NULL for device - drivers. It will also be NULL for a bus drivers - that wish to retrieve the name of the bus - controller. It will not be NULL for a bus - driver that wishes to retrieve the name of a - child controller. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified in - RFC 4646 or ISO 639-2 language code format. - - @param ControllerName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - controller specified by ControllerHandle and - ChildHandle in the language specified by - Language from the point of view of the driver - specified by This. - - @retval EFI_SUCCESS The Unicode string for the user readable name in - the language specified by Language for the - driver specified by This was returned in - DriverName. - - @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. - - @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid - EFI_HANDLE. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER ControllerName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This is not currently - managing the controller specified by - ControllerHandle and ChildHandle. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ); - - -/** - Reset the text output device hardware and optionally run diagnostics. - - Implements SIMPLE_TEXT_OUTPUT.Reset(). - If ExtendeVerification is TRUE, then perform dependent Graphics Console - device reset, and set display mode to mode 0. - If ExtendedVerification is FALSE, only set display mode to mode 0. - - @param This Protocol instance pointer. - @param ExtendedVerification Indicates that the driver may perform a more - exhaustive verification operation of the device - during reset. - - @retval EFI_SUCCESS The text output device was reset. - @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and - could not be reset. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutReset ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -/** - Write a Unicode string to the output device. - - Implements SIMPLE_TEXT_OUTPUT.OutputString(). - The Unicode string will be converted to Glyphs and will be - sent to the Graphics Console. - - @param This Protocol instance pointer. - @param WString The NULL-terminated Unicode string to be displayed - on the output device(s). All output devices must - also support the Unicode drawing defined in this file. - - @retval EFI_SUCCESS The string was output to the device. - @retval EFI_DEVICE_ERROR The device reported an error while attempting to output - the text. - @retval EFI_UNSUPPORTED The output device's mode is not currently in a - defined text mode. - @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the - characters in the Unicode string could not be - rendered and were skipped. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutOutputString ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *WString - ); - -/** - Verifies that all characters in a Unicode string can be output to the - target device. - - Implements SIMPLE_TEXT_OUTPUT.TestString(). - If one of the characters in the *Wstring is neither valid valid Unicode - drawing characters, not ASCII code, then this function will return - EFI_UNSUPPORTED - - @param This Protocol instance pointer. - @param WString The NULL-terminated Unicode string to be examined for the output - device(s). - - @retval EFI_SUCCESS The device(s) are capable of rendering the output string. - @retval EFI_UNSUPPORTED Some of the characters in the Unicode string cannot be - rendered by one or more of the output devices mapped - by the EFI handle. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutTestString ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *WString - ); - -/** - Returns information for an available text mode that the output device(s) - supports - - Implements SIMPLE_TEXT_OUTPUT.QueryMode(). - It returnes information for an available text mode that the Graphics Console supports. - In this driver,we only support text mode 80x25, which is defined as mode 0. - - @param This Protocol instance pointer. - @param ModeNumber The mode number to return information on. - @param Columns The returned columns of the requested mode. - @param Rows The returned rows of the requested mode. - - @retval EFI_SUCCESS The requested mode information is returned. - @retval EFI_UNSUPPORTED The mode number is not valid. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutQueryMode ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber, - OUT UINTN *Columns, - OUT UINTN *Rows - ); - - -/** - Sets the output device(s) to a specified mode. - - Implements SIMPLE_TEXT_OUTPUT.SetMode(). - Set the Graphics Console to a specified mode. In this driver, we only support mode 0. - - @param This Protocol instance pointer. - @param ModeNumber The text mode to set. - - @retval EFI_SUCCESS The requested text mode is set. - @retval EFI_DEVICE_ERROR The requested text mode cannot be set because of - Graphics Console device error. - @retval EFI_UNSUPPORTED The text mode number is not valid. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetMode ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber - ); - -/** - Sets the background and foreground colors for the OutputString () and - ClearScreen () functions. - - Implements SIMPLE_TEXT_OUTPUT.SetAttribute(). - - @param This Protocol instance pointer. - @param Attribute The attribute to set. Bits 0..3 are the foreground - color, and bits 4..6 are the background color. - All other bits are undefined and must be zero. - - @retval EFI_SUCCESS The requested attribute is set. - @retval EFI_DEVICE_ERROR The requested attribute cannot be set due to Graphics Console port error. - @retval EFI_UNSUPPORTED The attribute requested is not defined. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetAttribute ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Attribute - ); - -/** - Clears the output device(s) display to the currently selected background - color. - - Implements SIMPLE_TEXT_OUTPUT.ClearScreen(). - - @param This Protocol instance pointer. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutClearScreen ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This - ); - -/** - Sets the current coordinates of the cursor position. - - Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition(). - - @param This Protocol instance pointer. - @param Column The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - @param Row The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the - cursor position is invalid for the current mode. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutSetCursorPosition ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Column, - IN UINTN Row - ); - - -/** - Makes the cursor visible or invisible. - - Implements SIMPLE_TEXT_OUTPUT.EnableCursor(). - - @param This Protocol instance pointer. - @param Visible If TRUE, the cursor is set to be visible, If FALSE, - the cursor is set to be invisible. - - @retval EFI_SUCCESS The operation completed successfully. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleConOutEnableCursor ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN Visible - ); - -/** - Test to see if Graphics Console could be supported on the Controller. - - Graphics Console could be supported if Graphics Output Protocol or UGA Draw - Protocol exists on the Controller. (UGA Draw Protocol could be skipped - if PcdUgaConsumeSupport is set to FALSE.) - - @param This Protocol instance pointer. - @param Controller Handle of device to test. - @param RemainingDevicePath Optional parameter use to pick a specific child - device to start. - - @retval EFI_SUCCESS This driver supports this device. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - - -/** - Start this driver on Controller by opening Graphics Output protocol or - UGA Draw protocol, and installing Simple Text Out protocol on Controller. - (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.) - - @param This Protocol instance pointer. - @param Controller Handle of device to bind driver to - @param RemainingDevicePath Optional parameter use to pick a specific child - device to start. - - @retval EFI_SUCCESS This driver is added to Controller. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - -/** - Stop this driver on Controller by removing Simple Text Out protocol - and closing the Graphics Output Protocol or UGA Draw protocol on Controller. - (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.) - - - @param This Protocol instance pointer. - @param Controller Handle of device to stop driver on - @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of - children is zero stop the entire bus driver. - @param ChildHandleBuffer List of Child Handles to Stop. - - @retval EFI_SUCCESS This driver is removed Controller. - @retval EFI_NOT_STARTED Simple Text Out protocol could not be found the - Controller. - @retval other This driver was not removed from this device. - -**/ -EFI_STATUS -EFIAPI -GraphicsConsoleControllerDriverStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ); - - -/** - Locate HII Database protocol and HII Font protocol. - - @retval EFI_SUCCESS HII Database protocol and HII Font protocol - are located successfully. - @return other Failed to locate HII Database protocol or - HII Font protocol. - -**/ -EFI_STATUS -EfiLocateHiiProtocol ( - VOID - ); - - -/** - Gets Graphics Console devcie's foreground color and background color. - - @param This Protocol instance pointer. - @param Foreground Returned text foreground color. - @param Background Returned text background color. - - @retval EFI_SUCCESS It returned always. - -**/ -EFI_STATUS -GetTextColors ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Foreground, - OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Background - ); - -/** - Draw Unicode string on the Graphics Console device's screen. - - @param This Protocol instance pointer. - @param UnicodeWeight One Unicode string to be displayed. - @param Count The count of Unicode string. - - @retval EFI_OUT_OF_RESOURCES If no memory resource to use. - @retval EFI_UNSUPPORTED If no Graphics Output protocol and UGA Draw - protocol exist. - @retval EFI_SUCCESS Drawing Unicode string implemented successfully. - -**/ -EFI_STATUS -DrawUnicodeWeightAtCursorN ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *UnicodeWeight, - IN UINTN Count - ); - -/** - Erase the cursor on the screen. - - @param This Protocol instance pointer. - - @retval EFI_SUCCESS The cursor is erased successfully. - -**/ -EFI_STATUS -EraseCursor ( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This - ); - -/** - Check if the current specific mode supported the user defined resolution - for the Graphics Console device based on Graphics Output Protocol. - - If yes, set the graphic device's current mode to this specific mode. - - @param GraphicsOutput Graphics Output Protocol instance pointer. - @param HorizontalResolution User defined horizontal resolution - @param VerticalResolution User defined vertical resolution. - @param CurrentModeNumber Current specific mode to be check. - - @retval EFI_SUCCESS The mode is supported. - @retval EFI_UNSUPPORTED The specific mode is out of range of graphics - device supported. - @retval other The specific mode does not support user defined - resolution or failed to set the current mode to the - specific mode on graphics device. - -**/ -EFI_STATUS -CheckModeSupported ( - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput, - IN UINT32 HorizontalResolution, - IN UINT32 VerticalResolution, - OUT UINT32 *CurrentModeNumber - ); - -EFI_STATUS -ExynosGopConstructor ( - IN GRAPHICS_CONSOLE_DEV *Private - ); - -EFI_STATUS -ExynosGopDestructor ( - GRAPHICS_CONSOLE_DEV *Private - ); -#endif diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsoleDxe.inf b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsoleDxe.inf deleted file mode 100755 index 25f12dd4a..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/GraphicsConsoleDxe.inf +++ /dev/null @@ -1,73 +0,0 @@ -## @file -# -# Component description file for GraphicsConsole module -# -# This is the main routine for initializing the Graphics Console support routines. -# -# Copyright (c) 2011, Samsung Electronics Co. All rights reserved.<BR> -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = GraphicsConsoleDxe - FILE_GUID = c5deae31-fad2-4030-841b-cfc9644d2c5b - MODULE_TYPE = UEFI_DRIVER - VERSION_STRING = 1.0 - ENTRY_POINT = InitializeGraphicsConsole - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# -# DRIVER_BINDING = gGraphicsConsoleDriverBinding -# COMPONENT_NAME = gGraphicsConsoleComponentName -# COMPONENT_NAME2 = gGraphicsConsoleComponentName2 -# - -[Sources] - ComponentName.c - LaffStd.c - GraphicsConsole.c - GraphicsConsole.h - ExynosGop.c - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - SamsungPlatformPkgOrigen/ExynosPkg/ExynosPkg.dec - SamsungPlatformPkgOrigen/SamsungPlatformPkg.dec - -[LibraryClasses] - BaseLib - UefiLib - MemoryAllocationLib - UefiDriverEntryPoint - HiiLib - IoLib - -[Protocols] - gEfiSimpleTextOutProtocolGuid ## BY_START - gEfiGraphicsOutputProtocolGuid ## TO_START - gEfiUgaDrawProtocolGuid ## TO_START - gEfiHiiFontProtocolGuid ## TO_START - gEfiHiiDatabaseProtocolGuid ## TO_START - gSamsungPlatformGpioProtocolGuid ## GPIO Protocol - -[Guids] - -[FeaturePcd] - gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport -[FixedPcd] - gExynosPkgTokenSpaceGuid.PcdCmuBase - gExynosPkgTokenSpaceGuid.PcdPmuBase - gExynosPkgTokenSpaceGuid.PcdSysBase - gExynosPkgTokenSpaceGuid.PcdFIMD0Base diff --git a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/LaffStd.c b/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/LaffStd.c deleted file mode 100755 index d5bf3ec71..000000000 --- a/SamsungPlatformPkgOrigen/ExynosPkg/GraphicsConsoleDxe/LaffStd.c +++ /dev/null @@ -1,276 +0,0 @@ -/** @file - Narrow font Data definition for GraphicsConsole driver. - -Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "GraphicsConsole.h" - - - -EFI_NARROW_GLYPH gUsStdNarrowGlyphData[] = { - // - // Unicode glyphs from 0x20 to 0x7e are the same as ASCII characters 0x20 to 0x7e - // - { 0x0020, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x0021, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x0022, 0x00, {0x00,0x00,0x00,0x6C,0x6C,0x6C,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x0023, 0x00, {0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00}}, - { 0x0024, 0x00, {0x00,0x00,0x18,0x18,0x7C,0xC6,0xC6,0x60,0x38,0x0C,0x06,0xC6,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00}}, - { 0x0025, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x0026, 0x00, {0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x76,0xDC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x0027, 0x00, {0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x0028, 0x00, {0x00,0x00,0x00,0x06,0x0C,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x0C,0x06,0x00,0x00,0x00,0x00}}, - { 0x0029, 0x00, {0x00,0x00,0x00,0xC0,0x60,0x60,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0x60,0xC0,0x00,0x00,0x00,0x00}}, - { 0x002a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x38,0xFE,0x38,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x002b, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x002c, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00,0x00}}, - { 0x002d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x002e, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00}}, - { 0x002f, 0x00, {0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0xC0,0xC0,0x00,0x00,0x00,0x00}}, - { 0x0030, 0x00, {0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xD6,0xD6,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00}}, - { 0x0031, 0x00, {0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00}}, - { 0x0032, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0x06,0x06,0x06,0x0C,0x18,0x30,0x60,0xC0,0xC2,0xFE,0x00,0x00,0x00,0x00}}, - { 0x0033, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0x06,0x06,0x06,0x3C,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0034, 0x00, {0x00,0x00,0x00,0x1C,0x1C,0x3C,0x3C,0x6C,0x6C,0xCC,0xFE,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00}}, - { 0x0035, 0x00, {0x00,0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xC0,0xFC,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0036, 0x00, {0x00,0x00,0x00,0x3C,0x60,0xC0,0xC0,0xC0,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0037, 0x00, {0x00,0x00,0x00,0xFE,0xC6,0x06,0x06,0x06,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x0038, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0039, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x06,0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00}}, - { 0x003a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00}}, - { 0x003b, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00}}, - { 0x003c, 0x00, {0x00,0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00}}, - { 0x003d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x003e, 0x00, {0x00,0x00,0x00,0x00,0xC0,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00,0x00,0x00,0x00}}, - { 0x003f, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x0040, 0x00, {0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xDE,0xDE,0xDE,0xDC,0xC0,0xC0,0x7E,0x00,0x00,0x00,0x00}}, - - { 0x0041, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - - { 0x0042, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x7C,0x66,0x66,0x66,0x66,0x66,0xFC,0x00,0x00,0x00,0x00}}, - { 0x0043, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x00,0x00,0x00,0x00}}, - { 0x0044, 0x00, {0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00}}, - { 0x0045, 0x00, {0x00,0x00,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x0046, 0x00, {0x00,0x00,0x00,0xFE,0x66,0x62,0x60,0x64,0x7C,0x64,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}}, - { 0x0047, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xDE,0xC6,0xC6,0xC6,0x66,0x3C,0x00,0x00,0x00,0x00}}, - { 0x0048, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x0049, 0x00, {0x00,0x00,0x00,0xFC,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,0x00}}, - { 0x004a, 0x00, {0x00,0x00,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00}}, - { 0x004b, 0x00, {0x00,0x00,0x00,0xE6,0x66,0x6C,0x6C,0x78,0x70,0x78,0x6C,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}}, - { 0x004c, 0x00, {0x00,0x00,0x00,0xF0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x004d, 0x00, {0x00,0x00,0x00,0xC6,0xEE,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x004e, 0x00, {0x00,0x00,0x00,0xC6,0xE6,0xF6,0xF6,0xF6,0xDE,0xCE,0xCE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x004f, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0050, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}}, - { 0x0051, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0x7C,0x1C,0x0E,0x00,0x00}}, - { 0x0052, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x7C,0x78,0x6C,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}}, - { 0x0053, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x60,0x38,0x0C,0x06,0x06,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0054, 0x00, {0x00,0x00,0x00,0xFC,0xFC,0xB4,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}}, - { 0x0055, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0056, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x10,0x00,0x00,0x00,0x00}}, - { 0x0057, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0xD6,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00}}, - { 0x0058, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0x6C,0x6C,0x38,0x6C,0x6C,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x0059, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}}, - { 0x005a, 0x00, {0x00,0x00,0x00,0xFE,0xC6,0x86,0x0C,0x0C,0x18,0x30,0x60,0xC0,0xC2,0xC6,0xFE,0x00,0x00,0x00,0x00}}, - { 0x005b, 0x00, {0x00,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1E,0x00,0x00,0x00,0x00}}, - { 0x005c, 0x00, {0x00,0x00,0x00,0xC0,0xC0,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x00,0x00,0x00,0x00}}, - { 0x005d, 0x00, {0x00,0x00,0x00,0xF0,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0x00,0x00,0x00,0x00}}, - { 0x005e, 0x00, {0x00,0x00,0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x005f, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00}}, - { 0x0060, 0x00, {0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x0061, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x0062, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0063, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0xC0,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0064, 0x00, {0x00,0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x3C,0x6C,0xCC,0xCC,0xCC,0xCC,0xCC,0x7E,0x00,0x00,0x00,0x00}}, - { 0x0065, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0066, 0x00, {0x00,0x00,0x00,0x1E,0x33,0x30,0x30,0x30,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}}, - { 0x0067, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0xCC,0x78,0x00}}, - { 0x0068, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x76,0x66,0x66,0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}}, - { 0x0069, 0x00, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x006a, 0x00, {0x00,0x00,0x00,0x0C,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00}}, - { 0x006b, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x66,0x6C,0x78,0x70,0x78,0x6C,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00}}, - { 0x006c, 0x00, {0x00,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x006d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0xEE,0xFE,0xD6,0xD6,0xD6,0xD6,0xD6,0x00,0x00,0x00,0x00}}, - { 0x006e, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00}}, - { 0x006f, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0070, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00}}, - { 0x0071, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0x0C,0x1E,0x00}}, - { 0x0072, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x60,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}}, - { 0x0073, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0x7C,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x0074, 0x00, {0x00,0x00,0x00,0x10,0x30,0x30,0x30,0xFC,0x30,0x30,0x30,0x30,0x30,0x36,0x1C,0x00,0x00,0x00,0x00}}, - { 0x0075, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x0076, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00}}, - { 0x0077, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xD6,0xD6,0xFE,0xEE,0x6C,0x00,0x00,0x00,0x00}}, - { 0x0078, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x6C,0x6C,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x0079, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00}}, - { 0x007a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x86,0x0C,0x18,0x30,0x60,0xC0,0xFE,0x00,0x00,0x00,0x00}}, - { 0x007b, 0x00, {0x00,0x00,0x00,0x0E,0x18,0x18,0x18,0x18,0x30,0x18,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00}}, - { 0x007c, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x007d, 0x00, {0x00,0x00,0x00,0xE0,0x30,0x30,0x30,0x30,0x18,0x30,0x30,0x30,0x30,0x30,0xE0,0x00,0x00,0x00,0x00}}, - { 0x007e, 0x00, {0x00,0x00,0x00,0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - - { 0x00a0, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00a1, 0x00, {0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x3C,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00}}, - { 0x00a2, 0x00, {0x00,0x00,0x00,0x00,0x18,0x18,0x7C,0xC6,0xC0,0xC0,0xC0,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x00a3, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x64,0x60,0x60,0xF0,0x60,0x60,0x60,0x60,0xE6,0xFC,0x00,0x00,0x00,0x00}}, - { 0x00a4, 0x00, {0x00,0x00,0x18,0x00,0x00,0x00,0xC6,0x7C,0xC6,0xC6,0xC6,0xC6,0x7C,0xC6,0x00,0x00,0x00,0x00,0x00}}, - { 0x00a5, 0x00, {0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,0x7E,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x00a6, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}}, - { 0x00a7, 0x00, {0x00,0x00,0x18,0x7C,0xC6,0x60,0x38,0x6C,0xC6,0xC6,0x6C,0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00a8, 0x00, {0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00a9, 0x00, {0x00,0x00,0x00,0x00,0x7C,0x82,0x9A,0xA2,0xA2,0xA2,0x9A,0x82,0x7C,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00aa, 0x00, {0x00,0x00,0x00,0x00,0x3C,0x6C,0x6C,0x6C,0x3E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00ab, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6C,0xD8,0x6C,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00ac, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00ad, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00ae, 0x00, {0x00,0x00,0x00,0x00,0x7C,0x82,0xB2,0xAA,0xAA,0xB2,0xAA,0xAA,0x82,0x7C,0x00,0x00,0x00,0x00,0x00}}, - { 0x00af, 0x00, {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b0, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b1, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b2, 0x00, {0x00,0x00,0x00,0x3C,0x66,0x0C,0x18,0x32,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b3, 0x00, {0x00,0x00,0x00,0x7C,0x06,0x3C,0x06,0x06,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b4, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b5, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xC0,0x00}}, - { 0x00b6, 0x00, {0x00,0x00,0x00,0x7F,0xDB,0xDB,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00}}, - { 0x00b7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00b8, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0x78,0x00,0x00,0x00}}, - { 0x00b9, 0x00, {0x00,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00ba, 0x00, {0x00,0x00,0x00,0x00,0x38,0x6C,0x6C,0x6C,0x38,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00bb, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x6C,0x36,0x6C,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00bc, 0x00, {0x00,0x00,0x00,0x60,0xE0,0x62,0x66,0x6C,0x18,0x30,0x66,0xCE,0x9A,0x3F,0x06,0x06,0x00,0x00,0x00}}, - { 0x00bd, 0x00, {0x00,0x00,0x00,0x60,0xE0,0x62,0x66,0x6C,0x18,0x30,0x60,0xDC,0x86,0x0C,0x18,0x3E,0x00,0x00,0x00}}, - { 0x00be, 0x00, {0x00,0x00,0x00,0xE0,0x30,0x62,0x36,0xEC,0x18,0x30,0x66,0xCE,0x9A,0x3F,0x06,0x06,0x00,0x00,0x00}}, - { 0x00bf, 0x00, {0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x60,0x60,0xC0,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00c0, 0x00, {0x60,0x30,0x18,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c1, 0x00, {0x18,0x30,0x60,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c2, 0x00, {0x10,0x38,0x6C,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c3, 0x00, {0x76,0xDC,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c4, 0x00, {0xCC,0xCC,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c5, 0x00, {0x38,0x6C,0x38,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00c6, 0x00, {0x00,0x00,0x00,0x00,0x3E,0x6C,0xCC,0xCC,0xCC,0xFE,0xCC,0xCC,0xCC,0xCC,0xCE,0x00,0x00,0x00,0x00}}, - { 0x00c7, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x18,0x70,0x00,0x00}}, - { 0x00c8, 0x00, {0x60,0x30,0x18,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x00c9, 0x00, {0x18,0x30,0x60,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x00ca, 0x00, {0x10,0x38,0x6C,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x00cb, 0x00, {0xCC,0xCC,0x00,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}}, - { 0x00cc, 0x00, {0x60,0x30,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00cd, 0x00, {0x18,0x30,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00ce, 0x00, {0x10,0x38,0x6C,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00cf, 0x00, {0xCC,0xCC,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00d0, 0x00, {0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0xF6,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00}}, - { 0x00d1, 0x00, {0x76,0xDC,0x00,0x00,0xC6,0xE6,0xE6,0xF6,0xF6,0xDE,0xDE,0xCE,0xCE,0xC6,0xC6,0x00,0x00,0x00,0x00}}, - { 0x00d2, 0x00, {0x60,0x30,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00d3, 0x00, {0x18,0x30,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00d4, 0x00, {0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00d5, 0x00, {0x76,0xDC,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00d6, 0x00, {0xCC,0xCC,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00d7, 0x00, {0x10,0x28,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x6C,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00}}, - { 0x00d8, 0x00, {0x00,0x00,0x00,0x7C,0xCE,0xCE,0xDE,0xD6,0xD6,0xD6,0xD6,0xF6,0xE6,0xE6,0x7C,0x40,0x00,0x00,0x00}}, - { 0x00d9, 0x00, {0x60,0x30,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00da, 0x00, {0x18,0x30,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00db, 0x00, {0x10,0x38,0x6C,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00dc, 0x00, {0xCC,0xCC,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00dd, 0x00, {0x18,0x30,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00de, 0x00, {0x00,0x00,0x10,0x00,0xF0,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x00,0x00}}, - { 0x00df, 0x00, {0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0xCC,0xD8,0xCC,0xC6,0xC6,0xC6,0xC6,0xCC,0x00,0x00,0x00,0x00}}, - { 0x00e0, 0x00, {0x00,0x30,0x30,0x60,0x30,0x18,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e1, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e2, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e3, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e4, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0x00,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e5, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x38,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00e6, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x36,0x36,0x7E,0xD8,0xD8,0xD8,0x6E,0x00,0x00,0x00,0x00}}, - { 0x00e7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0xC0,0xC0,0xC0,0xC6,0x7C,0x18,0x70,0x00,0x00}}, - { 0x00e8, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00e9, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00ea, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00eb, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00ec, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00ed, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00ee, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x66,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00ef, 0x00, {0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00f0, 0x00, {0x00,0x00,0x00,0x34,0x18,0x2C,0x0C,0x06,0x3E,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00}}, - { 0x00f1, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00}}, - { 0x00f2, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f3, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f4, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f5, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f6, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { 0x00f8, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xCE,0xDE,0xD6,0xF6,0xE6,0xC6,0x7C,0x00,0x00,0x00,0x00}}, - { 0x00f9, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00fa, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00fb, 0x00, {0x00,0x00,0x00,0x30,0x78,0xCC,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00fc, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}}, - { 0x00fd, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00}}, - { 0x00fe, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00}}, - { 0x00ff, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0x78,0x00}}, - - { (CHAR16)BOXDRAW_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_VERTICAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_UP_RIGHT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_UP_LEFT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_VERTICAL_RIGHT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_VERTICAL_LEFT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_UP_HORIZONTAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOUBLE_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_DOUBLE_VERTICAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOWN_RIGHT_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_DOUBLE_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_DOWN_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOWN_LEFT_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_DOUBLE_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_DOWN_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_UP_RIGHT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_UP_DOUBLE_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_DOUBLE_UP_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_UP_LEFT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_UP_DOUBLE_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_DOUBLE_UP_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_VERTICAL_LEFT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_VERTICAL_DOUBLE_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_VERTICAL_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_UP_HORIZONTAL_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_UP_DOUBLE_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_DOUBLE_UP_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}}, - { (CHAR16)BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - { (CHAR16)BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}}, - - { (CHAR16)BLOCKELEMENT_FULL_BLOCK, 0x00, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}}, - { (CHAR16)BLOCKELEMENT_LIGHT_SHADE, 0x00, {0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22}}, - - { (CHAR16)GEOMETRICSHAPE_RIGHT_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xFE,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)GEOMETRICSHAPE_LEFT_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x06,0x0E,0x1E,0x3E,0xFE,0x3E,0x1E,0x0E,0x06,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)GEOMETRICSHAPE_UP_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x38,0x7C,0x7C,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)GEOMETRICSHAPE_DOWN_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x7C,0x7C,0x38,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00}}, - - { (CHAR16)ARROW_UP, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)ARROW_DOWN, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)ARROW_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x60,0xFE,0xFE,0x60,0x60,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, - { (CHAR16)ARROW_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0C,0xFE,0xFE,0x0C,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00}}, - - { 0x0000, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} //EOL -}; - -// Get available Unicode glyphs narrow fonts(8*19 pixels) size. -UINT32 mNarrowFontSize = sizeof (gUsStdNarrowGlyphData); |