dceb5938f8
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.29 Removed upstreamed: generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch[1] generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch[2] generic/backport-6.6/790-29-v6.9-net-dsa-mt7530-fix-improper-frames-on-all-25MHz-and-.patch[3] generic/backport-6.6/790-31-v6.10-net-dsa-mt7530-fix-enabling-EEE-on-MT7531-switch-on-.patch[4] generic/backport-6.6/790-34-v6.10-net-dsa-mt7530-fix-mirroring-frames-received-on-loca.patch[5] generic/backport-6.6/790-35-v6.10-net-dsa-mt7530-fix-port-mirroring-for-MT7988-SoC-swi.patch[6] mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch[7] Manually rebased: generic/backport-6.6/790-23-v6.9-net-dsa-mt7530-get-rid-of-priv-info-cpu_port_config.patch All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=a2471d271042ea18e8a6babc132a8716bb2f08b9 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=4ed82dd368ad883dc4284292937b882f044e625d 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=21b9d89d93422221cdda1b82fd075fa3c94a11d9 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=bd41ee1efd478852a0882ce5f136bc2b5e83eff2 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=d1be3960539249a8690ed09a29d0e3bf34189dd2 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=f8de1b6208bf71bd3102548d33dd8475573ad2ea 7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=6855f724f19620c3ddff57c349e0abba797475b1 Build system: x86/64 Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
95 lines
3.0 KiB
Diff
95 lines
3.0 KiB
Diff
From de16cf680331cd0bd7db97c3f8d376f5eac39cae Mon Sep 17 00:00:00 2001
|
|
From: Justin Swartz <justin.swartz@risingedge.co.za>
|
|
Date: Tue, 5 Mar 2024 06:39:51 +0200
|
|
Subject: [PATCH 28/30] net: dsa: mt7530: disable LEDs before reset
|
|
|
|
Disable LEDs just before resetting the MT7530 to avoid
|
|
situations where the ESW_P4_LED_0 and ESW_P3_LED_0 pin
|
|
states may cause an unintended external crystal frequency
|
|
to be selected.
|
|
|
|
The HT_XTAL_FSEL (External Crystal Frequency Selection)
|
|
field of HWTRAP (the Hardware Trap register) stores a
|
|
2-bit value that represents the state of the ESW_P4_LED_0
|
|
and ESW_P4_LED_0 pins (seemingly) sampled just after the
|
|
MT7530 has been reset, as:
|
|
|
|
ESW_P4_LED_0 ESW_P3_LED_0 Frequency
|
|
-----------------------------------------
|
|
0 1 20MHz
|
|
1 0 40MHz
|
|
1 1 25MHz
|
|
|
|
The value of HT_XTAL_FSEL is bootstrapped by pulling
|
|
ESW_P4_LED_0 and ESW_P3_LED_0 up or down accordingly,
|
|
but:
|
|
|
|
if a 40MHz crystal has been selected and
|
|
the ESW_P3_LED_0 pin is high during reset,
|
|
|
|
or a 20MHz crystal has been selected and
|
|
the ESW_P4_LED_0 pin is high during reset,
|
|
|
|
then the value of HT_XTAL_FSEL will indicate
|
|
that a 25MHz crystal is present.
|
|
|
|
By default, the state of the LED pins is PHY controlled
|
|
to reflect the link state.
|
|
|
|
To illustrate, if a board has:
|
|
|
|
5 ports with active low LED control,
|
|
and HT_XTAL_FSEL bootstrapped for 40MHz.
|
|
|
|
When the MT7530 is powered up without any external
|
|
connection, only the LED associated with Port 3 is
|
|
illuminated as ESW_P3_LED_0 is low.
|
|
|
|
In this state, directly after mt7530_setup()'s reset
|
|
is performed, the HWTRAP register (0x7800) reflects
|
|
the intended HT_XTAL_FSEL (HWTRAP bits 10:9) of 40MHz:
|
|
|
|
mt7530-mdio mdio-bus:1f: mt7530_read: 00007800 == 00007dcf
|
|
|
|
>>> bin(0x7dcf >> 9 & 0b11)
|
|
'0b10'
|
|
|
|
But if a cable is connected to Port 3 and the link
|
|
is active before mt7530_setup()'s reset takes place,
|
|
then HT_XTAL_FSEL seems to be set for 25MHz:
|
|
|
|
mt7530-mdio mdio-bus:1f: mt7530_read: 00007800 == 00007fcf
|
|
|
|
>>> bin(0x7fcf >> 9 & 0b11)
|
|
'0b11'
|
|
|
|
Once HT_XTAL_FSEL reflects 25MHz, none of the ports
|
|
are functional until the MT7621 (or MT7530 itself)
|
|
is reset.
|
|
|
|
By disabling the LED pins just before reset, the chance
|
|
of an unintended HT_XTAL_FSEL value is reduced.
|
|
|
|
Signed-off-by: Justin Swartz <justin.swartz@risingedge.co.za>
|
|
Link: https://lore.kernel.org/r/20240305043952.21590-1-justin.swartz@risingedge.co.za
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/dsa/mt7530.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
--- a/drivers/net/dsa/mt7530.c
|
|
+++ b/drivers/net/dsa/mt7530.c
|
|
@@ -2391,6 +2391,12 @@ mt7530_setup(struct dsa_switch *ds)
|
|
}
|
|
}
|
|
|
|
+ /* Disable LEDs before reset to prevent the MT7530 sampling a
|
|
+ * potentially incorrect HT_XTAL_FSEL value.
|
|
+ */
|
|
+ mt7530_write(priv, MT7530_LED_EN, 0);
|
|
+ usleep_range(1000, 1100);
|
|
+
|
|
/* Reset whole chip through gpio pin or memory-mapped registers for
|
|
* different type of hardware
|
|
*/
|