diff options
author | ps <ps@FreeBSD.org> | 2000-09-12 11:03:12 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2000-09-12 11:03:12 +0000 |
commit | 5f7726f4e7a3400d200c0152122d30f3dd541166 (patch) | |
tree | 7ca5d7befadc5e59c5ceb785e07bc687b14c4194 /sys/dev/ed | |
parent | a7bc78c86d1b25efbea8d9ad3e7354ef3a302e90 (diff) | |
download | FreeBSD-src-5f7726f4e7a3400d200c0152122d30f3dd541166.zip FreeBSD-src-5f7726f4e7a3400d200c0152122d30f3dd541166.tar.gz |
Move the detection of Linksys PCMCIA cards from attach to probe.
This should solve the problems people were seeing with this driver.
Reported by: phk & others.
Diffstat (limited to 'sys/dev/ed')
-rw-r--r-- | sys/dev/ed/if_ed.c | 5 | ||||
-rw-r--r-- | sys/dev/ed/if_ed_pccard.c | 4 | ||||
-rw-r--r-- | sys/dev/ed/if_edvar.h | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/ed/if_ed.c b/sys/dev/ed/if_ed.c index 4bff9f5..0c67a94 100644 --- a/sys/dev/ed/if_ed.c +++ b/sys/dev/ed/if_ed.c @@ -912,9 +912,10 @@ ed_probe_3Com(dev, port_rid, flags) * conditionally. */ int -ed_get_Linksys(sc) - struct ed_softc *sc; +ed_get_Linksys(dev) + device_t dev; { + struct ed_softc *sc = device_get_softc(dev); u_char sum; int i; diff --git a/sys/dev/ed/if_ed_pccard.c b/sys/dev/ed/if_ed_pccard.c index 168170b..76d318f 100644 --- a/sys/dev/ed/if_ed_pccard.c +++ b/sys/dev/ed/if_ed_pccard.c @@ -63,6 +63,7 @@ static int ed_pccard_detach(device_t); static void ax88190_geteprom(struct ed_softc *); static int ed_pccard_memwrite(device_t dev, off_t offset, u_char byte); static int ed_pccard_memread(device_t dev, off_t offset, u_char *buf, int size); +static int linksys; static device_method_t ed_pccard_methods[] = { /* Device interface */ @@ -170,6 +171,7 @@ ed_pccard_probe(device_t dev) ed_release_resources(dev); end: + linksys = ed_get_Linksys(dev); if (error == 0) error = ed_alloc_irq(dev, 0, 0); @@ -201,7 +203,7 @@ ed_pccard_attach(device_t dev) return (error); } - if (ed_get_Linksys(sc) == 0) { + if (linksys == 0) { pccard_get_ether(dev, ether_addr); for (i = 0, sum = 0; i < ETHER_ADDR_LEN; i++) sum |= ether_addr[i]; diff --git a/sys/dev/ed/if_edvar.h b/sys/dev/ed/if_edvar.h index d78f442..535146e 100644 --- a/sys/dev/ed/if_edvar.h +++ b/sys/dev/ed/if_edvar.h @@ -197,7 +197,7 @@ int ed_probe_Novell __P((device_t, int, int)); int ed_probe_Novell_generic __P((device_t, int)); int ed_probe_HP_pclanp __P((device_t, int, int)); -int ed_get_Linksys __P((struct ed_softc *)); +int ed_get_Linksys __P((device_t)); int ed_attach __P((struct ed_softc *, int, int)); void ed_stop __P((struct ed_softc *)); |