Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/axgbe/xgbe-phy-v2.c
Show First 20 Lines • Show All 2,700 Lines • ▼ Show 20 Lines | xgbe_upd_link(struct xgbe_prv_data *pdata) | ||||
axgbe_printf(2, "Link: %d updated reg %#x\n", pdata->phy.link, reg); | axgbe_printf(2, "Link: %d updated reg %#x\n", pdata->phy.link, reg); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
xgbe_phy_read_status(struct xgbe_prv_data *pdata) | xgbe_phy_read_status(struct xgbe_prv_data *pdata) | ||||
{ | { | ||||
int common_adv_gb; | int common_adv_gb = 0; | ||||
int common_adv; | int common_adv; | ||||
int lpagb = 0; | int lpagb = 0; | ||||
int adv, lpa; | int adv, lpa; | ||||
int ret; | int ret; | ||||
ret = xgbe_upd_link(pdata); | ret = xgbe_upd_link(pdata); | ||||
if (ret) { | if (ret) { | ||||
axgbe_printf(2, "Link Update return %d\n", ret); | axgbe_printf(2, "Link Update return %d\n", ret); | ||||
Show All 18 Lines | if (pdata->phy.supported == SUPPORTED_1000baseT_Half || | ||||
axgbe_printf(2, "Master/Slave Resolution " | axgbe_printf(2, "Master/Slave Resolution " | ||||
"failed, maybe conflicting manual settings\n"); | "failed, maybe conflicting manual settings\n"); | ||||
else | else | ||||
axgbe_printf(2, "Master/Slave Resolution failed\n"); | axgbe_printf(2, "Master/Slave Resolution failed\n"); | ||||
return (-ENOLINK); | return (-ENOLINK); | ||||
} | } | ||||
if (pdata->phy.supported == SUPPORTED_1000baseT_Half) | if (pdata->phy.supported == SUPPORTED_1000baseT_Half) | ||||
XGBE_ADV(&pdata->phy, 1000baseT_Half); | XGBE_SET_ADV(&pdata->phy, 1000baseT_Half); | ||||
else if (pdata->phy.supported == SUPPORTED_1000baseT_Full) | else if (pdata->phy.supported == SUPPORTED_1000baseT_Full) | ||||
XGBE_ADV(&pdata->phy, 1000baseT_Full); | XGBE_SET_ADV(&pdata->phy, 1000baseT_Full); | ||||
common_adv_gb = lpagb & adv << 2; | common_adv_gb = lpagb & adv << 2; | ||||
} | } | ||||
lpa = xgbe_phy_mii_read(pdata, pdata->mdio_addr, MII_ANLPAR); | lpa = xgbe_phy_mii_read(pdata, pdata->mdio_addr, MII_ANLPAR); | ||||
if (lpa < 0) | if (lpa < 0) | ||||
return (lpa); | return (lpa); | ||||
if (pdata->phy.supported == SUPPORTED_Autoneg) | if (pdata->phy.supported == SUPPORTED_Autoneg) | ||||
XGBE_ADV(&pdata->phy, Autoneg); | XGBE_SET_ADV(&pdata->phy, Autoneg); | ||||
adv = xgbe_phy_mii_read(pdata, pdata->mdio_addr, MII_ANAR); | adv = xgbe_phy_mii_read(pdata, pdata->mdio_addr, MII_ANAR); | ||||
if (adv < 0) | if (adv < 0) | ||||
return (adv); | return (adv); | ||||
common_adv = lpa & adv; | common_adv = lpa & adv; | ||||
pdata->phy.speed = SPEED_10; | pdata->phy.speed = SPEED_10; | ||||
▲ Show 20 Lines • Show All 1,007 Lines • Show Last 20 Lines |