staticvoid rockchip_link_change_notify(struct phy_device *phydev)
{ /* *Ifmodeswitchhappensfrom10BTto100BT,allDSP/AFE *registersaresettodefaultvalues.SoanyAFE/DSP *registershavetobere-initializedinthiscase.
*/ if (phydev->state == PHY_RUNNING && phydev->speed == SPEED_100) { int ret = rockchip_integrated_phy_analog_init(phydev);
if (ret)
phydev_err(phydev, "rockchip_integrated_phy_analog_init err: %d.\n",
ret);
}
}
staticint rockchip_set_polarity(struct phy_device *phydev, int polarity)
{ int reg, err, val;
/* get the current settings */
reg = phy_read(phydev, MII_INTERNAL_CTRL_STATUS); if (reg < 0) return reg;
reg &= ~MII_AUTO_MDIX_EN;
val = reg; switch (polarity) { case ETH_TP_MDI:
val &= ~MII_MDIX_EN; break; case ETH_TP_MDI_X:
val |= MII_MDIX_EN; break; case ETH_TP_MDI_AUTO: case ETH_TP_MDI_INVALID: default: return0;
}
if (val != reg) { /* Set the new polarity value in the register */
err = phy_write(phydev, MII_INTERNAL_CTRL_STATUS, val); if (err) return err;
}
return0;
}
staticint rockchip_config_aneg(struct phy_device *phydev)
{ int err;
err = rockchip_set_polarity(phydev, phydev->mdix); if (err < 0) return err;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.