summaryrefslogtreecommitdiff
path: root/src/soc/intel/tigerlake/acpi/gpio.asl
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/tigerlake/acpi/gpio.asl')
-rw-r--r--src/soc/intel/tigerlake/acpi/gpio.asl150
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)
}
/*