blob: d0ce253ff339399518e2d42e0099a6cc54febf2c [file] [log] [blame]
Angel Ponsc3f58f62020-04-05 15:46:41 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -08002
3Device (LPEA)
4{
5 Name (_HID, "80860F28")
6 Name (_CID, "80860F28")
7 Name (_UID, 1)
8 Name (_DDN, "Low Power Audio Controller")
9 Name (_PR0, Package () { PLPE })
10
11 Name (RBUF, ResourceTemplate()
12 {
13 Memory32Fixed (ReadWrite, 0, 0x00200000, BAR0)
14 Memory32Fixed (ReadWrite, 0, 0x00001000, BAR1)
15 Memory32Fixed (ReadWrite, 0, 0x00100000, BAR2)
16 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
17 {
18 LPE_DMA0_IRQ
19 }
20 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
21 {
22 LPE_DMA1_IRQ
23 }
24 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
25 {
26 LPE_SSP0_IRQ
27 }
28 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
29 {
30 LPE_SSP1_IRQ
31 }
32 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
33 {
34 LPE_SSP2_IRQ
35 }
36 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
37 {
38 LPE_IPC2HOST_IRQ
39 }
40 })
41
42 Method (_CRS)
43 {
44 /* Update BAR0 from NVS */
45 CreateDwordField (^RBUF, ^BAR0._BAS, BAS0)
Felix Singer476fe6a2022-12-12 07:30:07 +010046 BAS0 = \LPB0
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080047
48 /* Update BAR1 from NVS */
49 CreateDwordField (^RBUF, ^BAR1._BAS, BAS1)
Felix Singer476fe6a2022-12-12 07:30:07 +010050 BAS1 = \LPB1
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080051
52 /* Update LPE FW from NVS */
53 CreateDwordField (^RBUF, ^BAR2._BAS, BAS2)
Felix Singer476fe6a2022-12-12 07:30:07 +010054 BAS2 = \LPFW
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080055
56 /* Append any Mainboard defined GPIOs */
Martin Roth10f7f502015-12-08 15:26:03 -070057 If (CondRefOf (^GBUF)) {
Aaron Durbin4177db52014-02-05 14:55:26 -060058 ConcatenateResTemplate (^RBUF, ^GBUF, Local1)
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080059 Return (Local1)
60 }
61
62 Return (^RBUF)
63 }
64
65 Method (_STA)
66 {
Felix Singer26c76722022-12-11 21:15:05 +010067 If (\LPEN == 1) {
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080068 Return (0xF)
69 } Else {
70 Return (0x0)
71 }
72 }
73
74 OperationRegion (KEYS, SystemMemory, LPB1, 0x100)
75 Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
76 {
77 Offset (0x84),
78 PSAT, 32,
79 }
80
81 PowerResource (PLPE, 0, 0)
82 {
83 Method (_STA)
84 {
85 Return (1)
86 }
87
88 Method (_OFF)
89 {
Felix Singer86bc2e72022-12-16 04:40:39 +010090 PSAT |= 3
91 PSAT |= 0
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080092 }
93
94 Method (_ON)
95 {
Felix Singer35e65a82022-12-16 07:11:17 +010096 PSAT &= 0xfffffffc
Felix Singer86bc2e72022-12-16 04:40:39 +010097 PSAT |= 0
Shawn Nematbakhsh51d787a2014-01-16 17:52:21 -080098 }
99 }
100}