Commit 81d56f56 authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch 'net-mdio-mdio-bcm-unimac-optimizations-and-clean-up'

Justin Chen says:

====================
net: mdio: mdio-bcm-unimac: optimizations and clean up

Clean up mdio poll to use read_poll_timeout() and reduce the potential
poll time.
====================

Link: https://lore.kernel.org/r/20231213222744.2891184-1-justin.chen@broadcom.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents c2d919cd 54a600ed
...@@ -73,24 +73,19 @@ static inline void unimac_mdio_start(struct unimac_mdio_priv *priv) ...@@ -73,24 +73,19 @@ static inline void unimac_mdio_start(struct unimac_mdio_priv *priv)
unimac_mdio_writel(priv, reg, MDIO_CMD); unimac_mdio_writel(priv, reg, MDIO_CMD);
} }
static inline unsigned int unimac_mdio_busy(struct unimac_mdio_priv *priv)
{
return unimac_mdio_readl(priv, MDIO_CMD) & MDIO_START_BUSY;
}
static int unimac_mdio_poll(void *wait_func_data) static int unimac_mdio_poll(void *wait_func_data)
{ {
struct unimac_mdio_priv *priv = wait_func_data; struct unimac_mdio_priv *priv = wait_func_data;
unsigned int timeout = 1000; u32 val;
do { /*
if (!unimac_mdio_busy(priv)) * C22 transactions should take ~25 usec, will need to adjust
return 0; * if C45 support is added.
*/
usleep_range(1000, 2000); udelay(30);
} while (--timeout);
return -ETIMEDOUT; return read_poll_timeout(unimac_mdio_readl, val, !(val & MDIO_START_BUSY),
2000, 100000, false, priv, MDIO_CMD);
} }
static int unimac_mdio_read(struct mii_bus *bus, int phy_id, int reg) static int unimac_mdio_read(struct mii_bus *bus, int phy_id, int reg)
......
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