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.