soc: Remove copyright notices
[coreboot.git] / src / soc / intel / apollolake / acpi / gpiolib.asl
bloba4ab9135c544ac2507eacbee9fdc52448b131fe9
1 /*
2  * This file is part of the coreboot project.
3  *
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; version 2 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  */
15 Scope (\_SB)
17         /* Get Pad Configuration DW0 register value */
18         Method (GPC0, 0x1, Serialized)
19         {
20                 /* Arg0 - GPIO DW0 address */
21                 Store (Arg0, Local0)
22                 OperationRegion (PDW0, SystemMemory, Local0, 4)
23                 Field (PDW0, AnyAcc, NoLock, Preserve) {
24                         TEMP, 32
25                 }
26                 Return (TEMP)
27         }
29         /* Set Pad Configuration DW0 register value */
30         Method (SPC0, 0x2, Serialized)
31         {
32                 /* Arg0 - GPIO DW0 address */
33                 /* Arg1 - Value for DW0 register */
34                 Store (Arg0, Local0)
35                 OperationRegion (PDW0, SystemMemory, Local0, 4)
36                 Field (PDW0, AnyAcc, NoLock, Preserve) {
37                         TEMP,32
38                 }
39                 Store (Arg1, TEMP)
40         }
42         /* Get Pad Configuration DW1 register value */
43         Method (GPC1, 0x1, Serialized)
44         {
45                 /* Arg0 - GPIO DW0 address */
46                 Store (Add (Arg0, 0x4), Local0)
47                 OperationRegion (PDW1, SystemMemory, Local0, 4)
48                 Field (PDW1, AnyAcc, NoLock, Preserve) {
49                         TEMP, 32
50                 }
51                 Return (TEMP)
52         }
54         /* Set Pad Configuration DW1 register value */
55         Method (SPC1, 0x2, Serialized)
56         {
57                 /* Arg0 - GPIO DW0 address */
58                 /* Arg1 - Value for DW1 register */
59                 Store (Add (Arg0, 0x4), Local0)
60                 OperationRegion (PDW1, SystemMemory, Local0, 4)
61                 Field(PDW1, AnyAcc, NoLock, Preserve) {
62                         TEMP,32
63                 }
64                 Store (Arg1, TEMP)
65         }
67         /* Get DW0 address of a given pad */
68         Method (GDW0, 0x2, Serialized)
69         {
70                 /* Arg0 - GPIO portid */
71                 /* Arg1 - GPIO pad offset relative to the community */
72                 Store (0, Local1)
73                 Or( Or (ShiftLeft (Arg0, 16), CONFIG_PCR_BASE_ADDRESS),
74                                         Local1, Local1)
75                 Or( Add (PAD_CFG_BASE, Multiply (Arg1, Multiply (
76                         GPIO_NUM_PAD_CFG_REGS, 4))), Local1, Local1)
77                 Return (Local1)
78         }
80         /* Calculate HOSTSW_REG address */
81         Method (CHSA, 0x1, Serialized)
82         {
83                 /* Arg0 - GPIO pad offset relative to the community */
84                 Add (HOSTSW_OWN_REG_0, Multiply (Divide (Arg0, 32), 4), Local1)
85                 Return (Local1)
86         }
88         /* Get Host ownership register of GPIO Community */
89         Method (GHO, 0x2, Serialized)
90         {
91                 /* Arg0 - GPIO portid */
92                 /* Arg1 - GPIO pad offset relative to the community */
93                 Store (CHSA (Arg1), Local1)
95                 OperationRegion (SHO0, SystemMemory, Or ( Or
96                         (CONFIG_PCR_BASE_ADDRESS, ShiftLeft (Arg0, 16)), Local1), 4)
97                 Field (SHO0, AnyAcc, NoLock, Preserve) {
98                         TEMP, 32
99                 }
100                 Return (TEMP)
101         }
103         /* Set Host ownership register of GPIO Community */
104         Method (SHO, 0x3, Serialized)
105         {
106                 /* Arg0 - GPIO portid */
107                 /* Arg1 - GPIO pad offset relative to the community */
108                 /* Arg2 - Value for Host own register */
109                 Store (CHSA (Arg1), Local1)
111                 OperationRegion (SHO0, SystemMemory, Or ( Or
112                         (CONFIG_PCR_BASE_ADDRESS, ShiftLeft (Arg0, 16)), Local1), 4)
113                 Field (SHO0, AnyAcc, NoLock, Preserve) {
114                         TEMP, 32
115                 }
116                 Store (Arg2, TEMP)
117         }