diff options
author | Keith Hui <buurin@gmail.com> | 2017-11-14 18:48:34 -0500 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2017-12-07 19:20:26 +0000 |
commit | 97041de909b5468c1a62afd5e38bf59c6b5c7881 (patch) | |
tree | e6cec725afc6f11919e50c38ee689786e5dd96f8 /src/southbridge | |
parent | 9d0aa99c5ef1ffb4458f6a3070444cf8bf572ccd (diff) |
sb/intel/i82371eb: Rework ACPI tables
Rework ACPI tables based on a mix of previous work on asus/p2b,
other boards in tree with better ACPI support, and OEM BIOS.
To be pulled in by DSDTs of mainboards using this southbridge.
Disable on-the-fly generation of mainboard _CRS node. It is not working
as it should and causes runtime errors when booting Linux. This node
to be included in mainboard DSDTs in followup patches.
Change-Id: Idda424de7859a36e4cac168d5469f9365a6ad421
Signed-off-by: Keith Hui <buurin@gmail.com>
Reviewed-on: https://review.coreboot.org/21671
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/southbridge')
-rw-r--r-- | src/southbridge/intel/i82371eb/acpi/i82371eb.asl | 95 | ||||
-rw-r--r-- | src/southbridge/intel/i82371eb/acpi/intx.asl | 60 |
2 files changed, 155 insertions, 0 deletions
diff --git a/src/southbridge/intel/i82371eb/acpi/i82371eb.asl b/src/southbridge/intel/i82371eb/acpi/i82371eb.asl new file mode 100644 index 0000000000..305da2a8dd --- /dev/null +++ b/src/southbridge/intel/i82371eb/acpi/i82371eb.asl @@ -0,0 +1,95 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2004 Nick Barker <Nick.Barker9@btinternet.com> + * Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz> + * Copyright (C) 2017 Keith Hui <buurin@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* + * Declares assorted devices that falls under this southbridge. + */ +#include "southbridge/intel/i82371eb/i82371eb.h" + + OperationRegion (S1XX, PCI_Config, 0xB2, 0x01) + Field (S1XX, ByteAcc, NoLock, Preserve) + { + FXS1, 8 + } + + /* 8259-compatible Programmable Interrupt Controller */ + Device (PIC) + { + Name (_HID, EisaId ("PNP0000") ) + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0020, 0x0020, 0x01, 0x02, ) + IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02, ) + IRQNoFlags () {2} + }) + } + + /* PC-class DMA Controller */ + Device (DMA1) + { + Name (_HID, EisaId ("PNP0200") ) + Name (_CRS, ResourceTemplate () + { + DMA (Compatibility, BusMaster, Transfer8, ) {4} + IO (Decode16, 0x0000, 0x0000, 0x01, 0x10,) + IO (Decode16, 0x0080, 0x0080, 0x01, 0x11,) + IO (Decode16, 0x0094, 0x0094, 0x01, 0x0C,) + IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20,) + }) + } + + /* PC-class System Timer */ + Device (TMR) + { + Name (_HID, EisaId ("PNP0100")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16,0x0040,0x0040,0x01,0x04,) + IRQNoFlags () {0} + }) + } + + /* AT Real-Time Clock */ + Device (RTC) + { + Name (_HID, EisaId ("PNP0B00") ) + Name (_CRS, ResourceTemplate () + { + IO (Decode16,0x0070,0x0070,0x01,0x04,) + IRQNoFlags () {8} + }) + } + + Device (SPKR) + { + Name (_HID, EisaId ("PNP0800")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16,0x0061,0x0061,0x01,0x01,) + }) + } + + /* x87-compatible Floating Point Processing Unit */ + Device (COPR) + { + Name (_HID, EisaId ("PNP0C04") ) + Name (_CRS, ResourceTemplate () + { + IO (Decode16,0x00F0,0x00F0,0x01,0x10,) + IRQNoFlags () {13} + }) + } diff --git a/src/southbridge/intel/i82371eb/acpi/intx.asl b/src/southbridge/intel/i82371eb/acpi/intx.asl new file mode 100644 index 0000000000..97e67037ff --- /dev/null +++ b/src/southbridge/intel/i82371eb/acpi/intx.asl @@ -0,0 +1,60 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2010 Tobias Diedrich <ranma+coreboot@tdiedrich.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ +Name(IRQB, ResourceTemplate(){ + IRQ(Level,ActiveLow,Shared){} +}) + +Name(IRQP, ResourceTemplate(){ + IRQ(Level,ActiveLow,Shared){3, 4, 5, 6, 7, 10, 11, 12, 14, 15} +}) + +/* adapted from ma78gm/dsdt.asl */ +#define PCI_INTX_DEV(intx, pinx, uid) \ +Device(intx) { \ + Name(_HID, EISAID("PNP0C0F")) \ + Name(_UID, uid) \ + \ + Method(_STA, 0) { \ + If (And(pinx, 0x80)) { \ + Return(0x09) \ + } \ + Return(0x0B) \ + } \ + \ + Method(_DIS ,0) { \ + Store(0x80, pinx) \ + } \ + \ + Method(_PRS ,0) { \ + Return(IRQP) \ + } \ + \ + Method(_CRS ,0) { \ + CreateWordField(IRQB, 1, IRQN) \ + ShiftLeft(1, And(pinx, 0x0f), IRQN) \ + Return(IRQB) \ + } \ + \ + Method(_SRS, 1) { \ + CreateWordField(ARG0, 1, IRQM) \ + \ + /* Use lowest available IRQ */ \ + FindSetRightBit(IRQM, Local0) \ + if (Local0) { \ + Decrement(Local0) \ + } \ + Store(Local0, pinx) \ + } \ +} \ |