From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: Abhishek Chauhan <quic_abchauha@quicinc.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Alexis Lothore <alexis.lothore@bootlin.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
Boon Khai Ng <boon.khai.ng@altera.com>,
Choong Yong Liang <yong.liang.choong@linux.intel.com>,
Daniel Machon <daniel.machon@microchip.com>,
"David S. Miller" <davem@davemloft.net>,
Drew Fustini <dfustini@tenstorrent.com>,
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
Eric Dumazet <edumazet@google.com>,
Faizal Rahim <faizal.abdul.rahim@linux.intel.com>,
Furong Xu <0x1207@gmail.com>, Inochi Amaoto <inochiama@gmail.com>,
Jacob Keller <jacob.e.keller@intel.com>,
Jakub Kicinski <kuba@kernel.org>,
"Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>,
Jisheng Zhang <jszhang@kernel.org>, Kees Cook <kees@kernel.org>,
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>,
Ley Foon Tan <leyfoon.tan@starfivetech.com>,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
Matthew Gerlach <matthew.gerlach@altera.com>,
Maxime Chevallier <maxime.chevallier@bootlin.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Michal Swiatkowski <michal.swiatkowski@linux.intel.com>,
netdev@vger.kernel.org, Oleksij Rempel <o.rempel@pengutronix.de>,
Paolo Abeni <pabeni@redhat.com>,
Rohan G Thomas <rohan.g.thomas@altera.com>,
Shenwei Wang <shenwei.wang@nxp.com>,
Simon Horman <horms@kernel.org>,
Song Yoong Siang <yoong.siang.song@intel.com>,
Swathi K S <swathi.ks@samsung.com>,
Tiezhu Yang <yangtiezhu@loongson.cn>,
Vinod Koul <vkoul@kernel.org>,
Vladimir Oltean <olteanv@gmail.com>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
Yu-Chun Lin <eleanor15x@gmail.com>
Subject: [PATCH net-next 06/14] net: stmmac: remove hw->ps xxx_core_init() hardware setup
Date: Wed, 15 Oct 2025 15:20:28 +0100 [thread overview]
Message-ID: <E1v92Me-0000000AmGw-0074@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <aO-tbQCVu47R3izM@shell.armlinux.org.uk>
After a lot of digging, it seems that the oddly named hw->ps member is
all about configuring the core for reverse SGMII. This member is set to
one of 0, SPEED_10, SPEED_100 or SPEED_1000 depending on
priv->plat->mac_port_sel_speed. On DT systems, this comes from the
"snps,ps-speed" DT property.
When set to a non-zero value, it:
1. Configures the MAC at initialisation time to operate at a specific
speed. However, this will be overwritten by mac_link_up() when the
link comes up (e.g. with the fixed-link parameters.)
Note that dwxgmac2 wants to also support SPEED_2500 and SPEED_10000,
but both these values are impossible.
2. It _incorrectly_ enables the transmitter (GMAC_CONFIG_TE) which
makes no sense, rather than enabling the "transmit configuration"
bit (GMAC_CONFIG_TC). Likely a typo.
3. It configures the SGMII rate adapter layer to retrieve its speed
setting from the MAC configuration register rather than the PHY.
There are two ways forward here:
a) fixing (2) so that we set GMAC_CONFIG_TC. However, we have platform
that set the "snps,ps-speed" property and that work today. Fixing
this will cause the RGMII, SGMII or SMII inband configuration to be
transmitted, which will be a functional change which could cause a
regression.
b) ripping out (1) and (2) as they are ineffective. This also has the
possibility of regressions, but the patch author believes this risk
is much lower than (a).
Therefore, this commit takes the approach in (b).
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
.../ethernet/stmicro/stmmac/dwmac1000_core.c | 23 +++--------------
.../net/ethernet/stmicro/stmmac/dwmac4_core.c | 24 +++---------------
.../ethernet/stmicro/stmmac/dwxgmac2_core.c | 25 ++-----------------
3 files changed, 8 insertions(+), 64 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
index 5c653be3d453..d35db8958be1 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
@@ -26,35 +26,18 @@ static void dwmac1000_core_init(struct mac_device_info *hw,
struct net_device *dev)
{
void __iomem *ioaddr = hw->pcsr;
- u32 value = readl(ioaddr + GMAC_CONTROL);
int mtu = dev->mtu;
+ u32 value;
/* Configure GMAC core */
- value |= GMAC_CORE_INIT;
+ value = readl(ioaddr + GMAC_CONTROL);
if (mtu > 1500)
value |= GMAC_CONTROL_2K;
if (mtu > 2000)
value |= GMAC_CONTROL_JE;
- if (hw->ps) {
- value |= GMAC_CONTROL_TE;
-
- value &= ~hw->link.speed_mask;
- switch (hw->ps) {
- case SPEED_1000:
- value |= hw->link.speed1000;
- break;
- case SPEED_100:
- value |= hw->link.speed100;
- break;
- case SPEED_10:
- value |= hw->link.speed10;
- break;
- }
- }
-
- writel(value, ioaddr + GMAC_CONTROL);
+ writel(value | GMAC_CORE_INIT, ioaddr + GMAC_CONTROL);
/* Mask GMAC interrupts */
value = GMAC_INT_DEFAULT_MASK;
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index 21e4461db937..d855ab6b9145 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -27,29 +27,11 @@ static void dwmac4_core_init(struct mac_device_info *hw,
{
struct stmmac_priv *priv = netdev_priv(dev);
void __iomem *ioaddr = hw->pcsr;
- u32 value = readl(ioaddr + GMAC_CONFIG);
unsigned long clk_rate;
+ u32 value;
- value |= GMAC_CORE_INIT;
-
- if (hw->ps) {
- value |= GMAC_CONFIG_TE;
-
- value &= hw->link.speed_mask;
- switch (hw->ps) {
- case SPEED_1000:
- value |= hw->link.speed1000;
- break;
- case SPEED_100:
- value |= hw->link.speed100;
- break;
- case SPEED_10:
- value |= hw->link.speed10;
- break;
- }
- }
-
- writel(value, ioaddr + GMAC_CONFIG);
+ value = readl(ioaddr + GMAC_CONFIG);
+ writel(value | GMAC_CORE_INIT, ioaddr + GMAC_CONFIG);
/* Configure LPI 1us counter to number of CSR clock ticks in 1us - 1 */
clk_rate = clk_get_rate(priv->plat->stmmac_clk);
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
index 00e929bf280b..0430af27da40 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
@@ -23,29 +23,8 @@ static void dwxgmac2_core_init(struct mac_device_info *hw,
tx = readl(ioaddr + XGMAC_TX_CONFIG);
rx = readl(ioaddr + XGMAC_RX_CONFIG);
- tx |= XGMAC_CORE_INIT_TX;
- rx |= XGMAC_CORE_INIT_RX;
-
- if (hw->ps) {
- tx |= XGMAC_CONFIG_TE;
- tx &= ~hw->link.speed_mask;
-
- switch (hw->ps) {
- case SPEED_10000:
- tx |= hw->link.xgmii.speed10000;
- break;
- case SPEED_2500:
- tx |= hw->link.speed2500;
- break;
- case SPEED_1000:
- default:
- tx |= hw->link.speed1000;
- break;
- }
- }
-
- writel(tx, ioaddr + XGMAC_TX_CONFIG);
- writel(rx, ioaddr + XGMAC_RX_CONFIG);
+ writel(tx | XGMAC_CORE_INIT_TX, ioaddr + XGMAC_TX_CONFIG);
+ writel(rx | XGMAC_CORE_INIT_RX, ioaddr + XGMAC_RX_CONFIG);
writel(XGMAC_INT_DEFAULT_EN, ioaddr + XGMAC_INT_EN);
}
--
2.47.3
next prev parent reply other threads:[~2025-10-15 14:21 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-15 14:19 [PATCH net-next 00/14] net: stmmac: phylink PCS conversion Russell King (Oracle)
2025-10-15 14:20 ` [PATCH net-next 01/14] net: stmmac: remove broken PCS code Russell King (Oracle)
2025-10-15 20:44 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 02/14] net: stmmac: remove xstats.pcs_* members Russell King (Oracle)
2025-10-15 20:45 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 03/14] net: stmmac: remove SGMII/RGMII/SMII interrupt handling Russell King (Oracle)
2025-10-15 20:47 ` Andrew Lunn
2025-10-15 21:35 ` Andrew Lunn
2025-10-15 22:12 ` Russell King (Oracle)
2025-10-16 13:07 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 04/14] net: stmmac: remove PCS "mode" pause handling Russell King (Oracle)
2025-10-15 20:48 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 05/14] net: stmmac: remove unused PCS loopback support Russell King (Oracle)
2025-10-15 20:50 ` Andrew Lunn
2025-10-15 14:20 ` Russell King (Oracle) [this message]
2025-10-15 14:20 ` [PATCH net-next 07/14] net: stmmac: remove RGMII "pcs" mode Russell King (Oracle)
2025-10-15 20:53 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 08/14] net: stmmac: move reverse-"pcs" mode setup to stmmac_check_pcs_mode() Russell King (Oracle)
2025-10-15 20:55 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 09/14] net: stmmac: simplify stmmac_check_pcs_mode() Russell King (Oracle)
2025-10-15 20:56 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 10/14] net: stmmac: hw->ps becomes hw->reverse_sgmii_enable Russell King (Oracle)
2025-10-15 20:57 ` Andrew Lunn
2025-10-15 14:20 ` [PATCH net-next 11/14] net: stmmac: do not require snps,ps-speed for SGMII Russell King (Oracle)
2025-10-15 21:00 ` Andrew Lunn
2025-10-15 21:26 ` Andrew Lunn
2025-10-15 21:48 ` Russell King (Oracle)
2025-10-16 13:03 ` Andrew Lunn
2025-10-16 13:51 ` Russell King (Oracle)
2025-10-15 14:20 ` [PATCH net-next 12/14] net: stmmac: only call stmmac_pcs_ctrl_ane() for integrated SGMII PCS Russell King (Oracle)
2025-10-15 21:01 ` Andrew Lunn
2025-10-15 14:21 ` [PATCH net-next 13/14] net: stmmac: provide PCS initialisation hook Russell King (Oracle)
2025-10-15 21:11 ` Andrew Lunn
2025-10-15 21:32 ` Russell King (Oracle)
2025-10-15 14:21 ` [PATCH net-next 14/14] net: stmmac: convert to phylink PCS support Russell King (Oracle)
2025-10-15 21:31 ` Andrew Lunn
2025-10-15 21:57 ` Russell King (Oracle)
2025-10-16 13:05 ` Andrew Lunn
2025-10-15 15:10 ` [PATCH net-next 00/14] net: stmmac: phylink PCS conversion Russell King (Oracle)
2025-10-16 7:44 ` Maxime Chevallier
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=E1v92Me-0000000AmGw-0074@rmk-PC.armlinux.org.uk \
--to=rmk+kernel@armlinux.org.uk \
--cc=0x1207@gmail.com \
--cc=alexandre.torgue@foss.st.com \
--cc=alexis.lothore@bootlin.com \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=boon.khai.ng@altera.com \
--cc=daniel.machon@microchip.com \
--cc=davem@davemloft.net \
--cc=dfustini@tenstorrent.com \
--cc=edumazet@google.com \
--cc=eleanor15x@gmail.com \
--cc=emil.renner.berthing@canonical.com \
--cc=faizal.abdul.rahim@linux.intel.com \
--cc=hayashi.kunihiko@socionext.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=inochiama@gmail.com \
--cc=jacob.e.keller@intel.com \
--cc=jan.petrous@oss.nxp.com \
--cc=jszhang@kernel.org \
--cc=kees@kernel.org \
--cc=kuba@kernel.org \
--cc=leyfoon.tan@starfivetech.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=matthew.gerlach@altera.com \
--cc=maxime.chevallier@bootlin.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=michal.swiatkowski@linux.intel.com \
--cc=netdev@vger.kernel.org \
--cc=o.rempel@pengutronix.de \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
--cc=quic_abchauha@quicinc.com \
--cc=rohan.g.thomas@altera.com \
--cc=shenwei.wang@nxp.com \
--cc=swathi.ks@samsung.com \
--cc=vkoul@kernel.org \
--cc=vladimir.oltean@nxp.com \
--cc=yangtiezhu@loongson.cn \
--cc=yong.liang.choong@linux.intel.com \
--cc=yoong.siang.song@intel.com \
/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;
as well as URLs for NNTP newsgroup(s).