summaryrefslogtreecommitdiffstats
path: root/sys/pci/if_xl.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2001-08-28 00:40:18 +0000
committerwpaul <wpaul@FreeBSD.org>2001-08-28 00:40:18 +0000
commitb2c362a82172340a68a716de5bd0051df0ad3641 (patch)
tree8b16f50d21c441f3aaaef4978e496143e7df171b /sys/pci/if_xl.c
parent0d6191f0277fc0b26d4c5a8e054d52da40448fc7 (diff)
downloadFreeBSD-src-b2c362a82172340a68a716de5bd0051df0ad3641.zip
FreeBSD-src-b2c362a82172340a68a716de5bd0051df0ad3641.tar.gz
Add support for the 3c656B cardbus adapter. This is one half of a
dual function card. It needs pretty much the same flags as the 656C, except that it seems to need both the INVERT_MII_PWR and INVERT_LED_PWR flags set. Tested with cardbus in -current as of today. Also added support for the 3c656, which looks to be the same as the 656B, except it doesn't need the EEPROM_8BIT flag. I think. This one is untested, but the added support should not break any of the other cards.
Diffstat (limited to 'sys/pci/if_xl.c')
-rw-r--r--sys/pci/if_xl.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/sys/pci/if_xl.c b/sys/pci/if_xl.c
index 76fdc2f..dca74ee 100644
--- a/sys/pci/if_xl.c
+++ b/sys/pci/if_xl.c
@@ -60,7 +60,9 @@
* 3Com 3c575TX 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
* 3Com 3c575B 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
* 3Com 3c575C 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
- * 3Com 3cxfem656c 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
+ * 3Com 3cxfem656 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
+ * 3Com 3cxfem656b 10/100Mbps/RJ-45 (Cardbus, Hurricane ASIC)
+ * 3Com 3cxfem656c 10/100Mbps/RJ-45 (Cardbus, Tornado ASIC)
* Dell Optiplex GX1 on-board 3c918 10/100Mbps/RJ-45
* Dell on-board 3c920 10/100Mbps/RJ-45
* Dell Precision on-board 3c905B 10/100Mbps/RJ-45
@@ -201,7 +203,11 @@ static struct xl_type xl_devs[] = {
"3Com 3c575B Fast Etherlink XL" },
{ TC_VENDORID, TC_DEVICEID_HURRICANE_575C,
"3Com 3c575C Fast Etherlink XL" },
- { TC_VENDORID, TC_DEVICEID_HURRICANE_656C,
+ { TC_VENDORID, TC_DEVICEID_HURRICANE_656,
+ "3Com 3c656 Fast Etherlink XL" },
+ { TC_VENDORID, TC_DEVICEID_HURRICANE_656B,
+ "3Com 3c656B Fast Etherlink XL" },
+ { TC_VENDORID, TC_DEVICEID_TORNADO_656C,
"3Com 3c656C Fast Etherlink XL" },
{ 0, 0, NULL }
};
@@ -1184,7 +1190,9 @@ static void xl_choose_xcvr(sc, verbose)
case TC_DEVICEID_HURRICANE_575A: /* 3c575TX */
case TC_DEVICEID_HURRICANE_575B: /* 3c575B */
case TC_DEVICEID_HURRICANE_575C: /* 3c575C */
- case TC_DEVICEID_HURRICANE_656C: /* 3c565C */
+ case TC_DEVICEID_HURRICANE_656: /* 3c656 */
+ case TC_DEVICEID_HURRICANE_656B: /* 3c656B */
+ case TC_DEVICEID_TORNADO_656C: /* 3c656C */
sc->xl_media = XL_MEDIAOPT_MII;
sc->xl_xcvr = XL_XCVR_MII;
if (verbose)
@@ -1257,15 +1265,22 @@ static int xl_attach(dev)
if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_575A ||
pci_get_device(dev) == TC_DEVICEID_HURRICANE_575B ||
pci_get_device(dev) == TC_DEVICEID_HURRICANE_575C ||
- pci_get_device(dev) == TC_DEVICEID_HURRICANE_656C)
+ pci_get_device(dev) == TC_DEVICEID_HURRICANE_656B ||
+ pci_get_device(dev) == TC_DEVICEID_TORNADO_656C)
sc->xl_flags |= XL_FLAG_FUNCREG | XL_FLAG_PHYOK |
XL_FLAG_EEPROM_OFFSET_30 | XL_FLAG_8BITROM;
+ if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_656)
+ sc->xl_flags |= XL_FLAG_FUNCREG | XL_FLAG_PHYOK;
if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_575B)
sc->xl_flags |= XL_FLAG_INVERT_LED_PWR;
if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_575C)
sc->xl_flags |= XL_FLAG_INVERT_MII_PWR;
- if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_656C)
+ if (pci_get_device(dev) == TC_DEVICEID_TORNADO_656C)
sc->xl_flags |= XL_FLAG_INVERT_MII_PWR;
+ if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_656 ||
+ pci_get_device(dev) == TC_DEVICEID_HURRICANE_656B)
+ sc->xl_flags |= XL_FLAG_INVERT_MII_PWR |
+ XL_FLAG_INVERT_LED_PWR;
/*
* If this is a 3c905B, we have to check one extra thing.
OpenPOWER on IntegriCloud