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, 0) 14 Name (_BBN, 0) 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 Method (_OSC, 4) 70 { 71 /* Check for proper GUID */ 72 If (LEqual(Arg0, ToUUID("33db4d5b-1ff7-401c-9657-7441c03dd766"))) { 73 /* Let OS control everything */ 74 Return (Arg3) 75 } Else { 76 /* Unrecognized UUID */ 77 CreateDWordField(Arg3, 0, CDW1) 78 Or(CDW1, 4, CDW1) 79 Return (Arg3) 80 } 81 } 82 83 Device (SDHC) 84 { 85 Name (_ADR, 0x00010003) 86 Name (_DEP, Package (0x01) 87 { 88 GPIO 89 }) 90 Name (PSTS, Zero) 91 92 Method (_STA) 93 { 94 Return (STA_VISIBLE) 95 } 96 97 Method (_PS3, 0, NotSerialized) 98 { 99 } 100 101 Method (_PS0, 0, NotSerialized) 102 { 103 If (PSTS == Zero) 104 { 105 If (^^GPIO.AVBL == One) 106 { 107 ^^GPIO.WFD3 = One 108 PSTS = One 109 } 110 } 111 } 112 113 /* BCM43340 */ 114 Device (BRC1) 115 { 116 Name (_ADR, 0x01) 117 Name (_DEP, Package (0x01) 118 { 119 GPIO 120 }) 121 122 Method (_STA) 123 { 124 Return (STA_VISIBLE) 125 } 126 127 Method (_RMV, 0, NotSerialized) 128 { 129 Return (Zero) 130 } 131 132 Method (_PS3, 0, NotSerialized) 133 { 134 If (^^^GPIO.AVBL == One) 135 { 136 ^^^GPIO.WFD3 = Zero 137 PSTS = Zero 138 } 139 } 140 141 Method (_PS0, 0, NotSerialized) 142 { 143 If (PSTS == Zero) 144 { 145 If (^^^GPIO.AVBL == One) 146 { 147 ^^^GPIO.WFD3 = One 148 PSTS = One 149 } 150 } 151 } 152 } 153 154 Device (BRC2) 155 { 156 Name (_ADR, 0x02) 157 Method (_STA, 0, NotSerialized) 158 { 159 Return (STA_VISIBLE) 160 } 161 162 Method (_RMV, 0, NotSerialized) 163 { 164 Return (Zero) 165 } 166 } 167 } 168 169 Device (SPI5) 170 { 171 Name (_ADR, 0x00070001) 172 Name (RBUF, ResourceTemplate() 173 { 174 GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly, 175 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 110 } 176 GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly, 177 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 111 } 178 GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly, 179 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 112 } 180 GpioIo(Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly, 181 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 113 } 182 }) 183 184 Method (_CRS, 0, NotSerialized) 185 { 186 Return (RBUF) 187 } 188 189 /* 190 * See 191 * http://www.kernel.org/doc/Documentation/acpi/gpio-properties.txt 192 * for more information about GPIO bindings. 193 */ 194 Name (_DSD, Package () { 195 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 196 Package () { 197 Package () { 198 "cs-gpios", Package () { 199 ^SPI5, 0, 0, 0, 200 ^SPI5, 1, 0, 0, 201 ^SPI5, 2, 0, 0, 202 ^SPI5, 3, 0, 0, 203 }, 204 }, 205 } 206 }) 207 208 Method (_STA, 0, NotSerialized) 209 { 210 Return (STA_VISIBLE) 211 } 212 } 213 214 Device (I2C1) 215 { 216 Name (_ADR, 0x00080000) 217 218 Method (_STA, 0, NotSerialized) 219 { 220 Return (STA_VISIBLE) 221 } 222 } 223 224 Device (I2C6) 225 { 226 Name (_ADR, 0x00090001) 227 228 Method (_STA, 0, NotSerialized) 229 { 230 Return (STA_VISIBLE) 231 } 232 } 233 234 Device (GPIO) 235 { 236 Name (_ADR, 0x000c0000) 237 238 Method (_STA) 239 { 240 Return (STA_VISIBLE) 241 } 242 243 Name (AVBL, Zero) 244 Method (_REG, 2, NotSerialized) 245 { 246 If (Arg0 == 0x08) 247 { 248 AVBL = Arg1 249 } 250 } 251 252 OperationRegion (GPOP, GeneralPurposeIo, 0, 1) 253 Field (GPOP, ByteAcc, NoLock, Preserve) 254 { 255 Connection ( 256 GpioIo(Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly, 257 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 96 } 258 ), 259 WFD3, 1, 260 } 261 } 262 263 Device (PWM0) 264 { 265 Name (_ADR, 0x00170000) 266 267 Method (_STA, 0, NotSerialized) 268 { 269 Return (STA_VISIBLE) 270 } 271 } 272 273 Device (HSU0) 274 { 275 Name (_ADR, 0x00040001) 276 277 Method (_STA, 0, NotSerialized) 278 { 279 Return (STA_VISIBLE) 280 } 281 282 Device (BTH0) 283 { 284 Name (_HID, "BCM2E95") 285 Name (_DEP, Package () 286 { 287 GPIO, 288 HSU0 289 }) 290 291 Method (_STA, 0, NotSerialized) 292 { 293 Return (STA_VISIBLE) 294 } 295 296 Method (_CRS, 0, Serialized) 297 { 298 Name (RBUF, ResourceTemplate () 299 { 300 UartSerialBus (0x0001C200, DataBitsEight, StopBitsOne, 301 0xFC, LittleEndian, ParityTypeNone, FlowControlHardware, 302 0x20, 0x20, "\\_SB.PCI0.HSU0", 0, ResourceConsumer, , ) 303 GpioInt (Level, ActiveHigh, Exclusive, PullNone, 0, 304 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 185 } 305 GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly, 306 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 184 } 307 GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly, 308 "\\_SB.PCI0.GPIO", 0, ResourceConsumer, , ) { 71 } 309 }) 310 Return (RBUF) 311 } 312 313 Name (_DSD, Package () { 314 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 315 Package () { 316 Package () { "host-wakeup-gpios", Package () { ^BTH0, 0, 0, 0 } }, 317 Package () { "device-wakeup-gpios", Package () { ^BTH0, 1, 0, 0 } }, 318 Package () { "shutdown-gpios", Package () { ^BTH0, 2, 0, 0 } }, 319 } 320 }) 321 } 322 } 323} 324 325Device (FLIS) 326{ 327 Name (_HID, "INTC1002") 328 Name (_DDN, "Intel Merrifield Family-Level Interface Shim") 329 Name (RBUF, ResourceTemplate() 330 { 331 Memory32Fixed(ReadWrite, 0xFF0C0000, 0x00008000, ) 332 PinGroup("spi5", ResourceProducer, ) { 90, 91, 92, 93, 94, 95, 96 } 333 PinGroup("uart0", ResourceProducer, ) { 115, 116, 117, 118 } 334 PinGroup("uart1", ResourceProducer, ) { 119, 120, 121, 122 } 335 PinGroup("uart2", ResourceProducer, ) { 123, 124, 125, 126 } 336 PinGroup("pwm0", ResourceProducer, ) { 144 } 337 PinGroup("pwm1", ResourceProducer, ) { 145 } 338 PinGroup("pwm2", ResourceProducer, ) { 132 } 339 PinGroup("pwm3", ResourceProducer, ) { 133 } 340 }) 341 342 Method (_CRS, 0, NotSerialized) 343 { 344 Return (RBUF) 345 } 346 347 Method (_STA, 0, NotSerialized) 348 { 349 Return (STA_VISIBLE) 350 } 351} 352