soc/intel/xeon_sp/chip_common: Improve the domain ID
[coreboot2.git] / src / soc / intel / jasperlake / acpi / gpio.asl
blob786a6c69abd4d07f3be444aa04e7db4eb225f2ca
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <gpio.h>
4 #include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
5 #include <soc/irq.h>
6 #include <soc/pcr_ids.h>
8 #include <soc/intel/common/acpi/gpio.asl>
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, COM4)
21                 Memory32Fixed (ReadWrite, 0, 0, COM5)
22                 Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ)
23                         { GPIO_IRQ14 }
24         })
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                 /* GPIO Community 4 */
41                 CreateDWordField (^RBUF, ^COM4._BAS, BAS4)
42                 CreateDWordField (^RBUF, ^COM4._LEN, LEN4)
43                 BAS4 = ^^PCRB (PID_GPIOCOM4)
44                 LEN4 = GPIO_BASE_SIZE
46                 /* GPIO Community 5 */
47                 CreateDWordField (^RBUF, ^COM5._BAS, BAS5)
48                 CreateDWordField (^RBUF, ^COM5._LEN, LEN5)
49                 BAS5 = ^^PCRB (PID_GPIOCOM5)
50                 LEN5 = GPIO_BASE_SIZE
52                 Return (RBUF)
53         }
55         Method (_STA, 0, NotSerialized)
56         {
57                 Return (0xF)
58         }
61  * Get GPIO DW0 Address
62  * Arg0 - GPIO Number
63  */
64 Method (GADD, 1, NotSerialized)
66         /* GPIO Community 0 */
67         If (Arg0 >= GPIO_COM0_START && Arg0 <= GPIO_COM0_END)
68         {
69                 Local0 = PID_GPIOCOM0
70                 Local1 = Arg0 - GPIO_COM0_START
71         }
72         /* GPIO Community 1 */
73         If (Arg0 >= GPIO_COM1_START && Arg0 <= GPIO_COM1_END)
74         {
75                 Local0 = PID_GPIOCOM1
76                 Local1 = Arg0 - GPIO_COM1_START
77         }
78         /* GPIO Community 2 */
79         If (Arg0 >= GPIO_COM2_START && Arg0 <= GPIO_COM2_END)
80         {
81                 Local0 = PID_GPIOCOM2
82                 Local1 = Arg0 - GPIO_COM2_START
83         }
84         /* GPIO Community 4 */
85         If (Arg0 >= GPIO_COM4_START && Arg0 <= GPIO_COM4_END)
86         {
87                 Local0 = PID_GPIOCOM4
88                 Local1 = Arg0 - GPIO_COM4_START
89         }
90         /* GPIO Community 05*/
91         If (Arg0 >= GPIO_COM5_START && Arg0 <= GPIO_COM5_END)
92         {
93                 Local0 = PID_GPIOCOM5
94                 Local1 = Arg0 - GPIO_COM5_START
95         }
97         Local2 = PCRB(Local0) + PAD_CFG_BASE + (Local1 * 16)
98         Return (Local2)
102  * Return PCR Port ID of GPIO Communities
104  * Arg0: GPIO Community (0-5)
105  */
106 Method (GPID, 1, Serialized)
108         Switch (ToInteger (Arg0))
109         {
110                 Case (COMM_0) {
111                         Local0 = PID_GPIOCOM0
112                 }
113                 Case (COMM_1) {
114                         Local0 = PID_GPIOCOM1
115                 }
116                 Case (COMM_2) {
117                         Local0 = PID_GPIOCOM2
118                 }
119                 Case (COMM_4) {
120                         Local0 = PID_GPIOCOM4
121                 }
122                 Case (COMM_5) {
123                         Local0 = PID_GPIOCOM5
124                 }
125                 Default {
126                         Return (0)
127                 }
128         }
130         Return (Local0)