diff options
Diffstat (limited to 'sys/dev/sk')
-rw-r--r-- | sys/dev/sk/if_sk.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c index c8cd956..5a8c959 100644 --- a/sys/dev/sk/if_sk.c +++ b/sys/dev/sk/if_sk.c @@ -545,9 +545,6 @@ sk_xmac_miibus_readreg(sc_if, phy, reg) { int i; - if (sc_if->sk_phytype == SK_PHYTYPE_XMAC && phy != 0) - return(0); - SK_XM_WRITE_2(sc_if, XM_PHY_ADDR, reg|(phy << 8)); SK_XM_READ_2(sc_if, XM_PHY_DATA); if (sc_if->sk_phytype != SK_PHYTYPE_XMAC) { @@ -628,9 +625,8 @@ sk_marv_miibus_readreg(sc_if, phy, reg) u_int16_t val; int i; - if (phy != 0 || - (sc_if->sk_phytype != SK_PHYTYPE_MARV_COPPER && - sc_if->sk_phytype != SK_PHYTYPE_MARV_FIBER)) { + if (sc_if->sk_phytype != SK_PHYTYPE_MARV_COPPER && + sc_if->sk_phytype != SK_PHYTYPE_MARV_FIBER) { return(0); } @@ -1323,7 +1319,7 @@ sk_attach(dev) struct sk_softc *sc; struct sk_if_softc *sc_if; struct ifnet *ifp; - int i, port, error; + int error, i, phy, port; u_char eaddr[6]; if (dev == NULL) @@ -1496,23 +1492,27 @@ sk_attach(dev) /* * Do miibus setup. */ + phy = MII_PHY_ANY; switch (sc->sk_type) { case SK_GENESIS: sk_init_xmac(sc_if); + if (sc_if->sk_phytype == SK_PHYTYPE_XMAC) + phy = 0; break; case SK_YUKON: case SK_YUKON_LITE: case SK_YUKON_LP: sk_init_yukon(sc_if); + phy = 0; break; } SK_IF_UNLOCK(sc_if); - if (mii_phy_probe(dev, &sc_if->sk_miibus, - sk_ifmedia_upd, sk_ifmedia_sts)) { - device_printf(sc_if->sk_if_dev, "no PHY found!\n"); + error = mii_attach(dev, &sc_if->sk_miibus, ifp, sk_ifmedia_upd, + sk_ifmedia_sts, BMSR_DEFCAPMASK, phy, MII_OFFSET_ANY, 0); + if (error != 0) { + device_printf(sc_if->sk_if_dev, "attaching PHYs failed\n"); ether_ifdetach(ifp); - error = ENXIO; goto fail; } |