All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver
@ 2024-08-01  7:35 Lorenzo Bianconi
  2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2024-08-01  7:35 UTC (permalink / raw)
  To: netdev
  Cc: arinc.unal, daniel, dqfext, sean.wang, andrew, f.fainelli,
	olteanv, davem, edumazet, kuba, pabeni, matthias.bgg,
	angelogioacchino.delregno, linux-arm-kernel, linux-mediatek,
	lorenzo.bianconi83, robh, krzk+dt, conor+dt, devicetree, upstream

Add EN7581 support to MT7530 DSA driver.

Changes since v1:
- get rid of mac_port_config callback for EN7581
- introduce en7581_mac_port_get_caps callback
- introduce MT753X_FORCE_MODE(id) macro
- fix compatible property in mt7530.yaml

Lorenzo Bianconi (2):
  dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch
  net: dsa: mt7530: Add EN7581 support

 .../bindings/net/dsa/mediatek,mt7530.yaml     |  8 ++-
 drivers/net/dsa/mt7530-mmio.c                 |  1 +
 drivers/net/dsa/mt7530.c                      | 49 ++++++++++++++++---
 drivers/net/dsa/mt7530.h                      | 20 ++++++--
 4 files changed, 66 insertions(+), 12 deletions(-)

-- 
2.45.2



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

