All, Included below are patches to get the eepro100 working with etherboot 3.2. There were two problems. The first was the use of PCI_BASE_ADDRESS_0 instead of PCI_BASE_ADDRESS_1 to get the pci_ioaddr. The second was the pasing of a zero value to eth_probe as the ioaddr (the intention was that this would be the override value). Unfortunately, the eepro100 driver expects a pointer. Upon seeing NULL it returns with a failure right away. I replaced it with the ioaddr found by the pci scan. This won't support multiple cards as is Ken's intention eventually, but it works for one. bill Index: thesis/etherboot/src/config.c =================================================================== RCS file: /usr/local/cvsroot/thesis/etherboot/src/config.c,v retrieving revision 1.1 retrieving revision 1.2 diff -c -r1.1 -r1.2 *** config.c 1997/10/27 18:14:45 1.1 --- config.c 1997/10/30 01:17:12 1.2 *************** *** 171,181 **** eth_pci_init(pci_nic_list, pci_addrs); pci_addrs[1] = 0; #endif ! printf("Probing..."); for (t = NIC; t->nic_name != 0; ++t) { printf("[%s]", t->nic_name); ! if ((*t->eth_probe)(&nic, t->probe_addrs)) return (1); } return (0); --- 171,182 ---- eth_pci_init(pci_nic_list, pci_addrs); pci_addrs[1] = 0; #endif ! printf("Probing at 0x%x...", t->probe_addrs); for (t = NIC; t->nic_name != 0; ++t) { printf("[%s]", t->nic_name); ! /* if ((*t->eth_probe)(&nic, t->probe_addrs)) */ ! if ((*t->eth_probe)(&nic, pci_addrs)) return (1); } return (0); Index: thesis/etherboot/src/pci.c =================================================================== RCS file: /usr/local/cvsroot/thesis/etherboot/src/pci.c,v retrieving revision 1.1 retrieving revision 1.2 diff -c -r1.1 -r1.2 *** pci.c 1997/10/27 18:14:46 1.1 --- pci.c 1997/10/30 01:17:12 1.2 *************** *** 237,243 **** if (vendor == pcidev[i].vendor && device == pcidev[i].dev_id) { pcibios_read_config_dword(0, devfn, ! PCI_BASE_ADDRESS_0, &pci_ioaddr); /* Strip the I/O address out of the * returned value */ pci_ioaddr &= PCI_BASE_ADDRESS_IO_MASK; --- 237,243 ---- if (vendor == pcidev[i].vendor && device == pcidev[i].dev_id) { pcibios_read_config_dword(0, devfn, ! PCI_BASE_ADDRESS_1, &pci_ioaddr); /* Strip the I/O address out of the * returned value */ pci_ioaddr &= PCI_BASE_ADDRESS_IO_MASK; Index: thesis/etherboot/src/pci.h =================================================================== RCS file: /usr/local/cvsroot/thesis/etherboot/src/pci.h,v retrieving revision 1.1 retrieving revision 1.2 diff -c -r1.1 -r1.2 *** pci.h 1997/10/27 18:14:46 1.1 --- pci.h 1997/10/30 01:17:13 1.2 *************** *** 30,35 **** --- 30,36 ---- #define PCI_HEADER_TYPE 0x0e /* 8 bits */ #define PCI_BASE_ADDRESS_0 0x10 /* 32 bits */ + #define PCI_BASE_ADDRESS_1 0x14 /* 32 bits */ #define PCI_BASE_ADDRESS_IO_MASK (~0x03)
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.