soc/mediatek/mt8196: Add PMIC MT6373 driver
[coreboot.git] / src / soc / intel / cannonlake / acpi / gpio_cnp_h.asl
blob9c3ee615f5a9815f7ff7966d6ea94002afba0b01
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #include <soc/gpio_defs_cnp_h.h>
3 #include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
4 #include <soc/irq.h>
5 #include <soc/pcr_ids.h>
7 Device (GPIO)
9         Name (_HID, "INT3450")
10         Name (_UID, 0)
11         Name (_DDN, "GPIO Controller")
13         Name (RBUF, ResourceTemplate()
14         {
15                 Memory32Fixed (ReadWrite, 0, 0, COM0)
16                 Memory32Fixed (ReadWrite, 0, 0, COM1)
17                 Memory32Fixed (ReadWrite, 0, 0, COM3)
18                 Memory32Fixed (ReadWrite, 0, 0, COM4)
19                 Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, GIRQ)
20                         { GPIO_IRQ14 }
21         })
23         /*
24          * GPIO communities 0, 1, 3, and 4 are exported for the OS.
25          * This is based on the Linux kernel provided community map at
26          * drivers/pinctrl/intel/pinctrl-cannonlake.c:cnhl_communities[]
27          */
28         Method (_CRS, 0, NotSerialized)
29         {
30                 /* GPIO Community 0 */
31                 CreateDWordField (^RBUF, ^COM0._BAS, BAS0)
32                 CreateDWordField (^RBUF, ^COM0._LEN, LEN0)
33                 BAS0 = ^^PCRB (PID_GPIOCOM0)
34                 LEN0 = GPIO_BASE_SIZE
36                 /* GPIO Community 1 */
37                 CreateDWordField (^RBUF, ^COM1._BAS, BAS1)
38                 CreateDWordField (^RBUF, ^COM1._LEN, LEN1)
39                 BAS1 = ^^PCRB (PID_GPIOCOM1)
40                 LEN1 = GPIO_BASE_SIZE
42                 /* GPIO Community 3 */
43                 CreateDWordField (^RBUF, ^COM3._BAS, BAS3)
44                 CreateDWordField (^RBUF, ^COM3._LEN, LEN3)
45                 BAS3 = ^^PCRB (PID_GPIOCOM3)
46                 LEN3 = GPIO_BASE_SIZE
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                 Return (RBUF)
55         }
57         Method (_STA, 0, NotSerialized)
58         {
59                 Return (0xF)
60         }
64  * Get GPIO DW0 Address
65  * Arg0 - GPIO Number
66  */
67 Method (GADD, 1, NotSerialized)
69         /* GPIO Community 0 */
70         If (Arg0 >= GPP_A0 && Arg0 <= GSPI1_CLK_LOOPBK)
71         {
72                 Local0 = PID_GPIOCOM0
73                 Local1 = Arg0 - GPP_A0
74         }
75         /* GPIO Community 1 */
76         If (Arg0 >= GPP_C0 && Arg0 <= vSSP2_RXD)
77         {
78                 Local0 = PID_GPIOCOM1
79                 Local1 = Arg0 - GPP_C0
80         }
81         /* GPIO Community 3*/
82         If (Arg0 >= GPP_K0 && Arg0 <= SPI0_CLK_LOOPBK)
83         {
84                 Local0 = PID_GPIOCOM3
85                 Local1 = Arg0 - GPP_K0
86         }
87         /* GPIO Community 4*/
88         If (Arg0 >= HDACPU_SDI && Arg0 <= GPP_J11)
89         {
90                 Local0 = PID_GPIOCOM4
91                 Local1 = Arg0 - GPP_I0
92         }
93         Local2 = PCRB (Local0)
94         Local2 += PAD_CFG_BASE
95         Return (Local2 + Local1 * 16)