コード例 #1
0
ファイル: ip1000phy.c プロジェクト: Gwenio/DragonFlyBSD
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);
	}
}
コード例 #2
0
ファイル: ip1000phy.c プロジェクト: hmatyschok/MeshBSD
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);
}