mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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


  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®