Skip to content

Commit 6340f9f

Browse files
oleremdavem330
authored andcommitted
net: phy: migrate phy_init_eee() to genphy_c45_eee_is_active()
Reduce code duplicated by migrating phy_init_eee() to genphy_c45_eee_is_active(). Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5827b16 commit 6340f9f

File tree

1 file changed

+14
-75
lines changed

1 file changed

+14
-75
lines changed

drivers/net/phy/phy.c

Lines changed: 14 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,30 +1457,6 @@ void phy_mac_interrupt(struct phy_device *phydev)
14571457
}
14581458
EXPORT_SYMBOL(phy_mac_interrupt);
14591459

1460-
static void mmd_eee_adv_to_linkmode(unsigned long *advertising, u16 eee_adv)
1461-
{
1462-
linkmode_zero(advertising);
1463-
1464-
if (eee_adv & MDIO_EEE_100TX)
1465-
linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
1466-
advertising);
1467-
if (eee_adv & MDIO_EEE_1000T)
1468-
linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
1469-
advertising);
1470-
if (eee_adv & MDIO_EEE_10GT)
1471-
linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
1472-
advertising);
1473-
if (eee_adv & MDIO_EEE_1000KX)
1474-
linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseKX_Full_BIT,
1475-
advertising);
1476-
if (eee_adv & MDIO_EEE_10GKX4)
1477-
linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT,
1478-
advertising);
1479-
if (eee_adv & MDIO_EEE_10GKR)
1480-
linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseKR_Full_BIT,
1481-
advertising);
1482-
}
1483-
14841460
/**
14851461
* phy_init_eee - init and check the EEE feature
14861462
* @phydev: target phy_device struct
@@ -1493,62 +1469,25 @@ static void mmd_eee_adv_to_linkmode(unsigned long *advertising, u16 eee_adv)
14931469
*/
14941470
int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable)
14951471
{
1472+
int ret;
1473+
14961474
if (!phydev->drv)
14971475
return -EIO;
14981476

1499-
/* According to 802.3az,the EEE is supported only in full duplex-mode.
1500-
*/
1501-
if (phydev->duplex == DUPLEX_FULL) {
1502-
__ETHTOOL_DECLARE_LINK_MODE_MASK(common);
1503-
__ETHTOOL_DECLARE_LINK_MODE_MASK(lp);
1504-
__ETHTOOL_DECLARE_LINK_MODE_MASK(adv);
1505-
int eee_lp, eee_cap, eee_adv;
1506-
int status;
1507-
u32 cap;
1508-
1509-
/* Read phy status to properly get the right settings */
1510-
status = phy_read_status(phydev);
1511-
if (status)
1512-
return status;
1513-
1514-
/* First check if the EEE ability is supported */
1515-
eee_cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE);
1516-
if (eee_cap <= 0)
1517-
goto eee_exit_err;
1518-
1519-
cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap);
1520-
if (!cap)
1521-
goto eee_exit_err;
1522-
1523-
/* Check which link settings negotiated and verify it in
1524-
* the EEE advertising registers.
1525-
*/
1526-
eee_lp = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE);
1527-
if (eee_lp <= 0)
1528-
goto eee_exit_err;
1529-
1530-
eee_adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV);
1531-
if (eee_adv <= 0)
1532-
goto eee_exit_err;
1533-
1534-
mmd_eee_adv_to_linkmode(adv, eee_adv);
1535-
mmd_eee_adv_to_linkmode(lp, eee_lp);
1536-
linkmode_and(common, adv, lp);
1537-
1538-
if (!phy_check_valid(phydev->speed, phydev->duplex, common))
1539-
goto eee_exit_err;
1477+
ret = genphy_c45_eee_is_active(phydev, NULL, NULL, NULL);
1478+
if (ret < 0)
1479+
return ret;
1480+
if (!ret)
1481+
return -EPROTONOSUPPORT;
15401482

1541-
if (clk_stop_enable)
1542-
/* Configure the PHY to stop receiving xMII
1543-
* clock while it is signaling LPI.
1544-
*/
1545-
phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1,
1546-
MDIO_PCS_CTRL1_CLKSTOP_EN);
1483+
if (clk_stop_enable)
1484+
/* Configure the PHY to stop receiving xMII
1485+
* clock while it is signaling LPI.
1486+
*/
1487+
ret = phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1,
1488+
MDIO_PCS_CTRL1_CLKSTOP_EN);
15471489

1548-
return 0; /* EEE supported */
1549-
}
1550-
eee_exit_err:
1551-
return -EPROTONOSUPPORT;
1490+
return ret < 0 ? ret : 0;
15521491
}
15531492
EXPORT_SYMBOL(phy_init_eee);
15541493

0 commit comments

Comments
 (0)