aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/google/falco/acpi
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2013-05-24 12:37:02 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-11-25 23:46:02 +0100
commit22419e045616c344c7a2a308c5ef086a221ad006 (patch)
tree2e7cc4a9bb50419a8552eea2ef9201c92f9f3144 /src/mainboard/google/falco/acpi
parentd67c5dbf06f009b705bc0c2b7278504bb538d36e (diff)
falco: Add on-board devices and configure GPIO irq/wake
Add the onboard I2C devices for Falco trackpad/lightsensor and generate SMBIOS Type41 tables for them. Add ACPI device for the trackpad to expose the interrupt map to the OS so it can be used. Configure interrupt GPIOs as PIRQ type and wake GPIOs as just standard input type. The wake GPIO is reconfigured as ACPI SCI in the specific device _DSW method. This prevents the wake GPIO from generating a flood of SCI at runtime. LTE_WAKE_L_Q and WLAN_WAKE_L_Q are left as ACPI SCI as these are not repurposed interrupt pins so they are not generated at runtime. SIM_DET and ALS_INT_L are set as input since we don't have an interrupt handler for them. Change-Id: Ibe9687b2f7f41ead18353c3f650219fe6e94ae2f Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/56632 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/4191 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/mainboard/google/falco/acpi')
-rw-r--r--src/mainboard/google/falco/acpi/mainboard.asl72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/mainboard/google/falco/acpi/mainboard.asl b/src/mainboard/google/falco/acpi/mainboard.asl
index 948d7dfe87..f9bcc126d6 100644
--- a/src/mainboard/google/falco/acpi/mainboard.asl
+++ b/src/mainboard/google/falco/acpi/mainboard.asl
@@ -19,6 +19,8 @@
* MA 02110-1301 USA
*/
+#include <mainboard/google/falco/onboard.h>
+
Scope (\_SB)
{
Device (LID0)
@@ -35,4 +37,74 @@ Scope (\_SB)
{
Name(_HID, EisaId("PNP0C0C"))
}
+
+ Device (TPAD)
+ {
+ Name (_ADR, 0x0)
+ Name (_UID, 1)
+
+ // Report as a Sleep Button device so Linux will
+ // automatically enable it as a wake source
+ Name (_HID, EisaId("PNP0C0E"))
+
+ Name (_CRS, ResourceTemplate()
+ {
+ Interrupt (ResourceConsumer, Level, ActiveLow)
+ {
+ BOARD_TRACKPAD_IRQ
+ }
+
+ VendorShort (ADDR)
+ {
+ BOARD_TRACKPAD_I2C_ADDR
+ }
+ })
+
+ Name (_PRW, Package() { BOARD_TRACKPAD_WAKE_GPIO, 0x3 })
+
+ Method (_DSW, 3, NotSerialized)
+ {
+ Store (BOARD_TRACKPAD_WAKE_GPIO, Local0)
+
+ If (LEqual (Arg0, 1)) {
+ // Enable GPIO as wake source
+ \_SB.PCI0.LPCB.GWAK (Local0)
+ }
+ }
+ }
+
+ Device (TSCR)
+ {
+ Name (_ADR, 0x0)
+ Name (_UID, 2)
+
+ // Report as a Sleep Button device so Linux will
+ // automatically enable it as a wake source
+ Name (_HID, EisaId("PNP0C0E"))
+
+ Name (_CRS, ResourceTemplate()
+ {
+ Interrupt (ResourceConsumer, Level, ActiveLow)
+ {
+ BOARD_TOUCHSCREEN_IRQ
+ }
+
+ VendorShort (ADDR)
+ {
+ BOARD_TOUCHSCREEN_I2C_ADDR
+ }
+ })
+
+ Name (_PRW, Package() { BOARD_TOUCHSCREEN_WAKE_GPIO, 0x3 })
+
+ Method (_DSW, 3, NotSerialized)
+ {
+ Store (BOARD_TOUCHSCREEN_WAKE_GPIO, Local0)
+
+ If (LEqual (Arg0, 1)) {
+ // Enable GPIO as wake source
+ \_SB.PCI0.LPCB.GWAK (Local0)
+ }
+ }
+ }
}