static void ip1000phy_reset(struct mii_softc *sc) { struct stge_softc *stge_sc; device_t parent; uint32_t reg; mii_phy_reset(sc); /* clear autoneg/full-duplex as we don't want it after reset */ reg = PHY_READ(sc, IP1000PHY_MII_BMCR); reg &= ~(IP1000PHY_BMCR_AUTOEN | IP1000PHY_BMCR_FDX); PHY_WRITE(sc, MII_BMCR, reg); /* * XXX There should be more general way to pass PHY specific * data via mii interface. */ parent = device_get_parent(sc->mii_dev); if (strncmp(device_get_name(parent), "stge", 4) == 0) { stge_sc = device_get_softc(parent); if (stge_sc->sc_rev >= 0x40 && stge_sc->sc_rev <= 0x4e) ip1000phy_load_dspcode(sc); } }
static void ip1000phy_reset(struct mii_softc *sc) { uint32_t reg; mii_phy_reset(sc); /* clear autoneg/full-duplex as we don't want it after reset */ reg = PHY_READ(sc, IP1000PHY_MII_BMCR); reg &= ~(IP1000PHY_BMCR_AUTOEN | IP1000PHY_BMCR_FDX); PHY_WRITE(sc, MII_BMCR, reg); if ((sc->mii_flags & MIIF_PHYPRIV0) != 0) ip1000phy_load_dspcode(sc); }