mb/system76/cml-u/dt: Make use of chipset devicetree
[coreboot.git] / src / soc / intel / elkhartlake / acpi / gpio.asl
blobaa140e86883e32a047123b3b04bf9875af25985b
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <gpio.h>
4 #include <soc/intel/common/acpi/gpio.asl>
5 #include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
6 #include <soc/irq.h>
7 #include <soc/pcr_ids.h>
9 Device (GPIO)
11         Name (_HID, CROS_GPIO_NAME)
12         Name (_UID, 0)
13         Name (_DDN, "GPIO Controller")
15         Name (RBUF, ResourceTemplate()
16         {
17                 Memory32Fixed (ReadWrite, 0, 0, COM0)
18                 Memory32Fixed (ReadWrite, 0, 0, COM1)
19                 Memory32Fixed (ReadWrite, 0, 0, COM2)
20                 Memory32Fixed (ReadWrite, 0, 0, COM3)
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 3 */
48                 CreateDWordField (^RBUF, ^COM3._BAS, BAS3)
49                 CreateDWordField (^RBUF, ^COM3._LEN, LEN3)
50                 BAS3 = ^^PCRB (PID_GPIOCOM3)
51                 LEN3 = GPIO_BASE_SIZE
53                 /* GPIO Community 4 */
54                 CreateDWordField (^RBUF, ^COM4._BAS, BAS4)
55                 CreateDWordField (^RBUF, ^COM4._LEN, LEN4)
56                 BAS4 = ^^PCRB (PID_GPIOCOM4)
57                 LEN4 = GPIO_BASE_SIZE
59                 /* GPIO Community 5 */
60                 CreateDWordField (^RBUF, ^COM5._BAS, BAS5)
61                 CreateDWordField (^RBUF, ^COM5._LEN, LEN5)
62                 BAS5 = ^^PCRB (PID_GPIOCOM5)
63                 LEN5 = GPIO_BASE_SIZE
65                 Return (RBUF)
66         }
68         Method (_STA, 0, NotSerialized)
69         {
70                 Return (0xF)
71         }
74  * Get GPIO DW0 Address
75  * Arg0 - GPIO Number
76  */
77 Method (GADD, 1, NotSerialized)
79         /* GPIO Community 0 */
80         If (Arg0 >= GPIO_COM0_START && Arg0 <= GPIO_COM0_END)
81         {
82                 Local0 = PID_GPIOCOM0
83                 Local1 = Arg0 - GPIO_COM0_START
84         }
85         /* GPIO Community 1 */
86         If (Arg0 >= GPIO_COM1_START && Arg0 <= GPIO_COM1_END)
87         {
88                 Local0 = PID_GPIOCOM1
89                 Local1 = Arg0 - GPIO_COM1_START
90         }
91         /* GPIO Community 2 */
92         If (Arg0 >= GPIO_COM2_START && Arg0 <= GPIO_COM2_END)
93         {
94                 Local0 = PID_GPIOCOM2
95                 Local1 = Arg0 - GPIO_COM2_START
96         }
97         /* GPIO Community 3 */
98         If (Arg0 >= GPIO_COM3_START && Arg0 <= GPIO_COM3_END)
99         {
100                 Local0 = PID_GPIOCOM3
101                 Local1 = Arg0 - GPIO_COM3_START
102         }
103         /* GPIO Community 4 */
104         If (Arg0 >= GPIO_COM4_START && Arg0 <= GPIO_COM4_END)
105         {
106                 Local0 = PID_GPIOCOM4
107                 Local1 = Arg0 - GPIO_COM4_START
108         }
109         /* GPIO Community 5 */
110         If (Arg0 >= GPIO_COM5_START && Arg0 <= GPIO_COM5_END)
111         {
112                 Local0 = PID_GPIOCOM5
113                 Local1 = Arg0 - GPIO_COM5_START
114         }
116         Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16)
117         Return (Local2)
121  * Return PCR Port ID of GPIO Communities
123  * Arg0: GPIO Community (0-5)
124  */
125 Method (GPID, 1, Serialized)
127         Switch (ToInteger (Arg0))
128         {
129                 Case (COMM_0) {
130                         Local0 = PID_GPIOCOM0
131                 }
132                 Case (COMM_1) {
133                         Local0 = PID_GPIOCOM1
134                 }
135                 Case (COMM_2) {
136                         Local0 = PID_GPIOCOM2
137                 }
138                 Case (COMM_3) {
139                         Local0 = PID_GPIOCOM3
140                 }
141                 Case (COMM_4) {
142                         Local0 = PID_GPIOCOM4
143                 }
144                 Case (COMM_5) {
145                         Local0 = PID_GPIOCOM5
146                 }
147                 Default {
148                         Return (0)
149                 }
150         }
152         Return (Local0)