|
|
1.1 root 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 <ipxe/mca.h>
10: #include <ipxe/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 ([email protected])
19: *
20: * Generalised out of the 3c529 driver and into a bus type by Michael
21: * Brown <[email protected]>
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: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.