1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2007-2009 coresystems GmbH
4 * Copyright (C) 2014 Google Inc.
5 * Copyright (C) 2015 Intel Corporation.
6 */
7
8/* Intel LPC/eSPI Bus Device  - 0:1f.0 */
9#include <asm/arch/iomap.h>
10
11Device (LPCB)
12{
13	Name (_ADR, 0x001f0000)
14	Name (_DDN, "LPC Bus Device")
15
16	/* DMA Controller */
17	Device (DMAC)
18	{
19		Name (_HID, EISAID("PNP0200"))
20		Name (_CRS, ResourceTemplate()
21		{
22			IO (Decode16, 0x00, 0x00, 0x01, 0x20)
23			IO (Decode16, 0x81, 0x81, 0x01, 0x11)
24			IO (Decode16, 0x93, 0x93, 0x01, 0x0d)
25			IO (Decode16, 0xc0, 0xc0, 0x01, 0x20)
26			DMA (Compatibility, NotBusMaster, Transfer8_16) { 4 }
27		})
28	}
29
30	/* Firmware Hub */
31	Device (FWH)
32	{
33		Name (_HID, EISAID ("INT0800"))
34		Name (_DDN, "Firmware Hub")
35		Name (_CRS, ResourceTemplate ()
36		{
37			Memory32Fixed (ReadOnly, 0xff000000, 0x01000000)
38		})
39	}
40
41	/* High Precision Event Timer */
42	Device (HPET)
43	{
44		Name (_HID, EISAID ("PNP0103"))
45		Name (_CID, 0x010CD041)
46		Name (_DDN, "High Precision Event Timer")
47		Name (_CRS, ResourceTemplate ()
48		{
49			Memory32Fixed (ReadWrite, HPET_BASE_ADDRESS, 0x400)
50		})
51		Method (_STA, 0)
52		{
53			Return (0xF)
54		}
55	}
56
57	/* FPU */
58	Device(MATH)
59	{
60		Name (_HID, EISAID("PNP0C04"))
61		Name (_CRS, ResourceTemplate()
62		{
63			IO (Decode16, 0xf0, 0xf0, 0x01, 0x01)
64			IRQNoFlags() { 13 }
65		})
66	}
67
68	/* AT Interrupt Controller */
69	Device (PIC)
70	{
71		Name (_HID, EISAID ("PNP0000"))
72		Name (_DDN, "8259 Interrupt Controller")
73		Name (_CRS, ResourceTemplate()
74		{
75			IO (Decode16, 0x20, 0x20, 0x01, 0x02)
76			IO (Decode16, 0x24, 0x24, 0x01, 0x02)
77			IO (Decode16, 0x28, 0x28, 0x01, 0x02)
78			IO (Decode16, 0x2c, 0x2c, 0x01, 0x02)
79			IO (Decode16, 0x30, 0x30, 0x01, 0x02)
80			IO (Decode16, 0x34, 0x34, 0x01, 0x02)
81			IO (Decode16, 0x38, 0x38, 0x01, 0x02)
82			IO (Decode16, 0x3c, 0x3c, 0x01, 0x02)
83			IO (Decode16, 0xa0, 0xa0, 0x01, 0x02)
84			IO (Decode16, 0xa4, 0xa4, 0x01, 0x02)
85			IO (Decode16, 0xa8, 0xa8, 0x01, 0x02)
86			IO (Decode16, 0xac, 0xac, 0x01, 0x02)
87			IO (Decode16, 0xb0, 0xb0, 0x01, 0x02)
88			IO (Decode16, 0xb4, 0xb4, 0x01, 0x02)
89			IO (Decode16, 0xb8, 0xb8, 0x01, 0x02)
90			IO (Decode16, 0xbc, 0xbc, 0x01, 0x02)
91			IO (Decode16, 0x4d0, 0x4d0, 0x01, 0x02)
92			IRQNoFlags () { 2 }
93		})
94	}
95
96	/* LPC device: Resource consumption */
97	Device (LDRC)
98	{
99		Name (_HID, EISAID ("PNP0C02"))
100		Name (_UID, 2)
101		Name (_DDN, "Legacy Device Resources")
102		Name (_CRS, ResourceTemplate ()
103		{
104			IO (Decode16, 0x2e, 0x2e, 0x1, 0x02) // First SuperIO
105			IO (Decode16, 0x4e, 0x4e, 0x1, 0x02) // Second SuperIO
106			IO (Decode16, 0x61, 0x61, 0x1, 0x01) // NMI Status
107			IO (Decode16, 0x63, 0x63, 0x1, 0x01) // CPU Reserved
108			IO (Decode16, 0x65, 0x65, 0x1, 0x01) // CPU Reserved
109			IO (Decode16, 0x67, 0x67, 0x1, 0x01) // CPU Reserved
110			IO (Decode16, 0x80, 0x80, 0x1, 0x01) // Port 80 Post
111			IO (Decode16, 0x92, 0x92, 0x1, 0x01) // CPU Reserved
112			IO (Decode16, 0xb2, 0xb2, 0x1, 0x02) // SWSMI
113			IO (Decode16, ACPI_BASE_ADDRESS, ACPI_BASE_ADDRESS,
114			    0x1, 0xff)
115		})
116	}
117
118	/* Real Time Clock Device */
119	Device (RTC)
120	{
121		Name (_HID, EISAID ("PNP0B00"))
122		Name (_DDN, "Real Time Clock")
123		Name (_CRS, ResourceTemplate ()
124		{
125			IO (Decode16, 0x70, 0x70, 1, 8)
126		})
127	}
128
129	/* Timer */
130	Device (TIMR)
131	{
132		Name (_HID, EISAID ("PNP0100"))
133		Name (_DDN, "8254 Timer")
134		Name (_CRS, ResourceTemplate ()
135		{
136			IO (Decode16, 0x40, 0x40, 0x01, 0x04)
137			IO (Decode16, 0x50, 0x50, 0x10, 0x04)
138			IRQNoFlags () {0}
139		})
140	}
141}
142