[openfirmware] [commit] r1855 - cpu/x86/pc/olpc/via

repository service svn at openfirmware.info
Thu Jul 1 19:35:30 CEST 2010


Author: wmb
Date: Thu Jul  1 19:35:29 2010
New Revision: 1855
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1855

Log:
OLPC XO-1.5 - added VGA device to ACPI DSDT per Via's request.
Thanks to Luna.

Modified:
   cpu/x86/pc/olpc/via/dsdt.dsl

Modified: cpu/x86/pc/olpc/via/dsdt.dsl
==============================================================================
--- cpu/x86/pc/olpc/via/dsdt.dsl	Thu Jul  1 19:34:33 2010	(r1854)
+++ cpu/x86/pc/olpc/via/dsdt.dsl	Thu Jul  1 19:35:29 2010	(r1855)
@@ -2434,6 +2434,79 @@
             }
         }//Device(HDAC)
 
+        Name(DEVA, 0x3)     //Replace the CMOS location, Since T-SEG SMM can not call INT10 any more
+
+        Device(VGA)			  // Device
+        {
+            Name(_ADR,0x10000)	
+            Name(SWIT,0x1)
+            Method(_DOS,1)	  // Enable/Disable Output Switching
+            {
+                Store(Arg0, SWIT) // Store the argument as the switch
+            }
+
+            Method(_INI,0)	  // Enable Initial display 
+            {
+		// BIOS don't switch display, but change _DGS 
+		// Video Extension is used to help in switching .
+		store(DEVA, Local1)
+
+
+		If( LNotEqual(And(Local1, 0x2), 0x00) )	// LCD Turn On
+		{
+		    Store( 0x1, \_SB.PCI0.VGA.LCD._DGS)
+		}
+		Else
+		{
+		    Store( 0x0, \_SB.PCI0.VGA.LCD._DGS)
+		}
+            }
+
+
+            Name(_DOD,Package()		//Package
+            {
+                0x00010110,		//LCD, detectable by BIOS
+            })
+
+            Device(LCD)
+            {
+                Name(_ADR,0x0110)
+                Name(_DCS,0x1F)		//Return the status of output device
+                Name(_DGS,1)		//Query Graphics Desired State
+                Method(_DSS,1)		// Device Set State
+                {
+                    // Device Set State
+                    If(And(Arg0,0xC0000000))
+                    {
+			//If Bit30=1, don't do actual switching, but change _DGS to next state.
+	              	If(LEqual(And(Arg0,0x40000000), 0x00))
+        	      	{
+			    Store(Arg0, Local0)
+              		    Store(And(Local0,0x1),Local0)
+                            Store(Not(0x1), Local1)
+                            Store(And(\_SB.PCI0.VGA.LCD._DGS, Local1), \_SB.PCI0.VGA.LCD._DGS)
+                            Store(Or(\_SB.PCI0.VGA.LCD._DGS, Local0),\_SB.PCI0.VGA.LCD._DGS)
+                        }
+                    }
+                }
+                Method(_BCL) {
+                    Return(Package(0x8) {
+                        100,
+                        50,
+                        20,
+                        30,
+                        40,
+                        60,
+                        80,
+                        90,
+                    })
+                }
+                Method(_BCM, 1) {
+                    // Store(Arg0, \_SB.PCI0.PIB.PORT80)
+                }
+            }
+        }	
+
     } // Device(PCI0)
 
     //-----------------------------------------------------------------------



More information about the openfirmware mailing list