From: Pawel Dembicki <paweldembicki@gmail.com>
To: netdev@vger.kernel.org
Cc: Pawel Dembicki <paweldembicki@gmail.com>,
Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Linus Walleij <linus.walleij@linaro.org>,
"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
linux-kernel@vger.kernel.org
Subject: [PATCH net-next 6/9] net: dsa: vsc73xx: speed up mdio bus to max allowed value
Date: Mon, 29 Jul 2024 23:06:12 +0200 [thread overview]
Message-ID: <20240729210615.279952-7-paweldembicki@gmail.com> (raw)
In-Reply-To: <20240729210615.279952-1-paweldembicki@gmail.com>
According the datasheet, vsc73xx family max internal mdio bus speed is
20MHz. It also allow to disable preamble.
This commit sets mdio clock prescaler to minimal value and crop preamble
to speed up mdio operations.
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
---
drivers/net/dsa/vitesse-vsc73xx-core.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dsa/vitesse-vsc73xx-core.c b/drivers/net/dsa/vitesse-vsc73xx-core.c
index 40c64ef7e729..9e88eda6f4dd 100644
--- a/drivers/net/dsa/vitesse-vsc73xx-core.c
+++ b/drivers/net/dsa/vitesse-vsc73xx-core.c
@@ -229,6 +229,7 @@
#define VSC73XX_MII_STAT 0x0
#define VSC73XX_MII_CMD 0x1
#define VSC73XX_MII_DATA 0x2
+#define VSC73XX_MII_MPRES 0x3
#define VSC73XX_MII_STAT_BUSY BIT(3)
#define VSC73XX_MII_STAT_READ BIT(2)
@@ -243,6 +244,10 @@
#define VSC73XX_MII_DATA_FAILURE BIT(16)
#define VSC73XX_MII_DATA_READ_DATA GENMASK(15, 0)
+#define VSC73XX_MII_MPRES_NOPREAMBLE BIT(6)
+#define VSC73XX_MII_MPRES_PRESCALEVAL GENMASK(5, 0)
+#define VSC73XX_MII_PRESCALEVAL_MIN 3 /* min allowed mdio clock prescaler */
+
/* Arbiter block 5 registers */
#define VSC73XX_ARBEMPTY 0x0c
#define VSC73XX_ARBDISC 0x0e
@@ -578,7 +583,7 @@ static int vsc73xx_phy_read(struct dsa_switch *ds, int phy, int regnum)
VSC73XX_MII_CMD, cmd);
if (ret)
goto err;
- usleep_range(100, 200);
+ usleep_range(4, 100);
ret = vsc73xx_read(vsc, VSC73XX_BLOCK_MII, VSC73XX_BLOCK_MII_INTERNAL,
VSC73XX_MII_DATA, &val);
if (ret)
@@ -632,7 +637,7 @@ static int vsc73xx_phy_write(struct dsa_switch *ds, int phy, int regnum,
if (!ret)
dev_dbg(vsc->dev, "write %04x to reg %02x in phy%d\n",
val, regnum, phy);
- usleep_range(100, 200);
+ usleep_range(4, 100);
err:
mutex_unlock(&vsc->mdio_lock);
return ret;
@@ -802,7 +807,7 @@ static int vsc73xx_configure_rgmii_port_delay(struct dsa_switch *ds)
static int vsc73xx_setup(struct dsa_switch *ds)
{
struct vsc73xx *vsc = ds->priv;
- int i, ret;
+ int i, ret, val;
dev_info(vsc->dev, "set up the switch\n");
@@ -875,6 +880,15 @@ static int vsc73xx_setup(struct dsa_switch *ds)
mdelay(50);
+ /* Disable preamble and use maximum allowed clock for the internal
+ * mdio bus, used for communication with internal PHYs only.
+ */
+ val = VSC73XX_MII_MPRES_NOPREAMBLE |
+ FIELD_PREP(VSC73XX_MII_MPRES_PRESCALEVAL,
+ VSC73XX_MII_PRESCALEVAL_MIN);
+ vsc73xx_write(vsc, VSC73XX_BLOCK_MII, VSC73XX_BLOCK_MII_INTERNAL,
+ VSC73XX_MII_MPRES, val);
+
/* Release reset from the internal PHYs */
vsc73xx_write(vsc, VSC73XX_BLOCK_SYSTEM, 0, VSC73XX_GLORESET,
VSC73XX_GLORESET_PHY_RESET);
--
2.34.1
next prev parent reply other threads:[~2024-07-29 21:06 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 21:06 [PATCH net-next 0/9] net: dsa: vsc73xx: fix MDIO bus access and PHY operations Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 1/9] net: dsa: vsc73xx: fix phylink capabilities Pawel Dembicki
2024-07-29 22:54 ` Andrew Lunn
2024-07-29 23:05 ` Russell King (Oracle)
2024-07-29 21:06 ` [PATCH net-next 2/9] net: dsa: vsc73xx: fix port MAC configuration in full duplex mode Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 3/9] net: dsa: vsc73xx: pass value in phy_write operation Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 4/9] net: dsa: vsc73xx: use defined values in phy operations Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 5/9] net: dsa: vsc73xx: use mutex to mdio operations Pawel Dembicki
2024-07-29 23:07 ` Andrew Lunn
2024-07-29 21:06 ` Pawel Dembicki [this message]
2024-07-29 23:10 ` [PATCH net-next 6/9] net: dsa: vsc73xx: speed up mdio bus to max allowed value Andrew Lunn
2024-07-30 18:55 ` Paweł Dembicki
2024-07-30 20:23 ` Andrew Lunn
2024-07-29 21:06 ` [PATCH net-next 7/9] net: dsa: vsc73xx: allow phy resetting Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 8/9] net: phy: vitesse: repair vsc73xx autonegotiation Pawel Dembicki
2024-07-29 21:06 ` [PATCH net-next 9/9] net: phy: vitesse: implement downshift in vsc73xx phys Pawel Dembicki
2024-07-29 23:39 ` Russell King (Oracle)
2024-07-29 22:53 ` [PATCH net-next 0/9] net: dsa: vsc73xx: fix MDIO bus access and PHY operations Andrew Lunn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240729210615.279952-7-paweldembicki@gmail.com \
--to=paweldembicki@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=rmk+kernel@armlinux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®