/* * This file is part of the coreboot project. * * Copyright (C) 2004 Nick Barker * Copyright (C) 2007-2009 coresystems GmbH * * 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. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301 USA */ DefinitionBlock ("dsdt.aml", "DSDT", 1, "CX700 ", "COREBOOT", 0x00000001) { /* * Define the main processor */ Scope (\_PR) { Processor (\_PR.CPU0, 0x00, 0x00000410, 0x06) {} } /* For now only define 2 power states: * - S0 which is fully on * - S5 which is soft off * any others would involve declaring the wake up methods */ Name (\_S0, Package () {0x00, 0x00, 0x00, 0x00 }) Name (\_S5, Package () {0x02, 0x02, 0x00, 0x00 }) Scope (\) { Name (PICF , 0) // Global flag indicating whether to use PIC or APIC mode Method ( _PIC,1) // The OS is calling this { Store( Arg0 , PICF) } } // end of \ scope /* Root of the bus hierarchy */ Scope (\_SB) { /* Define how interrupt Link A is plumbed in */ Device (LNKA) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x01) /* Status - always return ready */ Method (_STA, 0, NotSerialized) { Return (0x0B) } /* Current Resources - return irq set up in BIOS */ Method (_CRS, 0, NotSerialized) { Name (CRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {11} }) Name (CRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {16} }) If (LNot (PICF)) { Return (CRSP) } Else { Return (CRSA) } } /* Possible Resources - return the range of irqs * we are using for PCI - only here to keep Linux ACPI * happy */ Method (_PRS, 0, NotSerialized) { Name (PRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {3,4,6,7,10,11,12} }) Name (PRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {16,17,18,19,20,21,22,23} }) If (LNot (PICF)) { Return (PRSP) } Else { Return (PRSA) } } /* Set Resources - dummy function to keep Linux ACPI happy * Linux is more than happy not to tinker with irq * assignments as long as the CRS and STA functions * return good values */ Method (_SRS, 1, NotSerialized ) {} /* Disable - dummy function to keep Linux ACPI happy */ Method (_DIS, 0, NotSerialized ) {} } // End of LNKA /* Define how interrupt Link B is plumbed in */ Device (LNKB) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x02) /* Status - always return ready */ Method (_STA, 0, NotSerialized) { Return (0x0B) } /* Current Resources - return irq set up in BIOS */ Method (_CRS, 0, NotSerialized) { Name (CRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {11} }) Name (CRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {17} }) If (LNot (PICF)) { Return (CRSP) } Else { Return (CRSA) } } /* Possible Resources - return the range of irqs * we are using for PCI - only here to keep Linux ACPI * happy */ Method (_PRS, 0, NotSerialized) { Name (PRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {3,4,6,7,10,11,12} }) Name (PRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {16,17,18,19,20,21,22,23} }) If (LNot (PICF)) { Return (PRSP) } Else { Return (PRSA) } } /* Set Resources - dummy function to keep Linux ACPI happy * Linux is more than happy not to tinker with irq * assignments as long as the CRS and STA functions * return good values */ Method (_SRS, 1, NotSerialized ) {} /* Disable - dummy function to keep Linux ACPI happy */ Method (_DIS, 0, NotSerialized ) {} } // End of LNKB /* Define how interrupt Link C is plumbed in */ Device (LNKC) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x03) /* Status - always return ready */ Method (_STA, 0, NotSerialized) { Return (0x0B) } /* Current Resources - return irq set up in BIOS */ Method (_CRS, 0, NotSerialized) { Name (CRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {10} }) Name (CRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {18} }) If (LNot (PICF)) { Return (CRSP) } Else { Return (CRSA) } } /* Possible Resources - return the range of irqs * we are using for PCI - only here to keep Linux ACPI * happy */ Method (_PRS, 0, NotSerialized) { Name (PRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {3,4,6,7,10,11,12} }) Name (PRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {16,17,18,19,20,21,22,23} }) If (LNot (PICF)) { Return (PRSP) } Else { Return (PRSA) } } /* Set Resources - dummy function to keep Linux ACPI happy * Linux is more than happy not to tinker with irq * assignments as long as the CRS and STA functions * return good values */ Method (_SRS, 1, NotSerialized ) {} /* Disable - dummy function to keep Linux ACPI happy */ Method (_DIS, 0, NotSerialized ) {} } // End of LNKC /* Define how interrupt Link D is plumbed in */ Device (LNKD) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x04) /* Status - always return ready */ Method (_STA, 0, NotSerialized) { Return (0x0B) } /* Current Resources - return irq set up in BIOS */ Method (_CRS, 0, NotSerialized) { Name (CRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {10} }) Name (CRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {19} }) If (LNot (PICF)) { Return (CRSP) } Else { Return (CRSA) } } /* Possible Resources - return the range of irqs * we are using for PCI - only here to keep Linux ACPI * happy */ Method (_PRS, 0, NotSerialized) { Name (PRSP, ResourceTemplate () { IRQ (Level, ActiveLow, Shared) {3,4,6,7,10,11,12} }) Name (PRSA, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, Shared) {16,17,18,19,20,21,22,23} }) If (LNot (PICF)) { Return (PRSP) } Else { Return (PRSA) } } /* Set Resources - dummy function to keep Linux ACPI happy * Linux is more than happy not to tinker with irq * assignments as long as the CRS and STA functions * return good values */ Method (_SRS, 1, NotSerialized ) {} /* Disable - dummy function to keep Linux ACPI happy */ Method (_DIS, 0, NotSerialized ) {} } // End of LNKD /* PCI Root Bridge */ Device (PCI0) { Name (_HID, EisaId ("PNP0A08")) Name (_CID, EisaId ("PNP0A03")) Name (_ADR, 0x00) Name (_UID, 0x00) Name (_BBN, 0x00) // Mainboard specific IRQ routing #include "acpi/irq.asl" /* PCI Routing Table */ Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } Device (P2PB) /* PCI to PCI bridge */ { Name (_ADR, 0x00130001) #include "acpi/irq-p2p-bridge.asl" Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } /* Status - always return ready */ Method (_STA, 0, NotSerialized) { Return (0x0F) } } } // End of PCI0 } // End of _SB } // End of Definition Block