]> git.itanic.dy.fi Git - linux-stable/blobdiff - drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c
mlxbf_gige: clear MDIO gateway lock after read
[linux-stable] / drivers / net / ethernet / mellanox / mlxbf_gige / mlxbf_gige_mdio.c
index 85155cd9405c57af5731fbacd922697ebef7e2ae..4aeb927c37153aa6bf39f2f4b1fd92932aa5d8ac 100644 (file)
@@ -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;
 }