X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/c61d5f405f2f7fcdcc0a883e18ae7873f4fcd9d7..7a914840b833dba82398623bbde04a1744627398:/net/net.c diff --git a/net/net.c b/net/net.c index 7f1932f..575b5e4 100644 --- a/net/net.c +++ b/net/net.c @@ -1,38 +1,28 @@ #include +#include #include #include "net.h" -static int found = 0, _bus, _dev, _fn; +static struct nic *_nic = 0x0; -struct nic nic; +extern struct pci_driver a3c90x_driver; -static int bother_3c905(pci_dev_t *dev, void *nutrinus) +void eth_poll() { - if (dev->vid == 0x10B7 || dev->did == 0x9200) - { - outputf("Found a 3c905 to bother"); - - _bus = dev->bus; - _dev = dev->dev; - _fn = dev->fn; - found = 1; - - return 1; - } - return 0; + if (_nic) + _nic->poll(_nic, 0); } -void eth_poll() +int eth_register(struct nic *nic) { - if (!found) - return; - - pci_write16(_bus, _dev, _fn, 0x04, 0xFF); - - pci_write16(_bus, _dev, _fn, 0x04, 0x00); + if (_nic) + return -1; + _nic = nic; + return 0; } void eth_init() { - pci_probe(bother_3c905, 0x0); + if (pci_probe_driver(a3c90x_driver)) + outputf("found 3c90x, hopefully!"); }