* [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch
  2024-08-01  7:35 [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Lorenzo Bianconi
@ 2024-08-01  7:35 ` Lorenzo Bianconi
  2024-08-01  8:17   ` Arınç ÜNAL
  2024-08-01 18:21   ` Florian Fainelli
  2024-08-01  7:35 ` [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support Lorenzo Bianconi
  2024-08-05 23:42 ` [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Jakub Kicinski
  2 siblings, 2 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2024-08-01  7:35 UTC (permalink / raw)
  To: netdev
  Cc: arinc.unal, daniel, dqfext, sean.wang, andrew, f.fainelli,
	olteanv, davem, edumazet, kuba, pabeni, matthias.bgg,
	angelogioacchino.delregno, linux-arm-kernel, linux-mediatek,
	lorenzo.bianconi83, robh, krzk+dt, conor+dt, devicetree, upstream

Add documentation for the built-in switch which can be found in the
Airoha EN7581 SoC.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 .../devicetree/bindings/net/dsa/mediatek,mt7530.yaml      | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
index 7e405ad96eb2..ea979bcae1d6 100644
--- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
@@ -92,6 +92,10 @@ properties:
           Built-in switch of the MT7988 SoC
         const: mediatek,mt7988-switch
 
+      - description:
+          Built-in switch of the Airoha EN7581 SoC
+        const: airoha,en7581-switch
+
   reg:
     maxItems: 1
 
@@ -284,7 +288,9 @@ allOf:
   - if:
       properties:
         compatible:
-          const: mediatek,mt7988-switch
+          enum:
+            - mediatek,mt7988-switch
+            - airoha,en7581-switch
     then:
       $ref: "#/$defs/mt7530-dsa-port"
       properties:
-- 
2.45.2



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

* [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support
  2024-08-01  7:35 [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Lorenzo Bianconi
  2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
@ 2024-08-01  7:35 ` Lorenzo Bianconi
  2024-08-01  8:19   ` Arınç ÜNAL
  2024-08-01 18:21   ` Florian Fainelli
  2024-08-05 23:42 ` [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Jakub Kicinski
  2 siblings, 2 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2024-08-01  7:35 UTC (permalink / raw)
  To: netdev
  Cc: arinc.unal, daniel, dqfext, sean.wang, andrew, f.fainelli,
	olteanv, davem, edumazet, kuba, pabeni, matthias.bgg,
	angelogioacchino.delregno, linux-arm-kernel, linux-mediatek,
	lorenzo.bianconi83, robh, krzk+dt, conor+dt, devicetree, upstream

Introduce support for the DSA built-in switch available on the EN7581
development board. EN7581 support is similar to MT7988 one except
it requires to set MT7530_FORCE_MODE bit in MT753X_PMCR_P register
for on cpu port.

Tested-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/dsa/mt7530-mmio.c |  1 +
 drivers/net/dsa/mt7530.c      | 49 ++++++++++++++++++++++++++++++-----
 drivers/net/dsa/mt7530.h      | 20 ++++++++++----
 3 files changed, 59 insertions(+), 11 deletions(-)

diff --git a/drivers/net/dsa/mt7530-mmio.c b/drivers/net/dsa/mt7530-mmio.c
index b74a230a3f13..10dc49961f15 100644
--- a/drivers/net/dsa/mt7530-mmio.c
+++ b/drivers/net/dsa/mt7530-mmio.c
@@ -11,6 +11,7 @@
 #include "mt7530.h"
 
 static const struct of_device_id mt7988_of_match[] = {
+	{ .compatible = "airoha,en7581-switch", .data = &mt753x_table[ID_EN7581], },
 	{ .compatible = "mediatek,mt7988-switch", .data = &mt753x_table[ID_MT7988], },
 	{ /* sentinel */ },
 };
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index ec18e68bf3a8..d84ee1b419a6 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1152,7 +1152,8 @@ mt753x_cpu_port_enable(struct dsa_switch *ds, int port)
 	 * the MT7988 SoC. Trapped frames will be forwarded to the CPU port that
 	 * is affine to the inbound user port.
 	 */
-	if (priv->id == ID_MT7531 || priv->id == ID_MT7988)
+	if (priv->id == ID_MT7531 || priv->id == ID_MT7988 ||
+	    priv->id == ID_EN7581)
 		mt7530_set(priv, MT7531_CFC, MT7531_CPU_PMAP(BIT(port)));
 
 	/* CPU port gets connected to all user ports of
@@ -2207,7 +2208,7 @@ mt7530_setup_irq(struct mt7530_priv *priv)
 		return priv->irq ? : -EINVAL;
 	}
 
-	if (priv->id == ID_MT7988)
+	if (priv->id == ID_MT7988 || priv->id == ID_EN7581)
 		priv->irq_domain = irq_domain_add_linear(np, MT7530_NUM_PHYS,
 							 &mt7988_irq_domain_ops,
 							 priv);
@@ -2438,8 +2439,10 @@ mt7530_setup(struct dsa_switch *ds)
 		/* Clear link settings and enable force mode to force link down
 		 * on all ports until they're enabled later.
 		 */
-		mt7530_rmw(priv, MT753X_PMCR_P(i), PMCR_LINK_SETTINGS_MASK |
-			   MT7530_FORCE_MODE, MT7530_FORCE_MODE);
+		mt7530_rmw(priv, MT753X_PMCR_P(i),
+			   PMCR_LINK_SETTINGS_MASK |
+			   MT753X_FORCE_MODE(priv->id),
+			   MT753X_FORCE_MODE(priv->id));
 
 		/* Disable forwarding by default on all ports */
 		mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
@@ -2550,8 +2553,10 @@ mt7531_setup_common(struct dsa_switch *ds)
 		/* Clear link settings and enable force mode to force link down
 		 * on all ports until they're enabled later.
 		 */
-		mt7530_rmw(priv, MT753X_PMCR_P(i), PMCR_LINK_SETTINGS_MASK |
-			   MT7531_FORCE_MODE_MASK, MT7531_FORCE_MODE_MASK);
+		mt7530_rmw(priv, MT753X_PMCR_P(i),
+			   PMCR_LINK_SETTINGS_MASK |
+			   MT753X_FORCE_MODE(priv->id),
+			   MT753X_FORCE_MODE(priv->id));
 
 		/* Disable forwarding by default on all ports */
 		mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
@@ -2783,6 +2788,28 @@ static void mt7988_mac_port_get_caps(struct dsa_switch *ds, int port,
 	}
 }
 
+static void en7581_mac_port_get_caps(struct dsa_switch *ds, int port,
+				     struct phylink_config *config)
+{
+	switch (port) {
+	/* Ports which are connected to switch PHYs. There is no MII pinout. */
+	case 0 ... 4:
+		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
+			  config->supported_interfaces);
+
+		config->mac_capabilities |= MAC_10 | MAC_100 | MAC_1000FD;
+		break;
+
+	/* Port 6 is connected to SoC's XGMII MAC. There is no MII pinout. */
+	case 6:
+		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
+			  config->supported_interfaces);
+
+		config->mac_capabilities |= MAC_10000FD;
+		break;
+	}
+}
+
 static void
 mt7530_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
 		  phy_interface_t interface)
@@ -3220,6 +3247,16 @@ const struct mt753x_info mt753x_table[] = {
 		.phy_write_c45 = mt7531_ind_c45_phy_write,
 		.mac_port_get_caps = mt7988_mac_port_get_caps,
 	},
+	[ID_EN7581] = {
+		.id = ID_EN7581,
+		.pcs_ops = &mt7530_pcs_ops,
+		.sw_setup = mt7988_setup,
+		.phy_read_c22 = mt7531_ind_c22_phy_read,
+		.phy_write_c22 = mt7531_ind_c22_phy_write,
+		.phy_read_c45 = mt7531_ind_c45_phy_read,
+		.phy_write_c45 = mt7531_ind_c45_phy_write,
+		.mac_port_get_caps = en7581_mac_port_get_caps,
+	},
 };
 EXPORT_SYMBOL_GPL(mt753x_table);
 
diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
index 28592123070b..6ad33a9f6b1d 100644
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
@@ -19,6 +19,7 @@ enum mt753x_id {
 	ID_MT7621 = 1,
 	ID_MT7531 = 2,
 	ID_MT7988 = 3,
+	ID_EN7581 = 4,
 };
 
 #define	NUM_TRGMII_CTRL			5
@@ -64,25 +65,30 @@ enum mt753x_id {
 #define  MT7531_CPU_PMAP(x)		FIELD_PREP(MT7531_CPU_PMAP_MASK, x)
 
 #define MT753X_MIRROR_REG(id)		((id == ID_MT7531 || \
-					  id == ID_MT7988) ? \
+					  id == ID_MT7988 || \
+					  id == ID_EN7581) ? \
 					 MT7531_CFC : MT753X_MFC)
 
 #define MT753X_MIRROR_EN(id)		((id == ID_MT7531 || \
-					  id == ID_MT7988) ? \
+					  id == ID_MT7988 || \
+					  id == ID_EN7581) ? \
 					 MT7531_MIRROR_EN : MT7530_MIRROR_EN)
 
 #define MT753X_MIRROR_PORT_MASK(id)	((id == ID_MT7531 || \
-					  id == ID_MT7988) ? \
+					  id == ID_MT7988 || \
+					  id == ID_EN7581) ? \
 					 MT7531_MIRROR_PORT_MASK : \
 					 MT7530_MIRROR_PORT_MASK)
 
 #define MT753X_MIRROR_PORT_GET(id, val)	((id == ID_MT7531 || \
-					  id == ID_MT7988) ? \
+					  id == ID_MT7988 || \
+					  id == ID_EN7581) ? \
 					 MT7531_MIRROR_PORT_GET(val) : \
 					 MT7530_MIRROR_PORT_GET(val))
 
 #define MT753X_MIRROR_PORT_SET(id, val)	((id == ID_MT7531 || \
-					  id == ID_MT7988) ? \
+					  id == ID_MT7988 || \
+					  id == ID_EN7581) ? \
 					 MT7531_MIRROR_PORT_SET(val) : \
 					 MT7530_MIRROR_PORT_SET(val))
 
@@ -355,6 +361,10 @@ enum mt7530_vlan_port_acc_frm {
 					 MT7531_FORCE_MODE_TX_FC | \
 					 MT7531_FORCE_MODE_EEE100 | \
 					 MT7531_FORCE_MODE_EEE1G)
+#define  MT753X_FORCE_MODE(id)		((id == ID_MT7531 || \
+					  id == ID_MT7988) ? \
+					 MT7531_FORCE_MODE_MASK : \
+					 MT7530_FORCE_MODE)
 #define  PMCR_LINK_SETTINGS_MASK	(PMCR_MAC_TX_EN | PMCR_MAC_RX_EN | \
 					 PMCR_FORCE_EEE1G | \
 					 PMCR_FORCE_EEE100 | \
-- 
2.45.2



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

* Re: [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch
  2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
@ 2024-08-01  8:17   ` Arınç ÜNAL
  2024-08-01 18:21   ` Florian Fainelli
  1 sibling, 0 replies; 8+ messages in thread
From: Arınç ÜNAL @ 2024-08-01  8:17 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev
  Cc: daniel, dqfext, sean.wang, andrew, f.fainelli, olteanv, davem,
	edumazet, kuba, pabeni, matthias.bgg, angelogioacchino.delregno,
	linux-arm-kernel, linux-mediatek, lorenzo.bianconi83, robh,
	krzk+dt, conor+dt, devicetree, upstream

On 01/08/2024 10:35, Lorenzo Bianconi wrote:
> Add documentation for the built-in switch which can be found in the
> Airoha EN7581 SoC.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

Reviewed-by: Arınç ÜNAL <arinc.unal@arinc9.com>

Arınç


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

* Re: [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support
  2024-08-01  7:35 ` [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support Lorenzo Bianconi
@ 2024-08-01  8:19   ` Arınç ÜNAL
  2024-08-01 18:21   ` Florian Fainelli
  1 sibling, 0 replies; 8+ messages in thread
From: Arınç ÜNAL @ 2024-08-01  8:19 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev
  Cc: daniel, dqfext, sean.wang, andrew, f.fainelli, olteanv, davem,
	edumazet, kuba, pabeni, matthias.bgg, angelogioacchino.delregno,
	linux-arm-kernel, linux-mediatek, lorenzo.bianconi83, robh,
	krzk+dt, conor+dt, devicetree, upstream

On 01/08/2024 10:35, Lorenzo Bianconi wrote:
> Introduce support for the DSA built-in switch available on the EN7581
> development board. EN7581 support is similar to MT7988 one except
> it requires to set MT7530_FORCE_MODE bit in MT753X_PMCR_P register
> for on cpu port.
> 
> Tested-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

Reviewed-by: Arınç ÜNAL <arinc.unal@arinc9.com>

I'm interested in getting my hands on this development board.

Arınç


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

* Re: [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch
  2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
  2024-08-01  8:17   ` Arınç ÜNAL
@ 2024-08-01 18:21   ` Florian Fainelli
  1 sibling, 0 replies; 8+ messages in thread
From: Florian Fainelli @ 2024-08-01 18:21 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev
  Cc: arinc.unal, daniel, dqfext, sean.wang, andrew, olteanv, davem,
	edumazet, kuba, pabeni, matthias.bgg, angelogioacchino.delregno,
	linux-arm-kernel, linux-mediatek, lorenzo.bianconi83, robh,
	krzk+dt, conor+dt, devicetree, upstream

On 8/1/24 00:35, Lorenzo Bianconi wrote:
> Add documentation for the built-in switch which can be found in the
> Airoha EN7581 SoC.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
-- 
Florian



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

* Re: [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support
  2024-08-01  7:35 ` [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support Lorenzo Bianconi
  2024-08-01  8:19   ` Arınç ÜNAL
@ 2024-08-01 18:21   ` Florian Fainelli
  1 sibling, 0 replies; 8+ messages in thread
From: Florian Fainelli @ 2024-08-01 18:21 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev
  Cc: arinc.unal, daniel, dqfext, sean.wang, andrew, olteanv, davem,
	edumazet, kuba, pabeni, matthias.bgg, angelogioacchino.delregno,
	linux-arm-kernel, linux-mediatek, lorenzo.bianconi83, robh,
	krzk+dt, conor+dt, devicetree, upstream

On 8/1/24 00:35, Lorenzo Bianconi wrote:
> Introduce support for the DSA built-in switch available on the EN7581
> development board. EN7581 support is similar to MT7988 one except
> it requires to set MT7530_FORCE_MODE bit in MT753X_PMCR_P register
> for on cpu port.
> 
> Tested-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
-- 
Florian



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

* Re: [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver
  2024-08-01  7:35 [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Lorenzo Bianconi
  2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
  2024-08-01  7:35 ` [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support Lorenzo Bianconi
@ 2024-08-05 23:42 ` Jakub Kicinski
  2 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2024-08-05 23:42 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: netdev, arinc.unal, daniel, dqfext, sean.wang, andrew, f.fainelli,
	olteanv, davem, edumazet, pabeni, matthias.bgg,
	angelogioacchino.delregno, linux-arm-kernel, linux-mediatek,
	lorenzo.bianconi83, robh, krzk+dt, conor+dt, devicetree, upstream

On Thu,  1 Aug 2024 09:35:10 +0200 Lorenzo Bianconi wrote:
> Add EN7581 support to MT7530 DSA driver.
> 
> Changes since v1:
> - get rid of mac_port_config callback for EN7581
> - introduce en7581_mac_port_get_caps callback
> - introduce MT753X_FORCE_MODE(id) macro
> - fix compatible property in mt7530.yaml

Looks like this got applied as 3608d6aca5e7 ("Merge branch 'dsa-en7581'
into main"). I think due to some script misbehavior it has the wrong
cover letter on the merge, but the code matches this series.

Thanks!


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

end of thread, other threads:[~2024-08-05 23:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-01  7:35 [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Lorenzo Bianconi
2024-08-01  7:35 ` [PATCH v2 net-next 1/2] dt-bindings: net: dsa: mediatek,mt7530: Add airoha,en7581-switch Lorenzo Bianconi
2024-08-01  8:17   ` Arınç ÜNAL
2024-08-01 18:21   ` Florian Fainelli
2024-08-01  7:35 ` [PATCH v2 net-next 2/2] net: dsa: mt7530: Add EN7581 support Lorenzo Bianconi
2024-08-01  8:19   ` Arınç ÜNAL
2024-08-01 18:21   ` Florian Fainelli
2024-08-05 23:42 ` [PATCH v2 net-next 0/2] Add support for EN7581 to mt7530 driver Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.