summaryrefslogtreecommitdiffstats
path: root/sys/dev/ed
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2000-09-12 11:03:12 +0000
committerps <ps@FreeBSD.org>2000-09-12 11:03:12 +0000
commit5f7726f4e7a3400d200c0152122d30f3dd541166 (patch)
tree7ca5d7befadc5e59c5ceb785e07bc687b14c4194 /sys/dev/ed
parenta7bc78c86d1b25efbea8d9ad3e7354ef3a302e90 (diff)
downloadFreeBSD-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.c5
-rw-r--r--sys/dev/ed/if_ed_pccard.c4
-rw-r--r--sys/dev/ed/if_edvar.h2
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 *));
OpenPOWER on IntegriCloud