• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (c) 2017 Intel Corporation
4 *
5 * Partially based on southcluster.asl for other x86 platforms
6 */
7
8Device (PCI0)
9{
10    Name (_HID, EISAID("PNP0A08"))    /* PCIe */
11    Name (_CID, EISAID("PNP0A03"))    /* PCI */
12
13    Name (_ADR, Zero)
14    Name (_BBN, Zero)
15
16    Name (MCRS, ResourceTemplate()
17    {
18        /* Bus Numbers */
19        WordBusNumber(ResourceProducer, MinFixed, MaxFixed, PosDecode,
20                0x0000, 0x0000, 0x00ff, 0x0000, 0x0100, , , PB00)
21
22        /* IO Region 0 */
23        WordIO(ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
24                0x0000, 0x0000, 0x0cf7, 0x0000, 0x0cf8, , , PI00)
25
26        /* PCI Config Space */
27        IO(Decode16, 0x0cf8, 0x0cf8, 0x0001, 0x0008)
28
29        /* IO Region 1 */
30        WordIO(ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
31                0x0000, 0x0d00, 0xffff, 0x0000, 0xf300, , , PI01)
32
33        /* GPIO Low Memory Region */
34        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
35                Cacheable, ReadWrite,
36                0x00000000, 0x000ddcc0, 0x000ddccf, 0x00000000,
37                0x00000010, , , GP00)
38
39        /* PSH Memory Region 0 */
40        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
41                Cacheable, ReadWrite,
42                0x00000000, 0x04819000, 0x04898fff, 0x00000000,
43                0x00080000, , , PSH0)
44
45        /* PSH Memory Region 1 */
46        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
47                Cacheable, ReadWrite,
48                0x00000000, 0x04919000, 0x04920fff, 0x00000000,
49                0x00008000, , , PSH1)
50
51        /* SST Memory Region */
52        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
53                Cacheable, ReadWrite,
54                0x00000000, 0x05e00000, 0x05ffffff, 0x00000000,
55                0x00200000, , , SST0)
56
57        /* PCI Memory Region */
58        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
59                Cacheable, ReadWrite,
60                0x00000000, 0x80000000, 0xffffffff, 0x00000000,
61                0x80000000, , , PMEM)
62    })
63
64    Method (_CRS, 0, Serialized)
65    {
66        Return (MCRS)
67    }
68
69    /* Device Resource Consumption */
70    Device (PDRC)
71    {
72        Name (_HID, EISAID("PNP0C02"))
73        Name (_UID, One)
74
75        Name (PDRS, ResourceTemplate()
76        {
77            Memory32Fixed(ReadWrite, MCFG_BASE_ADDRESS, MCFG_BASE_SIZE)
78        })
79
80        Method (_CRS, 0, Serialized)
81        {
82            Return (PDRS)
83        }
84    }
85
86    Method (_OSC, 4)
87    {
88        /* Check for proper GUID */
89        If (LEqual(Arg0, ToUUID("33db4d5b-1ff7-401c-9657-7441c03dd766"))) {
90            /* Let OS control everything */
91            Return (Arg3)
92        } Else {
93            /* Unrecognized UUID */
94            CreateDWordField(Arg3, 0, CDW1)
95            Or(CDW1, 4, CDW1)
96            Return (Arg3)
97        }
98    }
99
100    Device (SDHC)
101    {
102        Name (_ADR, 0x00010003)
103        Name (_DEP, Package (0x01)
104        {
105            GPIO
106        })
107        Name (PSTS, Zero)
108
109        Method (_STA)
110        {
111            Return (STA_VISIBLE)
112        }
113
114        Method (_PS3, 0, NotSerialized)
115        {
116        }
117
118        Method (_PS0, 0, NotSerialized)
119        {
120            If (PSTS == Zero)
121            {
122                If (^^GPIO.AVBL == One)
123                {
124                    ^^GPIO.WFD3 = One
125                    PSTS = One
126                }
127            }
128        }
129
130        /* BCM43340 */
131        Device (BRC1)
132        {
133            Name (_ADR, 0x01)
134            Name (_DEP, Package (0x01)
135            {
136                GPIO
137            })
138
139            Method (_STA)
140            {
141                Return (STA_VISIBLE)
142            }
143
144            Method (_RMV, 0, NotSerialized)
145            {
146                Return (Zero)
147            }
148
149            Method (_PS3, 0, NotSerialized)
150            {
151                If (^^^GPIO.AVBL == One)
152                {
153                    ^^^GPIO.WFD3 = Zero
154                    PSTS = Zero
155                }
156            }
157
158            Method (_PS0, 0, NotSerialized)
159            {
160                If (PSTS == Zero)
161                {
162                    If (^^^GPIO.AVBL == One)
163                    {
164                        ^^^GPIO.WFD3 = One
165                        PSTS = One
166                    }
167                }
168            }
169        }
170
171        Device (BRC2)
172        {
173            Name (_ADR, 0x02)
174            Method (_STA, 0, NotSerialized)
175            {
176                Return (STA_VISIBLE)
177            }
178
179            Method (_RMV, 0, NotSerialized)
180            {
181                Return (Zero)
182            }
183        }
184    }
185
186    Device (SPI5)
187    {
188        Name (_ADR, 0x00070001)
189        Name (RBUF, ResourceTemplate()
190        {
191            GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
192                "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 110 }
193            GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
194                "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 111 }
195            GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
196                "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 112 }
197            GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
198                "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 113 }
199
200            FixedDMA(0x000d, 0x0002, Width32bit, )
201            FixedDMA(0x000c, 0x0003, Width32bit, )
202        })
203
204        Method (_CRS, 0, NotSerialized)
205        {
206            Return (RBUF)
207        }
208
209        /*
210         * See
211         * http://www.kernel.org/doc/Documentation/acpi/gpio-properties.txt
212         * for more information about GPIO bindings.
213         */
214        Name (_DSD, Package () {
215            ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
216            Package () {
217                Package () {
218                    "cs-gpios", Package () {
219                        ^SPI5, 0, 0, 0,
220                        ^SPI5, 1, 0, 0,
221                        ^SPI5, 2, 0, 0,
222                        ^SPI5, 3, 0, 0,
223                    },
224                },
225            }
226        })
227
228        Method (_STA, 0, NotSerialized)
229        {
230            Return (STA_VISIBLE)
231        }
232    }
233
234    Device (I2C1)
235    {
236        Name (_ADR, 0x00080000)
237
238        Method (_STA, 0, NotSerialized)
239        {
240            Return (STA_VISIBLE)
241        }
242
243        Name (RBUF, ResourceTemplate()
244        {
245            FixedDMA(0x0009, 0x0000, Width32bit, )
246            FixedDMA(0x0008, 0x0001, Width32bit, )
247        })
248
249        Method (_CRS, 0, NotSerialized)
250        {
251            Return (RBUF)
252        }
253    }
254
255    Device (I2C6)
256    {
257        Name (_ADR, 0x00090001)
258
259        Method (_STA, 0, NotSerialized)
260        {
261            Return (STA_VISIBLE)
262        }
263    }
264
265    Device (GPIO)
266    {
267        Name (_ADR, 0x000c0000)
268
269        Method (_STA)
270        {
271            Return (STA_VISIBLE)
272        }
273
274        Name (AVBL, Zero)
275        Method (_REG, 2, NotSerialized)
276        {
277            If (Arg0 == 0x08)
278            {
279                AVBL = Arg1
280            }
281        }
282
283        OperationRegion (GPOP, GeneralPurposeIo, 0, 1)
284        Field (GPOP, ByteAcc, NoLock, Preserve)
285        {
286            Connection (
287                GpioIo(Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly,
288                    "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 96 }
289            ),
290            WFD3, 1,
291        }
292    }
293
294    Device (PWM0)
295    {
296        Name (_ADR, 0x00170000)
297
298        Method (_STA, 0, NotSerialized)
299        {
300            Return (STA_VISIBLE)
301        }
302    }
303
304    Device (HSU0)
305    {
306        Name (_ADR, 0x00040001)
307
308        Method (_STA, 0, NotSerialized)
309        {
310            Return (STA_VISIBLE)
311        }
312
313        Device (BTH0)
314        {
315            Name (_HID, "BCM2E95")
316            Name (_DEP, Package ()
317            {
318                GPIO,
319                HSU0
320            })
321
322            Method (_STA, 0, NotSerialized)
323            {
324                Return (STA_VISIBLE)
325            }
326
327            Method (_CRS, 0, Serialized)
328            {
329                Name (RBUF, ResourceTemplate()
330                {
331                    UartSerialBus(0x0001C200, DataBitsEight, StopBitsOne,
332                        0xFC, LittleEndian, ParityTypeNone, FlowControlHardware,
333                        0x20, 0x20, "\\_SB.PCI0.HSU0", 0, ResourceConsumer, , )
334                    GpioInt(Level, ActiveHigh, Exclusive, PullNone, 0,
335                        "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 185 }
336                    GpioIo(Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly,
337                        "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 184 }
338                    GpioIo(Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly,
339                        "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 71 }
340                })
341                Return (RBUF)
342            }
343
344            Name (_DSD, Package () {
345                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
346                Package () {
347                    Package () { "host-wakeup-gpios", Package () { ^BTH0, 0, 0, 0 } },
348                    Package () { "device-wakeup-gpios", Package () { ^BTH0, 1, 0, 0 } },
349                    Package () { "shutdown-gpios", Package () { ^BTH0, 2, 0, 0 } },
350                }
351            })
352        }
353    }
354
355    Device (IPC1)
356    {
357        Name (_ADR, 0x00130000)
358
359        Method (_STA, 0, NotSerialized)
360        {
361            Return (STA_VISIBLE)
362        }
363
364        Device (PMIC)
365        {
366            Name (_ADR, Zero)
367            Name (_HID, "INTC100E")
368            Name (_CID, "INTC100E")
369            Name (_DDN, "Basin Cove PMIC")
370            Name (_DEP, Package ()
371            {
372                IPC1
373            })
374
375            Method (_STA, 0, NotSerialized)
376            {
377                Return (STA_VISIBLE)
378            }
379
380            Method (_CRS, 0, Serialized)
381            {
382                Name (RBUF, ResourceTemplate()
383                {
384                    /*
385                     * Shadow registers in SRAM for PMIC:
386                     *   SRAM    PMIC register
387                     *   --------------------
388                     *   0x00-    Unknown
389                     *   0x03    THRMIRQ (0x04)
390                     *   0x04    BCUIRQ (0x05)
391                     *   0x05    ADCIRQ (0x06)
392                     *   0x06    CHGRIRQ0 (0x07)
393                     *   0x07    CHGRIRQ1 (0x08)
394                     *   0x08-    Unknown
395                     *   0x0a    PBSTATUS (0x27)
396                     *   0x0b-    Unknown
397                     */
398                    Memory32Fixed(ReadWrite, 0xFFFFF610, 0x00000010)
399                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 30 }
400                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 23 }
401                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 52 }
402                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 51 }
403                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 50 }
404                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 27 }
405                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 49 }
406                })
407                Return (RBUF)
408            }
409
410            OperationRegion (PMOP, 0x8D, Zero, 0x0100)
411            Field (PMOP, DWordAcc, NoLock, Preserve)
412            {
413                SEL1,   32,
414                SEL2,   32,
415                VCCL,   32,
416                VNNL,   32,
417                AONL,   32,
418                CNTC,   32,
419                CNTN,   32,
420                AONN,   32,
421                CNT1,   32,
422                CNT2,   32,
423                CNT3,   32,
424                FLEX,   32,
425                PRG1,   32,
426                PRG2,   32,
427                PRG3,   32,
428                VLDO,   32,
429            }
430
431            Name (AVBL, Zero)
432            Method (_REG, 2, NotSerialized)
433            {
434                If ((Arg0 == 0x8D))
435                {
436                    AVBL = Arg1
437                }
438            }
439        }
440    }
441
442    Device (GDMA)
443    {
444        Name (_ADR, 0x00150000)
445        Name (_HID, "808611A2")
446        Name (_UID, Zero)
447
448        Method (_STA, 0, NotSerialized)
449        {
450            Return (STA_VISIBLE)
451        }
452
453        Method (_CRS, 0, Serialized)
454        {
455            Name (RBUF, ResourceTemplate ()
456            {
457                    Memory32Fixed(ReadWrite, 0xFF192000, 0x00001000)
458                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 32 }
459            })
460            Return (RBUF)
461        }
462    }
463}
464
465Device (FLIS)
466{
467    Name (_HID, "INTC1002")
468    Name (_DDN, "Intel Merrifield Family-Level Interface Shim")
469    Name (RBUF, ResourceTemplate()
470    {
471        Memory32Fixed(ReadWrite, 0xFF0C0000, 0x00008000)
472        PinGroup("spi5", ResourceProducer, ) { 90, 91, 92, 93, 94, 95, 96 }
473        PinGroup("uart0", ResourceProducer, ) { 115, 116, 117, 118 }
474        PinGroup("uart1", ResourceProducer, ) { 119, 120, 121, 122 }
475        PinGroup("uart2", ResourceProducer, ) { 123, 124, 125, 126 }
476        PinGroup("pwm0", ResourceProducer, ) { 144 }
477        PinGroup("pwm1", ResourceProducer, ) { 145 }
478        PinGroup("pwm2", ResourceProducer, ) { 132 }
479        PinGroup("pwm3", ResourceProducer, ) { 133 }
480    })
481
482    Method (_CRS, 0, NotSerialized)
483    {
484        Return (RBUF)
485    }
486
487    Method (_STA, 0, NotSerialized)
488    {
489        Return (STA_VISIBLE)
490    }
491}
492