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