mb/starlabs/{lite_adl,byte_adl}: Don't select MAINBOARD_HAS_TPM2
[coreboot2.git] / src / soc / intel / alderlake / acpi / gpio.asl
blobf860bb9ac29517761cee379c98136ebf0e8da9bd
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, CROS_GPIO_NAME)
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 #if CONFIG(SOC_INTEL_ALDERLAKE_PCH_S)
19                 Memory32Fixed (ReadWrite, 0, 0, COM3)
20 #endif
21                 Memory32Fixed (ReadWrite, 0, 0, COM4)
22                 Memory32Fixed (ReadWrite, 0, 0, COM5)
23                 Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ)
24                         { GPIO_IRQ14 }
25         })
26         Method (_CRS, 0, NotSerialized)
27         {
28                 /* GPIO Community 0 */
29                 CreateDWordField (^RBUF, ^COM0._BAS, BAS0)
30                 CreateDWordField (^RBUF, ^COM0._LEN, LEN0)
31                 BAS0 = ^^PCRB (PID_GPIOCOM0)
32                 LEN0 = GPIO_BASE_SIZE
34                 /* GPIO Community 1 */
35                 CreateDWordField (^RBUF, ^COM1._BAS, BAS1)
36                 CreateDWordField (^RBUF, ^COM1._LEN, LEN1)
37                 BAS1 = ^^PCRB (PID_GPIOCOM1)
38                 LEN1 = GPIO_BASE_SIZE
40 #if CONFIG(SOC_INTEL_ALDERLAKE_PCH_S)
41                 /* GPIO Community 3 */
42                 CreateDWordField (^RBUF, ^COM3._BAS, BAS3)
43                 CreateDWordField (^RBUF, ^COM3._LEN, LEN3)
44                 BAS3 = ^^PCRB (PID_GPIOCOM3)
45                 LEN3 = GPIO_BASE_SIZE
46 #endif
48                 /* GPIO Community 4 */
49                 CreateDWordField (^RBUF, ^COM4._BAS, BAS4)
50                 CreateDWordField (^RBUF, ^COM4._LEN, LEN4)
51                 BAS4 = ^^PCRB (PID_GPIOCOM4)
52                 LEN4 = GPIO_BASE_SIZE
54                 /* GPIO Community 5 */
55                 CreateDWordField (^RBUF, ^COM5._BAS, BAS5)
56                 CreateDWordField (^RBUF, ^COM5._LEN, LEN5)
57                 BAS5 = ^^PCRB (PID_GPIOCOM5)
58                 LEN5 = GPIO_BASE_SIZE
60                 Return (RBUF)
61         }
63         Method (_STA, 0, NotSerialized)
64         {
65                 Return (0xF)
66         }
70  * Get GPIO DW0 Address
71  * Arg0 - GPIO Number
72  */
73 Method (GADD, 1, NotSerialized)
75         /* GPIO Community 0 */
76         If (Arg0 >= GPIO_COM0_START && Arg0 <= GPIO_COM0_END)
77         {
78                 Local0 = PID_GPIOCOM0
79                 Local1 = Arg0 - GPIO_COM0_START
80         }
81         /* GPIO Community 1 */
82         If (Arg0 >= GPIO_COM1_START && Arg0 <= GPIO_COM1_END)
83         {
84                 Local0 = PID_GPIOCOM1
85                 Local1 = Arg0 - GPIO_COM1_START
86         }
87         /* GPIO Community 2 */
88         If (Arg0 >= GPIO_COM2_START && Arg0 <= GPIO_COM2_END)
89         {
90                 Local0 = PID_GPIOCOM2
91                 Local1 = Arg0 - GPIO_COM2_START
92         }
93         /* GPIO Community 3 */
94         If (Arg0 >= GPIO_COM3_START && Arg0 <= GPIO_COM3_END)
95         {
96                 Local0 = PID_GPIOCOM3
97                 Local1 = Arg0 - GPIO_COM3_START
98         }
99         /* GPIO Community 4 */
100         If (Arg0 >= GPIO_COM4_START && Arg0 <= GPIO_COM4_END)
101         {
102                 Local0 = PID_GPIOCOM4
103                 Local1 = Arg0 - GPIO_COM4_START
104         }
105         /* GPIO Community 5*/
106         If (Arg0 >= GPIO_COM5_START && Arg0 <= GPIO_COM5_END)
107         {
108                 Local0 = PID_GPIOCOM5
109                 Local1 = Arg0 - GPIO_COM5_START
110         }
112         Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16)
113         Return (Local2)
117  * Return PCR Port ID of GPIO Communities
119  * Arg0: GPIO Community (0-5)
120  */
121 Method (GPID, 1, Serialized)
123         Switch (ToInteger (Arg0))
124         {
125                 Case (COMM_0) {
126                         Local0 = PID_GPIOCOM0
127                 }
128                 Case (COMM_1) {
129                         Local0 = PID_GPIOCOM1
130                 }
131                 Case (COMM_2) {
132                         Local0 = PID_GPIOCOM2
133                 }
134                 Case (COMM_3) {
135                         Local0 = PID_GPIOCOM3
136                 }
137                 Case (COMM_4) {
138                         Local0 = PID_GPIOCOM4
139                 }
140                 Case (COMM_5) {
141                         Local0 = PID_GPIOCOM5
142                 }
143                 Default {
144                         Return (0)
145                 }
146         }
148         Return (Local0)
151 /* GPIO Power Management bits */
152 Name(GPMB, Package(TOTAL_GPIO_COMM) {0, 0, 0, 0, 0, 0})
155  * Save GPIO Power Management bits
156  */
157 Method (SGPM, 0, Serialized)
159         For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
160         {
161                 Local1 = GPID (Local0)
162                 GPMB[Local0] = PCRR (Local1, GPIO_MISCCFG)
163         }
167  * Restore GPIO Power Management bits
168  */
169 Method (RGPM, 0, Serialized)
171         For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
172         {
173                 CGPM (Local0, DerefOf(GPMB[Local0]))
174         }
178  * Save current setting of GPIO Power Management bits and
179  * enable all Power Management bits for all communities
180  */
181 Method (EGPM, 0, Serialized)
183         /* Save current setting and will restore it when resuming */
184         SGPM ()
185         /* Enable PM bits */
186         For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
187         {
188                 CGPM (Local0, MISCCFG_GPIO_PM_CONFIG_BITS)
189         }