svn commit: r189567 - head/sys/dev/mii
Pyun YongHyeon
yongari at FreeBSD.org
Mon Mar 9 01:17:47 PDT 2009
Author: yongari
Date: Mon Mar 9 08:17:46 2009
New Revision: 189567
URL: http://svn.freebsd.org/changeset/base/189567
Log:
For IP1001 PHYs, read auto-negotiation advertisement register to
get default next page configuration. While I'm here explicitly set
IP1000PHY_ANAR_CSMA bit. This bit is read-only and always set
by hardware so setting it has no effect but it would clear the
intention. With this change controllers that couldn't establish
1000baseT link should work.
PR: kern/130846
Modified:
head/sys/dev/mii/ip1000phy.c
head/sys/dev/mii/ip1000phyreg.h
Modified: head/sys/dev/mii/ip1000phy.c
==============================================================================
--- head/sys/dev/mii/ip1000phy.c Mon Mar 9 08:09:06 2009 (r189566)
+++ head/sys/dev/mii/ip1000phy.c Mon Mar 9 08:17:46 2009 (r189567)
@@ -391,18 +391,24 @@ ip1000phy_status(struct mii_softc *sc)
}
static int
-ip1000phy_mii_phy_auto(struct mii_softc *mii)
+ip1000phy_mii_phy_auto(struct mii_softc *sc)
{
+ struct ip1000phy_softc *isc;
uint32_t reg;
- PHY_WRITE(mii, IP1000PHY_MII_ANAR,
- IP1000PHY_ANAR_10T | IP1000PHY_ANAR_10T_FDX |
+ isc = (struct ip1000phy_softc *)sc;
+ reg = 0;
+ if (isc->model == MII_MODEL_ICPLUS_IP1001)
+ reg = PHY_READ(sc, IP1000PHY_MII_ANAR);
+ reg |= IP1000PHY_ANAR_10T | IP1000PHY_ANAR_10T_FDX |
IP1000PHY_ANAR_100TX | IP1000PHY_ANAR_100TX_FDX |
- IP1000PHY_ANAR_PAUSE | IP1000PHY_ANAR_APAUSE);
+ IP1000PHY_ANAR_PAUSE | IP1000PHY_ANAR_APAUSE;
+ PHY_WRITE(sc, IP1000PHY_MII_ANAR, reg | IP1000PHY_ANAR_CSMA);
+
reg = IP1000PHY_1000CR_1000T | IP1000PHY_1000CR_1000T_FDX;
reg |= IP1000PHY_1000CR_MASTER;
- PHY_WRITE(mii, IP1000PHY_MII_1000CR, reg);
- PHY_WRITE(mii, IP1000PHY_MII_BMCR, (IP1000PHY_BMCR_FDX |
+ PHY_WRITE(sc, IP1000PHY_MII_1000CR, reg);
+ PHY_WRITE(sc, IP1000PHY_MII_BMCR, (IP1000PHY_BMCR_FDX |
IP1000PHY_BMCR_AUTOEN | IP1000PHY_BMCR_STARTNEG));
return (EJUSTRETURN);
Modified: head/sys/dev/mii/ip1000phyreg.h
==============================================================================
--- head/sys/dev/mii/ip1000phyreg.h Mon Mar 9 08:09:06 2009 (r189566)
+++ head/sys/dev/mii/ip1000phyreg.h Mon Mar 9 08:17:46 2009 (r189567)
@@ -61,6 +61,7 @@
/* Autonegotiation advertisement register */
#define IP1000PHY_MII_ANAR 0x04
+#define IP1000PHY_ANAR_CSMA 0x0001
#define IP1000PHY_ANAR_10T 0x0020
#define IP1000PHY_ANAR_10T_FDX 0x0040
#define IP1000PHY_ANAR_100TX 0x0080
More information about the svn-src-all
mailing list