Home | History | Annotate | Download | only in net
      1 /*
      2  * Split out from 3c509.c to make build process more sane
      3  *
      4  */
      5 
      6 FILE_LICENCE ( BSD2 );
      7 
      8 #include "etherboot.h"
      9 #include <gpxe/mca.h>
     10 #include <gpxe/isa.h> /* for ISA_ROM */
     11 #include "nic.h"
     12 #include "3c509.h"
     13 
     14 /*
     15  * Several other pieces of the MCA support code were shamelessly
     16  * borrowed from the Linux kernel source.
     17  *
     18  * MCA support added by Adam Fritzler (mid (at) auk.cx)
     19  *
     20  * Generalised out of the 3c529 driver and into a bus type by Michael
     21  * Brown <mbrown (at) fensystems.co.uk>
     22  *
     23  */
     24 
     25 static int t529_probe ( struct nic *nic, struct mca_device *mca ) {
     26 
     27 	/* Retrieve NIC parameters from MCA device parameters */
     28 	nic->ioaddr = ( ( mca->pos[4] & 0xfc ) | 0x02 ) << 8;
     29 	nic->irqno = mca->pos[5] & 0x0f;
     30 	printf ( "3c529 board found on MCA at %#hx IRQ %d -",
     31 		 nic->ioaddr, nic->irqno );
     32 
     33 	/* Hand off to generic t5x9 probe routine */
     34 	return t5x9_probe ( nic, MCA_ID ( mca ), 0xffff );
     35 }
     36 
     37 static void t529_disable ( struct nic *nic, struct mca_device *mca __unused ) {
     38 	t5x9_disable ( nic );
     39 }
     40 
     41 static struct mca_device_id el3_mca_adapters[] = {
     42         { "3Com 3c529 EtherLink III (10base2)", 0x627c },
     43         { "3Com 3c529 EtherLink III (10baseT)", 0x627d },
     44         { "3Com 3c529 EtherLink III (test mode)", 0x62db },
     45         { "3Com 3c529 EtherLink III (TP or coax)", 0x62f6 },
     46         { "3Com 3c529 EtherLink III (TP)", 0x62f7 },
     47 };
     48 
     49 MCA_DRIVER ( t529_driver, el3_mca_adapters );
     50 
     51 DRIVER ( "3c529", nic_driver, mca_driver, t529_driver,
     52 	 t529_probe, t529_disable );
     53 
     54 ISA_ROM( "3c529", "3c529 == MCA 3c509" );
     55 
     56 /*
     57  * Local variables:
     58  *  c-basic-offset: 8
     59  *  c-indent-level: 8
     60  *  tab-width: 8
     61  * End:
     62  */
     63