public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
@ 2026-01-14 10:45 A. Sverdlin
  2026-01-14 10:45 ` [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate A. Sverdlin
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: A. Sverdlin @ 2026-01-14 10:45 UTC (permalink / raw)
  To: netdev
  Cc: Alexander Sverdlin, Hauke Mehrtens, Andrew Lunn, Vladimir Oltean,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
	linux-kernel, Daniel Golle

From: Alexander Sverdlin <alexander.sverdlin@siemens.com>

Maxlinear GSW1xx switches offer slew rate configuration bits for R(G)MII
interface. The default state of the configuration bits is "normal", while
"slow" can be used to reduce the radiated emissions. Add the support for
the latter option into the driver as well as the new DT bindings.

Changelog:
v5:
- improved options' descriptions on Rob's suggestions
v4:
- separate properties for TXD and TXC pads
- https://lore.kernel.org/all/20260107090019.2257867-1-alexander.sverdlin@siemens.com/
v3:
- use [pinctrl] standard "slew-rate" property as suggested by Rob
  https://lore.kernel.org/all/20251219204324.GA3881969-robh@kernel.org/
- better sorted struct gswip_hw_info initialisers as suggested by Daniel
- https://lore.kernel.org/all/20260105175320.2141753-1-alexander.sverdlin@siemens.com/
v2:
- do not hijack gsw1xx_phylink_mac_select_pcs() for configuring the port,
  introduce struct gswip_hw_info::port_setup callback
- actively configure "normal" slew rate (if the new DT property is missing)
- properly use regmap_set_bits() (v1 had reg and value mixed up)
- https://lore.kernel.org/all/20251216121705.65156-1-alexander.sverdlin@siemens.com/
v1:
- https://lore.kernel.org/all/20251212204557.2082890-1-alexander.sverdlin@siemens.com/

Alexander Sverdlin (2):
  dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate
  net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration

 .../bindings/net/dsa/lantiq,gswip.yaml        | 22 ++++++++++
 drivers/net/dsa/lantiq/lantiq_gswip.h         |  1 +
 drivers/net/dsa/lantiq/lantiq_gswip_common.c  |  6 +++
 drivers/net/dsa/lantiq/mxl-gsw1xx.c           | 40 +++++++++++++++++++
 drivers/net/dsa/lantiq/mxl-gsw1xx.h           |  2 +
 5 files changed, 71 insertions(+)

-- 
2.52.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate
  2026-01-14 10:45 [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
@ 2026-01-14 10:45 ` A. Sverdlin
  2026-01-15 19:05   ` Rob Herring (Arm)
  2026-01-14 10:45 ` [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
  2026-01-19 18:20 ` [PATCH net-next v5 0/2] " patchwork-bot+netdevbpf
  2 siblings, 1 reply; 7+ messages in thread
From: A. Sverdlin @ 2026-01-14 10:45 UTC (permalink / raw)
  To: netdev
  Cc: Alexander Sverdlin, Hauke Mehrtens, Andrew Lunn, Vladimir Oltean,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
	linux-kernel, Daniel Golle

From: Alexander Sverdlin <alexander.sverdlin@siemens.com>

Add new maxlinear,slew-rate-txc and maxlinear,slew-rate-txd uint32
properties. The properties are only applicable for ports in R(G)MII mode
and allow for slew rate reduction in comparison to "normal" default
configuration with the purpose to reduce radiated emissions.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
---
Changelog:
v5:
- improved options' descriptions on Rob's suggestions
v4:
- separate properties for TXD and TXC pads ("maxlinear," prefix re-appears)
v3:
- use [pinctrl] standard "slew-rate" property as suggested by Rob
  https://lore.kernel.org/all/20251219204324.GA3881969-robh@kernel.org/
v2:
- unchanged

 .../bindings/net/dsa/lantiq,gswip.yaml        | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml b/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
index 205b683849a53..37d64b8a76ac7 100644
--- a/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
@@ -106,6 +106,28 @@ patternProperties:
         unevaluatedProperties: false
 
         properties:
+          maxlinear,slew-rate-txc:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1]
+            description: |
+              RMII/RGMII TX Clock Slew Rate:
+
+                0: Normal
+                1: Slow
+
+              If not present, the configuration made by the switch bootloader is
+              preserved.
+          maxlinear,slew-rate-txd:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1]
+            description: |
+              RMII/RGMII TX Non-Clock PAD Slew Rate:
+
+                0: Normal
+                1: Slow
+
+              If not present, the configuration made by the switch bootloader is
+              preserved.
           maxlinear,rmii-refclk-out:
             type: boolean
             description:
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
  2026-01-14 10:45 [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
  2026-01-14 10:45 ` [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate A. Sverdlin
@ 2026-01-14 10:45 ` A. Sverdlin
  2026-01-14 13:41   ` Andrew Lunn
  2026-01-14 22:01   ` Vladimir Oltean
  2026-01-19 18:20 ` [PATCH net-next v5 0/2] " patchwork-bot+netdevbpf
  2 siblings, 2 replies; 7+ messages in thread
From: A. Sverdlin @ 2026-01-14 10:45 UTC (permalink / raw)
  To: netdev
  Cc: Alexander Sverdlin, Hauke Mehrtens, Andrew Lunn, Vladimir Oltean,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
	linux-kernel, Daniel Golle

From: Alexander Sverdlin <alexander.sverdlin@siemens.com>

Support newly introduced maxlinear,slew-rate-txc and
maxlinear,slew-rate-txd device tree properties to configure R(G)MII
interface pins' slew rate. It might be used to reduce the radiated
emissions.

Reviewed-by: Daniel Golle <daniel@makrotopia.org>
Tested-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
---
Changelog:
v5:
- unchanged
v4:
- separate properties for TXD and TXC pads
v3:
- use [pinctrl] standard "slew-rate" property as suggested by Rob
  https://lore.kernel.org/all/20251219204324.GA3881969-robh@kernel.org/
- better sorted struct gswip_hw_info initialisers as suggested by Daniel
v2:
- do not hijack gsw1xx_phylink_mac_select_pcs() for configuring the port,
  introduce struct gswip_hw_info::port_setup callback
- actively configure "normal" slew rate (if the new DT property is missing)
- properly use regmap_set_bits() (v1 had reg and value mixed up)

 drivers/net/dsa/lantiq/lantiq_gswip.h        |  1 +
 drivers/net/dsa/lantiq/lantiq_gswip_common.c |  6 +++
 drivers/net/dsa/lantiq/mxl-gsw1xx.c          | 40 ++++++++++++++++++++
 drivers/net/dsa/lantiq/mxl-gsw1xx.h          |  2 +
 4 files changed, 49 insertions(+)

diff --git a/drivers/net/dsa/lantiq/lantiq_gswip.h b/drivers/net/dsa/lantiq/lantiq_gswip.h
index 2e0f2afbadbbc..8fc4c7cc5283a 100644
--- a/drivers/net/dsa/lantiq/lantiq_gswip.h
+++ b/drivers/net/dsa/lantiq/lantiq_gswip.h
@@ -263,6 +263,7 @@ struct gswip_hw_info {
 				 struct phylink_config *config);
 	struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config,
 					      phy_interface_t interface);
+	int (*port_setup)(struct dsa_switch *ds, int port);
 };
 
 struct gswip_gphy_fw {
diff --git a/drivers/net/dsa/lantiq/lantiq_gswip_common.c b/drivers/net/dsa/lantiq/lantiq_gswip_common.c
index e790f2ef75884..17a61e445f00f 100644
--- a/drivers/net/dsa/lantiq/lantiq_gswip_common.c
+++ b/drivers/net/dsa/lantiq/lantiq_gswip_common.c
@@ -425,6 +425,12 @@ static int gswip_port_setup(struct dsa_switch *ds, int port)
 	struct gswip_priv *priv = ds->priv;
 	int err;
 
+	if (priv->hw_info->port_setup) {
+		err = priv->hw_info->port_setup(ds, port);
+		if (err)
+			return err;
+	}
+
 	if (!dsa_is_cpu_port(ds, port)) {
 		err = gswip_add_single_port_br(priv, port, true);
 		if (err)
diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.c b/drivers/net/dsa/lantiq/mxl-gsw1xx.c
index f8ff8a604bf53..6afc7539fefbe 100644
--- a/drivers/net/dsa/lantiq/mxl-gsw1xx.c
+++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.c
@@ -559,6 +559,43 @@ static struct phylink_pcs *gsw1xx_phylink_mac_select_pcs(struct phylink_config *
 	}
 }
 
+static int gsw1xx_rmii_slew_rate(const struct device_node *np, struct gsw1xx_priv *priv,
+				 const char *prop, u16 mask)
+{
+	u32 rate;
+	int ret;
+
+	ret = of_property_read_u32(np, prop, &rate);
+	/* Optional property */
+	if (ret == -EINVAL)
+		return 0;
+	if (ret < 0 || rate > 1) {
+		dev_err(&priv->mdio_dev->dev, "Invalid %s value\n", prop);
+		return (ret < 0) ? ret : -EINVAL;
+	}
+
+	return regmap_update_bits(priv->shell, GSW1XX_SHELL_RGMII_SLEW_CFG, mask, mask * rate);
+}
+
+static int gsw1xx_port_setup(struct dsa_switch *ds, int port)
+{
+	struct dsa_port *dp = dsa_to_port(ds, port);
+	struct device_node *np = dp->dn;
+	struct gsw1xx_priv *gsw1xx_priv;
+	struct gswip_priv *gswip_priv;
+
+	if (dp->index != GSW1XX_MII_PORT)
+		return 0;
+
+	gswip_priv = ds->priv;
+	gsw1xx_priv = container_of(gswip_priv, struct gsw1xx_priv, gswip);
+
+	return gsw1xx_rmii_slew_rate(np, gsw1xx_priv,
+				     "maxlinear,slew-rate-txc", RGMII_SLEW_CFG_DRV_TXC) ?:
+	       gsw1xx_rmii_slew_rate(np, gsw1xx_priv,
+				     "maxlinear,slew-rate-txd", RGMII_SLEW_CFG_DRV_TXD);
+}
+
 static struct regmap *gsw1xx_regmap_init(struct gsw1xx_priv *priv,
 					 const char *name,
 					 unsigned int reg_base,
@@ -707,6 +744,7 @@ static const struct gswip_hw_info gsw12x_data = {
 	.mac_select_pcs		= gsw1xx_phylink_mac_select_pcs,
 	.phylink_get_caps	= &gsw1xx_phylink_get_caps,
 	.supports_2500m		= true,
+	.port_setup		= gsw1xx_port_setup,
 	.pce_microcode		= &gsw1xx_pce_microcode,
 	.pce_microcode_size	= ARRAY_SIZE(gsw1xx_pce_microcode),
 	.tag_protocol		= DSA_TAG_PROTO_MXL_GSW1XX,
@@ -720,6 +758,7 @@ static const struct gswip_hw_info gsw140_data = {
 	.mac_select_pcs		= gsw1xx_phylink_mac_select_pcs,
 	.phylink_get_caps	= &gsw1xx_phylink_get_caps,
 	.supports_2500m		= true,
+	.port_setup		= gsw1xx_port_setup,
 	.pce_microcode		= &gsw1xx_pce_microcode,
 	.pce_microcode_size	= ARRAY_SIZE(gsw1xx_pce_microcode),
 	.tag_protocol		= DSA_TAG_PROTO_MXL_GSW1XX,
@@ -732,6 +771,7 @@ static const struct gswip_hw_info gsw141_data = {
 	.mii_port_reg_offset	= -GSW1XX_MII_PORT,
 	.mac_select_pcs		= gsw1xx_phylink_mac_select_pcs,
 	.phylink_get_caps	= gsw1xx_phylink_get_caps,
+	.port_setup		= gsw1xx_port_setup,
 	.pce_microcode		= &gsw1xx_pce_microcode,
 	.pce_microcode_size	= ARRAY_SIZE(gsw1xx_pce_microcode),
 	.tag_protocol		= DSA_TAG_PROTO_MXL_GSW1XX,
diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.h b/drivers/net/dsa/lantiq/mxl-gsw1xx.h
index 38e03c048a26c..8c0298b2b7663 100644
--- a/drivers/net/dsa/lantiq/mxl-gsw1xx.h
+++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.h
@@ -110,6 +110,8 @@
 #define   GSW1XX_RST_REQ_SGMII_SHELL		BIT(5)
 /* RGMII PAD Slew Control Register */
 #define  GSW1XX_SHELL_RGMII_SLEW_CFG		0x78
+#define   RGMII_SLEW_CFG_DRV_TXC		BIT(2)
+#define   RGMII_SLEW_CFG_DRV_TXD		BIT(3)
 #define   RGMII_SLEW_CFG_RX_2_5_V		BIT(4)
 #define   RGMII_SLEW_CFG_TX_2_5_V		BIT(5)
 
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
  2026-01-14 10:45 ` [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
@ 2026-01-14 13:41   ` Andrew Lunn
  2026-01-14 22:01   ` Vladimir Oltean
  1 sibling, 0 replies; 7+ messages in thread
From: Andrew Lunn @ 2026-01-14 13:41 UTC (permalink / raw)
  To: A. Sverdlin
  Cc: netdev, Hauke Mehrtens, Vladimir Oltean, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel,
	Daniel Golle

On Wed, Jan 14, 2026 at 11:45:04AM +0100, A. Sverdlin wrote:
> From: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> 
> Support newly introduced maxlinear,slew-rate-txc and
> maxlinear,slew-rate-txd device tree properties to configure R(G)MII
> interface pins' slew rate. It might be used to reduce the radiated
> emissions.
> 
> Reviewed-by: Daniel Golle <daniel@makrotopia.org>
> Tested-by: Daniel Golle <daniel@makrotopia.org>
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
  2026-01-14 10:45 ` [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
  2026-01-14 13:41   ` Andrew Lunn
@ 2026-01-14 22:01   ` Vladimir Oltean
  1 sibling, 0 replies; 7+ messages in thread
From: Vladimir Oltean @ 2026-01-14 22:01 UTC (permalink / raw)
  To: A. Sverdlin
  Cc: netdev, Hauke Mehrtens, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel,
	Daniel Golle

On Wed, Jan 14, 2026 at 11:45:04AM +0100, A. Sverdlin wrote:
> From: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> 
> Support newly introduced maxlinear,slew-rate-txc and
> maxlinear,slew-rate-txd device tree properties to configure R(G)MII
> interface pins' slew rate. It might be used to reduce the radiated
> emissions.
> 
> Reviewed-by: Daniel Golle <daniel@makrotopia.org>
> Tested-by: Daniel Golle <daniel@makrotopia.org>
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> ---

Reviewed-by: Vladimir Oltean <olteanv@gmail.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate
  2026-01-14 10:45 ` [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate A. Sverdlin
@ 2026-01-15 19:05   ` Rob Herring (Arm)
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring (Arm) @ 2026-01-15 19:05 UTC (permalink / raw)
  To: A. Sverdlin
  Cc: Vladimir Oltean, Eric Dumazet, linux-kernel, Andrew Lunn,
	Daniel Golle, Krzysztof Kozlowski, Paolo Abeni, David S. Miller,
	devicetree, Hauke Mehrtens, Jakub Kicinski, Conor Dooley, netdev


On Wed, 14 Jan 2026 11:45:03 +0100, A. Sverdlin wrote:
> From: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> 
> Add new maxlinear,slew-rate-txc and maxlinear,slew-rate-txd uint32
> properties. The properties are only applicable for ports in R(G)MII mode
> and allow for slew rate reduction in comparison to "normal" default
> configuration with the purpose to reduce radiated emissions.
> 
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> ---
> Changelog:
> v5:
> - improved options' descriptions on Rob's suggestions
> v4:
> - separate properties for TXD and TXC pads ("maxlinear," prefix re-appears)
> v3:
> - use [pinctrl] standard "slew-rate" property as suggested by Rob
>   https://lore.kernel.org/all/20251219204324.GA3881969-robh@kernel.org/
> v2:
> - unchanged
> 
>  .../bindings/net/dsa/lantiq,gswip.yaml        | 22 +++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
  2026-01-14 10:45 [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
  2026-01-14 10:45 ` [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate A. Sverdlin
  2026-01-14 10:45 ` [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
@ 2026-01-19 18:20 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-01-19 18:20 UTC (permalink / raw)
  To: A. Sverdlin
  Cc: netdev, hauke, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh, krzk+dt, conor+dt, devicetree, linux-kernel, daniel

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 14 Jan 2026 11:45:02 +0100 you wrote:
> From: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> 
> Maxlinear GSW1xx switches offer slew rate configuration bits for R(G)MII
> interface. The default state of the configuration bits is "normal", while
> "slow" can be used to reduce the radiated emissions. Add the support for
> the latter option into the driver as well as the new DT bindings.
> 
> [...]

Here is the summary with links:
  - [net-next,v5,1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate
    https://git.kernel.org/netdev/net-next/c/4cc265663da5
  - [net-next,v5,2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration
    https://git.kernel.org/netdev/net-next/c/dbf24ab58fec

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-01-19 18:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-14 10:45 [PATCH net-next v5 0/2] dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
2026-01-14 10:45 ` [PATCH net-next v5 1/2] dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate A. Sverdlin
2026-01-15 19:05   ` Rob Herring (Arm)
2026-01-14 10:45 ` [PATCH net-next v5 2/2] net: dsa: mxl-gsw1xx: Support R(G)MII slew rate configuration A. Sverdlin
2026-01-14 13:41   ` Andrew Lunn
2026-01-14 22:01   ` Vladimir Oltean
2026-01-19 18:20 ` [PATCH net-next v5 0/2] " patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox