summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsilby <silby@FreeBSD.org>2002-10-22 02:33:50 +0000
committersilby <silby@FreeBSD.org>2002-10-22 02:33:50 +0000
commit2189f14fb731d78e03cf2731217ce6d0422a675e (patch)
treecf276417fd172d6f9d794b4bc3a29ed9eee112d9 /sys
parent94b30e0ab56f1ea0567adc39582f2a02f9c28344 (diff)
downloadFreeBSD-src-2189f14fb731d78e03cf2731217ce6d0422a675e.zip
FreeBSD-src-2189f14fb731d78e03cf2731217ce6d0422a675e.tar.gz
Add some magic bits necessary to turn the transmitter on for some
(newer) 556B chips. Requested & tested by: Dinesh Nambisan <dinesh@nambisan.net> Magic bits found by: Dave Dribin & Donald Becker MFC After: 3 days
Diffstat (limited to 'sys')
-rw-r--r--sys/pci/if_xl.c7
-rw-r--r--sys/pci/if_xlreg.h3
2 files changed, 10 insertions, 0 deletions
diff --git a/sys/pci/if_xl.c b/sys/pci/if_xl.c
index 20921e9..2487b33 100644
--- a/sys/pci/if_xl.c
+++ b/sys/pci/if_xl.c
@@ -1271,6 +1271,8 @@ xl_attach(dev)
XL_FLAG_INVERT_LED_PWR | XL_FLAG_INVERT_MII_PWR;
if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_556)
sc->xl_flags |= XL_FLAG_8BITROM;
+ if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_556B)
+ sc->xl_flags |= XL_FLAG_NO_XCVR_PWR;
if (pci_get_device(dev) == TC_DEVICEID_HURRICANE_575A ||
pci_get_device(dev) == TC_DEVICEID_HURRICANE_575B ||
@@ -1623,6 +1625,11 @@ xl_attach(dev)
done:
+ if (sc->xl_flags & XL_FLAG_NO_XCVR_PWR) {
+ XL_SEL_WIN(0);
+ CSR_WRITE_2(sc, XL_W0_MFG_ID, XL_NO_XCVR_PWR_MAGICBITS);
+ }
+
/*
* Call MI attach routine.
*/
diff --git a/sys/pci/if_xlreg.h b/sys/pci/if_xlreg.h
index d255752..f373f02 100644
--- a/sys/pci/if_xlreg.h
+++ b/sys/pci/if_xlreg.h
@@ -560,6 +560,9 @@ struct xl_mii_frame {
#define XL_FLAG_8BITROM 0x0010
#define XL_FLAG_INVERT_LED_PWR 0x0020
#define XL_FLAG_INVERT_MII_PWR 0x0040
+#define XL_FLAG_NO_XCVR_PWR 0x0080
+
+#define XL_NO_XCVR_PWR_MAGICBITS 0x0900
struct xl_softc {
struct arpcom arpcom; /* interface info */
OpenPOWER on IntegriCloud