From f94dfca5261370e958ab0884a4bf8c736ba6752c Mon Sep 17 00:00:00 2001 From: yongari Date: Tue, 9 Sep 2008 10:19:48 +0000 Subject: Add workaround for CRC errors seen at 100Mbps on JMC250 A2. While here update chip revision number of JMC250/JMC260 from the latest datasheet. --- sys/dev/jme/if_jme.c | 13 +++++++++++++ sys/dev/jme/if_jmereg.h | 5 +++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/sys/dev/jme/if_jme.c b/sys/dev/jme/if_jme.c index 2096d4a..231f65a 100644 --- a/sys/dev/jme/if_jme.c +++ b/sys/dev/jme/if_jme.c @@ -1996,6 +1996,19 @@ jme_mac_config(struct jme_softc *sc) default: break; } + /* Workaround CRC errors at 100Mbps on JMC250 A2. */ + if (sc->jme_rev == DEVICEID_JMC250 && + sc->jme_chip_rev == DEVICEREVID_JMC250_A2) { + if (IFM_SUBTYPE(mii->mii_media_active) == IFM_100_TX) { + /* Extend interface FIFO depth. */ + jme_miibus_writereg(sc->jme_dev, sc->jme_phyaddr, + 0x1B, 0x0000); + } else { + /* Select default interface FIFO depth. */ + jme_miibus_writereg(sc->jme_dev, sc->jme_phyaddr, + 0x1B, 0x0004); + } + } CSR_WRITE_4(sc, JME_GHC, ghc); CSR_WRITE_4(sc, JME_RXMAC, rxmac); CSR_WRITE_4(sc, JME_TXMAC, txmac); diff --git a/sys/dev/jme/if_jmereg.h b/sys/dev/jme/if_jmereg.h index 78ce94f..a796a8b 100644 --- a/sys/dev/jme/if_jmereg.h +++ b/sys/dev/jme/if_jmereg.h @@ -39,13 +39,14 @@ * JMC250 PCI device ID */ #define DEVICEID_JMC250 0x0250 -#define DEVICEREVID_JMC250 0x10 +#define DEVICEREVID_JMC250_A0 0x00 +#define DEVICEREVID_JMC250_A2 0x11 /* * JMC260 PCI device ID */ #define DEVICEID_JMC260 0x0260 -#define DEVICEREVID_JMC260 0x20 +#define DEVICEREVID_JMC260_A0 0x00 /* JMC250 PCI configuration register. */ #define JME_PCI_BAR0 0x10 /* 16KB memory window. */ -- cgit v1.1