瀏覽代碼

Silicon/SynQuacer: add ACPI description of GPIO controller and power button

Add ACPI descriptions of the GPIO and external interrupt (EXIU)
controllers as well as the power button. Note that on rev 0.3
boards, the power button appears to reset the system (this was
not the case on rev 0.1 boards), so it is included for reference
primarily. The same GPIO event mechanism will be used in the future
for reporting hardware errors to the OS.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Leif Lindholm <leif.lindholm@linaro.org>
Ard Biesheuvel 5 年之前
父節點
當前提交
639a2e38ca

+ 56 - 0
Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl

@@ -201,5 +201,61 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "SNI", "SYNQUACR",
         }
       })
     }
+
+    Device (EXIU) {
+      Name (_HID, "SCX0008")
+      Name (_UID, Zero)
+      Name (_CRS, ResourceTemplate () {
+        Memory32Fixed (ReadWrite, SYNQUACER_EXIU_BASE, SYNQUACER_EXIU_SIZE)
+      })
+      Name (_DSD, Package () {
+        ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+        Package () {
+          Package () { "socionext,spi-base", 112 },
+        }
+      })
+    }
+
+    Device (GPIO) {
+      Name (_HID, "SCX0007")
+      Name (_UID, Zero)
+      Name (_CRS, ResourceTemplate () {
+        Memory32Fixed (ReadWrite, SYNQUACER_GPIO_BASE, SYNQUACER_GPIO_SIZE)
+        Interrupt (ResourceConsumer, Edge, ActiveLow, ExclusiveAndWake, 0, "\\_SB.EXIU") {
+          8,
+        }
+      })
+      Name (_DSD, Package () {
+        ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+        Package () {
+          Package () {
+            "gpio-line-names",
+            Package () {
+              "DSW3-PIN1",  "DSW3-PIN2",  "DSW3-PIN3",    "DSW3-PIN4",
+              "DSW3-PIN5",  "DSW3-PIN6",  "DSW3-PIN7",    "DSW3-PIN8",
+              "PSIN#",      "PWROFF#",    "GPIO-A",       "GPIO-B",
+              "GPIO-C",     "GPIO-D",     "PCIE1EXTINT",  "PCIE0EXTINT",
+              "PHY2-INT#",  "PHY1-INT#",  "GPIO-E",       "GPIO-F",
+              "GPIO-G",     "GPIO-H",     "GPIO-I",       "GPIO-J",
+              "GPIO-K",     "GPIO-L",     "PEC-PD26",     "PEC-PD27",
+              "PEC-PD28",   "PEC-PD29",   "PEC-PD30",     "PEC-PD31"
+            },
+          }
+        }
+      })
+      Name (_AEI, ResourceTemplate () {
+        GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullDefault, 0, "\\_SB.GPIO")
+        {
+          8
+        }
+      })
+      Method (_E08) {
+        Notify (\_SB.PWRB, 0x80)
+      }
+    }
+
+    Device (PWRB) {
+      Name (_HID, "PNP0C0C")
+    }
   } // Scope (_SB)
 }

+ 4 - 0
Silicon/Socionext/SynQuacer/Include/Platform/MemoryMap.h

@@ -42,6 +42,10 @@
 #define SYNQUACER_GPIO_BASE             0x51000000
 #define SYNQUACER_GPIO_SIZE             SIZE_4KB
 
+// EXIU interrupt controller
+#define SYNQUACER_EXIU_BASE             0x510c0000
+#define SYNQUACER_EXIU_SIZE             0x20
+
 // I2C0 block
 #define SYNQUACER_I2C0_BASE             0x51200000
 #define SYNQUACER_I2C0_SIZE             SIZE_4KB