mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Changelogs: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.67 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.68 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.69 Upstreamed patches: target/linux/generic/backport-6.1/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch [1] target/linux/generic/backport-6.1/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch [2] target/linux/generic/backport-6.1/790-48-STABLE-net-dsa-mt7530-trap-link-local-frames-regardless-of-.patch [3] target/linux/generic/backport-6.1/790-50-v6.10-net-dsa-mt7530-fix-mirroring-frames-received-on-loca.patch [4] target/linux/generic/backport-6.1/790-16-v6.4-net-dsa-mt7530-set-all-CPU-ports-in-MT7531_CPU_PMAP.patch [5] target/linux/generic/backport-6.1/790-46-v6.9-net-dsa-mt7530-fix-improper-frames-on-all-25MHz-and-.patch [6] target/linux/generic/backport-6.1/790-47-v6.10-net-dsa-mt7530-fix-enabling-EEE-on-MT7531-switch-on-.patch [7] target/linux/mediatek/patches-6.1/220-v6.3-clk-mediatek-clk-gate-Propagate-struct-device-with-m.patch [8] target/linux/mediatek/patches-6.1/222-v6.3-clk-mediatek-clk-mtk-Propagate-struct-device-for-com.patch [9] target/linux/mediatek/patches-6.1/223-v6.3-clk-mediatek-clk-mux-Propagate-struct-device-for-mtk.patch [10] target/linux/mediatek/patches-6.1/226-v6.3-clk-mediatek-clk-mtk-Extend-mtk_clk_simple_probe.patch [11] Symbol changes: MITIGATION_SPECTRE_BHI (new) [12] SPECTRE_BHI_{ON,OFF} (deprecated) [12] References: [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=8bf7c76a2a207ca2b4cfda0a279192adf27678d7 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=f1c3c61701a0b12f4906152c1626a5de580ea3d2 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=19643bf8c9b5bb5eea5163bf2f6a3eee6fb5b99b [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=e86c9db58eba290e858e2bb80efcde9e3973a5ef [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=013c787d231188a6408e2991150d3c9bf9a2aa0b [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=41a004ffba9b1fd8a5a7128ebd0dfa3ed39c3316 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=7d51db455ca03e5270cc585a75a674abd063fa6c [8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=082b831488a41257b7ac7ffa1d80a0b60d98394d [9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=6f5f72a684a2823f21efbfd20c7e4b528c44a781 [10] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=a4fe8813a7868ba5867e42e60de7a2b8baac30ff [11] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=c1d87d56af063c87961511ee25f6b07a5676d27d [12] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=d844df110084ef8bd950a52194865f3f63b561ca Signed-off-by: Shiji Yang <yangshiji66@qq.com>
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 38be6fdf7e93431e91aac3884837b22236325f68 Mon Sep 17 00:00:00 2001
 | ||
| From: =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= <arinc.unal@arinc9.com>
 | ||
| Date: Mon, 22 Jan 2024 08:34:31 +0300
 | ||
| Subject: [PATCH 21/48] net: dsa: mt7530: support OF-based registration of
 | ||
|  switch MDIO bus
 | ||
| MIME-Version: 1.0
 | ||
| Content-Type: text/plain; charset=UTF-8
 | ||
| Content-Transfer-Encoding: 8bit
 | ||
| 
 | ||
| Currently the MDIO bus of the switches the MT7530 DSA subdriver controls
 | ||
| can only be registered as non-OF-based. Bring support for registering the
 | ||
| bus OF-based.
 | ||
| 
 | ||
| The subdrivers that control switches [with MDIO bus] probed on OF must
 | ||
| follow this logic to support all cases properly:
 | ||
| 
 | ||
| No switch MDIO bus defined: Populate ds->user_mii_bus, register the MDIO
 | ||
| bus, set the interrupts for PHYs if "interrupt-controller" is defined at
 | ||
| the switch node. This case should only be covered for the switches which
 | ||
| their dt-bindings documentation didn't document the MDIO bus from the
 | ||
| start. This is to keep supporting the device trees that do not describe the
 | ||
| MDIO bus on the device tree but the MDIO bus is being used nonetheless.
 | ||
| 
 | ||
| Switch MDIO bus defined: Don't populate ds->user_mii_bus, register the MDIO
 | ||
| bus, set the interrupts for PHYs if ["interrupt-controller" is defined at
 | ||
| the switch node and "interrupts" is defined at the PHY nodes under the
 | ||
| switch MDIO bus node].
 | ||
| 
 | ||
| Switch MDIO bus defined but explicitly disabled: If the device tree says
 | ||
| status = "disabled" for the MDIO bus, we shouldn't need an MDIO bus at all.
 | ||
| Instead, just exit as early as possible and do not call any MDIO API.
 | ||
| 
 | ||
| The use of ds->user_mii_bus is inappropriate when the MDIO bus of the
 | ||
| switch is described on the device tree [1], which is why we don't populate
 | ||
| ds->user_mii_bus in that case.
 | ||
| 
 | ||
| Link: https://lore.kernel.org/netdev/20231213120656.x46fyad6ls7sqyzv@skbuf/ [1]
 | ||
| Suggested-by: David Bauer <mail@david-bauer.net>
 | ||
| Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
 | ||
| Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
 | ||
| Link: https://lore.kernel.org/r/20240122053431.7751-1-arinc.unal@arinc9.com
 | ||
| Signed-off-by: Paolo Abeni <pabeni@redhat.com>
 | ||
| ---
 | ||
|  drivers/net/dsa/mt7530.c | 34 ++++++++++++++++++++++++++--------
 | ||
|  1 file changed, 26 insertions(+), 8 deletions(-)
 | ||
| 
 | ||
| --- a/drivers/net/dsa/mt7530.c
 | ||
| +++ b/drivers/net/dsa/mt7530.c
 | ||
| @@ -2350,24 +2350,40 @@ mt7530_free_irq_common(struct mt7530_pri
 | ||
|  static void
 | ||
|  mt7530_free_irq(struct mt7530_priv *priv)
 | ||
|  {
 | ||
| -	mt7530_free_mdio_irq(priv);
 | ||
| +	struct device_node *mnp, *np = priv->dev->of_node;
 | ||
| +
 | ||
| +	mnp = of_get_child_by_name(np, "mdio");
 | ||
| +	if (!mnp)
 | ||
| +		mt7530_free_mdio_irq(priv);
 | ||
| +	of_node_put(mnp);
 | ||
| +
 | ||
|  	mt7530_free_irq_common(priv);
 | ||
|  }
 | ||
|  
 | ||
|  static int
 | ||
|  mt7530_setup_mdio(struct mt7530_priv *priv)
 | ||
|  {
 | ||
| +	struct device_node *mnp, *np = priv->dev->of_node;
 | ||
|  	struct dsa_switch *ds = priv->ds;
 | ||
|  	struct device *dev = priv->dev;
 | ||
|  	struct mii_bus *bus;
 | ||
|  	static int idx;
 | ||
| -	int ret;
 | ||
| +	int ret = 0;
 | ||
| +
 | ||
| +	mnp = of_get_child_by_name(np, "mdio");
 | ||
| +
 | ||
| +	if (mnp && !of_device_is_available(mnp))
 | ||
| +		goto out;
 | ||
|  
 | ||
|  	bus = devm_mdiobus_alloc(dev);
 | ||
| -	if (!bus)
 | ||
| -		return -ENOMEM;
 | ||
| +	if (!bus) {
 | ||
| +		ret = -ENOMEM;
 | ||
| +		goto out;
 | ||
| +	}
 | ||
| +
 | ||
| +	if (!mnp)
 | ||
| +		ds->slave_mii_bus = bus;
 | ||
|  
 | ||
| -	ds->slave_mii_bus = bus;
 | ||
|  	bus->priv = priv;
 | ||
|  	bus->name = KBUILD_MODNAME "-mii";
 | ||
|  	snprintf(bus->id, MII_BUS_ID_SIZE, KBUILD_MODNAME "-%d", idx++);
 | ||
| @@ -2376,16 +2392,18 @@ mt7530_setup_mdio(struct mt7530_priv *pr
 | ||
|  	bus->parent = dev;
 | ||
|  	bus->phy_mask = ~ds->phys_mii_mask;
 | ||
|  
 | ||
| -	if (priv->irq)
 | ||
| +	if (priv->irq && !mnp)
 | ||
|  		mt7530_setup_mdio_irq(priv);
 | ||
|  
 | ||
| -	ret = devm_mdiobus_register(dev, bus);
 | ||
| +	ret = devm_of_mdiobus_register(dev, bus, mnp);
 | ||
|  	if (ret) {
 | ||
|  		dev_err(dev, "failed to register MDIO bus: %d\n", ret);
 | ||
| -		if (priv->irq)
 | ||
| +		if (priv->irq && !mnp)
 | ||
|  			mt7530_free_mdio_irq(priv);
 | ||
|  	}
 | ||
|  
 | ||
| +out:
 | ||
| +	of_node_put(mnp);
 | ||
|  	return ret;
 | ||
|  }
 | ||
|  
 |