Commit 97c22438 authored by Andrew Lunn's avatar Andrew Lunn Committed by Jakub Kicinski

net: phy: Add support for polling cable test

Some PHYs are not capable of generating interrupts when a cable test
finished. They do however support interrupts for normal operations,
like link up/down. As such, the PHY state machine would normally not
poll the PHY.

Add support for indicating the PHY state machine must poll the PHY
when performing a cable test.
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a68a8138
...@@ -523,6 +523,8 @@ int phy_start_cable_test(struct phy_device *phydev, ...@@ -523,6 +523,8 @@ int phy_start_cable_test(struct phy_device *phydev,
phydev->state = PHY_CABLETEST; phydev->state = PHY_CABLETEST;
if (phy_polling_mode(phydev))
phy_trigger_machine(phydev);
out: out:
mutex_unlock(&phydev->lock); mutex_unlock(&phydev->lock);
......
...@@ -79,6 +79,7 @@ extern const int phy_10gbit_features_array[1]; ...@@ -79,6 +79,7 @@ extern const int phy_10gbit_features_array[1];
#define PHY_IS_INTERNAL 0x00000001 #define PHY_IS_INTERNAL 0x00000001
#define PHY_RST_AFTER_CLK_EN 0x00000002 #define PHY_RST_AFTER_CLK_EN 0x00000002
#define PHY_POLL_CABLE_TEST 0x00000004
#define MDIO_DEVICE_IS_PHY 0x80000000 #define MDIO_DEVICE_IS_PHY 0x80000000
/* Interface Mode definitions */ /* Interface Mode definitions */
...@@ -1061,6 +1062,10 @@ static inline bool phy_interrupt_is_valid(struct phy_device *phydev) ...@@ -1061,6 +1062,10 @@ static inline bool phy_interrupt_is_valid(struct phy_device *phydev)
*/ */
static inline bool phy_polling_mode(struct phy_device *phydev) static inline bool phy_polling_mode(struct phy_device *phydev)
{ {
if (phydev->state == PHY_CABLETEST)
if (phydev->drv->flags & PHY_POLL_CABLE_TEST)
return true;
return phydev->irq == PHY_POLL; return phydev->irq == PHY_POLL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment