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.