[openfirmware] r1243 - cpu/x86/pc/olpc/via

svn at openfirmware.info svn at openfirmware.info
Fri Jul 17 19:10:19 CEST 2009


Author: wmb
Date: 2009-07-17 19:10:19 +0200 (Fri, 17 Jul 2009)
New Revision: 1243

Modified:
   cpu/x86/pc/olpc/via/dsdt.dsl
Log:
Via DSDT - pgf's fixes for LID detect.







Modified: cpu/x86/pc/olpc/via/dsdt.dsl
===================================================================
--- cpu/x86/pc/olpc/via/dsdt.dsl	2009-07-16 23:38:57 UTC (rev 1242)
+++ cpu/x86/pc/olpc/via/dsdt.dsl	2009-07-17 17:10:19 UTC (rev 1243)
@@ -132,13 +132,14 @@
     GS08,1,
     GS09,1,
     GS10,1,
-    GS11,1,
+    GS11,1,     // lid
     GS12,1,
     GS13,1,
     GS14,1,
     GS15,1,
 }   
 
+// PMIO_RX24/5
 OperationRegion(\GPSE, SystemIO, 0x0424, 0x2)   // Genernal Purpose SMI Enable
 Field(\GPSE, ByteAcc, NoLock, Preserve) {
     GPS0,   1,                                  // GPI0 SMI Enable
@@ -149,11 +150,14 @@
     PME,    1,                                  // PCI PME Enable
         ,   2,
     RING,   1,                                  // Ring Wakeup
-        ,   5,
+        ,   2,
+    LID,    1,                                  // Lid Wakeup
+        ,   2,
     USBE,   1,                                  // USB Resume
         ,   1,
 } 
       
+// PMIO_RX28/9
 OperationRegion(\Glos, SystemIO, 0x0428, 0x2)   // Global Status
 Field(\Glos, ByteAcc, NoLock, Preserve) {
         , 6,                                    //
@@ -169,6 +173,19 @@
 Field(\WIRQ, ByteAcc, NoLock, Preserve) {
     IRQR, 8,
 }
+
+// from BIOS porting guide, section 13.2.2
+OperationRegion(\EDGE, SystemIO, 0x042c, 0x1)   // SMI enable, lid edge polarity
+Field(\EDGE, ByteAcc, NoLock, Preserve) {
+        , 1,                                    // SMI enable (1 == enable)
+        , 1,                                    //
+        , 1,                                    // power button polarity (1 == falling)
+        , 1,                                    //
+        , 1,                                    //
+        , 1,                                    // battery low enable (0 == enable)
+        , 1,                                    // therm polarity (1 == falling)
+    LPOL, 1,                                    // lid polarity (1 == falling)
+}
     
 OperationRegion(\Stus, SystemIO, 0x0430, 0x1)   // Global Status
 Field(\Stus, ByteAcc, NoLock, Preserve) {
@@ -199,15 +216,15 @@
         Notify(\_SB.PCI0,0x2)
     }
 
-//  Method(_L08) {
-//      Notify(\_SB.PCI0.VT86.EUR1, 0x2)
-//      Notify(\_SB.PCI0.VT86.EUR2, 0x2)            
-//  }
-                       
     Method(_L09) {
         Notify(\_SB.PCI0.VT86.PS2M, 0x02)       //Internal Mouse Controller PME Status
     }
 
+    Method(_L0B) {          // LID event
+        Not(LPOL, LPOL)     // Flip the lid polarity bit
+        Notify(\_SB.PCI0.LID, 0x80)
+    }
+
     Method(_L0D) {
         Notify(\_SB.PCI0.HDAC, 0x02)
     }
@@ -2239,6 +2256,22 @@
             }
         }   // Device(P2PB)
         
+        Device (LID) {
+            Name (_HID, EisaId ("PNP0C0D"))
+            Name (_PRW, Package (0x02) {  0x0B, 0x04 })     // Event 0B, wakes from S4
+
+            Method(_LID) {
+                If (LPOL) {                   // Lid is open
+                    UPUT (0x6c)                   // l
+                } Else {
+                    UPUT (0x4c)                   // L
+                }
+                Store (Zero, GS11)            // Clear lid
+                Return(LPOL)
+            }
+
+        }  // Device(LID)
+
         Device(HDAC)
         {
             Name(_ADR, 0x00140000)




More information about the openfirmware mailing list