From c01fe5d1b674231546c070f035b0ab3c2d8ba3f5 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Wed, 3 May 2006 03:30:23 +0000 Subject: more changes; rumba enet works fine now. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2290 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/mainboard/amd/rumba/chip.h | 2 +- src/mainboard/amd/rumba/mainboard.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'src/mainboard/amd/rumba') diff --git a/src/mainboard/amd/rumba/chip.h b/src/mainboard/amd/rumba/chip.h index 90cfe88a93..40efbfa698 100644 --- a/src/mainboard/amd/rumba/chip.h +++ b/src/mainboard/amd/rumba/chip.h @@ -1,5 +1,5 @@ extern struct chip_operations mainboard_amd_rumba_ops; struct mainboard_amd_rumba_config { - int nothing; + int nicirq; }; diff --git a/src/mainboard/amd/rumba/mainboard.c b/src/mainboard/amd/rumba/mainboard.c index 133d38fd30..614b87154c 100644 --- a/src/mainboard/amd/rumba/mainboard.c +++ b/src/mainboard/amd/rumba/mainboard.c @@ -6,7 +6,38 @@ #include #include "chip.h" +static void init(struct device *dev) { + struct mainboard_amd_rumba_config *mainboard = (struct mainboard_amd_rumba_config*)dev->chip_info; + device_t nic = NULL; + unsigned bus = 0; + unsigned devfn = PCI_DEVFN(0xd, 0); + int nicirq = 1; + + if (mainboard->nicirq) + nicirq = mainboard->nicirq; + + printk_debug("AMD RUMBA ENTER %s\n", __FUNCTION__); + + if (nicirq) { + printk_debug("%s (%x,%x)SET PCI interrupt line to %d\n", + __FUNCTION__, bus, devfn, nicirq); + nic = dev_find_slot(bus, devfn); + if (! nic){ + printk_err("Could not find NIC\n"); + } else { + pci_write_config8(nic, PCI_INTERRUPT_LINE, nicirq); + } + } + printk_debug("AMD RUMBA EXIT %s\n", __FUNCTION__); +} + +static void enable_dev(struct device *dev) +{ + dev->ops->init = init; +} + struct chip_operations mainboard_amd_rumba_ops = { CHIP_NAME("AMD Rumba mainboard ") + .enable_dev = enable_dev, }; -- cgit v1.2.3