diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2014-08-23 03:55:44 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-08-23 20:39:09 +0200 |
commit | a9f6309585cbefa4a7f08c9017ca482c3222323a (patch) | |
tree | 954313a4638dfca0e7cab923dff7057c28789641 /drivers/net/phy | |
parent | net: phy: export phy_{read,write}_mmd_indirect (diff) | |
download | linux-a9f6309585cbefa4a7f08c9017ca482c3222323a.tar.xz linux-a9f6309585cbefa4a7f08c9017ca482c3222323a.zip |
net: phy: allow phy_init_eee() to work with internal PHYs
Internal PHYs do not have any specific phy_interface_t defined because
they are within an Ethernet MAC or a larger IC, they will fail the early
check in phy_init_eee(). Allow these PHYs to proceed with EEE
initialization and report error/success by checking the standard C45
EEE-related registers.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r-- | drivers/net/phy/phy.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index e7a5893f32ff..932190e04d08 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1019,12 +1019,14 @@ int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable) { /* According to 802.3az,the EEE is supported only in full duplex-mode. * Also EEE feature is active when core is operating with MII, GMII - * or RGMII. + * or RGMII. Internal PHYs are also allowed to proceed and should + * return an error if they do not support EEE. */ if ((phydev->duplex == DUPLEX_FULL) && ((phydev->interface == PHY_INTERFACE_MODE_MII) || (phydev->interface == PHY_INTERFACE_MODE_GMII) || - (phydev->interface == PHY_INTERFACE_MODE_RGMII))) { + (phydev->interface == PHY_INTERFACE_MODE_RGMII) || + phy_is_internal(phydev))) { int eee_lp, eee_cap, eee_adv; u32 lp, cap, adv; int status; |