From: Joshua Wise Date: Thu, 2 Oct 2008 23:20:28 +0000 (-0400) Subject: Add the mechanism by which we bother PCI, generically. X-Git-Url: http://git.joshuawise.com/netwatch.git/commitdiff_plain/4d898e0be101cef5e2a09fe78a04c695c44cdb6b Add the mechanism by which we bother PCI, generically. --- diff --git a/aseg/Makefile b/aseg/Makefile index 3015bd7..4072606 100644 --- a/aseg/Makefile +++ b/aseg/Makefile @@ -2,8 +2,9 @@ CC=gcc CFLAGS=-I../include -I../include/raw -nostdlib -nostdinc -fno-builtin -D__RAW__ -Wall -Werror -pedantic -ansi -std=gnu99 OBJS=counter.o firstrun.o ../pci/pci-raw.o ../lib/minilib.o ../lib/console.o \ - ../ich2/smram-ich2.o ../ich2/smi.o vga-overlay.o packet.o ../lib/sprintf.o \ - ../lib/doprnt.o ../pci/pci.o 3c905.o ../ich2/ich2-timer.o + ../ich2/smram-ich2.o ../ich2/smi.o vga-overlay.o packet.o \ + ../lib/sprintf.o ../lib/doprnt.o ../pci/pci.o ../net/net.o \ + ../ich2/ich2-timer.o ../pci/pci-bother.o all: aseg.elf diff --git a/aseg/counter.c b/aseg/counter.c index eaeec52..bf60ffd 100644 --- a/aseg/counter.c +++ b/aseg/counter.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "3c905.h" #include "vga-overlay.h" #include "packet.h" @@ -96,6 +97,7 @@ void smi_entry(void) pcisave = inl(0xCF8); vgasave = inb(0x3D4); + pci_unbother_all(); counter++; sprintf(statstr, "15-412! %08x %08x", smi_status(), counter); @@ -112,6 +114,7 @@ void smi_entry(void) smi_poll(); + pci_bother_all(); outl(0xCF8, pcisave); outb(0x3D4, vgasave); } diff --git a/net/net.c b/net/net.c index b89abe2..488f52b 100644 --- a/net/net.c +++ b/net/net.c @@ -1,8 +1,7 @@ #include +#include #include -#include "3c905.h" - -static int found = 0, _bus, _dev, _fn; +#include "net.h" static int bother_3c905(pci_dev_t *dev, void *nutrinus) { @@ -10,11 +9,7 @@ static int bother_3c905(pci_dev_t *dev, void *nutrinus) { outputf("Found a 3c905 to bother"); - _bus = dev->bus; - _dev = dev->dev; - _fn = dev->fn; - found = 1; - + pci_bother_add(dev); return 1; } return 0; @@ -22,12 +17,7 @@ static int bother_3c905(pci_dev_t *dev, void *nutrinus) void eth_poll() { - if (!found) - return; - - pci_write16(_bus, _dev, _fn, 0x04, 0xFF); - - pci_write16(_bus, _dev, _fn, 0x04, 0x00); + /* ... */ } void eth_init()