/* * Setup the base address and interrupt of the Au1xxx ethernet macs * based on cpu type and whether the interface is enabled in sys_pinfunc * register. The last interface is enabled if SYS_PF_NI2 (bit 4) is 0. */ static int __init au1000_init_module(void) { int ni = (int)((au_readl(SYS_PINFUNC) & (u32)(SYS_PF_NI2)) >> 4); struct net_device *dev; int i, found_one = 0; num_ifs = NUM_ETH_INTERFACES - ni; for(i = 0; i < num_ifs; i++) { dev = au1000_probe(i); iflist[i].dev = dev; if (dev) found_one++; } if (!found_one) return -ENODEV; return 0; }
/* * Setup the base address and interupt of the Au1xxx ethernet macs * based on cpu type and whether the interface is enabled in sys_pinfunc * register. The last interface is enabled if SYS_PF_NI2 (bit 4) is 0. */ static int __init au1000_init_module(void) { struct cpuinfo_mips *c = ¤t_cpu_data; int ni = (int)((au_readl(SYS_PINFUNC) & (u32)(SYS_PF_NI2)) >> 4); struct net_device *dev; int i, found_one = 0; iflist[0].irq = AU1000_ETH0_IRQ; iflist[1].irq = AU1000_ETH1_IRQ; switch (c->cputype) { case CPU_AU1000: num_ifs = 2 - ni; iflist[0].base_addr = AU1000_ETH0_BASE; iflist[1].base_addr = AU1000_ETH1_BASE; break; case CPU_AU1100: num_ifs = 1 - ni; iflist[0].base_addr = AU1000_ETH0_BASE; break; case CPU_AU1500: num_ifs = 2 - ni; iflist[0].base_addr = AU1500_ETH0_BASE; iflist[1].base_addr = AU1500_ETH1_BASE; break; default: num_ifs = 0; } for(i = 0; i < num_ifs; i++) { dev = au1000_probe(iflist[i].base_addr, iflist[i].irq, i); iflist[i].dev = dev; if (dev) found_one++; } if (!found_one) return -ENODEV; return 0; }