--- tulip.c.old Wed Feb 21 22:15:28 2001 +++ tulip.c Thu Feb 22 00:20:21 2001 @@ -1640,6 +1640,36 @@ u32 new_csr6; int i; + if (tp->chip_id == I21145 && tp->medialock && dev->if_port == 18) { + /* Intel 21145 HomePNA port selection + + To use Intel AnyPoint HomePNA 1Mbps PCI card, load the tulip module + with the "options=18" parameter. + + FIXME: Integrate this into the rest of the code to eliminate the + mandatory options=18. + + The code below is based on information in Appendix C of Intel's + 21145 hardware reference manual, available at + http://www.intel.com/design/network/manuals/ + */ + if (tulip_debug) + printk(KERN_DEBUG "%s: Intel 21145 HomePNA.\n", + dev->name); + /* CSR6<18> = 0, CSR6<19> = 1 + CSR13<31:0> = 00000000H + CSR14<31:0> = 00000505H + CSR15<4> = 1 + CSR13<31:0> = 30480009H + */ + outl(((inl(ioaddr + CSR6) & (~(1 << 18))) | (1 << 19)), ioaddr + CSR6); + outl(0x00000000, ioaddr + CSR13); + outl(0x00000505, ioaddr + CSR14); + outl(inl(ioaddr + CSR15) | 0x10, ioaddr + CSR15); + outl(0x30480009, ioaddr + CSR13); + return; + } + if (mtable) { struct medialeaf *mleaf = &mtable->mleaf[tp->cur_index]; unsigned char *p = mleaf->leafdata;