Subject: Tester wanted: 3com 3CXEM556-INT or 3CCFEM556BI on -release branch
To: None <port-i386@netbsd.org, current-users@netbsd.org>
From: enami tsugutomo <enami@but-b.or.jp>
List: port-i386
Date: 02/08/2000 21:43:59
Hi folks.

The following card should be supported on -release branch if appended
patch is applied.

      3Com/Megahertz 3CXEM556-INT Ethernet/Modem
      3Com/Megahertz 3CCFEM556BI Ethernet/Modem

Unfortunately, I don't have both cards.  So, if you have those cards
and can test it on -release branch, please let me know the results.
If the patch is ok, I'll send a pullup request to release engineering
team.

I've also put an GENERIC kernel for NetBSD/i386 built from today's
-release branch + appened patch at following place:
     ftp://ftp.netbsd.org/pub/incoming/enami/netbsd.gz

enami.

Index: dev/pcmcia/if_ep_pcmcia.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/if_ep_pcmcia.c,v
retrieving revision 1.21.2.1
diff -u -r1.21.2.1 if_ep_pcmcia.c
--- if_ep_pcmcia.c	2000/02/06 17:40:32	1.21.2.1
+++ if_ep_pcmcia.c	2000/02/08 12:26:18
@@ -148,23 +148,31 @@
 	int		epp_expfunc;	/* expected function */
 	const char	*epp_name;	/* device name */
 } ep_pcmcia_products[] = {
-	{ PCMCIA_PRODUCT_3COM_3C562,	ELINK_CHIPSET_3C509,
-	  0,				0,
+	{ PCMCIA_PRODUCT_3COM_3C562,		ELINK_CHIPSET_3C509,
+	  0,					0,
 	  PCMCIA_STR_3COM_3C562 },
-	{ PCMCIA_PRODUCT_3COM_3C589,	ELINK_CHIPSET_3C509,
-	  0,				0,
+	{ PCMCIA_PRODUCT_3COM_3C589,		ELINK_CHIPSET_3C509,
+	  0,					0,
 	  PCMCIA_STR_3COM_3C589 },
 
-	{ PCMCIA_PRODUCT_3COM_3CXEM556,	ELINK_CHIPSET_3C509,
-	  0,				0,
+	{ PCMCIA_PRODUCT_3COM_3CXEM556,		ELINK_CHIPSET_3C509,
+	  0,					0,
 	  PCMCIA_STR_3COM_3CXEM556 },
 
-	{ PCMCIA_PRODUCT_3COM_3C574,	ELINK_CHIPSET_ROADRUNNER,
-	  ELINK_FLAGS_MII,		0,
+	{ PCMCIA_PRODUCT_3COM_3CXEM556INT,	ELINK_CHIPSET_3C509,
+	  0,					0,
+	  PCMCIA_STR_3COM_3CXEM556INT },
+
+	{ PCMCIA_PRODUCT_3COM_3C574,		ELINK_CHIPSET_ROADRUNNER,
+	  ELINK_FLAGS_MII,			0,
 	  PCMCIA_STR_3COM_3C574 },
+
+	{ PCMCIA_PRODUCT_3COM_3CCFEM556BI,	ELINK_CHIPSET_ROADRUNNER,
+	  ELINK_FLAGS_MII,			0,
+	  PCMCIA_STR_3COM_3CCFEM556BI },
 
-	{ 0,				0,
-	  0,				0,
+	{ 0,					0,
+	  0,					0,
 	  NULL },
 };
 
@@ -231,7 +239,8 @@
 		return (ret);
 
 	if ((psc->sc_pf->sc->card.product == PCMCIA_PRODUCT_3COM_3C562) ||
-	    (psc->sc_pf->sc->card.product == PCMCIA_PRODUCT_3COM_3CXEM556)) {
+	    (psc->sc_pf->sc->card.product == PCMCIA_PRODUCT_3COM_3CXEM556) ||
+	    (psc->sc_pf->sc->card.product == PCMCIA_PRODUCT_3COM_3CXEM556INT)) {
 		int reg;
 
 		/* turn off the serial-disable bit */
@@ -341,6 +350,7 @@
 		 */
 		/* FALLTHROUGH */
 	case PCMCIA_PRODUCT_3COM_3C574:
+	case PCMCIA_PRODUCT_3COM_3CCFEM556BI:
 		/*
 		 * Apparently, some 3c574s do it this way, as well.
 		 */
Index: dev/pcmcia/pcmcia_cis_quirks.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/pcmcia_cis_quirks.c,v
retrieving revision 1.3
diff -u -r1.3 pcmcia_cis_quirks.c
--- pcmcia_cis_quirks.c	1998/12/29 09:00:28	1.3
+++ pcmcia_cis_quirks.c	2000/02/08 12:26:18
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcmcia_cis_quirks.c,v 1.3 1998/12/29 09:00:28 marc Exp $	*/
+/*	$NetBSD: pcmcia_cis_quirks.c,v 1.5 1999/10/11 17:50:21 thorpej Exp $	*/
 
 #define	PCMCIADEBUG
 
@@ -90,6 +90,48 @@
 	0,			/* maxtwins */
 };
 
+static struct pcmcia_function pcmcia_3ccfem556bi_func0 = {
+	0,			/* function number */
+	PCMCIA_FUNCTION_NETWORK,
+	0x07,			/* last cfe number */
+	0x1000,			/* ccr_base */
+	0x267,			/* ccr_mask */
+};
+
+static struct pcmcia_config_entry pcmcia_3ccfem556bi_func0_cfe0 = {
+	0x07,			/* cfe number */
+	PCMCIA_CFE_IO8 | PCMCIA_CFE_IO16 | PCMCIA_CFE_IRQLEVEL,
+	PCMCIA_IFTYPE_IO,
+	1,			/* num_iospace */
+	5,			/* iomask */
+	{ { 0x0020, 0 } },	/* iospace */
+	0xffff,			/* irqmask */
+	0,			/* num_memspace */
+	{ },			/* memspace */
+	0,			/* maxtwins */
+};
+
+static struct pcmcia_function pcmcia_3ccfem556bi_func1 = {
+	1,			/* function number */
+	PCMCIA_FUNCTION_SERIAL,
+	0x27,			/* last cfe number */
+	0x1100,			/* ccr_base */
+	0x277,			/* ccr_mask */
+};
+
+static struct pcmcia_config_entry pcmcia_3ccfem556bi_func1_cfe0 = {
+	0x27,			/* cfe number */
+	PCMCIA_CFE_IO8 | PCMCIA_CFE_IRQLEVEL,
+	PCMCIA_IFTYPE_IO,
+	1,			/* num_iospace */
+	3,			/* iomask */
+	{ { 0x0008, 0 } },	/* iospace */
+	0xffff,			/* irqmask */
+	0,			/* num_memspace */
+	{ },			/* memspace */
+	0,			/* maxtwins */
+};
+
 static struct pcmcia_function pcmcia_sveclancard_func0 = {
 	0,			/* function number */
 	PCMCIA_FUNCTION_NETWORK,
@@ -117,6 +159,16 @@
 	  &pcmcia_3cxem556_func0, &pcmcia_3cxem556_func0_cfe0 },
 	{ PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CXEM556, PCMCIA_CIS_INVALID,
 	  &pcmcia_3cxem556_func1, &pcmcia_3cxem556_func1_cfe0 },
+	{ PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CXEM556INT, PCMCIA_CIS_INVALID, 
+	  &pcmcia_3cxem556_func0, &pcmcia_3cxem556_func0_cfe0 },
+	{ PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CXEM556INT, PCMCIA_CIS_INVALID,
+	  &pcmcia_3cxem556_func1, &pcmcia_3cxem556_func1_cfe0 },
+	{ PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CCFEM556BI,
+	  PCMCIA_CIS_INVALID,
+	  &pcmcia_3ccfem556bi_func0, &pcmcia_3ccfem556bi_func0_cfe0 },
+	{ PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CCFEM556BI,
+	  PCMCIA_CIS_INVALID,
+	  &pcmcia_3ccfem556bi_func1, &pcmcia_3ccfem556bi_func1_cfe0 },
 	{ PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, PCMCIA_CIS_SVEC_LANCARD,
 	  &pcmcia_sveclancard_func0, &pcmcia_sveclancard_func0_cfe0 },
 };
Index: dev/pcmcia/pcmciadevs
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/pcmciadevs,v
retrieving revision 1.33.2.1
diff -u -r1.33.2.1 pcmciadevs
--- pcmciadevs	1999/04/27 13:53:47	1.33.2.1
+++ pcmciadevs	2000/02/08 12:26:18
@@ -73,6 +73,8 @@
 product 3COM 3C589		0x0589 3Com 3c589 10Mbps Ethernet
 product 3COM 3C574		0x0574 3Com 3c574-TX 10/100Mbps Ethernet
 product 3COM 3CXEM556		0x0035 3Com/Megahertz 3CXEM556 Ethernet/Modem
+product 3COM 3CXEM556INT	0x003d 3Com/Megahertz 3CXEM556-INT Ethernet/Modem
+product 3COM 3CCFEM556BI	0x0556 3Com/Megahertz 3CCFEM556BI Ethernet/Modem
 
 /* Compex Products */
 product COMPEX LINKPORT_ENET_B	0x0100 Compex Linkport ENET-B Ethernet
Index: dev/pcmcia/pcmciadevs.h
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/pcmciadevs.h,v
retrieving revision 1.36.2.1
diff -u -r1.36.2.1 pcmciadevs.h
--- pcmciadevs.h	1999/04/27 13:54:48	1.36.2.1
+++ pcmciadevs.h	2000/02/08 12:26:19
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcmciadevs.h,v 1.36.2.1 1999/04/27 13:54:48 perry Exp $	*/
+/*	$NetBSD$	*/
 
 /*
  * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -92,6 +92,12 @@
 #define	PCMCIA_CIS_3COM_3CXEM556	{ NULL, NULL, NULL, NULL }
 #define	PCMCIA_PRODUCT_3COM_3CXEM556	0x0035
 #define	PCMCIA_STR_3COM_3CXEM556	"3Com/Megahertz 3CXEM556 Ethernet/Modem"
+#define	PCMCIA_CIS_3COM_3CXEM556INT	{ NULL, NULL, NULL, NULL }
+#define	PCMCIA_PRODUCT_3COM_3CXEM556INT	0x003d
+#define	PCMCIA_STR_3COM_3CXEM556INT	"3Com/Megahertz 3CXEM556-INT Ethernet/Modem"
+#define	PCMCIA_CIS_3COM_3CCFEM556BI	{ NULL, NULL, NULL, NULL }
+#define	PCMCIA_PRODUCT_3COM_3CCFEM556BI	0x0556
+#define	PCMCIA_STR_3COM_3CCFEM556BI	"3Com/Megahertz 3CCFEM556BI Ethernet/Modem"
 
 /* Compex Products */
 #define	PCMCIA_CIS_COMPEX_LINKPORT_ENET_B	{ NULL, NULL, NULL, NULL }
Index: dev/pcmcia/pcmciadevs_data.h
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/pcmciadevs_data.h,v
retrieving revision 1.36.2.1
diff -u -r1.36.2.1 pcmciadevs_data.h
--- pcmciadevs_data.h	1999/04/27 13:54:48	1.36.2.1
+++ pcmciadevs_data.h	2000/02/08 12:26:19
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcmciadevs_data.h,v 1.36.2.1 1999/04/27 13:54:48 perry Exp $	*/
+/*	$NetBSD$	*/
 
 /*
  * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -85,6 +85,20 @@
 	    0,
 	    "3Com Corporation",
 	    "3Com/Megahertz 3CXEM556 Ethernet/Modem"	},
+	},
+	{
+	    PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CXEM556INT,
+	    PCMCIA_CIS_3COM_3CXEM556INT,
+	    0,
+	    "3Com Corporation",
+	    "3Com/Megahertz 3CXEM556-INT Ethernet/Modem"	},
+	},
+	{
+	    PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CCFEM556BI,
+	    PCMCIA_CIS_3COM_3CCFEM556BI,
+	    0,
+	    "3Com Corporation",
+	    "3Com/Megahertz 3CCFEM556BI Ethernet/Modem"	},
 	},
 	{
 	    PCMCIA_VENDOR_COMPEX, PCMCIA_PRODUCT_COMPEX_LINKPORT_ENET_B,