mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
mediatek: yet again, replace patch with updated pending patch
Upon comment of Russell King ('Oh no, not this "-1 disease" again.') clean up mdio read and write return type and value in mtk_eth_soc driver and also use appropriate return values for bus-busy-timeout- errors in newly added Clause 45 access code. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
69ce75fb12
commit
92820cc5b9
@ -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;
|
||||||
|
|
@ -1,11 +1,12 @@
|
|||||||
From patchwork Mon Dec 27 16:09:22 2021
|
From patchwork Mon Dec 27 18:31:43 2021
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Transfer-Encoding: 7bit
|
Content-Transfer-Encoding: 7bit
|
||||||
X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
|
X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
|
||||||
X-Patchwork-Id: 12699860
|
X-Patchwork-Id: 12699994
|
||||||
X-Patchwork-Delegate: kuba@kernel.org
|
X-Patchwork-Delegate: kuba@kernel.org
|
||||||
Date: Mon, 27 Dec 2021 16:09:22 +0000
|
Return-Path: <netdev-owner@kernel.org>
|
||||||
|
Date: Mon, 27 Dec 2021 18:31:43 +0000
|
||||||
From: Daniel Golle <daniel@makrotopia.org>
|
From: Daniel Golle <daniel@makrotopia.org>
|
||||||
To: linux-mediatek@lists.infradead.org, netdev@vger.kernel.org,
|
To: linux-mediatek@lists.infradead.org, netdev@vger.kernel.org,
|
||||||
linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
|
linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
|
||||||
@ -17,19 +18,15 @@ Cc: Felix Fietkau <nbd@nbd.name>, John Crispin <john@phrozen.org>,
|
|||||||
Matthias Brugger <matthias.bgg@gmail.com>,
|
Matthias Brugger <matthias.bgg@gmail.com>,
|
||||||
Russell King <linux@armlinux.org.uk>,
|
Russell King <linux@armlinux.org.uk>,
|
||||||
Andrew Lunn <andrew@lunn.ch>
|
Andrew Lunn <andrew@lunn.ch>
|
||||||
Subject: [PATCH v3] net: ethernet: mtk_eth_soc: implement Clause 45 MDIO
|
Subject: [PATCH v5 2/2] net: ethernet: mtk_eth_soc: implement Clause 45 MDIO
|
||||||
access
|
access
|
||||||
Message-ID: <YcnlMtninjjjPhjI@makrotopia.org>
|
Message-ID: <YcoGj4Rj5mJlXz4D@makrotopia.org>
|
||||||
References: <YcjsFnbg87o45ltd@lunn.ch>
|
References: <YcnoAscVe+2YILT8@shell.armlinux.org.uk>
|
||||||
<YcjjzNJ159Bo1xk7@lunn.ch>
|
<YcnlMtninjjjPhjI@makrotopia.org>
|
||||||
<YcjlMCacTTJ4RsSA@shell.armlinux.org.uk>
|
|
||||||
<YcjepQ2fmkPZ2+pE@makrotopia.org>
|
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Disposition: inline
|
Content-Disposition: inline
|
||||||
In-Reply-To: <YcjsFnbg87o45ltd@lunn.ch>
|
In-Reply-To: <YcnoAscVe+2YILT8@shell.armlinux.org.uk>
|
||||||
<YcjjzNJ159Bo1xk7@lunn.ch>
|
<YcnlMtninjjjPhjI@makrotopia.org>
|
||||||
<YcjlMCacTTJ4RsSA@shell.armlinux.org.uk>
|
|
||||||
<YcjepQ2fmkPZ2+pE@makrotopia.org>
|
|
||||||
Precedence: bulk
|
Precedence: bulk
|
||||||
List-ID: <netdev.vger.kernel.org>
|
List-ID: <netdev.vger.kernel.org>
|
||||||
X-Mailing-List: netdev@vger.kernel.org
|
X-Mailing-List: netdev@vger.kernel.org
|
||||||
@ -42,34 +39,27 @@ MediaTek MT7622BV WiSoC with Aquantia AQR112C.
|
|||||||
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
---
|
---
|
||||||
|
v5: unchanged
|
||||||
|
v4: clean-up return values and types, split into two commits
|
||||||
v3: return -1 instead of 0xffff on error in _mtk_mdio_write
|
v3: return -1 instead of 0xffff on error in _mtk_mdio_write
|
||||||
v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
||||||
device id and register address. Unify read and write functions to
|
device id and register address. Unify read and write functions to
|
||||||
have identical types and parameter names where possible as we are
|
have identical types and parameter names where possible as we are
|
||||||
anyway already replacing both function bodies.
|
anyway already replacing both function bodies.
|
||||||
|
|
||||||
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 62 +++++++++++++++++----
|
|
||||||
drivers/net/ethernet/mediatek/mtk_eth_soc.h | 3 +
|
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 60 +++++++++++++++++----
|
||||||
2 files changed, 54 insertions(+), 11 deletions(-)
|
drivers/net/ethernet/mediatek/mtk_eth_soc.h | 3 ++
|
||||||
|
2 files changed, 53 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -95,18 +95,38 @@ static int mtk_mdio_busy_wait(struct mtk
|
@@ -103,10 +103,30 @@ static int _mtk_mdio_write(struct mtk_et
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static u32 _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr,
|
|
||||||
- u32 phy_register, u32 write_data)
|
|
||||||
+static u32 _mtk_mdio_write(struct mtk_eth *eth, u32 phy_addr, u32 phy_reg,
|
|
||||||
+ u32 write_data)
|
|
||||||
{
|
|
||||||
if (mtk_mdio_busy_wait(eth))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
write_data &= 0xffff;
|
write_data &= 0xffff;
|
||||||
|
|
||||||
- mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_WRITE |
|
- 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,
|
- (phy_addr << PHY_IAC_ADDR_SHIFT) | write_data,
|
||||||
- MTK_PHY_IAC);
|
- MTK_PHY_IAC);
|
||||||
+ if (phy_reg & MII_ADDR_C45) {
|
+ if (phy_reg & MII_ADDR_C45) {
|
||||||
@ -83,7 +73,7 @@ v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
|||||||
+ MTK_PHY_IAC);
|
+ MTK_PHY_IAC);
|
||||||
+
|
+
|
||||||
+ if (mtk_mdio_busy_wait(eth))
|
+ if (mtk_mdio_busy_wait(eth))
|
||||||
+ return -1;
|
+ return -EBUSY;
|
||||||
+
|
+
|
||||||
+ mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START_C45 | PHY_IAC_WRITE |
|
+ mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START_C45 | PHY_IAC_WRITE |
|
||||||
+ (phy_addr << PHY_IAC_ADDR_SHIFT) |
|
+ (phy_addr << PHY_IAC_ADDR_SHIFT) |
|
||||||
@ -98,18 +88,19 @@ v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (mtk_mdio_busy_wait(eth))
|
if (mtk_mdio_busy_wait(eth))
|
||||||
return -1;
|
return -EBUSY;
|
||||||
@@ -114,17 +134,36 @@ static u32 _mtk_mdio_write(struct mtk_et
|
@@ -114,17 +134,36 @@ static int _mtk_mdio_write(struct mtk_et
|
||||||
return 0;
|
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)
|
||||||
+static u32 _mtk_mdio_read(struct mtk_eth *eth, u32 phy_addr, u32 phy_reg)
|
+static int _mtk_mdio_read(struct mtk_eth *eth, u32 phy_addr, u32 phy_reg)
|
||||||
{
|
{
|
||||||
u32 d;
|
- u32 d;
|
||||||
|
+ int d;
|
||||||
|
|
||||||
if (mtk_mdio_busy_wait(eth))
|
if (mtk_mdio_busy_wait(eth))
|
||||||
return 0xffff;
|
return -EBUSY;
|
||||||
|
|
||||||
- mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_READ |
|
- mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_READ |
|
||||||
- (phy_reg << PHY_IAC_REG_SHIFT) |
|
- (phy_reg << PHY_IAC_REG_SHIFT) |
|
||||||
@ -126,7 +117,7 @@ v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
|||||||
+ MTK_PHY_IAC);
|
+ MTK_PHY_IAC);
|
||||||
+
|
+
|
||||||
+ if (mtk_mdio_busy_wait(eth))
|
+ if (mtk_mdio_busy_wait(eth))
|
||||||
+ return 0xffff;
|
+ return -EBUSY;
|
||||||
+
|
+
|
||||||
+ mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START_C45 | PHY_IAC_READ_C45 |
|
+ mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START_C45 | PHY_IAC_READ_C45 |
|
||||||
+ (phy_addr << PHY_IAC_ADDR_SHIFT) |
|
+ (phy_addr << PHY_IAC_ADDR_SHIFT) |
|
||||||
@ -140,7 +131,7 @@ v2: use MII_DEVADDR_C45_SHIFT and MII_REGADDR_C45_MASK to extract
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (mtk_mdio_busy_wait(eth))
|
if (mtk_mdio_busy_wait(eth))
|
||||||
return 0xffff;
|
return -EBUSY;
|
||||||
@@ -584,6 +623,7 @@ static int mtk_mdio_init(struct mtk_eth
|
@@ -584,6 +623,7 @@ static int mtk_mdio_init(struct mtk_eth
|
||||||
eth->mii_bus->name = "mdio";
|
eth->mii_bus->name = "mdio";
|
||||||
eth->mii_bus->read = mtk_mdio_read;
|
eth->mii_bus->read = mtk_mdio_read;
|
Loading…
Reference in New Issue
Block a user