1/* SPDX-License-Identifier: GPL-2.0-only */ 2 3#include <arch/hpet.h> 4 5// Intel LPC Bus Device - 0:1f.0 6 7Device (LPCB) 8{ 9 Name(_ADR, 0x001f0000) 10 11 OperationRegion(LPC0, PCI_Config, 0x00, 0x100) 12 Field (LPC0, AnyAcc, NoLock, Preserve) 13 { 14 Offset (0x40), 15 PMBS, 16, // PMBASE 16 Offset (0x60), // Interrupt Routing Registers 17 PRTA, 8, 18 PRTB, 8, 19 PRTC, 8, 20 PRTD, 8, 21 Offset (0x68), 22 PRTE, 8, 23 PRTF, 8, 24 PRTG, 8, 25 PRTH, 8, 26 27 Offset (0x80), // IO Decode Ranges 28 IOD0, 8, 29 IOD1, 8, 30 } 31 32 #include <southbridge/intel/common/acpi/irqlinks.asl> 33 34 #include "acpi/ec.asl" 35 36 Device (DMAC) // DMA Controller 37 { 38 Name(_HID, EISAID("PNP0200")) 39 Name(_CRS, ResourceTemplate() 40 { 41 IO (Decode16, 0x00, 0x00, 0x01, 0x20) 42 IO (Decode16, 0x81, 0x81, 0x01, 0x11) 43 IO (Decode16, 0x93, 0x93, 0x01, 0x0d) 44 IO (Decode16, 0xc0, 0xc0, 0x01, 0x20) 45 DMA (Compatibility, NotBusMaster, Transfer8_16) { 4 } 46 }) 47 } 48 49 Device (FWH) // Firmware Hub 50 { 51 Name (_HID, EISAID("INT0800")) 52 Name (_CRS, ResourceTemplate() 53 { 54 Memory32Fixed(ReadOnly, 0xff000000, 0x01000000) 55 }) 56 } 57 58 Device (HPET) 59 { 60 Name (_HID, EISAID("PNP0103")) 61 Name (_CID, 0x010CD041) 62 63 Name(BUF0, ResourceTemplate() 64 { 65 Memory32Fixed(ReadOnly, HPET_BASE_ADDRESS, 0x400, FED0) 66 }) 67 68 Method (_STA, 0) // Device Status 69 { 70 Return (\HPTS(HPTE)) 71 } 72 73 Method (_CRS, 0, Serialized) // Current resources 74 { 75 If (HPTE) { 76 CreateDWordField(BUF0, \_SB.PCI0.LPCB.HPET.FED0._BAS, HPT0) 77 If (HPAS == 1) { 78 HPT0 = HPET_BASE_ADDRESS + 0x1000 79 } 80 81 If (HPAS == 2) { 82 HPT0 = HPET_BASE_ADDRESS + 0x2000 83 } 84 85 If (HPAS == 3) { 86 HPT0 = HPET_BASE_ADDRESS + 0x3000 87 } 88 } 89 90 Return (BUF0) 91 } 92 } 93 94 Device(PIC) // 8259 Interrupt Controller 95 { 96 Name(_HID,EISAID("PNP0000")) 97 Name(_CRS, ResourceTemplate() 98 { 99 IO (Decode16, 0x20, 0x20, 0x01, 0x02) 100 IO (Decode16, 0x24, 0x24, 0x01, 0x02) 101 IO (Decode16, 0x28, 0x28, 0x01, 0x02) 102 IO (Decode16, 0x2c, 0x2c, 0x01, 0x02) 103 IO (Decode16, 0x30, 0x30, 0x01, 0x02) 104 IO (Decode16, 0x34, 0x34, 0x01, 0x02) 105 IO (Decode16, 0x38, 0x38, 0x01, 0x02) 106 IO (Decode16, 0x3c, 0x3c, 0x01, 0x02) 107 IO (Decode16, 0xa0, 0xa0, 0x01, 0x02) 108 IO (Decode16, 0xa4, 0xa4, 0x01, 0x02) 109 IO (Decode16, 0xa8, 0xa8, 0x01, 0x02) 110 IO (Decode16, 0xac, 0xac, 0x01, 0x02) 111 IO (Decode16, 0xb0, 0xb0, 0x01, 0x02) 112 IO (Decode16, 0xb4, 0xb4, 0x01, 0x02) 113 IO (Decode16, 0xb8, 0xb8, 0x01, 0x02) 114 IO (Decode16, 0xbc, 0xbc, 0x01, 0x02) 115 IO (Decode16, 0x4d0, 0x4d0, 0x01, 0x02) 116 IRQNoFlags () { 2 } 117 }) 118 } 119 120 Device(MATH) // FPU 121 { 122 Name (_HID, EISAID("PNP0C04")) 123 Name (_CRS, ResourceTemplate() 124 { 125 IO (Decode16, 0xf0, 0xf0, 0x01, 0x01) 126 IRQNoFlags() { 13 } 127 }) 128 } 129 130 Device(LDRC) // LPC device: Resource consumption 131 { 132 Name (_HID, EISAID("PNP0C02")) 133 Name (_UID, 2) 134 Name (_CRS, ResourceTemplate() 135 { 136 IO (Decode16, 0x2e, 0x2e, 0x1, 0x02) // First SuperIO 137 IO (Decode16, 0x4e, 0x4e, 0x1, 0x02) // Second SuperIO 138 IO (Decode16, 0x61, 0x61, 0x1, 0x01) // NMI Status 139 IO (Decode16, 0x63, 0x63, 0x1, 0x01) // CPU Reserved 140 IO (Decode16, 0x65, 0x65, 0x1, 0x01) // CPU Reserved 141 IO (Decode16, 0x67, 0x67, 0x1, 0x01) // CPU Reserved 142 IO (Decode16, 0x80, 0x80, 0x1, 0x01) // Port 80 Post 143 IO (Decode16, 0x92, 0x92, 0x1, 0x01) // CPU Reserved 144 IO (Decode16, 0xb2, 0xb2, 0x1, 0x02) // SWSMI 145 IO (Decode16, DEFAULT_PMBASE, DEFAULT_PMBASE, 0x1, 0x80) // ICH ACPI 146 IO (Decode16, DEFAULT_GPIOBASE, DEFAULT_GPIOBASE, 0x1, 0x40) // ICH GPIO 147 }) 148 } 149 150 Device (RTC) // Real Time Clock 151 { 152 Name (_HID, EISAID("PNP0B00")) 153 Name (_CRS, ResourceTemplate() 154 { 155 IO (Decode16, 0x70, 0x70, 1, 8) 156 }) 157 } 158 159 Device (TIMR) // Intel 8254 timer 160 { 161 Name(_HID, EISAID("PNP0100")) 162 Name(_CRS, ResourceTemplate() 163 { 164 IO (Decode16, 0x40, 0x40, 0x01, 0x04) 165 IO (Decode16, 0x50, 0x50, 0x10, 0x04) 166 IRQNoFlags() {0} 167 }) 168 } 169 170 #include "acpi/superio.asl" 171 172 Device (PS2K) // Keyboard 173 { 174 Name(_HID, EISAID("PNP0303")) 175 Name(_CID, EISAID("PNP030B")) 176 177 Name(_CRS, ResourceTemplate() 178 { 179 IO (Decode16, 0x60, 0x60, 0x01, 0x01) 180 IO (Decode16, 0x64, 0x64, 0x01, 0x01) 181 IRQ (Edge, ActiveHigh, Exclusive) { 0x01 } // IRQ 1 182 }) 183 184 Method (_STA, 0) 185 { 186 Return (0xf) 187 } 188 } 189 190 Device (PS2M) // Mouse 191 { 192 Name(_HID, EISAID("PNP0F13")) 193 Name(_CRS, ResourceTemplate() 194 { 195 IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12 196 }) 197 198 Method(_STA, 0) 199 { 200 Return (0xf) 201 } 202 } 203} 204