Revision: 14702
          http://sourceforge.net/p/edk2/code/14702
Author:   oliviermartin
Date:     2013-09-23 09:40:27 +0000 (Mon, 23 Sep 2013)
Log Message:
-----------
ArmPlatformPkg/LcdGraphicsOutputDxe: Call LcdShutdown() on ExitBootServices() 
if PcdGopDisableOnExitBootServices

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ArmPlatformPkg/ArmPlatformPkg.dec
    trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c
    
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcdGraphicsOutputDxe.inf
    
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.c
    trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c
    
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf

Modified: trunk/edk2/ArmPlatformPkg/ArmPlatformPkg.dec
===================================================================
--- trunk/edk2/ArmPlatformPkg/ArmPlatformPkg.dec        2013-09-23 09:39:40 UTC 
(rev 14701)
+++ trunk/edk2/ArmPlatformPkg/ArmPlatformPkg.dec        2013-09-23 09:40:27 UTC 
(rev 14702)
@@ -53,7 +53,11 @@
   
gArmPlatformTokenSpaceGuid.PcdSendSgiToBringUpSecondaryCores|FALSE|BOOLEAN|0x00000004
 
   
gArmPlatformTokenSpaceGuid.PcdNorFlashCheckBlockLocked|FALSE|BOOLEAN|0x0000003C
-  
+
+  # Disable the GOP controller on ExitBootServices(). By default the value is 
FALSE,
+  # we assume the OS will handle the FrameBuffer from the UEFI GOP information.
+  
gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices|FALSE|BOOLEAN|0x0000003D
+
 [PcdsFixedAtBuild.common]
   gArmPlatformTokenSpaceGuid.PcdCoreCount|1|UINT32|0x00000039
   gArmPlatformTokenSpaceGuid.PcdClusterCount|1|UINT32|0x00000038

Modified: trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c      
2013-09-23 09:39:40 UTC (rev 14701)
+++ trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c      
2013-09-23 09:40:27 UTC (rev 14702)
@@ -120,6 +120,6 @@
   VOID
   )
 {
-  // Nothing to do in terms of hardware.
-  // We could switch off the monitor display if required
+  // Disable the controller
+  MmioWrite32 (HDLCD_REG_COMMAND, HDLCD_DISABLE);
 }

Modified: 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcdGraphicsOutputDxe.inf
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcdGraphicsOutputDxe.inf
   2013-09-23 09:39:40 UTC (rev 14701)
+++ 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcdGraphicsOutputDxe.inf
   2013-09-23 09:40:27 UTC (rev 14702)
@@ -56,5 +56,8 @@
 [FixedPcd]
   gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase
 
+[FeaturePcd]
+  gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices
+
 [Depex]
   gEfiCpuArchProtocolGuid

Modified: 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.c
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.c   
    2013-09-23 09:39:40 UTC (rev 14701)
+++ 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.c   
    2013-09-23 09:40:27 UTC (rev 14702)
@@ -225,7 +225,13 @@
   IN VOID       *Context
   )
 {
-       //TODO: Implement me
+  // By default, this PCD is FALSE. But if a platform starts a predefined OS 
that
+  // does not use a framebuffer then we might want to disable the display 
controller
+  // to avoid to display corrupted information on the screen.
+  if (FeaturePcdGet (PcdGopDisableOnExitBootServices)) {
+    // Turn-off the Display controller
+    LcdShutdown ();
+  }
 }
 
 /***************************************

Modified: trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c   
2013-09-23 09:39:40 UTC (rev 14701)
+++ trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c   
2013-09-23 09:40:27 UTC (rev 14702)
@@ -99,8 +99,6 @@
   VOID
   )
 {
-  // Nothing to do in terms of hardware.
-  // We could switch off the monitor display if required
-
-  //TODO: ImplementMe
+  // Disable the controller
+  MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);
 }

Modified: 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
        2013-09-23 09:39:40 UTC (rev 14701)
+++ 
trunk/edk2/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
        2013-09-23 09:40:27 UTC (rev 14702)
@@ -52,5 +52,8 @@
 [FixedPcd]
   gArmPlatformTokenSpaceGuid.PcdPL111LcdBase
 
+[FeaturePcd]
+  gArmPlatformTokenSpaceGuid.PcdGopDisableOnExitBootServices
+
 [Depex]
   gEfiCpuArchProtocolGuid

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to