diff --git a/src/mainboard/google/parrot/acpi/mainboard.asl b/src/mainboard/google/parrot/acpi/mainboard.asl index 98208e0989..2a5c92f327 100644 --- a/src/mainboard/google/parrot/acpi/mainboard.asl +++ b/src/mainboard/google/parrot/acpi/mainboard.asl @@ -58,24 +58,36 @@ Scope (\_SB) { // Trackpad Wake is GPIO12, wake from S3 Name(_PRW, Package() { BOARD_TRACKPAD_WAKE_GPIO, 0x03 }) - Name(_CRS, ResourceTemplate() + Name (DCRS, ResourceTemplate () { - // PIRQA -> GSI16 - Interrupt (ResourceConsumer, Level, ActiveLow) + Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) { - BOARD_TRACKPAD_IRQ_DVT + BOARD_TRACKPAD_IRQ_DVT, } - - // PIRQE -> GSI20 - Interrupt (ResourceConsumer, Edge, ActiveLow) - { - BOARD_TRACKPAD_IRQ_PVT - } - // SMBUS Address 0x67 VendorShort (ADDR) { BOARD_TRACKPAD_I2C_ADDR } }) + + Name (PCRS, ResourceTemplate () + { + // PIRQE -> GSI20 + Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) + { + BOARD_TRACKPAD_IRQ_PVT, + } + // SMBUS Address 0x67 + VendorShort (ADDR) { BOARD_TRACKPAD_I2C_ADDR } + }) + + Method (_CRS, 0, NotSerialized) + { + If (\TPIQ == BOARD_TRACKPAD_IRQ_DVT){ + Return (DCRS) + } Else { + Return (PCRS) + } + } } Device (MB) { diff --git a/src/mainboard/google/parrot/acpi_tables.c b/src/mainboard/google/parrot/acpi_tables.c index 81008a57de..2cda4a2ebc 100644 --- a/src/mainboard/google/parrot/acpi_tables.c +++ b/src/mainboard/google/parrot/acpi_tables.c @@ -31,6 +31,7 @@ #include #include #include "thermal.h" +#include "onboard.h" static void acpi_update_thermal_table(global_nvs_t *gnvs) { @@ -59,4 +60,11 @@ void acpi_create_gnvs(global_nvs_t *gnvs) // the lid is open by default. gnvs->lids = 1; + + // set trackpad IRQ + if (parrot_rev() < 0x2) { /* DVT vs PVT */ + gnvs->tpiq = BOARD_TRACKPAD_IRQ_DVT; + } else { + gnvs->tpiq = BOARD_TRACKPAD_IRQ_PVT; + } }