forked from Openwrt/openwrt
9e86e0b33b
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>
147 lines
5.1 KiB
Diff
147 lines
5.1 KiB
Diff
From 7199c736aa8cd9c69ae681a9c733408372c2ce76 Mon Sep 17 00:00:00 2001
|
||
From: =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= <arinc.unal@arinc9.com>
|
||
Date: Tue, 6 Feb 2024 01:08:04 +0300
|
||
Subject: [PATCH 32/48] net: dsa: mt7530: simplify mt7530_pad_clk_setup()
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
This code is from before this driver was converted to phylink API. Phylink
|
||
deals with the unsupported interface cases before mt7530_pad_clk_setup() is
|
||
run. Therefore, the default case would never run. However, it must be
|
||
defined nonetheless to handle all the remaining enumeration values, the
|
||
phy-modes.
|
||
|
||
Switch to if statement for RGMII and return which simplifies the code and
|
||
saves an indent.
|
||
|
||
Set P6_INTF_MODE, which is the three least significant bits of the
|
||
MT7530_P6ECR register, to 0 for RGMII even though it will already be 0
|
||
after reset. This is to keep supporting dynamic reconfiguration of the port
|
||
in the case the interface changes from TRGMII to RGMII.
|
||
|
||
Disable the TRGMII clocks for all cases. They will be enabled if TRGMII is
|
||
being used.
|
||
|
||
Read XTAL after checking for RGMII as it's only needed for the TRGMII
|
||
interface mode.
|
||
|
||
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
|
||
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
||
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||
Link: https://lore.kernel.org/r/20240206-for-netnext-mt7530-improvements-2-v5-3-d7d92a185cb1@arinc9.com
|
||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||
---
|
||
drivers/net/dsa/mt7530.c | 91 ++++++++++++++++++----------------------
|
||
1 file changed, 40 insertions(+), 51 deletions(-)
|
||
|
||
--- a/drivers/net/dsa/mt7530.c
|
||
+++ b/drivers/net/dsa/mt7530.c
|
||
@@ -418,65 +418,54 @@ static int
|
||
mt7530_pad_clk_setup(struct dsa_switch *ds, phy_interface_t interface)
|
||
{
|
||
struct mt7530_priv *priv = ds->priv;
|
||
- u32 ncpo1, ssc_delta, trgint, xtal;
|
||
+ u32 ncpo1, ssc_delta, xtal;
|
||
|
||
- xtal = mt7530_read(priv, MT7530_MHWTRAP) & HWTRAP_XTAL_MASK;
|
||
+ /* Disable the MT7530 TRGMII clocks */
|
||
+ core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_TRGMIICK_EN);
|
||
|
||
- switch (interface) {
|
||
- case PHY_INTERFACE_MODE_RGMII:
|
||
- trgint = 0;
|
||
- break;
|
||
- case PHY_INTERFACE_MODE_TRGMII:
|
||
- trgint = 1;
|
||
- if (xtal == HWTRAP_XTAL_25MHZ)
|
||
- ssc_delta = 0x57;
|
||
- else
|
||
- ssc_delta = 0x87;
|
||
- if (priv->id == ID_MT7621) {
|
||
- /* PLL frequency: 125MHz: 1.0GBit */
|
||
- if (xtal == HWTRAP_XTAL_40MHZ)
|
||
- ncpo1 = 0x0640;
|
||
- if (xtal == HWTRAP_XTAL_25MHZ)
|
||
- ncpo1 = 0x0a00;
|
||
- } else { /* PLL frequency: 250MHz: 2.0Gbit */
|
||
- if (xtal == HWTRAP_XTAL_40MHZ)
|
||
- ncpo1 = 0x0c80;
|
||
- if (xtal == HWTRAP_XTAL_25MHZ)
|
||
- ncpo1 = 0x1400;
|
||
- }
|
||
- break;
|
||
- default:
|
||
- dev_err(priv->dev, "xMII interface %d not supported\n",
|
||
- interface);
|
||
- return -EINVAL;
|
||
+ if (interface == PHY_INTERFACE_MODE_RGMII) {
|
||
+ mt7530_rmw(priv, MT7530_P6ECR, P6_INTF_MODE_MASK,
|
||
+ P6_INTF_MODE(0));
|
||
+ return 0;
|
||
}
|
||
|
||
- mt7530_rmw(priv, MT7530_P6ECR, P6_INTF_MODE_MASK,
|
||
- P6_INTF_MODE(trgint));
|
||
+ mt7530_rmw(priv, MT7530_P6ECR, P6_INTF_MODE_MASK, P6_INTF_MODE(1));
|
||
|
||
- if (trgint) {
|
||
- /* Disable the MT7530 TRGMII clocks */
|
||
- core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_TRGMIICK_EN);
|
||
-
|
||
- /* Setup the MT7530 TRGMII Tx Clock */
|
||
- core_write(priv, CORE_PLL_GROUP5, RG_LCDDS_PCW_NCPO1(ncpo1));
|
||
- core_write(priv, CORE_PLL_GROUP6, RG_LCDDS_PCW_NCPO0(0));
|
||
- core_write(priv, CORE_PLL_GROUP10, RG_LCDDS_SSC_DELTA(ssc_delta));
|
||
- core_write(priv, CORE_PLL_GROUP11, RG_LCDDS_SSC_DELTA1(ssc_delta));
|
||
- core_write(priv, CORE_PLL_GROUP4,
|
||
- RG_SYSPLL_DDSFBK_EN | RG_SYSPLL_BIAS_EN |
|
||
- RG_SYSPLL_BIAS_LPF_EN);
|
||
- core_write(priv, CORE_PLL_GROUP2,
|
||
- RG_SYSPLL_EN_NORMAL | RG_SYSPLL_VODEN |
|
||
- RG_SYSPLL_POSDIV(1));
|
||
- core_write(priv, CORE_PLL_GROUP7,
|
||
- RG_LCDDS_PCW_NCPO_CHG | RG_LCCDS_C(3) |
|
||
- RG_LCDDS_PWDB | RG_LCDDS_ISO_EN);
|
||
+ xtal = mt7530_read(priv, MT7530_MHWTRAP) & HWTRAP_XTAL_MASK;
|
||
|
||
- /* Enable the MT7530 TRGMII clocks */
|
||
- core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_TRGMIICK_EN);
|
||
+ if (xtal == HWTRAP_XTAL_25MHZ)
|
||
+ ssc_delta = 0x57;
|
||
+ else
|
||
+ ssc_delta = 0x87;
|
||
+
|
||
+ if (priv->id == ID_MT7621) {
|
||
+ /* PLL frequency: 125MHz: 1.0GBit */
|
||
+ if (xtal == HWTRAP_XTAL_40MHZ)
|
||
+ ncpo1 = 0x0640;
|
||
+ if (xtal == HWTRAP_XTAL_25MHZ)
|
||
+ ncpo1 = 0x0a00;
|
||
+ } else { /* PLL frequency: 250MHz: 2.0Gbit */
|
||
+ if (xtal == HWTRAP_XTAL_40MHZ)
|
||
+ ncpo1 = 0x0c80;
|
||
+ if (xtal == HWTRAP_XTAL_25MHZ)
|
||
+ ncpo1 = 0x1400;
|
||
}
|
||
|
||
+ /* Setup the MT7530 TRGMII Tx Clock */
|
||
+ core_write(priv, CORE_PLL_GROUP5, RG_LCDDS_PCW_NCPO1(ncpo1));
|
||
+ core_write(priv, CORE_PLL_GROUP6, RG_LCDDS_PCW_NCPO0(0));
|
||
+ core_write(priv, CORE_PLL_GROUP10, RG_LCDDS_SSC_DELTA(ssc_delta));
|
||
+ core_write(priv, CORE_PLL_GROUP11, RG_LCDDS_SSC_DELTA1(ssc_delta));
|
||
+ core_write(priv, CORE_PLL_GROUP4, RG_SYSPLL_DDSFBK_EN |
|
||
+ RG_SYSPLL_BIAS_EN | RG_SYSPLL_BIAS_LPF_EN);
|
||
+ core_write(priv, CORE_PLL_GROUP2, RG_SYSPLL_EN_NORMAL |
|
||
+ RG_SYSPLL_VODEN | RG_SYSPLL_POSDIV(1));
|
||
+ core_write(priv, CORE_PLL_GROUP7, RG_LCDDS_PCW_NCPO_CHG |
|
||
+ RG_LCCDS_C(3) | RG_LCDDS_PWDB | RG_LCDDS_ISO_EN);
|
||
+
|
||
+ /* Enable the MT7530 TRGMII clocks */
|
||
+ core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_TRGMIICK_EN);
|
||
+
|
||
return 0;
|
||
}
|
||
|