soc/intel/elkhartlake: Fix EHL mainboard build fail errors
[coreboot.git] / src / soc / intel / elkhartlake / acpi / gpio.asl
blob27cb503f4512fedfe255d001331931b2acb86bea
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <intelblocks/gpio.h>
4 #include <soc/gpio_defs.h>
5 #include <soc/intel/common/acpi/gpio.asl>
6 #include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
7 #include <soc/irq.h>
8 #include <soc/pcr_ids.h>
10 Device (GPIO)
12         Name (_HID, CROS_GPIO_NAME)
13         Name (_UID, 0)
14         Name (_DDN, "GPIO Controller")
16         Name (RBUF, ResourceTemplate()
17         {
18                 Memory32Fixed (ReadWrite, 0, 0, COM0)
19                 Memory32Fixed (ReadWrite, 0, 0, COM1)
20                 Memory32Fixed (ReadWrite, 0, 0, COM2)
21                 Memory32Fixed (ReadWrite, 0, 0, COM4)
22                 Memory32Fixed (ReadWrite, 0, 0, COM5)
23                 Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ)
24                         { GPIO_IRQ14 }
25         })
27         Method (_CRS, 0, NotSerialized)
28         {
29                 /* GPIO Community 0 */
30                 CreateDWordField (^RBUF, ^COM0._BAS, BAS0)
31                 CreateDWordField (^RBUF, ^COM0._LEN, LEN0)
32                 BAS0 = ^^PCRB (PID_GPIOCOM0)
33                 LEN0 = GPIO_BASE_SIZE
35                 /* GPIO Community 1 */
36                 CreateDWordField (^RBUF, ^COM1._BAS, BAS1)
37                 CreateDWordField (^RBUF, ^COM1._LEN, LEN1)
38                 BAS1 = ^^PCRB (PID_GPIOCOM1)
39                 LEN1 = GPIO_BASE_SIZE
41                 /* GPIO Community 2 */
42                 CreateDWordField (^RBUF, ^COM2._BAS, BAS2)
43                 CreateDWordField (^RBUF, ^COM2._LEN, LEN2)
44                 BAS2 = ^^PCRB (PID_GPIOCOM2)
45                 LEN2 = GPIO_BASE_SIZE
47                 /* GPIO Community 4 */
48                 CreateDWordField (^RBUF, ^COM4._BAS, BAS4)
49                 CreateDWordField (^RBUF, ^COM4._LEN, LEN4)
50                 BAS4 = ^^PCRB (PID_GPIOCOM4)
51                 LEN4 = GPIO_BASE_SIZE
53                 /* GPIO Community 5 */
54                 CreateDWordField (^RBUF, ^COM5._BAS, BAS5)
55                 CreateDWordField (^RBUF, ^COM5._LEN, LEN5)
56                 BAS5 = ^^PCRB (PID_GPIOCOM5)
57                 LEN5 = GPIO_BASE_SIZE
59                 Return (RBUF)
60         }
62         Method (_STA, 0, NotSerialized)
63         {
64                 Return (0xF)
65         }
68  * Get GPIO DW0 Address
69  * Arg0 - GPIO Number
70  */
71 Method (GADD, 1, NotSerialized)
73         /* GPIO Community 0 */
74         If (Arg0 >= GPIO_COM0_START && Arg0 <= GPIO_COM0_END)
75         {
76                 Local0 = PID_GPIOCOM0
77                 Local1 = Arg0 - GPIO_COM0_START
78         }
79         /* GPIO Community 1 */
80         If (Arg0 >= GPIO_COM1_START && Arg0 <= GPIO_COM1_END)
81         {
82                 Local0 = PID_GPIOCOM1
83                 Local1 = Arg0 - GPIO_COM1_START
84         }
85         /* GPIO Community 2 */
86         If (Arg0 >= GPIO_COM2_START && Arg0 <= GPIO_COM2_END)
87         {
88                 Local0 = PID_GPIOCOM2
89                 Local1 = Arg0 - GPIO_COM2_START
90         }
91         /* GPIO Community 4 */
92         If (Arg0 >= GPIO_COM4_START && Arg0 <= GPIO_COM4_END)
93         {
94                 Local0 = PID_GPIOCOM4
95                 Local1 = Arg0 - GPIO_COM4_START
96         }
97         /* GPIO Community 05*/
98         If (Arg0 >= GPIO_COM5_START && Arg0 <= GPIO_COM5_END)
99         {
100                 Local0 = PID_GPIOCOM5
101                 Local1 = Arg0 - GPIO_COM5_START
102         }
104         Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16)
105         Return (Local2)
109  * Return PCR Port ID of GPIO Communities
111  * Arg0: GPIO Community (0-5)
112  */
113 Method (GPID, 1, Serialized)
115         Switch (ToInteger (Arg0))
116         {
117                 Case (COMM_0) {
118                         Local0 = PID_GPIOCOM0
119                 }
120                 Case (COMM_1) {
121                         Local0 = PID_GPIOCOM1
122                 }
123                 Case (COMM_2) {
124                         Local0 = PID_GPIOCOM2
125                 }
126                 Case (COMM_4) {
127                         Local0 = PID_GPIOCOM4
128                 }
129                 Case (COMM_5) {
130                         Local0 = PID_GPIOCOM5
131                 }
132                 Default {
133                         Return (0)
134                 }
135         }
137         Return (Local0)