svn commit: r189843 - head/sys/dev/fe

Warner Losh imp at FreeBSD.org
Sat Mar 14 19:31:35 PDT 2009


Author: imp
Date: Sun Mar 15 02:31:34 2009
New Revision: 189843
URL: http://svn.freebsd.org/changeset/base/189843

Log:
  Generalize the workaround for the Hitachi HT-4840-11.  The Contec
  C-NET(PC) has a cfe at location 1 that has both an odd irq mask (it
  matches pc98 machines, so maybe it was a flag for pc98 operation) as
  well as a memory map.  Since this driver doesn't know how to cope, we
  start with cfe2, which is purely an I/O space mapped and that seems to
  make it work.  I say 'seems' here, because the card I have doesn't
  seem to have the right dongle for full testing...

Modified:
  head/sys/dev/fe/if_fe_pccard.c

Modified: head/sys/dev/fe/if_fe_pccard.c
==============================================================================
--- head/sys/dev/fe/if_fe_pccard.c	Sun Mar 15 01:39:16 2009	(r189842)
+++ head/sys/dev/fe/if_fe_pccard.c	Sun Mar 15 02:31:34 2009	(r189843)
@@ -62,9 +62,10 @@ static int fe_pccard_detach(device_t);
 static const struct fe_pccard_product {
 	struct pccard_product mpp_product;
 	int mpp_flags;
+	int mpp_cfe;
 #define MPP_MBH10302 1
 #define MPP_ANYFUNC 2
-#define MPP_SKIP_TO_CFE_10 4
+#define MPP_SKIP_TO_CFE 4
 } fe_pccard_products[] = {
 	/* These need to be first */
 	{ PCMCIA_CARD(FUJITSU2, FMV_J181), MPP_MBH10302 },
@@ -77,11 +78,11 @@ static const struct fe_pccard_product {
 #if 0 /* XXX 86960-based? */
 	{ PCMCIA_CARD(TDK, LAK_DFL9610), 0 }, 
 #endif
-	{ PCMCIA_CARD(CONTEC, CNETPC), 0 },
+	{ PCMCIA_CARD(CONTEC, CNETPC), MPP_SKIP_TO_CFE, 2 },
 	{ PCMCIA_CARD(FUJITSU, LA501), 0 },
 	{ PCMCIA_CARD(FUJITSU, LA10S), 0 },
 	{ PCMCIA_CARD(FUJITSU, NE200T), MPP_MBH10302 },/* Sold by Eagle */
-	{ PCMCIA_CARD(HITACHI, HT_4840), MPP_MBH10302 | MPP_SKIP_TO_CFE_10},
+	{ PCMCIA_CARD(HITACHI, HT_4840), MPP_MBH10302 | MPP_SKIP_TO_CFE, 10 },
 	{ PCMCIA_CARD(RATOC, REX_R280), 0 },
 	{ PCMCIA_CARD(XIRCOM, CE), MPP_ANYFUNC },
 	{ { NULL } }
@@ -108,13 +109,13 @@ fe_pccard_probe(device_t dev)
 			return (error);
 		if (fcn != PCCARD_FUNCTION_NETWORK)
 			return (ENXIO);
-		if (pp->mpp_flags & MPP_SKIP_TO_CFE_10) {
-			for (i = 10; i < 27; i++) {
+		if (pp->mpp_flags & MPP_SKIP_TO_CFE) {
+			for (i = pp->mpp_cfe; i < 32; i++) {
 				if (pccard_select_cfe(dev, i) == 0)
 					goto good;
 			}
 			device_printf(dev,
-			    "Hitachi HT-4840-11 workaround failed\n");
+			    "Failed to map CFE %d or higher\n", pp->mpp_cfe);
 			return ENXIO;
 		}
 	good:;


More information about the svn-src-head mailing list