This table is dumb.

1) Remove all the PCMCIA_STR_* values, and instead print the actual CIS
   info.  This is infinitely more helpful.
2) For some of the OEM cards, collapse multiple table entries into one
   entry that doesn't compare the OUI.
It's a start.
This commit is contained in:
mycroft 2004-07-07 04:01:30 +00:00
parent fcdbc29795
commit 309a698f3c
1 changed files with 78 additions and 199 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_ne_pcmcia.c,v 1.116 2004/07/07 02:17:17 mycroft Exp $ */ /* $NetBSD: if_ne_pcmcia.c,v 1.117 2004/07/07 04:01:30 mycroft Exp $ */
/* /*
* Copyright (c) 1997 Marc Horowitz. All rights reserved. * Copyright (c) 1997 Marc Horowitz. All rights reserved.
@ -30,7 +30,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_ne_pcmcia.c,v 1.116 2004/07/07 02:17:17 mycroft Exp $"); __KERNEL_RCSID(0, "$NetBSD: if_ne_pcmcia.c,v 1.117 2004/07/07 04:01:30 mycroft Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -94,7 +94,6 @@ CFATTACH_DECL(ne_pcmcia, sizeof(struct ne_pcmcia_softc),
ne_pcmcia_match, ne_pcmcia_attach, ne_pcmcia_detach, dp8390_activate); ne_pcmcia_match, ne_pcmcia_attach, ne_pcmcia_detach, dp8390_activate);
static const struct ne2000dev { static const struct ne2000dev {
char *name;
int32_t manufacturer; int32_t manufacturer;
int32_t product; int32_t product;
char *cis_info[4]; char *cis_info[4];
@ -106,93 +105,76 @@ static const struct ne2000dev {
#define NE2000DVF_AX88190 0x0002 /* chip is ASIX AX88190 */ #define NE2000DVF_AX88190 0x0002 /* chip is ASIX AX88190 */
#define NE2000DVF_AX88790 0x0004 /* chip is ASIX AX88790 */ #define NE2000DVF_AX88790 0x0004 /* chip is ASIX AX88790 */
} ne2000devs[] = { } ne2000devs[] = {
{ PCMCIA_STR_EDIMAX_EP4000A, { PCMCIA_VENDOR_EDIMAX, PCMCIA_PRODUCT_EDIMAX_EP4000A,
PCMCIA_VENDOR_EDIMAX, PCMCIA_PRODUCT_EDIMAX_EP4000A,
PCMCIA_CIS_EDIMAX_EP4000A, PCMCIA_CIS_EDIMAX_EP4000A,
0, -1, { 0x00, 0xa0, 0x0c } }, 0, -1, { 0x00, 0xa0, 0x0c } },
{ PCMCIA_STR_SYNERGY21_S21810, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_SYNERGY21_S21810, PCMCIA_CIS_SYNERGY21_S21810,
0, -1, { 0x00, 0x48, 0x54 } }, 0, -1, { 0x00, 0x48, 0x54 } },
{ PCMCIA_STR_AMBICOM_AMB8002T, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_AMBICOM_AMB8002T, PCMCIA_CIS_AMBICOM_AMB8002T,
0, -1, { 0x00, 0x10, 0x7a } }, 0, -1, { 0x00, 0x10, 0x7a } },
{ PCMCIA_STR_PREMAX_PE200, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_PREMAX_PE200, PCMCIA_CIS_PREMAX_PE200,
0, 0x07f0, { 0x00, 0x20, 0xe0 } }, 0, 0x07f0, { 0x00, 0x20, 0xe0 } },
{ PCMCIA_STR_DIGITAL_DEPCMXX, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_DIGITAL_DEPCMXX, PCMCIA_CIS_DIGITAL_DEPCMXX,
0, 0x0ff0, { 0x00, 0x00, 0xe8 } }, 0, 0x0ff0, { 0x00, 0x00, 0xe8 } },
{ PCMCIA_STR_PLANET_SMARTCOM2000, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_PLANET_SMARTCOM2000, PCMCIA_CIS_PLANET_SMARTCOM2000,
0, 0xff0, { 0x00, 0x00, 0xe8 } }, 0, 0xff0, { 0x00, 0x00, 0xe8 } },
{ PCMCIA_STR_DLINK_DE660, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_DLINK_DE660, PCMCIA_CIS_DLINK_DE660,
0, -1, { 0x00, 0x80, 0xc8 } }, 0, -1, { 0x00, 0x80, 0xc8 } },
{ PCMCIA_STR_DLINK_DE660PLUS, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_DLINK_DE660PLUS, PCMCIA_CIS_DLINK_DE660PLUS,
0, -1, { 0x00, 0x80, 0xc8 } }, 0, -1, { 0x00, 0x80, 0xc8 } },
{ PCMCIA_STR_RPTI_EP400, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_RPTI_EP400, PCMCIA_CIS_RPTI_EP400,
0, 0x110, { 0x00, 0x40, 0x95 } }, 0, 0x110, { 0x00, 0x40, 0x95 } },
{ PCMCIA_STR_RPTI_EP401, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_RPTI_EP401, PCMCIA_CIS_RPTI_EP401,
0, -1, { 0x00, 0x40, 0x95 } }, 0, -1, { 0x00, 0x40, 0x95 } },
{ PCMCIA_STR_ACCTON_EN2212, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_ACCTON_EN2212, PCMCIA_CIS_ACCTON_EN2212,
0, 0x0ff0, { 0x00, 0x00, 0xe8 } }, 0, 0x0ff0, { 0x00, 0x00, 0xe8 } },
{ PCMCIA_STR_ACCTON_EN2216,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_ACCTON_EN2216, PCMCIA_CIS_ACCTON_EN2216,
0, -1, { 0x00, 0x00, 0xe8 } }, 0, -1, { 0x00, 0x00, 0xe8 } },
{ PCMCIA_STR_SVEC_COMBOCARD, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_SVEC_COMBOCARD, PCMCIA_CIS_SVEC_COMBOCARD,
0, -1, { 0x00, 0xe0, 0x98 } }, 0, -1, { 0x00, 0xe0, 0x98 } },
{ PCMCIA_STR_SVEC_LANCARD, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_SVEC_LANCARD, PCMCIA_CIS_SVEC_LANCARD,
0, 0x7f0, { 0x00, 0xc0, 0x6c } }, 0, 0x7f0, { 0x00, 0xc0, 0x6c } },
{ PCMCIA_STR_EPSON_EEN10B, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_EPSON_EEN10B,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_EPSON_EEN10B,
PCMCIA_CIS_EPSON_EEN10B, PCMCIA_CIS_EPSON_EEN10B,
0, 0xff0, { 0x00, 0x00, 0x48 } }, 0, 0xff0, { 0x00, 0x00, 0x48 } },
{ PCMCIA_STR_TAMARACK_ETHERNET, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_TAMARACK_ETHERNET, PCMCIA_CIS_TAMARACK_ETHERNET,
0, -1, { 0x00, 0x00, 0x00 } }, 0, -1, { 0x00, 0x00, 0x00 } },
{ PCMCIA_STR_CNET_NE2000, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_CNET_NE2000, PCMCIA_CIS_CNET_NE2000,
0, -1, { 0x00, 0x80, 0xad } }, 0, -1, { 0x00, 0x80, 0xad } },
{ PCMCIA_STR_ZONET_ZEN, { PCMCIA_VENDOR_ZONET, PCMCIA_PRODUCT_ZONET_ZEN,
PCMCIA_VENDOR_ZONET, PCMCIA_PRODUCT_ZONET_ZEN,
PCMCIA_CIS_ZONET_ZEN, PCMCIA_CIS_ZONET_ZEN,
0, -1, { 0x00, 0x00, 0x00 } }, 0, -1, { 0x00, 0x00, 0x00 } },
@ -207,39 +189,19 @@ static const struct ne2000dev {
* product and vendor entries. * product and vendor entries.
*/ */
{ PCMCIA_STR_IBM_INFOMOVER, { PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
PCMCIA_CIS_IBM_INFOMOVER, PCMCIA_CIS_IBM_INFOMOVER,
0, 0x0ff0, { 0x08, 0x00, 0x5a } }, 0, 0x0ff0, { 0xff, 0xff, 0xff } },
{ PCMCIA_STR_IBM_INFOMOVER, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ECARD_1,
PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
PCMCIA_CIS_IBM_INFOMOVER,
0, 0x0ff0, { 0x00, 0x04, 0xac } },
{ PCMCIA_STR_IBM_INFOMOVER,
PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
PCMCIA_CIS_IBM_INFOMOVER,
0, 0x0ff0, { 0x00, 0x06, 0x29 } },
/* NEC 9801N_J12 */
{ PCMCIA_STR_IBM_INFOMOVER,
PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
PCMCIA_CIS_IBM_INFOMOVER,
0, 0x0ff0, { 0x00, 0x00, 0x4c } },
{ PCMCIA_STR_LINKSYS_ECARD_1,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ECARD_1,
PCMCIA_CIS_LINKSYS_ECARD_1, PCMCIA_CIS_LINKSYS_ECARD_1,
0, -1, { 0x00, 0x80, 0xc8 } }, 0, -1, { 0x00, 0x80, 0xc8 } },
{ PCMCIA_STR_PLANEX_FNW3600T, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_CIS_PLANEX_FNW3600T, PCMCIA_CIS_PLANEX_FNW3600T,
0, -1, { 0x00, 0x90, 0xcc }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0x90, 0xcc }, NE2000DVF_DL10019 },
{ PCMCIA_STR_SVEC_PN650TX, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_CIS_SVEC_PN650TX, PCMCIA_CIS_SVEC_PN650TX,
0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 },
@ -248,45 +210,17 @@ static const struct ne2000dev {
* match with this. FNW-3700T won't match above entries due to * match with this. FNW-3700T won't match above entries due to
* MAC address check. * MAC address check.
*/ */
{ PCMCIA_STR_LANTECH_FASTNETTX, { PCMCIA_VENDOR_LANTECH, PCMCIA_PRODUCT_LANTECH_FASTNETTX,
PCMCIA_VENDOR_LANTECH, PCMCIA_PRODUCT_LANTECH_FASTNETTX,
PCMCIA_CIS_LANTECH_FASTNETTX, PCMCIA_CIS_LANTECH_FASTNETTX,
0, -1, { 0x00, 0x04, 0x1c }, NE2000DVF_AX88190 }, 0, -1, { 0x00, 0x04, 0x1c }, NE2000DVF_AX88190 },
{ PCMCIA_STR_PLANEX_FNW3700T, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_CIS_PLANEX_FNW3700T, PCMCIA_CIS_PLANEX_FNW3700T,
0, -1, { 0x00, 0x90, 0xcc }, NE2000DVF_AX88190 }, 0, -1, { 0x00, 0x90, 0xcc }, NE2000DVF_AX88190 },
{ PCMCIA_STR_LINKSYS_ETHERFAST, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_LINKSYS_ETHERFAST, PCMCIA_CIS_LINKSYS_ETHERFAST,
0, -1, { 0x00, 0x80, 0xc8 }, NE2000DVF_DL10019 }, 0, -1, { 0xff, 0xff, 0xff }, NE2000DVF_DL10019 },
{ PCMCIA_STR_LINKSYS_ETHERFAST,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_LINKSYS_ETHERFAST,
0, -1, { 0x00, 0x40, 0x05 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_LINKSYS_ETHERFAST,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_LINKSYS_ETHERFAST,
0, -1, { 0x00, 0x90, 0xfe }, NE2000DVF_DL10019 },
{ PCMCIA_STR_LINKSYS_ETHERFAST,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_LINKSYS_ETHERFAST,
0, -1, { 0x00, 0xa0, 0xb0 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_DLINK_DE650,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_LINKSYS_ETHERFAST,
0, -1, { 0x00, 0x50, 0xba }, NE2000DVF_DL10019 },
{ PCMCIA_STR_DLINK_DE650,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_DLINK_DE650,
0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 },
/* /*
* There are two entries for the DFE-670TXD because there are * There are two entries for the DFE-670TXD because there are
@ -296,38 +230,19 @@ static const struct ne2000dev {
* Oh, wait, there's a third possible vendor code, apparently. * Oh, wait, there's a third possible vendor code, apparently.
* And it's from "ANI Communications" this time... * And it's from "ANI Communications" this time...
*/ */
{ PCMCIA_STR_DLINK_DFE670TXD, { PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA410TXC,
PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA410TXC,
PCMCIA_CIS_DLINK_DFE670TXD, PCMCIA_CIS_DLINK_DFE670TXD,
0, -1, { 0x00, 0x50, 0xba }, NE2000DVF_DL10019 }, 0, -1, { 0xff, 0xff, 0xff }, NE2000DVF_DL10019 },
{ PCMCIA_STR_DLINK_DFE670TXD, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA410TXC,
PCMCIA_CIS_DLINK_DFE670TXD,
0, -1, { 0x00, 0x0d, 0x88 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_DLINK_DFE670TXD,
PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA410TXC,
PCMCIA_CIS_DLINK_DFE670TXD,
0, -1, { 0x00, 0x40, 0x05 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_NETGEAR_FA410TXC,
PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA410TXC,
PCMCIA_CIS_NETGEAR_FA410TXC,
0, -1, { 0x00, 0x48, 0x54 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_MELCO_LPC2_TX,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_ETHERFAST,
PCMCIA_CIS_MELCO_LPC2_TX, PCMCIA_CIS_MELCO_LPC2_TX,
0, -1, { 0x00, 0x40, 0x26 }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0x40, 0x26 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_LINKSYS_COMBO_ECARD, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_COMBO_ECARD,
PCMCIA_CIS_LINKSYS_COMBO_ECARD, PCMCIA_CIS_LINKSYS_COMBO_ECARD,
0, -1, { 0x00, 0x80, 0xc8 } }, 0, -1, { 0x00, 0x80, 0xc8 } },
{ PCMCIA_STR_LINKSYS_TRUST_COMBO_ECARD, { PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_TRUST_COMBO_ECARD,
PCMCIA_VENDOR_LINKSYS, PCMCIA_PRODUCT_LINKSYS_TRUST_COMBO_ECARD,
PCMCIA_CIS_LINKSYS_TRUST_COMBO_ECARD, PCMCIA_CIS_LINKSYS_TRUST_COMBO_ECARD,
0, 0x0120, { 0x20, 0x04, 0x49 } }, 0, 0x0120, { 0x20, 0x04, 0x49 } },
@ -335,8 +250,7 @@ static const struct ne2000dev {
above this list, we need to keep this one below the ECARD_1, or else above this list, we need to keep this one below the ECARD_1, or else
both will match the same more-generic entry rather than the more both will match the same more-generic entry rather than the more
specific one above with proper vendor and product IDs. */ specific one above with proper vendor and product IDs. */
{ PCMCIA_STR_LINKSYS_ECARD_2, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_LINKSYS_ECARD_2, PCMCIA_CIS_LINKSYS_ECARD_2,
0, -1, { 0x00, 0x80, 0xc8 } }, 0, -1, { 0x00, 0x80, 0xc8 } },
@ -353,8 +267,7 @@ static const struct ne2000dev {
* the 3rd and the 4th types should use the "Linksys EtherCard" entry. * the 3rd and the 4th types should use the "Linksys EtherCard" entry.
* Therefore, this enty must be below the LINKSYS_ECARD_1. --itohy * Therefore, this enty must be below the LINKSYS_ECARD_1. --itohy
*/ */
{ PCMCIA_STR_DLINK_DE650, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_DLINK_DE650, PCMCIA_CIS_DLINK_DE650,
0, 0x0040, { 0x00, 0x80, 0xc8 } }, 0, 0x0040, { 0x00, 0x80, 0xc8 } },
@ -371,8 +284,7 @@ static const struct ne2000dev {
* for the earlier version of PCLA/T (or, modify to match all CIS * for the earlier version of PCLA/T (or, modify to match all CIS
* information and have three or more individual entries). * information and have three or more individual entries).
*/ */
{ PCMCIA_STR_IODATA_PCLATE, { PCMCIA_VENDOR_IODATA, PCMCIA_PRODUCT_IODATA_PCLATE,
PCMCIA_VENDOR_IODATA, PCMCIA_PRODUCT_IODATA_PCLATE,
PCMCIA_CIS_IODATA_PCLATE, PCMCIA_CIS_IODATA_PCLATE,
0, -1, { 0x00, 0xa0, 0xb0 } }, 0, -1, { 0x00, 0xa0, 0xb0 } },
@ -380,163 +292,127 @@ static const struct ne2000dev {
* This entry should be placed after above PCLA-TE entry. * This entry should be placed after above PCLA-TE entry.
* See above comments for detail. * See above comments for detail.
*/ */
{ PCMCIA_STR_IODATA_PCLAT, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_IODATA_PCLAT, PCMCIA_CIS_IODATA_PCLAT,
0, 0x0ff0, { 0x00, 0xa0, 0xb0 } }, 0, 0x0ff0, { 0x00, 0xa0, 0xb0 } },
{ PCMCIA_STR_DAYNA_COMMUNICARD_E_1, { PCMCIA_VENDOR_DAYNA, PCMCIA_PRODUCT_DAYNA_COMMUNICARD_E_1,
PCMCIA_VENDOR_DAYNA, PCMCIA_PRODUCT_DAYNA_COMMUNICARD_E_1,
PCMCIA_CIS_DAYNA_COMMUNICARD_E_1, PCMCIA_CIS_DAYNA_COMMUNICARD_E_1,
0, 0x0110, { 0x00, 0x80, 0x19 } }, 0, 0x0110, { 0x00, 0x80, 0x19 } },
{ PCMCIA_STR_DAYNA_COMMUNICARD_E_2, { PCMCIA_VENDOR_DAYNA, PCMCIA_PRODUCT_DAYNA_COMMUNICARD_E_2,
PCMCIA_VENDOR_DAYNA, PCMCIA_PRODUCT_DAYNA_COMMUNICARD_E_2,
PCMCIA_CIS_DAYNA_COMMUNICARD_E_2, PCMCIA_CIS_DAYNA_COMMUNICARD_E_2,
0, -1, { 0x00, 0x80, 0x19 } }, 0, -1, { 0x00, 0x80, 0x19 } },
{ PCMCIA_STR_COREGA_ETHER_PCC_T, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_T,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_T,
PCMCIA_CIS_COREGA_ETHER_PCC_T, PCMCIA_CIS_COREGA_ETHER_PCC_T,
0, -1, { 0x00, 0x00, 0xf4 } }, 0, -1, { 0x00, 0x00, 0xf4 } },
{ PCMCIA_STR_COREGA_ETHER_PCC_TD, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_TD,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_TD,
PCMCIA_CIS_COREGA_ETHER_PCC_TD, PCMCIA_CIS_COREGA_ETHER_PCC_TD,
0, -1, { 0x00, 0x00, 0xf4 } }, 0, -1, { 0x00, 0x00, 0xf4 } },
{ PCMCIA_STR_COREGA_ETHER_PCC_TL, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_TL,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_PCC_TL,
PCMCIA_CIS_COREGA_ETHER_PCC_TL, PCMCIA_CIS_COREGA_ETHER_PCC_TL,
0, -1, { 0x00, 0x00, 0xf4 } }, 0, -1, { 0x00, 0x00, 0xf4 } },
{ PCMCIA_STR_COREGA_ETHER_II_PCC_T, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_II_PCC_T,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_II_PCC_T,
PCMCIA_CIS_COREGA_ETHER_II_PCC_T, PCMCIA_CIS_COREGA_ETHER_II_PCC_T,
0, -1, { 0x00, 0x00, 0xf4 } }, 0, -1, { 0x00, 0x00, 0xf4 } },
{ PCMCIA_STR_COREGA_ETHER_II_PCC_TD, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_II_PCC_TD,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_ETHER_II_PCC_TD,
PCMCIA_CIS_COREGA_ETHER_II_PCC_TD, PCMCIA_CIS_COREGA_ETHER_II_PCC_TD,
0, -1, { 0x00, 0x00, 0xf4 } }, 0, -1, { 0x00, 0x00, 0xf4 } },
{ PCMCIA_STR_COREGA_FAST_ETHER_PCC_TX, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FAST_ETHER_PCC_TX,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FAST_ETHER_PCC_TX,
PCMCIA_CIS_COREGA_FAST_ETHER_PCC_TX, PCMCIA_CIS_COREGA_FAST_ETHER_PCC_TX,
0, -1, { 0x00, 0x00, 0xf4 }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0x00, 0xf4 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_COREGA_FETHER_PCC_TXF, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_PCC_TXF,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_PCC_TXF,
PCMCIA_CIS_COREGA_FETHER_PCC_TXF, PCMCIA_CIS_COREGA_FETHER_PCC_TXF,
0, -1, { 0x00, 0x90, 0x99 }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0x90, 0x99 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_COREGA_FETHER_PCC_TXD, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_PCC_TXD,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_PCC_TXD,
PCMCIA_CIS_COREGA_FETHER_PCC_TXD, PCMCIA_CIS_COREGA_FETHER_PCC_TXD,
0, -1, { 0x00, 0x90, 0x99 } }, 0, -1, { 0x00, 0x90, 0x99 } },
{ PCMCIA_STR_COREGA_FETHER_II_PCC_TXD, { PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_II_PCC_TXD,
PCMCIA_VENDOR_COREGA, PCMCIA_PRODUCT_COREGA_FETHER_II_PCC_TXD,
PCMCIA_CIS_COREGA_FETHER_II_PCC_TXD, PCMCIA_CIS_COREGA_FETHER_II_PCC_TXD,
0, -1, { 0x00, 0x90, 0x99 }, NE2000DVF_AX88190 | NE2000DVF_AX88790 }, 0, -1, { 0x00, 0x90, 0x99 }, NE2000DVF_AX88190 | NE2000DVF_AX88790 },
{ PCMCIA_STR_COMPEX_LINKPORT_ENET_B, { PCMCIA_VENDOR_COMPEX, PCMCIA_PRODUCT_COMPEX_LINKPORT_ENET_B,
PCMCIA_VENDOR_COMPEX, PCMCIA_PRODUCT_COMPEX_LINKPORT_ENET_B,
PCMCIA_CIS_COMPEX_LINKPORT_ENET_B, PCMCIA_CIS_COMPEX_LINKPORT_ENET_B,
0, 0x01c0, { 0x00, 0xa0, 0x0c } }, 0, 0x01c0, { 0x00, 0xa0, 0x0c } },
{ PCMCIA_STR_SMC_EZCARD, { PCMCIA_VENDOR_SMC, PCMCIA_PRODUCT_SMC_EZCARD,
PCMCIA_VENDOR_SMC, PCMCIA_PRODUCT_SMC_EZCARD,
PCMCIA_CIS_SMC_EZCARD, PCMCIA_CIS_SMC_EZCARD,
0, 0x01c0, { 0x00, 0xe0, 0x29 } }, 0, 0x01c0, { 0x00, 0xe0, 0x29 } },
{ PCMCIA_STR_SMC_8041, { PCMCIA_VENDOR_SMC, PCMCIA_PRODUCT_SMC_8041,
PCMCIA_VENDOR_SMC, PCMCIA_PRODUCT_SMC_8041,
PCMCIA_CIS_SMC_8041, PCMCIA_CIS_SMC_8041,
0, -1, { 0x00, 0x04, 0xe2 } }, 0, -1, { 0x00, 0x04, 0xe2 } },
{ PCMCIA_STR_SOCKET_EA_ETHER, { PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_EA_ETHER,
PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_EA_ETHER,
PCMCIA_CIS_SOCKET_EA_ETHER, PCMCIA_CIS_SOCKET_EA_ETHER,
0, -1, { 0x00, 0xc0, 0x1b } }, 0, -1, { 0x00, 0xc0, 0x1b } },
{ PCMCIA_STR_SOCKET_LP_ETHER_CF, { PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETHER_CF,
PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETHER_CF,
PCMCIA_CIS_SOCKET_LP_ETHER_CF, PCMCIA_CIS_SOCKET_LP_ETHER_CF,
0, -1, { 0x00, 0xc0, 0x1b } }, 0, -1, { 0x00, 0xc0, 0x1b } },
{ PCMCIA_STR_SOCKET_LP_ETH_10_100_CF, { PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETH_10_100_CF,
PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETH_10_100_CF,
PCMCIA_CIS_SOCKET_LP_ETH_10_100_CF, PCMCIA_CIS_SOCKET_LP_ETH_10_100_CF,
0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 }, 0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 },
{ PCMCIA_STR_SOCKET_LP_ETHER, { PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETHER,
PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_LP_ETHER,
PCMCIA_CIS_SOCKET_LP_ETHER, PCMCIA_CIS_SOCKET_LP_ETHER,
0, -1, { 0x00, 0xc0, 0x1b } }, 0, -1, { 0x00, 0xc0, 0x1b } },
{ PCMCIA_STR_KINGSTON_KNE2, { PCMCIA_VENDOR_KINGSTON, PCMCIA_PRODUCT_KINGSTON_KNE2,
PCMCIA_VENDOR_KINGSTON, PCMCIA_PRODUCT_KINGSTON_KNE2,
PCMCIA_CIS_KINGSTON_KNE2, PCMCIA_CIS_KINGSTON_KNE2,
0, -1, { 0x00, 0xc0, 0xf0 } }, 0, -1, { 0x00, 0xc0, 0xf0 } },
{ PCMCIA_STR_XIRCOM_CFE_10, { PCMCIA_VENDOR_XIRCOM, PCMCIA_PRODUCT_XIRCOM_CFE_10,
PCMCIA_VENDOR_XIRCOM, PCMCIA_PRODUCT_XIRCOM_CFE_10,
PCMCIA_CIS_XIRCOM_CFE_10, PCMCIA_CIS_XIRCOM_CFE_10,
0, -1, { 0x00, 0x10, 0xa4 } }, 0, -1, { 0x00, 0x10, 0xa4 } },
{ PCMCIA_STR_MELCO_LPC3_TX, { PCMCIA_VENDOR_MELCO, PCMCIA_PRODUCT_MELCO_LPC3_TX,
PCMCIA_VENDOR_MELCO, PCMCIA_PRODUCT_MELCO_LPC3_TX,
PCMCIA_CIS_MELCO_LPC3_TX, PCMCIA_CIS_MELCO_LPC3_TX,
0, -1, { 0x00, 0x40, 0x26 }, NE2000DVF_AX88190 }, 0, -1, { 0xff, 0xff, 0xff }, NE2000DVF_AX88190 },
{ PCMCIA_STR_MELCO_LPC3_TX, { PCMCIA_VENDOR_BUFFALO, PCMCIA_PRODUCT_BUFFALO_LPC3_CLT,
PCMCIA_VENDOR_MELCO, PCMCIA_PRODUCT_MELCO_LPC3_TX,
PCMCIA_CIS_MELCO_LPC3_TX,
0, -1, { 0x00, 0x02, 0xdd }, NE2000DVF_AX88190 },
{ PCMCIA_STR_BUFFALO_LPC3_CLT,
PCMCIA_VENDOR_BUFFALO, PCMCIA_PRODUCT_BUFFALO_LPC3_CLT,
PCMCIA_CIS_BUFFALO_LPC3_CLT, PCMCIA_CIS_BUFFALO_LPC3_CLT,
0, -1, { 0x00, 0x07, 0x40 } }, 0, -1, { 0x00, 0x07, 0x40 } },
{ PCMCIA_STR_BUFFALO_LPC4_CLX, { PCMCIA_VENDOR_BUFFALO, PCMCIA_PRODUCT_BUFFALO_LPC4_CLX,
PCMCIA_VENDOR_BUFFALO, PCMCIA_PRODUCT_BUFFALO_LPC4_CLX,
PCMCIA_CIS_BUFFALO_LPC4_CLX, PCMCIA_CIS_BUFFALO_LPC4_CLX,
0, -1, { 0x00, 0x40, 0xfa }, NE2000DVF_AX88190 | NE2000DVF_AX88790 }, 0, -1, { 0x00, 0x40, 0xfa }, NE2000DVF_AX88190 | NE2000DVF_AX88790 },
{ PCMCIA_STR_BILLIONTON_LNT10TN, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_BILLIONTON_LNT10TN, PCMCIA_CIS_BILLIONTON_LNT10TN,
0, -1, { 0x00, 0x00, 0x00 } }, 0, -1, { 0x00, 0x00, 0x00 } },
{ PCMCIA_STR_BILLIONTON_CFLT10N, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_BILLIONTON_CFLT10N, PCMCIA_CIS_BILLIONTON_CFLT10N,
0, -1, { 0x00, 0x00, 0x00 } }, 0, -1, { 0x00, 0x00, 0x00 } },
{ PCMCIA_STR_NDC_ND5100_E, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
PCMCIA_CIS_NDC_ND5100_E, PCMCIA_CIS_NDC_ND5100_E,
0, -1, { 0x00, 0x80, 0xc6 } }, 0, -1, { 0x00, 0x80, 0xc6 } },
{ PCMCIA_STR_TELECOMDEVICE_TCD_HPC100, { PCMCIA_VENDOR_TELECOMDEVICE, PCMCIA_PRODUCT_TELECOMDEVICE_TCD_HPC100,
PCMCIA_VENDOR_TELECOMDEVICE, PCMCIA_PRODUCT_TELECOMDEVICE_TCD_HPC100,
PCMCIA_CIS_TELECOMDEVICE_TCD_HPC100, PCMCIA_CIS_TELECOMDEVICE_TCD_HPC100,
0, -1, { 0x00, 0x40, 0x26 }, NE2000DVF_AX88190 }, 0, -1, { 0x00, 0x40, 0x26 }, NE2000DVF_AX88190 },
{ PCMCIA_STR_MACNICA_ME1_JEIDA, { PCMCIA_VENDOR_MACNICA, PCMCIA_PRODUCT_MACNICA_ME1_JEIDA,
PCMCIA_VENDOR_MACNICA, PCMCIA_PRODUCT_MACNICA_ME1_JEIDA,
PCMCIA_CIS_MACNICA_ME1_JEIDA, PCMCIA_CIS_MACNICA_ME1_JEIDA,
0, 0x00b8, { 0x08, 0x00, 0x42 } }, 0, 0x00b8, { 0x08, 0x00, 0x42 } },
{ PCMCIA_STR_NETGEAR_FA411, { PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA411,
PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA411,
PCMCIA_CIS_NETGEAR_FA411, PCMCIA_CIS_NETGEAR_FA411,
0, -1, { 0x00, 0x40, 0xf4 } }, 0, -1, { 0x00, 0x40, 0xf4 } },
{ PCMCIA_STR_DYNALINK_L10C, { PCMCIA_VENDOR_DYNALINK, PCMCIA_PRODUCT_DYNALINK_L10C,
PCMCIA_VENDOR_DYNALINK, PCMCIA_PRODUCT_DYNALINK_L10C,
PCMCIA_CIS_DYNALINK_L10C, PCMCIA_CIS_DYNALINK_L10C,
0, -1, { 0x00, 0x00, 0x00 } }, 0, -1, { 0x00, 0x00, 0x00 } },
@ -621,8 +497,7 @@ static const struct ne2000dev {
0x0060, { 0x00, 0x40, 0x05 } }, 0x0060, { 0x00, 0x40, 0x05 } },
#endif #endif
{ PCMCIA_STR_ALLIEDTELESIS_LA_PCM, { PCMCIA_VENDOR_ALLIEDTELESIS, PCMCIA_PRODUCT_ALLIEDTELESIS_LA_PCM,
PCMCIA_VENDOR_ALLIEDTELESIS, PCMCIA_PRODUCT_ALLIEDTELESIS_LA_PCM,
PCMCIA_CIS_ALLIEDTELESIS_LA_PCM, PCMCIA_CIS_ALLIEDTELESIS_LA_PCM,
0, 0x0ff0, { 0x00, 0x00, 0xf4 } }, 0, 0x0ff0, { 0x00, 0x00, 0xf4 } },
}; };
@ -855,7 +730,8 @@ found:
} }
} }
if (enaddr != NULL) { if (enaddr != NULL &&
ne_dev->enet_vendor[0] != 0xff) {
/* /*
* Make sure this is what we expect. * Make sure this is what we expect.
*/ */
@ -885,8 +761,11 @@ found:
} }
} }
printf("%s: %s%s Ethernet\n", dsc->sc_dev.dv_xname, ne_dev->name, aprint_normal("%s: <%s, %s> <%04x, %04x>%s\n",
typestr); dsc->sc_dev.dv_xname,
pa->card->cis1_info[0] ?: "",
pa->card->cis1_info[1] ?: "",
pa->manufacturer, pa->product, typestr);
if (ne2000_attach(nsc, enaddr)) if (ne2000_attach(nsc, enaddr))
goto fail_5; goto fail_5;