]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: simplify _CRS, _PRS, _SRS methods in the DSDT
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Aug 2012 15:40:07 +0000 (15:40 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Aug 2012 15:40:07 +0000 (15:40 +0000)
Use Extended Interrupt Descriptors in the _CRS, _PRS, _SRS methods of
\_SB.PCI0.LPC.LNK[A-D], eliminating bit shifting.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13619 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/AcpiTables/Dsdt.asl

index 2dda7abcb25b286bb3b2aa89403679ce5eceb436..6a26c3b65d51b937a3a468eb0481f009e7c3addc 100644 (file)
@@ -250,46 +250,46 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 1, "INTEL ", "OVMF    ", 3) {
         // _CRS method for LNKA, LNKB, LNKC, LNKD\r
         //\r
         Method (PCRS, 1, NotSerialized) {\r
-          Name (BUF0, ResourceTemplate () {IRQ (Level, ActiveLow, Shared){0}})\r
           //\r
-          // Define references to buffer elements\r
+          // create temporary buffer with an Extended Interrupt Descriptor\r
+          // whose single vector defaults to zero\r
           //\r
-          CreateWordField (BUF0, 0x01, IRQW)  // IRQ low\r
+          Name (BUF0, ResourceTemplate () {\r
+              Interrupt (ResourceConsumer, Level, ActiveLow, Shared){0}\r
+            }\r
+          )\r
+\r
           //\r
-          // Write current settings into IRQ descriptor\r
+          // define reference to first interrupt vector in buffer\r
           //\r
-          If (And (Arg0, 0x80)) {\r
-            Store (Zero, Local0)\r
-          } Else {\r
-            Store (One, Local0)\r
-          }\r
+          CreateDWordField (BUF0, 0x05, IRQW)\r
+\r
           //\r
-          // Shift 1 by value in register 70\r
+          // If the disable-bit is clear, overwrite the default zero vector\r
+          // with the value in Arg0 (ie. PIRQRC[A:D]). Reserved bits are read\r
+          // as 0.\r
           //\r
-          ShiftLeft (Local0, And (Arg0, 0x0F), IRQW)   // Save in buffer\r
-          Return (BUF0)                                // Return Buf0\r
+          If (LNot (And (Arg0, 0x80))) {\r
+            Store (Arg0, IRQW)\r
+          }\r
+          Return (BUF0)\r
         }\r
 \r
         //\r
         // _PRS resource for LNKA, LNKB, LNKC, LNKD\r
         //\r
         Name (PPRS, ResourceTemplate () {\r
-          IRQ (Level, ActiveLow, Shared) {3, 4, 5, 7, 9, 10, 11, 12, 14, 15}\r
+          Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {\r
+            3, 4, 5, 7, 9, 10, 11, 12, 14, 15\r
+          }\r
         })\r
 \r
         //\r
         // _SRS method for LNKA, LNKB, LNKC, LNKD\r
         //\r
         Method (PSRS, 2, NotSerialized) {\r
-          CreateWordField (Arg1, 0x01, IRQW)      // IRQ low\r
-          FindSetRightBit (IRQW, Local0)          // Set IRQ\r
-          If (LNotEqual (IRQW, Zero)) {\r
-            And (Local0, 0x7F, Local0)\r
-            Decrement (Local0)\r
-          } Else {\r
-            Or (Local0, 0x80, Local0)\r
-          }\r
-          Store (Local0, Arg0)\r
+          CreateDWordField (Arg1, 0x05, IRQW)\r
+          Store (IRQW, Arg0)\r
         }\r
 \r
         //\r