diff options
Diffstat (limited to 'target/linux/mediatek/patches-5.10/701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch')
-rw-r--r-- | target/linux/mediatek/patches-5.10/701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/target/linux/mediatek/patches-5.10/701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch b/target/linux/mediatek/patches-5.10/701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch new file mode 100644 index 0000000000..696b68df47 --- /dev/null +++ b/target/linux/mediatek/patches-5.10/701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch @@ -0,0 +1,97 @@ +From patchwork Mon Dec 27 18:31:09 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org> +X-Patchwork-Id: 12699993 +X-Patchwork-Delegate: kuba@kernel.org +Return-Path: <netdev-owner@kernel.org> +Date: Mon, 27 Dec 2021 18:31:09 +0000 +From: Daniel Golle <daniel@makrotopia.org> +To: linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, + linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org +Cc: Felix Fietkau <nbd@nbd.name>, John Crispin <john@phrozen.org>, + Sean Wang <sean.wang@mediatek.com>, + Mark Lee <Mark-MC.Lee@mediatek.com>, + "David S. Miller" <davem@davemloft.net>, + Jakub Kicinski <kuba@kernel.org>, + Matthias Brugger <matthias.bgg@gmail.com>, + Russell King <linux@armlinux.org.uk>, + Andrew Lunn <andrew@lunn.ch> +Subject: [PATCH v5 1/2] net: ethernet: mtk_eth_soc: fix return value of MDIO + ops +Message-ID: <YcoGbf/klFzaJhGE@makrotopia.org> +References: <YcnoAscVe+2YILT8@shell.armlinux.org.uk> + <YcnlMtninjjjPhjI@makrotopia.org> +MIME-Version: 1.0 +Content-Disposition: inline +In-Reply-To: <YcnoAscVe+2YILT8@shell.armlinux.org.uk> + <YcnlMtninjjjPhjI@makrotopia.org> +Precedence: bulk +List-ID: <netdev.vger.kernel.org> +X-Mailing-List: netdev@vger.kernel.org +X-Patchwork-Delegate: kuba@kernel.org + +Instead of returning -1 (-EPERM) when MDIO bus is stuck busy +while writing or 0xffff if it happens while reading, return the +appropriate -EBUSY. Also fix return type to int instead of u32. + +Fixes: 656e705243fd0 ("net-next: mediatek: add support for MT7623 ethernet") +Signed-off-by: Daniel Golle <daniel@makrotopia.org> +--- +v5: fix incomplete unification of variable names phy_reg vs. phy_register +v4: clean-up return values and types, split into two commits + + drivers/net/ethernet/mediatek/mtk_eth_soc.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +@@ -95,31 +95,31 @@ static int mtk_mdio_busy_wait(struct mtk + return -1; + } + +-static u32 _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr, +- u32 phy_register, u32 write_data) ++static int _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr, u32 phy_reg, ++ u32 write_data) + { + if (mtk_mdio_busy_wait(eth)) +- return -1; ++ return -EBUSY; + + write_data &= 0xffff; + + mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_WRITE | +- (phy_register << PHY_IAC_REG_SHIFT) | ++ (phy_reg << PHY_IAC_REG_SHIFT) | + (phy_addr << PHY_IAC_ADDR_SHIFT) | write_data, + MTK_PHY_IAC); + + if (mtk_mdio_busy_wait(eth)) +- return -1; ++ return -EBUSY; + + return 0; + } + +-static u32 _mtk_mdio_read(struct mtk_eth *eth, int phy_addr, int phy_reg) ++static int _mtk_mdio_read(struct mtk_eth *eth, int phy_addr, int phy_reg) + { + u32 d; + + if (mtk_mdio_busy_wait(eth)) +- return 0xffff; ++ return -EBUSY; + + mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_READ | + (phy_reg << PHY_IAC_REG_SHIFT) | +@@ -127,7 +127,7 @@ static u32 _mtk_mdio_read(struct mtk_eth + MTK_PHY_IAC); + + if (mtk_mdio_busy_wait(eth)) +- return 0xffff; ++ return -EBUSY; + + d = mtk_r32(eth, MTK_PHY_IAC) & 0xffff; + |