summaryrefslogtreecommitdiff
path: root/sys/dev/pcmcia
diff options
context:
space:
mode:
authorenami <enami@NetBSD.org>1999-09-27 23:19:12 +0000
committerenami <enami@NetBSD.org>1999-09-27 23:19:12 +0000
commitbb03434a5f2a8a1373bab75cf6e9e5daf1ef1cd0 (patch)
tree368bcce638c0300d614a7b566389ef6b4bdfaf13 /sys/dev/pcmcia
parent70c01ac44a01099087b4cdc1283df204b8b80e99 (diff)
Support Planex Communications Inc, FNW-3600-T.
Diffstat (limited to 'sys/dev/pcmcia')
-rw-r--r--sys/dev/pcmcia/if_ne_pcmcia.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/sys/dev/pcmcia/if_ne_pcmcia.c b/sys/dev/pcmcia/if_ne_pcmcia.c
index 32ea8217655..935dd2d3fcd 100644
--- a/sys/dev/pcmcia/if_ne_pcmcia.c
+++ b/sys/dev/pcmcia/if_ne_pcmcia.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ne_pcmcia.c,v 1.38 1999/09/25 09:47:13 enami Exp $ */
+/* $NetBSD: if_ne_pcmcia.c,v 1.39 1999/09/27 23:19:14 enami Exp $ */
/*
* Copyright (c) 1997 Marc Horowitz. All rights reserved.
@@ -87,6 +87,8 @@ struct ne2000dev {
int function;
int enet_maddr;
unsigned char enet_vendor[3];
+ int flags;
+#define NE2000DVF_DL10019 0x0001 /* chip is D-Link DL10019 */
} ne2000devs[] = {
{ PCMCIA_STR_AMBICOM_AMB8002T,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
@@ -133,6 +135,11 @@ struct ne2000dev {
PCMCIA_CIS_SVEC_LANCARD,
0, 0x7f0, { 0x00, 0xc0, 0x6c } },
+ { PCMCIA_STR_PLANEX_FNW3600T,
+ PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
+ PCMCIA_CIS_PLANEX_FNW3600T,
+ 0, -1, { 0x00, 0x90, 0xcc }, NE2000DVF_DL10019 },
+
/*
* You have to add new entries which contains
* PCMCIA_VENDOR_INVALID and/or PCMCIA_PRODUCT_INVALID
@@ -372,6 +379,7 @@ ne_pcmcia_attach(parent, self, aux)
int *, int *));
int *media, nmedia, defmedia;
const char *typestr = "";
+ u_int8_t sum;
npp_init_media = NULL;
media = NULL;
@@ -497,6 +505,24 @@ ne_pcmcia_attach(parent, self, aux)
}
}
+ if ((ne_dev->flags & NE2000DVF_DL10019) != 0) {
+#define PAR0 0x04
+ for (i = 0, sum = 0; i < 8; i++)
+ sum += bus_space_read_1(nsc->sc_asict, nsc->sc_asich,
+ PAR0 + i);
+ if (sum != 0xff) {
+ printf("%s: sum(0x%x) should be 0xff\n",
+ dsc->sc_dev.dv_xname, sum);
+ return;
+ }
+ for (i = 0; i < ETHER_ADDR_LEN; i++)
+ myea[i] = bus_space_read_1(nsc->sc_asict,
+ nsc->sc_asich, PAR0 + i);
+ enaddr = myea;
+ nsc->sc_type = NE2000_TYPE_DL10019;
+#undef PAR0
+ }
+
if (enaddr != NULL) {
/*
* Make sure this is what we expect.