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