mlxbf_gige: clear MDIO gateway lock after read
The MDIO gateway (GW) lock in BlueField-2 GIGE logic is
set after read. This patch adds logic to make sure the
lock is always cleared at the end of each MDIO transaction.
Fixes: f92e1869d7
("Add Mellanox BlueField Gigabit Ethernet driver")
Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: David Thompson <davthompson@nvidia.com>
Link: https://lore.kernel.org/r/20220902164247.19862-1-davthompson@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9662895186
commit
182447b121
|
@ -179,6 +179,9 @@ static int mlxbf_gige_mdio_read(struct mii_bus *bus, int phy_add, int phy_reg)
|
|||
/* Only return ad bits of the gw register */
|
||||
ret &= MLXBF_GIGE_MDIO_GW_AD_MASK;
|
||||
|
||||
/* The MDIO lock is set on read. To release it, clear gw register */
|
||||
writel(0, priv->mdio_io + MLXBF_GIGE_MDIO_GW_OFFSET);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -203,6 +206,9 @@ static int mlxbf_gige_mdio_write(struct mii_bus *bus, int phy_add,
|
|||
temp, !(temp & MLXBF_GIGE_MDIO_GW_BUSY_MASK),
|
||||
5, 1000000);
|
||||
|
||||
/* The MDIO lock is set on read. To release it, clear gw register */
|
||||
writel(0, priv->mdio_io + MLXBF_GIGE_MDIO_GW_OFFSET);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue