696b68df4741140c64c82662bcbc1d934e7538ad
[openwrt/staging/jow.git] / target / linux / mediatek / patches-5.10 / 701-net-ethernet-mtk_eth_soc-fix-return-value-of-MDIO-ops.patch
1 From patchwork Mon Dec 27 18:31:09 2021
2 Content-Type: text/plain; charset="utf-8"
3 MIME-Version: 1.0
4 Content-Transfer-Encoding: 7bit
5 X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
6 X-Patchwork-Id: 12699993
7 X-Patchwork-Delegate: kuba@kernel.org
8 Return-Path: <netdev-owner@kernel.org>
9 Date: Mon, 27 Dec 2021 18:31:09 +0000
10 From: Daniel Golle <daniel@makrotopia.org>
11 To: linux-mediatek@lists.infradead.org, netdev@vger.kernel.org,
12 linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
13 Cc: Felix Fietkau <nbd@nbd.name>, John Crispin <john@phrozen.org>,
14 Sean Wang <sean.wang@mediatek.com>,
15 Mark Lee <Mark-MC.Lee@mediatek.com>,
16 "David S. Miller" <davem@davemloft.net>,
17 Jakub Kicinski <kuba@kernel.org>,
18 Matthias Brugger <matthias.bgg@gmail.com>,
19 Russell King <linux@armlinux.org.uk>,
20 Andrew Lunn <andrew@lunn.ch>
21 Subject: [PATCH v5 1/2] net: ethernet: mtk_eth_soc: fix return value of MDIO
22 ops
23 Message-ID: <YcoGbf/klFzaJhGE@makrotopia.org>
24 References: <YcnoAscVe+2YILT8@shell.armlinux.org.uk>
25 <YcnlMtninjjjPhjI@makrotopia.org>
26 MIME-Version: 1.0
27 Content-Disposition: inline
28 In-Reply-To: <YcnoAscVe+2YILT8@shell.armlinux.org.uk>
29 <YcnlMtninjjjPhjI@makrotopia.org>
30 Precedence: bulk
31 List-ID: <netdev.vger.kernel.org>
32 X-Mailing-List: netdev@vger.kernel.org
33 X-Patchwork-Delegate: kuba@kernel.org
34
35 Instead of returning -1 (-EPERM) when MDIO bus is stuck busy
36 while writing or 0xffff if it happens while reading, return the
37 appropriate -EBUSY. Also fix return type to int instead of u32.
38
39 Fixes: 656e705243fd0 ("net-next: mediatek: add support for MT7623 ethernet")
40 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
41 ---
42 v5: fix incomplete unification of variable names phy_reg vs. phy_register
43 v4: clean-up return values and types, split into two commits
44
45 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 16 ++++++++--------
46 1 file changed, 8 insertions(+), 8 deletions(-)
47
48 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
49 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
50 @@ -95,31 +95,31 @@ static int mtk_mdio_busy_wait(struct mtk
51 return -1;
52 }
53
54 -static u32 _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr,
55 - u32 phy_register, u32 write_data)
56 +static int _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr, u32 phy_reg,
57 + u32 write_data)
58 {
59 if (mtk_mdio_busy_wait(eth))
60 - return -1;
61 + return -EBUSY;
62
63 write_data &= 0xffff;
64
65 mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_WRITE |
66 - (phy_register << PHY_IAC_REG_SHIFT) |
67 + (phy_reg << PHY_IAC_REG_SHIFT) |
68 (phy_addr << PHY_IAC_ADDR_SHIFT) | write_data,
69 MTK_PHY_IAC);
70
71 if (mtk_mdio_busy_wait(eth))
72 - return -1;
73 + return -EBUSY;
74
75 return 0;
76 }
77
78 -static u32 _mtk_mdio_read(struct mtk_eth *eth, int phy_addr, int phy_reg)
79 +static int _mtk_mdio_read(struct mtk_eth *eth, int phy_addr, int phy_reg)
80 {
81 u32 d;
82
83 if (mtk_mdio_busy_wait(eth))
84 - return 0xffff;
85 + return -EBUSY;
86
87 mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_READ |
88 (phy_reg << PHY_IAC_REG_SHIFT) |
89 @@ -127,7 +127,7 @@ static u32 _mtk_mdio_read(struct mtk_eth
90 MTK_PHY_IAC);
91
92 if (mtk_mdio_busy_wait(eth))
93 - return 0xffff;
94 + return -EBUSY;
95
96 d = mtk_r32(eth, MTK_PHY_IAC) & 0xffff;
97