]> git.sur5r.net Git - u-boot/blob - arch/x86/include/asm/arch-baytrail/acpi/lpc.asl
Merge branch 'master' of git://git.denx.de/u-boot-samsung
[u-boot] / arch / x86 / include / asm / arch-baytrail / acpi / lpc.asl
1 /*
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
13 Scope (\)
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
34 Device (LPCB)
35 {
36         Name(_ADR, 0x001f0000)
37
38         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
47         #include <asm/acpi/irqlinks.asl>
48
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                 {
110                         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                 {
122                         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                         }
130
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                         }
159                 }
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 }