* [PATCH 2.6.10-bk9] pcnet32: 79c976 with fiber optic fix
@ 2005-01-07 17:32 Don Fry
0 siblings, 0 replies; only message in thread
From: Don Fry @ 2005-01-07 17:32 UTC (permalink / raw)
To: tsbogend, jgarzik, netdev
After testing this patch I agree that it should be applied. The one
change I made was to print the device name (ethN) instead of 'pcnet32'.
Tested ia32.
From: Guido Guenther <agx@sigxcpu.org>,
Lars Munch <lars@segv.dk>
Skip PHY selection on Allied Telesyn 2701FX, it looses the link otherwise.
Fix up the AT 2700FX as well.
Signed-Off-By: Guido Guenther <agx@sigxcpu.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
signed-off-by: Don Fry <brazilnut@us.ibm.com>
---
25-akpm/drivers/net/pcnet32.c | 47 ++++++++++++++++++++++++----------------
25-akpm/include/linux/pci_ids.h | 5 ++++
2 files changed, 34 insertions(+), 18 deletions(-)
diff -puN drivers/net/pcnet32.c~pcnet32-79c976-with-fiber-optic drivers/net/pcnet32.c
--- 25/drivers/net/pcnet32.c~pcnet32-79c976-with-fiber-optic 2005-01-04 21:57:35.666712120 -0800
+++ 25-akpm/drivers/net/pcnet32.c 2005-01-04 21:57:35.673711056 -0800
@@ -1429,25 +1429,36 @@ pcnet32_open(struct net_device *dev)
val |= 0x10;
lp->a.write_csr (ioaddr, 124, val);
- /* 24 Jun 2004 according AMD, in order to change the PHY,
- * DANAS (or DISPM for 79C976) must be set; then select the speed,
- * duplex, and/or enable auto negotiation, and clear DANAS */
- if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
- lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
- /* disable Auto Negotiation, set 10Mpbs, HD */
- val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
- if (lp->options & PCNET32_PORT_FD)
- val |= 0x10;
- if (lp->options & PCNET32_PORT_100)
- val |= 0x08;
- lp->a.write_bcr (ioaddr, 32, val);
+ /* Allied Telesyn AT 2700/2701 FX looses the link, so skip that */
+ if (lp->pci_dev->subsystem_vendor == PCI_VENDOR_ID_AT &&
+ (lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2700FX ||
+ lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2701FX)) {
+ printk(KERN_DEBUG "%s: Skipping PHY selection.\n", dev->name);
} else {
- if (lp->options & PCNET32_PORT_ASEL) {
- lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
- /* enable auto negotiate, setup, disable fd */
- val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
- val |= 0x20;
- lp->a.write_bcr(ioaddr, 32, val);
+ /*
+ * 24 Jun 2004 according AMD, in order to change the PHY,
+ * DANAS (or DISPM for 79C976) must be set; then select the speed,
+ * duplex, and/or enable auto negotiation, and clear DANAS
+ */
+ if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
+ lp->a.write_bcr(ioaddr, 32,
+ lp->a.read_bcr(ioaddr, 32) | 0x0080);
+ /* disable Auto Negotiation, set 10Mpbs, HD */
+ val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
+ if (lp->options & PCNET32_PORT_FD)
+ val |= 0x10;
+ if (lp->options & PCNET32_PORT_100)
+ val |= 0x08;
+ lp->a.write_bcr (ioaddr, 32, val);
+ } else {
+ if (lp->options & PCNET32_PORT_ASEL) {
+ lp->a.write_bcr(ioaddr, 32,
+ lp->a.read_bcr(ioaddr, 32) | 0x0080);
+ /* enable auto negotiate, setup, disable fd */
+ val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
+ val |= 0x20;
+ lp->a.write_bcr(ioaddr, 32, val);
+ }
}
}
diff -puN include/linux/pci_ids.h~pcnet32-79c976-with-fiber-optic include/linux/pci_ids.h
--- 25/include/linux/pci_ids.h~pcnet32-79c976-with-fiber-optic 2005-01-04 21:57:35.669711664 -0800
+++ 25-akpm/include/linux/pci_ids.h 2005-01-04 21:57:35.676710600 -0800
@@ -1644,6 +1644,11 @@
#define PCI_DEVICE_ID_OPTIBASE_VPLEXCC 0x2120
#define PCI_DEVICE_ID_OPTIBASE_VQUEST 0x2130
+/* Allied Telesyn */
+#define PCI_VENDOR_ID_AT 0x1259
+#define PCI_SUBDEVICE_ID_AT_2700FX 0x2701
+#define PCI_SUBDEVICE_ID_AT_2701FX 0x2703
+
#define PCI_VENDOR_ID_ESS 0x125d
#define PCI_DEVICE_ID_ESS_ESS1968 0x1968
#define PCI_DEVICE_ID_ESS_AUDIOPCI 0x1969
_
--
Don Fry
brazilnut@us.ibm.com
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-01-07 17:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-07 17:32 [PATCH 2.6.10-bk9] pcnet32: 79c976 with fiber optic fix Don Fry
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.