staticint cbtx_soft_reset(struct phy_device *phydev)
{ int ret;
/* Can't soft reset unless we remove PHY from true power down mode */
ret = phy_clear_bits(phydev, CBTX_PDOWN_CTRL,
CBTX_PDOWN_CTL_TRUE_PDOWN); if (ret) return ret;
return genphy_soft_reset(phydev);
}
staticint cbtx_config_init(struct phy_device *phydev)
{ /* Wait for cbtx_config_aneg() to kick in and apply this */
phydev->mdix_ctrl = ETH_TP_MDI_AUTO;
return 0;
}
staticint cbtx_mdix_status(struct phy_device *phydev)
{ int ret;
ret = phy_read(phydev, CBTX_MODE_CTRL_STAT); if (ret < 0) return ret;
staticint cbtx_read_status(struct phy_device *phydev)
{ int ret;
ret = cbtx_mdix_status(phydev); if (ret) return ret;
return genphy_read_status(phydev);
}
staticint cbtx_mdix_config(struct phy_device *phydev)
{ int ret;
switch (phydev->mdix_ctrl) { case ETH_TP_MDI_AUTO: return phy_set_bits(phydev, CBTX_MODE_CTRL_STAT,
CBTX_MODE_CTRL_STAT_AUTO_MDIX_EN); case ETH_TP_MDI:
ret = phy_clear_bits(phydev, CBTX_MODE_CTRL_STAT,
CBTX_MODE_CTRL_STAT_AUTO_MDIX_EN); if (ret) return ret;
return phy_clear_bits(phydev, CBTX_MODE_CTRL_STAT,
CBTX_MODE_CTRL_STAT_MDIX_MODE); case ETH_TP_MDI_X:
ret = phy_clear_bits(phydev, CBTX_MODE_CTRL_STAT,
CBTX_MODE_CTRL_STAT_AUTO_MDIX_EN); if (ret) return ret;
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.