diff options
Diffstat (limited to 'src/soc/intel/tigerlake/acpi/gpio.asl')
-rw-r--r-- | src/soc/intel/tigerlake/acpi/gpio.asl | 150 |
1 files changed, 93 insertions, 57 deletions
diff --git a/src/soc/intel/tigerlake/acpi/gpio.asl b/src/soc/intel/tigerlake/acpi/gpio.asl index 98863e2486..dc76a387b7 100644 --- a/src/soc/intel/tigerlake/acpi/gpio.asl +++ b/src/soc/intel/tigerlake/acpi/gpio.asl @@ -1,7 +1,7 @@ /* * This file is part of the coreboot project. * - * Copyright (C) 2019 Intel Corp. + * Copyright (C) 2020 Intel Corp. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,60 +16,97 @@ #include <soc/irq.h> #include <soc/pcr_ids.h> - -Device (GPIO) +Device (GCM0) { - Name (_HID, "INT3455") + Name (_HID, "INT34C5") Name (_UID, 0) - Name (_DDN, "GPIO Controller") + Name (_DDN, "GPIO Controller Community 0") + Name (RBUF, ResourceTemplate() + { + Memory32Fixed (ReadWrite, 0, GPIO_BASE_SIZE, COM0) + Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ) + { GPIO_IRQ14 } + }) Method (_CRS, 0, NotSerialized) { - Name (RBUF, ResourceTemplate() - { - Memory32Fixed (ReadWrite, 0, 0, COM0) - Memory32Fixed (ReadWrite, 0, 0, COM1) - Memory32Fixed (ReadWrite, 0, 0, COM2) - Memory32Fixed (ReadWrite, 0, 0, COM4) - Memory32Fixed (ReadWrite, 0, 0, COM5) - Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ) - { GPIO_IRQ14 } - }) + CreateDWordField (^RBUF, ^COM0._BAS, BAS0) + BAS0 = ^^PCRB (PID_GPIOCOM0) + Return (^RBUF) + } + Method (_STA) + { + Return (0xF) + } +} - /* GPIO Community 0 */ - CreateDWordField (RBUF, COM0._BAS, BAS0) - CreateDWordField (RBUF, COM0._LEN, LEN0) - Store (PCRB (PID_GPIOCOM0), BAS0) - Store (GPIO_BASE_SIZE, LEN0) +Device (GCM1) +{ + Name (_HID, "INT34C5") + Name (_UID, 1) + Name (_DDN, "GPIO Controller Community 1") - /* GPIO Community 1 */ - CreateDWordField (RBUF, COM1._BAS, BAS1) - CreateDWordField ( RBUF, COM1._LEN, LEN1) - Store (PCRB (PID_GPIOCOM1), BAS1) - Store (GPIO_BASE_SIZE, LEN1) + Name (RBUF, ResourceTemplate() + { + Memory32Fixed (ReadWrite, 0, GPIO_BASE_SIZE, COM1) + Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ) + { GPIO_IRQ14 } + }) + Method (_CRS, 0, NotSerialized) + { + CreateDWordField (^RBUF, ^COM1._BAS, BAS1) + BAS1 = ^^PCRB (PID_GPIOCOM1) + Return (^RBUF) + } + Method (_STA) + { + Return (0xF) + } +} - /* GPIO Community 2 */ - CreateDWordField (RBUF, COM2._BAS, BAS2) - CreateDWordField (RBUF, COM2._LEN, LEN2) - Store (PCRB (PID_GPIOCOM2), BAS2) - Store (GPIO_BASE_SIZE, LEN2) +Device (GCM4) +{ + Name (_HID, "INT34C5") + Name (_UID, 4) + Name (_DDN, "GPIO Controller Community 4") - /* GPIO Community 4 */ - CreateDWordField (RBUF, COM4._BAS, BAS4) - CreateDWordField (RBUF, COM4._LEN, LEN4) - Store (PCRB (PID_GPIOCOM4), BAS4) - Store (GPIO_BASE_SIZE, LEN4) + Name (RBUF, ResourceTemplate() + { + Memory32Fixed (ReadWrite, 0, GPIO_BASE_SIZE, COM4) + Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ) + { GPIO_IRQ14 } + }) + Method (_CRS, 0, NotSerialized) + { + CreateDWordField (^RBUF, ^COM4._BAS, BAS4) + BAS4 = ^^PCRB (PID_GPIOCOM4) + Return (^RBUF) + } + Method (_STA) + { + Return (0xF) + } +} - /* GPIO Community 5 */ - CreateDWordField (RBUF, COM5._BAS, BAS5) - CreateDWordField (RBUF, COM5._LEN, LEN5) - Store (PCRB (PID_GPIOCOM5), BAS5) - Store (GPIO_BASE_SIZE, LEN5) +Device (GCM5) +{ + Name (_HID, "INT34C5") + Name (_UID, 5) + Name (_DDN, "GPIO Controller Community 5") - Return (RBUF) + Name (RBUF, ResourceTemplate() + { + Memory32Fixed (ReadWrite, 0, GPIO_BASE_SIZE, COM5) + Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ) + { GPIO_IRQ14 } + }) + Method (_CRS, 0, NotSerialized) + { + CreateDWordField (^RBUF, ^COM5._BAS, BAS5) + BAS5 = ^^PCRB (PID_GPIOCOM5) + Return (^RBUF) } - - Method (_STA, 0, NotSerialized) + Method (_STA) { Return (0xF) } @@ -82,38 +119,37 @@ Device (GPIO) Method (GADD, 1, NotSerialized) { /* GPIO Community 0 */ - If (Arg0 >= GPP_G0 && Arg0 <= GPP_A23) + If (Arg0 >= GPP_B0 && Arg0 <= GPP_A24) { Local0 = PID_GPIOCOM0 - Subtract (Arg0, GPP_A0, Local1) + Local1 = Arg0 - GPP_B0 } /* GPIO Community 1 */ - If (Arg0 >= GPP_H0 && Arg0 <= GPP_F19) + If (Arg0 >= GPP_S0 && Arg0 <= vI2S2_RXD) { Local0 = PID_GPIOCOM1 - Subtract (Arg0, GPP_D0, Local1) + Local1 = Arg0 - GPP_S0 } /* GPIO Community 2 */ - If (Arg0 >= GPD0 && Arg0 <= GPD11) + If (Arg0 >= GPD0 && Arg0 <= GPD_DRAM_RESETB) { Local0 = PID_GPIOCOM2 - Subtract (Arg0, GPD0, Local1) + Local1 = Arg0 - GPD0 } /* GPIO Community 4 */ - If (Arg0 >= GPP_C0 && Arg0 <= GPP_E23) + If (Arg0 >= GPP_C0 && Arg0 <= GPP_DBG_PMODE) { Local0 = PID_GPIOCOM4 - Subtract (Arg0, GPP_C0, Local1) + Local1 = Arg0 - GPP_C0 } - /* GPIO Community 05*/ - If (Arg0 >= GPP_R0 && Arg0 <= GPP_S7) + /* GPIO Community 5 */ + If (Arg0 >= GPP_R0 && Arg0 <= GPP_CLK_LOOPBK) { Local0 = PID_GPIOCOM5 - Subtract (Arg0, GPP_R0, Local1) + Local1 = Arg0 - GPP_R0 } - Store (PCRB (Local0), Local2) - Add (Local2, PAD_CFG_BASE, Local2) - Return (Add (Local2, Multiply (Local1, 16))) + Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16) + Return (Local2) } /* |