mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg: PCD to swap red/blue format for HDLCD
This change adds a new PCD PcdArmHdlcdSwapBlueRedSelect to swap values for HDLCD RED_SELECT and BLUE_SELECT registers on platforms where blue and red hardware lines are swapped. If set to TRUE in the platform dsc, HDLCD library will swap the values while setting RED_SELECT and BLUE_SELECT registers. The default value of the PCD is FALSE. NOTE: The motive for this is that a discrepancy in the Red/Blue lines exists between some VersatileExpress platforms. Rather than have divergent code, this build switch allows a simple, pragmatic solution. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
fe787dfb0f
commit
268aad6744
|
@ -100,6 +100,9 @@
|
|||
# Default is set to UEFI console font format PixelBlueGreenRedReserved8BitPerColor
|
||||
gArmPlatformTokenSpaceGuid.PcdGopPixelFormat|0x00000001|UINT32|0x00000040
|
||||
|
||||
## If set, this will swap settings for HDLCD RED_SELECT and BLUE_SELECT registers
|
||||
gArmPlatformTokenSpaceGuid.PcdArmHdLcdSwapBlueRedSelect|FALSE|BOOLEAN|0x00000045
|
||||
|
||||
[PcdsFixedAtBuild.common,PcdsDynamic.common]
|
||||
## PL031 RealTimeClock
|
||||
gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0|UINT32|0x00000024
|
||||
|
|
|
@ -73,6 +73,8 @@ LcdSetMode (
|
|||
SCAN_TIMINGS *Horizontal;
|
||||
SCAN_TIMINGS *Vertical;
|
||||
|
||||
EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
|
||||
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION ModeInfo;
|
||||
|
||||
// Set the video mode timings and other relevant information
|
||||
|
@ -96,7 +98,14 @@ LcdSetMode (
|
|||
return Status;
|
||||
}
|
||||
|
||||
if (ModeInfo.PixelFormat == PixelBlueGreenRedReserved8BitPerColor) {
|
||||
// By default PcdArmHdLcdSwapBlueRedSelect is set to false
|
||||
// However on the Juno platform HW lines for BLUE and RED are swapped
|
||||
// Therefore PcdArmHdLcdSwapBlueRedSelect is set to TRUE for the Juno platform
|
||||
PixelFormat = FixedPcdGetBool (PcdArmHdLcdSwapBlueRedSelect)
|
||||
? PixelRedGreenBlueReserved8BitPerColor
|
||||
: PixelBlueGreenRedReserved8BitPerColor;
|
||||
|
||||
if (ModeInfo.PixelFormat == PixelFormat) {
|
||||
MmioWrite32 (HDLCD_REG_RED_SELECT, (8 << 8) | 16);
|
||||
MmioWrite32 (HDLCD_REG_BLUE_SELECT, (8 << 8) | 0);
|
||||
} else {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# Component description file for HDLCD module
|
||||
#
|
||||
# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.<BR>
|
||||
# Copyright (c) 2011-2018, ARM Ltd. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
|
@ -40,3 +40,5 @@
|
|||
|
||||
[FixedPcd]
|
||||
gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase
|
||||
gArmPlatformTokenSpaceGuid.PcdArmHdLcdSwapBlueRedSelect
|
||||
|
||||
|
|
Loading…
Reference in New Issue