gArmPlatformTokenSpaceGuid.PcdSendSgiToBringUpSecondaryCores|FALSE|BOOLEAN|0x00000004\r
\r
gArmPlatformTokenSpaceGuid.PcdNorFlashCheckBlockLocked|FALSE|BOOLEAN|0x0000003C\r
- \r
+\r
+ # Disable the GOP controller on ExitBootServices(). By default the value is FALSE,\r
+ # we assume the OS will handle the FrameBuffer from the UEFI GOP information.\r
+ gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices|FALSE|BOOLEAN|0x0000003D\r
+\r
[PcdsFixedAtBuild.common]\r
gArmPlatformTokenSpaceGuid.PcdCoreCount|1|UINT32|0x00000039\r
gArmPlatformTokenSpaceGuid.PcdClusterCount|1|UINT32|0x00000038\r
VOID\r
)\r
{\r
- // Nothing to do in terms of hardware.\r
- // We could switch off the monitor display if required\r
+ // Disable the controller\r
+ MmioWrite32 (HDLCD_REG_COMMAND, HDLCD_DISABLE);\r
}\r
[FixedPcd]\r
gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase\r
\r
+[FeaturePcd]\r
+ gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices\r
+\r
[Depex]\r
gEfiCpuArchProtocolGuid\r
IN VOID *Context\r
)\r
{\r
- //TODO: Implement me\r
+ // By default, this PCD is FALSE. But if a platform starts a predefined OS that\r
+ // does not use a framebuffer then we might want to disable the display controller\r
+ // to avoid to display corrupted information on the screen.\r
+ if (FeaturePcdGet (PcdGopDisableOnExitBootServices)) {\r
+ // Turn-off the Display controller\r
+ LcdShutdown ();\r
+ }\r
}\r
\r
/***************************************\r
VOID\r
)\r
{\r
- // Nothing to do in terms of hardware.\r
- // We could switch off the monitor display if required\r
-\r
- //TODO: ImplementMe\r
+ // Disable the controller\r
+ MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);\r
}\r
[FixedPcd]\r
gArmPlatformTokenSpaceGuid.PcdPL111LcdBase\r
\r
+[FeaturePcd]\r
+ gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices\r
+\r
[Depex]\r
gEfiCpuArchProtocolGuid\r