libpayload: configs: Add new config.featuretest to broaden CI
[coreboot2.git] / src / soc / intel / tigerlake / acpi / gpio.asl
blob4c5f7c73ca449c211ec988aed0a656da6eb12859
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #include <gpio.h>
3 #include <soc/intel/common/acpi/gpio.asl>
4 #include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
5 #include <soc/irq.h>
6 #include <soc/pcr_ids.h>
8 Device (GPIO)
10         Name (_HID, "INT34C5")
11         Name (_UID, 0)
12         Name (_DDN, "GPIO Controller")
14         Name (RBUF, ResourceTemplate()
15         {
16                 Memory32Fixed (ReadWrite, 0, 0, COM0)
17                 Memory32Fixed (ReadWrite, 0, 0, COM1)
18                 Memory32Fixed (ReadWrite, 0, 0, COM4)
19                 Memory32Fixed (ReadWrite, 0, 0, COM5)
20                 Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ)
21                         { GPIO_IRQ14 }
22         })
23         Method (_CRS, 0, NotSerialized)
24         {
25                 /* GPIO Community 0 */
26                 CreateDWordField (^RBUF, ^COM0._BAS, BAS0)
27                 CreateDWordField (^RBUF, ^COM0._LEN, LEN0)
28                 BAS0 = ^^PCRB (PID_GPIOCOM0)
29                 LEN0 = GPIO_BASE_SIZE
31                 /* GPIO Community 1 */
32                 CreateDWordField (^RBUF, ^COM1._BAS, BAS1)
33                 CreateDWordField (^RBUF, ^COM1._LEN, LEN1)
34                 BAS1 = ^^PCRB (PID_GPIOCOM1)
35                 LEN1 = GPIO_BASE_SIZE
37                 /* GPIO Community 4 */
38                 CreateDWordField (^RBUF, ^COM4._BAS, BAS4)
39                 CreateDWordField (^RBUF, ^COM4._LEN, LEN4)
40                 BAS4 = ^^PCRB (PID_GPIOCOM4)
41                 LEN4 = GPIO_BASE_SIZE
43                 /* GPIO Community 5 */
44                 CreateDWordField (^RBUF, ^COM5._BAS, BAS5)
45                 CreateDWordField (^RBUF, ^COM5._LEN, LEN5)
46                 BAS5 = ^^PCRB (PID_GPIOCOM5)
47                 LEN5 = GPIO_BASE_SIZE
49                 Return (RBUF)
50         }
52         Method (_STA, 0, NotSerialized)
53         {
54                 Return (0xF)
55         }
59  * Get GPIO DW0 Address
60  * Arg0 - GPIO Number
61  */
62 Method (GADD, 1, NotSerialized)
64         /* GPIO Community 0 */
65         If (Arg0 >= GPIO_COM0_START && Arg0 <= GPIO_COM0_END)
66         {
67                 Local0 = PID_GPIOCOM0
68                 Local1 = Arg0 - GPIO_COM0_START
69         }
70         /* GPIO Community 1 */
71         If (Arg0 >= GPIO_COM1_START && Arg0 <= GPIO_COM1_END)
72         {
73                 Local0 = PID_GPIOCOM1
74                 Local1 = Arg0 - GPIO_COM1_START
75         }
76         /* GPIO Community 2 */
77         If (Arg0 >= GPIO_COM2_START && Arg0 <= GPIO_COM2_END)
78         {
79                 Local0 = PID_GPIOCOM2
80                 Local1 = Arg0 - GPIO_COM2_START
81         }
82         /* GPIO Community 4 */
83         If (Arg0 >= GPIO_COM4_START && Arg0 <= GPIO_COM4_END)
84         {
85                 Local0 = PID_GPIOCOM4
86                 Local1 = Arg0 - GPIO_COM4_START
87         }
88         /* GPIO Community 05*/
89         If (Arg0 >= GPIO_COM5_START && Arg0 <= GPIO_COM5_END)
90         {
91                 Local0 = PID_GPIOCOM5
92                 Local1 = Arg0 - GPIO_COM5_START
93         }
95         Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16)
96         Return (Local2)
100  * Return PCR Port ID of GPIO Communities
102  * Arg0: GPIO Community (0-5)
103  */
104 Method (GPID, 1, Serialized)
106         Switch (ToInteger (Arg0))
107         {
108                 Case (COMM_0) {
109                         Local0 = PID_GPIOCOM0
110                 }
111                 Case (COMM_1) {
112                         Local0 = PID_GPIOCOM1
113                 }
114                 Case (COMM_2) {
115                         Local0 = PID_GPIOCOM2
116                 }
117                 Case (COMM_4) {
118                         Local0 = PID_GPIOCOM4
119                 }
120                 Case (COMM_5) {
121                         Local0 = PID_GPIOCOM5
122                 }
123                 Default {
124                         Return (0)
125                 }
126         }
128         Return (Local0)