diff options
| author | enami <enami@NetBSD.org> | 1999-09-27 23:19:12 +0000 |
|---|---|---|
| committer | enami <enami@NetBSD.org> | 1999-09-27 23:19:12 +0000 |
| commit | bb03434a5f2a8a1373bab75cf6e9e5daf1ef1cd0 (patch) | |
| tree | 368bcce638c0300d614a7b566389ef6b4bdfaf13 /sys/dev | |
| parent | 70c01ac44a01099087b4cdc1283df204b8b80e99 (diff) | |
Support Planex Communications Inc, FNW-3600-T.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ic/dp8390.c | 6 | ||||
| -rw-r--r-- | sys/dev/ic/ne2000.c | 17 | ||||
| -rw-r--r-- | sys/dev/ic/ne2000var.h | 7 | ||||
| -rw-r--r-- | sys/dev/pcmcia/if_ne_pcmcia.c | 28 |
4 files changed, 50 insertions, 8 deletions
diff --git a/sys/dev/ic/dp8390.c b/sys/dev/ic/dp8390.c index 19be806c42b..14aa0508ca6 100644 --- a/sys/dev/ic/dp8390.c +++ b/sys/dev/ic/dp8390.c @@ -1,4 +1,4 @@ -/* $NetBSD: dp8390.c,v 1.26 1999/08/25 22:41:42 thorpej Exp $ */ +/* $NetBSD: dp8390.c,v 1.27 1999/09/27 23:19:12 enami Exp $ */ /* * Device driver for National Semiconductor DS8390/WD83C690 based ethernet @@ -100,8 +100,10 @@ dp8390_config(sc, media, nmedia, defmedia) if ((sc->mem_size < 16384) || (sc->sc_flags & DP8390_NO_MULTI_BUFFERING)) sc->txb_cnt = 1; - else + else if (sc->mem_size < 8192 * 3) sc->txb_cnt = 2; + else + sc->txb_cnt = 3; sc->tx_page_start = sc->mem_start >> ED_PAGE_SHIFT; sc->rec_page_start = sc->tx_page_start + sc->txb_cnt * ED_TXBUF_SIZE; diff --git a/sys/dev/ic/ne2000.c b/sys/dev/ic/ne2000.c index d4dd3edae4a..9e5f0d09827 100644 --- a/sys/dev/ic/ne2000.c +++ b/sys/dev/ic/ne2000.c @@ -1,4 +1,4 @@ -/* $NetBSD: ne2000.c,v 1.22 1999/09/27 05:25:44 enami Exp $ */ +/* $NetBSD: ne2000.c,v 1.23 1999/09/27 23:19:12 enami Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -149,9 +149,20 @@ ne2000_attach(nsc, myea, media, nmedia, defmedia) dsc->sc_reg_map[i] = i; /* - * 8k of memory plus an additional 8k if an NE2000. + * 8k of memory for NE1000, 16k for NE2000 and 24k for the + * card uses DL10019. */ - memsize = 8192 + (nsc->sc_type == NE2000_TYPE_NE2000 ? 8192 : 0); + switch (nsc->sc_type) { + case NE2000_TYPE_NE1000: + memsize = 8192; + break; + case NE2000_TYPE_NE2000: + memsize = 8192 * 2; + break; + case NE2000_TYPE_DL10019: + memsize = 8192 * 3; + break; + } /* * NIC memory doens't start at zero on an NE board. diff --git a/sys/dev/ic/ne2000var.h b/sys/dev/ic/ne2000var.h index b16a6da1931..f8214d6610a 100644 --- a/sys/dev/ic/ne2000var.h +++ b/sys/dev/ic/ne2000var.h @@ -1,4 +1,4 @@ -/* $NetBSD: ne2000var.h,v 1.5 1999/09/27 05:25:44 enami Exp $ */ +/* $NetBSD: ne2000var.h,v 1.6 1999/09/27 23:19:13 enami Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -52,8 +52,11 @@ struct ne2000_softc { /* sc_type */ #define NE2000_TYPE_NE1000 1 #define NE2000_TYPE_NE2000 2 +#define NE2000_TYPE_DL10019 3 -#define NE2000_USE_WORD(sc) (((sc)->sc_type) == NE2000_TYPE_NE2000) +#define NE2000_USE_WORD(sc) \ + (((sc)->sc_type == NE2000_TYPE_NE2000) || \ + ((sc)->sc_type == NE2000_TYPE_DL10019)) void ne2000_attach __P((struct ne2000_softc *, u_int8_t *, int *, int, int)); 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. |
