payloads/edk2: Disable the CPU Timer Lib unless supported
[coreboot.git] / src / superio / smsc / sio1007 / acpi / superio.asl
blob5132df076279382e4cb60cf56eb8a7cefb63909a
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 // Scope is \_SB.PCI0.LPCB
5 Device (SIO) {
6         Name (_ADR, 0x2E)
7         OperationRegion (SIOA, SystemIO, 0x2E, 0x02)
8         Field (SIOA, ByteAcc, NoLock, Preserve)
9         {
10                 SI2E, 8,
11                 SI2F, 8,
12         }
14         IndexField (SI2E, SI2F, ByteAcc, NoLock, Preserve)
15         {
16                 Offset (0x02),
17                 SCNT, 8,        /* Configure Control */
18                 Offset (0x07),
19                 SLDN, 8,        /* Logical Device Number */
20                 Offset (0x30),
21                 SACT, 8,        /* Activate */
22                 Offset (0x60),
23                 IO0H, 8,        /* Base Address 0 MSB */
24                 IO0L, 8,        /* Base Address 0 LSB */
25                 Offset (0x62),
26                 IO1H, 8,        /* Base Address 1 MSB */
27                 IO1L, 8,        /* Base Address 1 LSB */
28                 Offset (0x70),
29                 IQ00, 8,        /* Interrupt Select */
30         }
32         Name (SFDC, 0)          /* Floppy Disk Controller */
33         Name (SSP1, 1)          /* Serial Port 1 */
34         Name (SENV, 4)          /* Environment Controller */
35         Name (SKBC, 5)          /* Keyboard */
36         Name (SKBM, 6)          /* Mouse */
37         Name (SGPI, 7)          /* GPIO */
38         Name (SINF, 10)         /* Consumer IR */
40         Method (ENTR, 0, NotSerialized)
41         {
42                 SI2E = 0x87
43                 SI2E = 0x01
44                 SI2E = 0x55
45                 SI2E = 0x55
46         }
48         Method (EXIT, 0, NotSerialized)
49         {
50                 SCNT = 0x02
51         }
53         /* Parse activate register for an LDN */
54         Method (ISEN, 1, NotSerialized)
55         {
56                 ENTR ()
57                 SLDN = Arg0
58                 Local0 = SACT
59                 EXIT ()
61                 /* Check if it exists */
62                 If (Local0 == 0xFF)
63                 {
64                         Return (0x00)
65                 }
67                 /* Check if activated */
68                 If (Local0 == 1)
69                 {
70                         Return (0x0F)
71                 }
72                 Else
73                 {
74                         Return (0x0D)
75                 }
76         }
78         /* Enable an LDN via the activate register */
79         Method (SENA, 1, NotSerialized)
80         {
81                 ENTR ()
82                 SLDN = Arg0
83                 SACT = 1
84                 EXIT ()
85         }
87         /* Disable an LDN via the activate register */
88         Method (SDIS, 1, NotSerialized)
89         {
90                 ENTR ()
91                 SLDN = Arg0
92                 SACT = 0
93                 EXIT ()
94         }
96 #ifdef SIO_ENABLE_ENVC
97         Device (ENVC) {
98                 Name (_HID, EISAID ("PNP0C02"))
99                 Name (_UID, 10)
101                 Method (_STA, 0, NotSerialized) {
102                         Return (ISEN (SENV))
103                 }
105                 Name (_CRS, ResourceTemplate ()
106                 {
107                         IO (Decode16, SIO_ENVC_IO0, SIO_ENVC_IO0, 0x08, 0x08)
108                         IO (Decode16, SIO_ENVC_IO1, SIO_ENVC_IO1, 0x04, 0x04)
109                 })
111                 Name (_PRS, ResourceTemplate ()
112                 {
113                         IO (Decode16, SIO_ENVC_IO0, SIO_ENVC_IO0, 0x08, 0x08)
114                         IO (Decode16, SIO_ENVC_IO1, SIO_ENVC_IO1, 0x04, 0x04)
115                 })
117                 OperationRegion (ECAP, SystemIO, SIO_ENVC_IO0, 0x07)
118                 Field (ECAP, ByteAcc, NoLock, Preserve)
119                 {
120                         Offset (0x05),
121                         ECAI, 8,  // Address Index Register
122                         ECAD, 8,  // Address Data Register
123                 }
125                 // Registers for thermal zone implementations
126                 IndexField (ECAI, ECAD, ByteAcc, NoLock, Preserve)
127                 {
128                         Offset (0x29),
129                         TIN1, 8,  // TMPIN1 Reading
130                         TIN2, 8,  // TMPIN2 Reading
131                         TIN3, 8,  // TMPIN3 Reading
132                         Offset (0x6b),
133                         F2PS, 8,  // FAN2 PWM Setting
134                         Offset (0x73),
135                         F3PS, 8,  // FAN3 PWM Setting
136                 }
137         }
138 #endif
140 #ifdef SIO_ENABLE_GPIO
141         Device (GPIO) {
142                 Name (_HID, EISAID ("PNP0C02"))
143                 Name (_UID, 11)
145                 Method (_STA, 0, NotSerialized) {
146                         Return (0x0F)
147                 }
149                 Name (_CRS, ResourceTemplate ()
150                 {
151                         IO (Decode16, SIO_GPIO_IO0, SIO_GPIO_IO0, 0x01, 0x01)
152                         IO (Decode16, SIO_GPIO_IO1, SIO_GPIO_IO1, 0x08, 0x08)
153                 })
155                 Name (_PRS, ResourceTemplate ()
156                 {
157                         IO (Decode16, SIO_GPIO_IO0, SIO_GPIO_IO0, 0x01, 0x01)
158                         IO (Decode16, SIO_GPIO_IO1, SIO_GPIO_IO1, 0x08, 0x08)
159                 })
160         }
161 #endif
163 #ifdef SIO_ENABLE_COM1
164         Device (COM1) {
165                 Name (_HID, EISAID ("PNP0501"))
166                 Name (_UID, 1)
168                 Method (_STA, 0, NotSerialized) {
169                         Return (ISEN (SSP1))
170                 }
172                 Name (_CRS, ResourceTemplate ()
173                 {
174                         IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
175                         IRQNoFlags () {4}
176                 })
178                 Name (_PRS, ResourceTemplate ()
179                 {
180                         IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
181                         IRQNoFlags () {4}
182                 })
183         }
184 #endif
186 #ifdef SIO_ENABLE_PS2K
187         Device (PS2K)           // Keyboard
188         {
189                 Name (_HID, EISAID("PNP0303"))
190                 Name (_CID, EISAID("PNP030B"))
192                 Method (_STA, 0, NotSerialized) {
193                         Return (ISEN (SKBC))
194                 }
196                 Name (_CRS, ResourceTemplate()
197                 {
198                         IO (Decode16, 0x60, 0x60, 0x01, 0x01)
199                         IO (Decode16, 0x64, 0x64, 0x01, 0x01)
200                         IRQNoFlags () {1}
201                 })
203                 Name (_PRS, ResourceTemplate()
204                 {
205                         IO (Decode16, 0x60, 0x60, 0x01, 0x01)
206                         IO (Decode16, 0x64, 0x64, 0x01, 0x01)
207                         IRQNoFlags () {1}
208                 })
209         }
210 #endif
212 #ifdef SIO_ENABLE_PS2M
213         Device (PS2M)           // Mouse
214         {
215                 Name (_HID, EISAID("PNP0F13"))
217                 Method (_STA, 0, NotSerialized) {
218                         Return (ISEN (SKBM))
219                 }
221                 Name (_CRS, ResourceTemplate()
222                 {
223                         IRQNoFlags () {12}
224                 })
226                 Name (_PRS, ResourceTemplate()
227                 {
228                         IRQNoFlags () {12}
229                 })
230         }
231 #endif
233 #ifdef SIO_ENABLE_FDC0
234         Device (FDC0)           // Floppy controller
235         {
236                 Name (_HID, EISAID ("PNP0700"))
238                 Method (_STA, 0, NotSerialized) {
239                         Return (ISEN (SFDC))
240                 }
242                 Name (_CRS, ResourceTemplate()
243                 {
244                         IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
245                         IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
246                         IRQNoFlags () {6}
247                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
248                 })
250                 Name (_PRS, ResourceTemplate()
251                 {
252                         IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
253                         IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
254                         IRQNoFlags () {6}
255                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
256                 })
257         }
258 #endif
260 #ifdef SIO_ENABLE_INFR
261         Device (INFR)           // Infrared controller
262         {
263                 Name (_HID, EISAID ("PNP0510"))
265                 Method (_STA, 0, NotSerialized) {
266                         Return (ISEN (SINF))
267                 }
269                 Name (_CRS, ResourceTemplate()
270                 {
271                         IO (Decode16, SIO_INFR_IO0, SIO_INFR_IO0, 0x08, 0x08)
272                         IRQNoFlags () { SIO_INFR_IRQ }
273                 })
275                 Name (_PRS, ResourceTemplate()
276                 {
277                         IO (Decode16, SIO_INFR_IO0, SIO_INFR_IO0, 0x08, 0x08)
278                         IRQNoFlags () { SIO_INFR_IRQ }
279                 })
280         }
281 #endif