summaryrefslogtreecommitdiff
path: root/sys/dev/mii
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mii')
-rw-r--r--sys/dev/mii/ipgphy.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/mii/ipgphy.c b/sys/dev/mii/ipgphy.c
index e1c0f724177..f715d96d0a4 100644
--- a/sys/dev/mii/ipgphy.c
+++ b/sys/dev/mii/ipgphy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ipgphy.c,v 1.14 2011/04/07 15:30:16 miod Exp $ */
+/* $OpenBSD: ipgphy.c,v 1.15 2013/03/14 17:02:15 brad Exp $ */
/*-
* Copyright (c) 2006, Pyun YongHyeon <yongari@FreeBSD.org>
@@ -114,6 +114,7 @@ ipgphy_attach(struct device *parent, struct device *self, void *aux)
sc->mii_funcs = &ipgphy_funcs;
sc->mii_model = MII_MODEL(ma->mii_id2);
sc->mii_pdata = mii;
+ sc->mii_flags = ma->mii_flags;
sc->mii_flags |= MIIF_NOISOLATE;
@@ -355,6 +356,7 @@ ipgphy_mii_phy_auto(struct mii_softc *sc)
if (sc->mii_model == MII_MODEL_ICPLUS_IP1001) {
reg = PHY_READ(sc, IPGPHY_MII_ANAR);
+ reg &= ~(IPGPHY_ANAR_PAUSE | IPGPHY_ANAR_APAUSE);
reg |= IPGPHY_ANAR_NP;
}
@@ -367,7 +369,8 @@ ipgphy_mii_phy_auto(struct mii_softc *sc)
PHY_WRITE(sc, IPGPHY_MII_ANAR, reg | IPGPHY_ANAR_CSMA);
reg = IPGPHY_1000CR_1000T | IPGPHY_1000CR_1000T_FDX;
- reg |= IPGPHY_1000CR_MASTER;
+ if (sc->mii_model != MII_MODEL_ICPLUS_IP1001)
+ reg |= IPGPHY_1000CR_MASTER;
PHY_WRITE(sc, IPGPHY_MII_1000CR, reg);
PHY_WRITE(sc, IPGPHY_MII_BMCR, (IPGPHY_BMCR_FDX |