blob: fe34d3271c870b3c9f925884c573a32777ec0c5b [file] [log] [blame]
Bin Meng6c9f9442016-05-07 07:46:31 -07001/*
2 * Copyright (C) 2007-2009 coresystems GmbH
3 * Copyright (C) 2013 Google Inc.
4 * Copyright (C) 2016 Bin Meng <bmeng.cn@gmail.com>
5 *
6 * Modified from coreboot src/soc/intel/baytrail/acpi/lpc.asl
7 *
8 * SPDX-License-Identifier: GPL-2.0+
9 */
10
11/* Intel LPC Bus Device - 0:1f.0 */
12
Bin Meng7d404e42016-05-25 19:19:06 -070013Scope (\)
14{
15 /* Intel Legacy Block */
16 OperationRegion(ILBS, SystemMemory, ILB_BASE_ADDRESS, ILB_BASE_SIZE)
17 Field(ILBS, AnyAcc, NoLock, Preserve) {
18 Offset (0x8),
19 PRTA, 8,
20 PRTB, 8,
21 PRTC, 8,
22 PRTD, 8,
23 PRTE, 8,
24 PRTF, 8,
25 PRTG, 8,
26 PRTH, 8,
27 Offset (0x88),
28 , 3,
29 UI3E, 1,
30 UI4E, 1
31 }
32}
33
Bin Meng6c9f9442016-05-07 07:46:31 -070034Device (LPCB)
35{
36 Name(_ADR, 0x001f0000)
37
Bin Meng0a00d502016-05-11 07:45:10 -070038 OperationRegion(LPC0, PCI_Config, 0x00, 0x100)
39 Field(LPC0, AnyAcc, NoLock, Preserve) {
40 Offset(0x08),
41 SRID, 8,
42 Offset(0x80),
43 C1EN, 1,
44 Offset(0x84)
45 }
46
Bin Meng7d404e42016-05-25 19:19:06 -070047 #include <asm/acpi/irqlinks.asl>
Bin Meng6c9f9442016-05-07 07:46:31 -070048
49 /* Firmware Hub */
50 Device (FWH)
51 {
52 Name(_HID, EISAID("INT0800"))
53 Name(_CRS, ResourceTemplate()
54 {
55 Memory32Fixed(ReadOnly, 0xff000000, 0x01000000)
56 })
57 }
58
59 /* 8259 Interrupt Controller */
60 Device (PIC)
61 {
62 Name(_HID, EISAID("PNP0000"))
63 Name(_CRS, ResourceTemplate()
64 {
65 IO(Decode16, 0x20, 0x20, 0x01, 0x02)
66 IO(Decode16, 0x24, 0x24, 0x01, 0x02)
67 IO(Decode16, 0x28, 0x28, 0x01, 0x02)
68 IO(Decode16, 0x2c, 0x2c, 0x01, 0x02)
69 IO(Decode16, 0x30, 0x30, 0x01, 0x02)
70 IO(Decode16, 0x34, 0x34, 0x01, 0x02)
71 IO(Decode16, 0x38, 0x38, 0x01, 0x02)
72 IO(Decode16, 0x3c, 0x3c, 0x01, 0x02)
73 IO(Decode16, 0xa0, 0xa0, 0x01, 0x02)
74 IO(Decode16, 0xa4, 0xa4, 0x01, 0x02)
75 IO(Decode16, 0xa8, 0xa8, 0x01, 0x02)
76 IO(Decode16, 0xac, 0xac, 0x01, 0x02)
77 IO(Decode16, 0xb0, 0xb0, 0x01, 0x02)
78 IO(Decode16, 0xb4, 0xb4, 0x01, 0x02)
79 IO(Decode16, 0xb8, 0xb8, 0x01, 0x02)
80 IO(Decode16, 0xbc, 0xbc, 0x01, 0x02)
81 IO(Decode16, 0x4d0, 0x4d0, 0x01, 0x02)
82 IRQNoFlags () { 2 }
83 })
84 }
85
86 /* 8254 timer */
87 Device (TIMR)
88 {
89 Name(_HID, EISAID("PNP0100"))
90 Name(_CRS, ResourceTemplate()
91 {
92 IO(Decode16, 0x40, 0x40, 0x01, 0x04)
93 IO(Decode16, 0x50, 0x50, 0x10, 0x04)
94 IRQNoFlags() { 0 }
95 })
96 }
97
98 /* HPET */
99 Device (HPET)
100 {
101 Name(_HID, EISAID("PNP0103"))
102 Name(_CID, 0x010CD041)
103 Name(_CRS, ResourceTemplate()
104 {
105 Memory32Fixed(ReadOnly, HPET_BASE_ADDRESS, HPET_BASE_SIZE)
106 })
107
108 Method(_STA)
109 {
Bin Meng0a00d502016-05-11 07:45:10 -0700110 Return (STA_VISIBLE)
111 }
112 }
113
114 /* Internal UART */
115 Device (IURT)
116 {
117 Name(_HID, EISAID("PNP0501"))
118 Name(_UID, 1)
119
120 Method(_STA, 0, Serialized)
121 {
Bin Meng0681dd82016-06-17 02:13:17 -0700122 If (LEqual(IURE, 1)) {
123 Store(1, UI3E)
124 Store(1, UI4E)
125 Store(1, C1EN)
126 Return (STA_VISIBLE)
127 } Else {
128 Return (STA_MISSING)
129 }
Bin Meng0a00d502016-05-11 07:45:10 -0700130
131 }
132
133 Method(_DIS, 0, Serialized)
134 {
135 Store(0, UI3E)
136 Store(0, UI4E)
137 Store(0, C1EN)
138 }
139
140 Method(_CRS, 0, Serialized)
141 {
142 Name(BUF0, ResourceTemplate()
143 {
144 IO(Decode16, 0x03f8, 0x03f8, 0x01, 0x08)
145 IRQNoFlags() { 3 }
146 })
147
148 Name(BUF1, ResourceTemplate()
149 {
150 IO(Decode16, 0x03f8, 0x03f8, 0x01, 0x08)
151 IRQNoFlags() { 4 }
152 })
153
154 If (LLessEqual(SRID, 0x04)) {
155 Return (BUF0)
156 } Else {
157 Return (BUF1)
158 }
Bin Meng6c9f9442016-05-07 07:46:31 -0700159 }
160 }
161
162 /* Real Time Clock */
163 Device (RTC)
164 {
165 Name(_HID, EISAID("PNP0B00"))
166 Name(_CRS, ResourceTemplate()
167 {
168 IO(Decode16, 0x70, 0x70, 1, 8)
169 /*
170 * Disable as Windows doesn't like it, and systems
171 * don't seem to use it
172 */
173 /* IRQNoFlags() { 8 } */
174 })
175 }
176
177 /* LPC device: Resource consumption */
178 Device (LDRC)
179 {
180 Name(_HID, EISAID("PNP0C02"))
181 Name(_UID, 2)
182
183 Name(RBUF, ResourceTemplate()
184 {
185 IO(Decode16, 0x61, 0x61, 0x1, 0x01) /* NMI Status */
186 IO(Decode16, 0x63, 0x63, 0x1, 0x01) /* CPU Reserved */
187 IO(Decode16, 0x65, 0x65, 0x1, 0x01) /* CPU Reserved */
188 IO(Decode16, 0x67, 0x67, 0x1, 0x01) /* CPU Reserved */
189 IO(Decode16, 0x80, 0x80, 0x1, 0x01) /* Port 80 Post */
190 IO(Decode16, 0x92, 0x92, 0x1, 0x01) /* CPU Reserved */
191 IO(Decode16, 0xb2, 0xb2, 0x1, 0x02) /* SWSMI */
192 })
193
194 Method(_CRS, 0, NotSerialized)
195 {
196 Return (RBUF)
197 }
198 }
199}