blob: d28fb7093004bab6b6d3a70302cf0efe77a14782 [file] [log] [blame]
Angel Ponsf94ac9a2020-04-05 15:46:48 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Duncan Lauriec88c54c2014-04-30 16:36:13 -07002
3// Intel Serial IO Devices in ACPI Mode
4
5// Serial IO Device BAR0 and BAR1 is 4KB
6#define SIO_BAR_LEN 0x1000
7
Furquan Shaikh27c51a02021-06-18 23:18:42 +00008// Put SerialIO device in D0 state
9// Arg0 - Ref to offset 0x84 of device's PCI config space
10Method (LPD0, 1, Serialized)
11{
12 Arg0 = DeRefOf (Arg0) & 0xFFFFFFFC
13 Local0 = DeRefOf (Arg0) // Read back after writing
Martin Rothd890b452015-12-10 08:04:44 -070014
Furquan Shaikh27c51a02021-06-18 23:18:42 +000015 // Use Local0 to avoid iasl warning: Method Local is set but never used
16 Local0 &= Ones
17}
Duncan Laurie61680272014-05-05 12:42:35 -050018
Furquan Shaikh27c51a02021-06-18 23:18:42 +000019// Put SerialIO device in D3 state
20// Arg0 - Ref to offset 0x84 of device's PCI config space
21Method (LPD3, 1, Serialized)
22{
23 Arg0 = DeRefOf (Arg0) | 0x3
24 Local0 = DeRefOf (Arg0) // Read back after writing
25
26 // Use Local0 to avoid iasl warning: Method Local is set but never used
27 Local0 &= Ones
28}
Duncan Laurie61680272014-05-05 12:42:35 -050029
Duncan Lauriec88c54c2014-04-30 16:36:13 -070030// Serial IO Resource Consumption for BAR1
31Device (SIOR)
32{
Angel Pons56d37fb2020-10-25 21:11:58 +010033 Name (_HID, EISAID ("PNP0C02"))
Duncan Lauriec88c54c2014-04-30 16:36:13 -070034 Name (_UID, 4)
35
Angel Pons56d37fb2020-10-25 21:11:58 +010036 Name (RBUF, ResourceTemplate ()
Duncan Lauriec88c54c2014-04-30 16:36:13 -070037 {
38 // Serial IO BAR1 (PCI config space) resources
39 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D0) // SDMA
40 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D1) // I2C0
41 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D2) // I2C1
42 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D3) // SPI0
43 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D4) // SPI1
44 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D5) // UART0
45 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D6) // UART1
46 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, B1D7) // SDIO
47 })
48
49 // Update BAR1 address and length if set in NVS
50 Method (_CRS, 0, NotSerialized)
51 {
52 // SDMA
Angel Pons56d37fb2020-10-25 21:11:58 +010053 If (\S0B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070054 CreateDwordField (^RBUF, ^B1D0._BAS, B0AD)
55 CreateDwordField (^RBUF, ^B1D0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010056 B0AD = \S0B1
57 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070058 }
59
60 // I2C0
Angel Pons56d37fb2020-10-25 21:11:58 +010061 If (\S1B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070062 CreateDwordField (^RBUF, ^B1D1._BAS, B1AD)
63 CreateDwordField (^RBUF, ^B1D1._LEN, B1LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010064 B1AD = \S1B1
65 B1LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070066 }
67
68 // I2C1
Angel Pons56d37fb2020-10-25 21:11:58 +010069 If (\S2B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070070 CreateDwordField (^RBUF, ^B1D2._BAS, B2AD)
71 CreateDwordField (^RBUF, ^B1D2._LEN, B2LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010072 B2AD = \S2B1
73 B2LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070074 }
75
76 // SPI0
Angel Pons56d37fb2020-10-25 21:11:58 +010077 If (\S3B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070078 CreateDwordField (^RBUF, ^B1D3._BAS, B3AD)
79 CreateDwordField (^RBUF, ^B1D3._LEN, B3LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010080 B3AD = \S3B1
81 B3LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070082 }
83
84 // SPI1
Angel Pons56d37fb2020-10-25 21:11:58 +010085 If (\S4B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070086 CreateDwordField (^RBUF, ^B1D4._BAS, B4AD)
87 CreateDwordField (^RBUF, ^B1D4._LEN, B4LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010088 B4AD = \S4B1
89 B4LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070090 }
91
92 // UART0
Angel Pons56d37fb2020-10-25 21:11:58 +010093 If (\S5B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -070094 CreateDwordField (^RBUF, ^B1D5._BAS, B5AD)
95 CreateDwordField (^RBUF, ^B1D5._LEN, B5LN)
Angel Pons56d37fb2020-10-25 21:11:58 +010096 B5AD = \S5B1
97 B5LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -070098 }
99
100 // UART1
Angel Pons56d37fb2020-10-25 21:11:58 +0100101 If (\S6B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700102 CreateDwordField (^RBUF, ^B1D6._BAS, B6AD)
103 CreateDwordField (^RBUF, ^B1D6._LEN, B6LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100104 B6AD = \S6B1
105 B6LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700106 }
107
108 // SDIO
Angel Pons56d37fb2020-10-25 21:11:58 +0100109 If (\S7B1 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700110 CreateDwordField (^RBUF, ^B1D7._BAS, B7AD)
111 CreateDwordField (^RBUF, ^B1D7._LEN, B7LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100112 B7AD = \S7B1
113 B7LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700114 }
115
116 Return (RBUF)
117 }
118}
119
120Device (SDMA)
121{
122 // Serial IO DMA Controller
Nico Huber7176a542019-12-13 17:08:49 +0100123 Name (_HID, "INTL9C60")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700124 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700125
126 // BAR0 is assigned during PCI enumeration and saved into NVS
127 Name (RBUF, ResourceTemplate ()
128 {
129 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
130 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {7}
131 })
132
133 Method (_CRS, 0, NotSerialized)
134 {
135 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100136 If (\S0B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700137 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
138 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100139 B0AD = \S0B0
140 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700141 }
142
143 Return (RBUF)
144 }
145
146 Method (_STA, 0, NotSerialized)
147 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100148 If (\S0EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700149 Return (0x0)
150 } Else {
151 Return (0xF)
152 }
153 }
154}
155
156Device (I2C0)
157{
158 // Serial IO I2C0 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500159 Method (_HID)
160 {
161 If (\ISWP ()) {
162 // WildcatPoint
163 Return ("INT3432")
164 }
165
166 // LynxPoint-LP
167 Return ("INT33C2")
168 }
Angel Pons81b7c292020-10-29 18:29:11 +0100169 Name (_CID, "INT33C2")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700170 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700171
Chiranjeevi Rapolu1164d512014-10-29 17:26:05 -0700172 Name (SSCN, Package () { 432, 507, 30 })
173 Name (FMCN, Package () { 72, 160, 30 })
Duncan Laurie61680272014-05-05 12:42:35 -0500174
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700175 // BAR0 is assigned during PCI enumeration and saved into NVS
176 Name (RBUF, ResourceTemplate ()
177 {
178 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
179 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {7}
180 })
181
182 // DMA channels are only used if Serial IO DMA controller is enabled
183 Name (DBUF, ResourceTemplate ()
184 {
Duncan Laurie61680272014-05-05 12:42:35 -0500185 FixedDMA (0x18, 4, Width32Bit, DMA1) // Tx
186 FixedDMA (0x19, 5, Width32Bit, DMA2) // Rx
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700187 })
188
189 Method (_CRS, 0, NotSerialized)
190 {
191 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100192 If (\S1B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700193 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
194 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100195 B0AD = \S1B0
196 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700197 }
198
199 // Check if Serial IO DMA Controller is enabled
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000200 If (\_SB.PCI0.SDMA._STA != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700201 Return (ConcatenateResTemplate (RBUF, DBUF))
202 } Else {
203 Return (RBUF)
204 }
205 }
206
207 Method (_STA, 0, NotSerialized)
208 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100209 If (\S1EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700210 Return (0x0)
211 } Else {
212 Return (0xF)
213 }
214 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000215
216 OperationRegion (SPRT, SystemMemory, \S1B1 + 0x84, 4)
217 Field (SPRT, DWordAcc, NoLock, Preserve)
218 {
219 SPCS, 32
220 }
221
222 Method (_PS0, 0, Serialized)
223 {
224 ^^LPD0 (RefOf (SPCS))
225 }
226
227 Method (_PS3, 0, Serialized)
228 {
229 ^^LPD3 (RefOf (SPCS))
230 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700231}
232
233Device (I2C1)
234{
235 // Serial IO I2C1 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500236 Method (_HID)
237 {
238 If (\ISWP ()) {
239 // WildcatPoint
240 Return ("INT3433")
241 }
242
243 // LynxPoint-LP
244 Return ("INT33C3")
245 }
Angel Pons81b7c292020-10-29 18:29:11 +0100246 Name (_CID, "INT33C3")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700247 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700248
Chiranjeevi Rapolu1164d512014-10-29 17:26:05 -0700249 Name (SSCN, Package () { 432, 507, 30 })
250 Name (FMCN, Package () { 72, 160, 30 })
Duncan Laurie61680272014-05-05 12:42:35 -0500251
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700252 // BAR0 is assigned during PCI enumeration and saved into NVS
253 Name (RBUF, ResourceTemplate ()
254 {
255 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
256 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {7}
257 })
258
259 // DMA channels are only used if Serial IO DMA controller is enabled
260 Name (DBUF, ResourceTemplate ()
261 {
Duncan Laurie61680272014-05-05 12:42:35 -0500262 FixedDMA (0x1A, 6, Width32Bit, DMA1) // Tx
263 FixedDMA (0x1B, 7, Width32Bit, DMA2) // Rx
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700264 })
265
266 Method (_CRS, 0, NotSerialized)
267 {
268 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100269 If (\S2B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700270 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
271 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100272 B0AD = \S2B0
273 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700274 }
275
276 // Check if Serial IO DMA Controller is enabled
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000277 If (\_SB.PCI0.SDMA._STA != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700278 Return (ConcatenateResTemplate (RBUF, DBUF))
279 } Else {
280 Return (RBUF)
281 }
282 }
283
284 Method (_STA, 0, NotSerialized)
285 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100286 If (\S2EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700287 Return (0x0)
288 } Else {
289 Return (0xF)
290 }
291 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000292
293 OperationRegion (SPRT, SystemMemory, \S2B1 + 0x84, 4)
294 Field (SPRT, DWordAcc, NoLock, Preserve)
295 {
296 SPCS, 32
297 }
298
299 Method (_PS0, 0, Serialized)
300 {
301 ^^LPD0 (RefOf (SPCS))
302 }
303
304 Method (_PS3, 0, Serialized)
305 {
306 ^^LPD3 (RefOf (SPCS))
307 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700308}
309
310Device (SPI0)
311{
312 // Serial IO SPI0 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500313 Method (_HID)
314 {
315 If (\ISWP ()) {
316 // WildcatPoint
317 Return ("INT3430")
318 }
319
320 // LynxPoint-LP
321 Return ("INT33C0")
322 }
Angel Pons81b7c292020-10-29 18:29:11 +0100323 Name (_CID, "INT33C0")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700324 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700325
326 // BAR0 is assigned during PCI enumeration and saved into NVS
327 Name (RBUF, ResourceTemplate ()
328 {
329 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
330 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {7}
331 })
332
333 Method (_CRS, 0, NotSerialized)
334 {
335 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100336 If (\S3B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700337 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
338 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100339 B0AD = \S3B0
340 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700341 }
342
343 Return (RBUF)
344 }
345
346 Method (_STA, 0, NotSerialized)
347 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100348 If (\S3EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700349 Return (0x0)
350 } Else {
351 Return (0xF)
352 }
353 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000354
355 OperationRegion (SPRT, SystemMemory, \S3B1 + 0x84, 4)
356 Field (SPRT, DWordAcc, NoLock, Preserve)
357 {
358 SPCS, 32
359 }
360
361 Method (_PS0, 0, Serialized)
362 {
363 ^^LPD0 (RefOf (SPCS))
364 }
365
366 Method (_PS3, 0, Serialized)
367 {
368 ^^LPD3 (RefOf (SPCS))
369 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700370}
371
372Device (SPI1)
373{
374 // Serial IO SPI1 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500375 Method (_HID)
376 {
377 If (\ISWP ()) {
378 // WildcatPoint
379 Return ("INT3431")
380 }
381
382 // LynxPoint-LP
383 Return ("INT33C1")
384 }
Angel Pons81b7c292020-10-29 18:29:11 +0100385 Name (_CID, "INT33C1")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700386 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700387
388 // BAR0 is assigned during PCI enumeration and saved into NVS
389 Name (RBUF, ResourceTemplate ()
390 {
391 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
392 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {7}
393 })
394
395 // DMA channels are only used if Serial IO DMA controller is enabled
396 Name (DBUF, ResourceTemplate ()
397 {
Duncan Laurie61680272014-05-05 12:42:35 -0500398 FixedDMA (0x10, 0, Width32Bit, DMA1) // Tx
399 FixedDMA (0x11, 1, Width32Bit, DMA2) // Rx
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700400 })
401
402 Method (_CRS, 0, NotSerialized)
403 {
404 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100405 If (\S4B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700406 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
407 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100408 B0AD = \S4B0
409 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700410 }
411
412 // Check if Serial IO DMA Controller is enabled
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000413 If (\_SB.PCI0.SDMA._STA != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700414 Return (ConcatenateResTemplate (RBUF, DBUF))
415 } Else {
416 Return (RBUF)
417 }
418 }
419
420 Method (_STA, 0, NotSerialized)
421 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100422 If (\S4EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700423 Return (0x0)
424 } Else {
425 Return (0xF)
426 }
427 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000428
429 OperationRegion (SPRT, SystemMemory, \S4B1 + 0x84, 4)
430 Field (SPRT, DWordAcc, NoLock, Preserve)
431 {
432 SPCS, 32
433 }
434
435 Method (_PS0, 0, Serialized)
436 {
437 ^^LPD0 (RefOf (SPCS))
438 }
439
440 Method (_PS3, 0, Serialized)
441 {
442 ^^LPD3 (RefOf (SPCS))
443 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700444}
445
446Device (UAR0)
447{
448 // Serial IO UART0 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500449 Method (_HID)
450 {
451 If (\ISWP ()) {
452 // WildcatPoint
453 Return ("INT3434")
454 }
455
456 // LynxPoint-LP
457 Return ("INT33C4")
458 }
Angel Pons81b7c292020-10-29 18:29:11 +0100459 Name (_CID, "INT33C4")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700460 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700461
462 // BAR0 is assigned during PCI enumeration and saved into NVS
463 Name (RBUF, ResourceTemplate ()
464 {
465 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
466 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {13}
467 })
468
469 // DMA channels are only used if Serial IO DMA controller is enabled
470 Name (DBUF, ResourceTemplate ()
471 {
Duncan Laurie61680272014-05-05 12:42:35 -0500472 FixedDMA (0x16, 2, Width32Bit, DMA1) // Tx
473 FixedDMA (0x17, 3, Width32Bit, DMA2) // Rx
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700474 })
475
476 Method (_CRS, 0, NotSerialized)
477 {
478 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100479 If (\S5B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700480 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
481 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100482 B0AD = \S5B0
483 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700484 }
485
486 // Check if Serial IO DMA Controller is enabled
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000487 If (\_SB.PCI0.SDMA._STA != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700488 Return (ConcatenateResTemplate (RBUF, DBUF))
489 } Else {
490 Return (RBUF)
491 }
492 }
493
494 Method (_STA, 0, NotSerialized)
495 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100496 If (\S5EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700497 Return (0x0)
498 } Else {
499 Return (0xF)
500 }
501 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000502
503 OperationRegion (SPRT, SystemMemory, \S5B1 + 0x84, 4)
504 Field (SPRT, DWordAcc, NoLock, Preserve)
505 {
506 SPCS, 32
507 }
508
509 Method (_PS0, 0, Serialized)
510 {
511 ^^LPD0 (RefOf (SPCS))
512 }
513
514 Method (_PS3, 0, Serialized)
515 {
516 ^^LPD3 (RefOf (SPCS))
517 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700518}
519
520Device (UAR1)
521{
522 // Serial IO UART1 Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500523 Method (_HID)
524 {
525 If (\ISWP ()) {
526 // WildcatPoint
527 Return ("INT3435")
528 }
529
530 // LynxPoint-LP
531 Return ("INT33C5")
532 }
Angel Pons81b7c292020-10-29 18:29:11 +0100533 Name (_CID, "INT33C5")
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700534 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700535
536 // BAR0 is assigned during PCI enumeration and saved into NVS
537 Name (RBUF, ResourceTemplate ()
538 {
539 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
540 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {13}
541 })
542
543 Method (_CRS, 0, NotSerialized)
544 {
545 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100546 If (\S6B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700547 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
548 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100549 B0AD = \S6B0
550 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700551 }
552
553 Return (RBUF)
554 }
555
556 Method (_STA, 0, NotSerialized)
557 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100558 If (\S6EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700559 Return (0x0)
560 } Else {
561 Return (0xF)
562 }
563 }
Furquan Shaikh27c51a02021-06-18 23:18:42 +0000564
565 OperationRegion (SPRT, SystemMemory, \S6B1 + 0x84, 4)
566 Field (SPRT, DWordAcc, NoLock, Preserve)
567 {
568 SPCS, 32
569 }
570
571 Method (_PS0, 0, Serialized)
572 {
573 ^^LPD0 (RefOf (SPCS))
574 }
575
576 Method (_PS3, 0, Serialized)
577 {
578 ^^LPD3 (RefOf (SPCS))
579 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700580}
581
582Device (SDIO)
583{
584 // Serial IO SDIO Controller
Duncan Laurie61680272014-05-05 12:42:35 -0500585 Method (_HID)
586 {
587 If (\ISWP ()) {
588 // WildcatPoint
589 Return ("INT3436")
590 }
591
592 // LynxPoint-LP
593 Return ("INT33C6")
594 }
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700595 Name (_CID, "PNP0D40")
596 Name (_UID, 1)
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700597
598 // BAR0 is assigned during PCI enumeration and saved into NVS
599 Name (RBUF, ResourceTemplate ()
600 {
601 Memory32Fixed (ReadWrite, 0x00000000, 0x00000000, BAR0)
602 Interrupt (ResourceConsumer, Level, ActiveLow, Shared, , , ) {5}
603 })
604
605 Method (_CRS, 0, NotSerialized)
606 {
607 // Update BAR0 address and length if set in NVS
Angel Pons56d37fb2020-10-25 21:11:58 +0100608 If (\S7B0 != 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700609 CreateDwordField (^RBUF, ^BAR0._BAS, B0AD)
610 CreateDwordField (^RBUF, ^BAR0._LEN, B0LN)
Angel Pons56d37fb2020-10-25 21:11:58 +0100611 B0AD = \S7B0
612 B0LN = SIO_BAR_LEN
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700613 }
614
615 Return (RBUF)
616 }
617
618 Method (_STA, 0, NotSerialized)
619 {
Angel Pons56d37fb2020-10-25 21:11:58 +0100620 If (\S7EN == 0) {
Duncan Lauriec88c54c2014-04-30 16:36:13 -0700621 Return (0x0)
622 } Else {
623 Return (0xF)
624 }
625 }
626}