rearrange order of tests for NE1000, NE2000, and Linksys
cards. previous order caused computers with NE2000 cards to hang during boot.
This commit is contained in:
parent
cbb89e6622
commit
4b9943106b
@ -1011,18 +1011,24 @@ ed_probe_Novell_generic(dev, port_rid, flags)
|
||||
* probably isn't any memory at 8k - which likely means that the board
|
||||
* is an NE2000.
|
||||
*/
|
||||
if (bcmp(test_pattern, test_buffer, sizeof(test_pattern)) == 0) {
|
||||
ed_pio_writemem(sc, test_pattern, 8192, sizeof(test_pattern));
|
||||
ed_pio_readmem(sc, 8192, test_buffer, sizeof(test_pattern));
|
||||
|
||||
linksys = ed_get_Linksys(sc);
|
||||
if (linksys) {
|
||||
outb(sc->nic_addr + ED_P0_DCR, ED_DCR_WTS | ED_DCR_FT1 | ED_DCR_LS);
|
||||
sc->isa16bit = 1;
|
||||
sc->type = ED_TYPE_NE2000;
|
||||
sc->type_str = "Linksys";
|
||||
} else if (bcmp(test_pattern, test_buffer, sizeof(test_pattern))) {
|
||||
/* not an NE1000 - try NE2000 */
|
||||
/* could be either an NE1000 or a Linksys ethernet controller */
|
||||
linksys = ed_get_Linksys(sc);
|
||||
if (linksys) {
|
||||
outb(sc->nic_addr + ED_P0_DCR, ED_DCR_WTS | ED_DCR_FT1 | ED_DCR_LS);
|
||||
sc->isa16bit = 1;
|
||||
sc->type = ED_TYPE_NE2000;
|
||||
sc->type_str = "Linksys";
|
||||
} else {
|
||||
sc->type = ED_TYPE_NE1000;
|
||||
sc->type_str = "NE1000";
|
||||
}
|
||||
} else {
|
||||
|
||||
/* neither an NE1000 nor a Linksys - try NE2000 */
|
||||
outb(sc->nic_addr + ED_P0_DCR, ED_DCR_WTS | ED_DCR_FT1 | ED_DCR_LS);
|
||||
outb(sc->nic_addr + ED_P0_PSTART, 16384 / ED_PAGE_SIZE);
|
||||
outb(sc->nic_addr + ED_P0_PSTOP, 32768 / ED_PAGE_SIZE);
|
||||
@ -1035,17 +1041,15 @@ ed_probe_Novell_generic(dev, port_rid, flags)
|
||||
*/
|
||||
ed_pio_writemem(sc, test_pattern, 16384, sizeof(test_pattern));
|
||||
ed_pio_readmem(sc, 16384, test_buffer, sizeof(test_pattern));
|
||||
|
||||
if (bcmp(test_pattern, test_buffer, sizeof(test_pattern)))
|
||||
return (ENXIO); /* not an NE2000 either */
|
||||
|
||||
sc->type = ED_TYPE_NE2000;
|
||||
sc->type_str = "NE2000";
|
||||
} else {
|
||||
sc->type = ED_TYPE_NE1000;
|
||||
sc->type_str = "NE1000";
|
||||
if (bcmp(test_pattern, test_buffer, sizeof(test_pattern)) == 0) {
|
||||
sc->type = ED_TYPE_NE2000;
|
||||
sc->type_str = "NE2000";
|
||||
} else {
|
||||
return (ENXIO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 8k of memory plus an additional 8k if 16bit */
|
||||
memsize = 8192 + sc->isa16bit * 8192;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user