mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-01 11:36:49 +00:00
7bb99bca3d
1. Add sdhc clock for MT7620 and MT76x8 SoCs. 2. Fix clock driver warning for RT2880, RT305x and RT3883. Link: https://lore.kernel.org/all/20240910044024.120009-1-sergio.paracuellos@gmail.com/ Signed-off-by: Shiji Yang <yangshiji66@qq.com> Link: https://github.com/openwrt/openwrt/pull/17037 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
125 lines
4.8 KiB
Diff
125 lines
4.8 KiB
Diff
From d34db686a3d74bd564bfce2ada15011c556269fc Mon Sep 17 00:00:00 2001
|
|
From: Sergio Paracuellos <sergio.paracuellos@gmail.com>
|
|
Date: Tue, 10 Sep 2024 06:40:23 +0200
|
|
Subject: [PATCH 2/3] clk: ralink: mtmips: fix clocks probe order in oldest
|
|
ralink SoCs
|
|
|
|
Base clocks are the first in being probed and are real dependencies of the
|
|
rest of fixed, factor and peripheral clocks. For old ralink SoCs RT2880,
|
|
RT305x and RT3883 'xtal' must be defined first since in any other case,
|
|
when fixed clocks are probed they are delayed until 'xtal' is probed so the
|
|
following warning appears:
|
|
|
|
WARNING: CPU: 0 PID: 0 at drivers/clk/ralink/clk-mtmips.c:499 rt3883_bus_recalc_rate+0x98/0x138
|
|
Modules linked in:
|
|
CPU: 0 PID: 0 Comm: swapper Not tainted 6.6.43 #0
|
|
Stack : 805e58d0 00000000 00000004 8004f950 00000000 00000004 00000000 00000000
|
|
80669c54 80830000 80700000 805ae570 80670068 00000001 80669bf8 00000000
|
|
00000000 00000000 805ae570 80669b38 00000020 804db7dc 00000000 00000000
|
|
203a6d6d 80669b78 80669e48 70617773 00000000 805ae570 00000000 00000009
|
|
00000000 00000001 00000004 00000001 00000000 00000000 83fe43b0 00000000
|
|
...
|
|
Call Trace:
|
|
[<800065d0>] show_stack+0x64/0xf4
|
|
[<804bca14>] dump_stack_lvl+0x38/0x60
|
|
[<800218ac>] __warn+0x94/0xe4
|
|
[<8002195c>] warn_slowpath_fmt+0x60/0x94
|
|
[<80259ff8>] rt3883_bus_recalc_rate+0x98/0x138
|
|
[<80254530>] __clk_register+0x568/0x688
|
|
[<80254838>] of_clk_hw_register+0x18/0x2c
|
|
[<8070b910>] rt2880_clk_of_clk_init_driver+0x18c/0x594
|
|
[<8070b628>] of_clk_init+0x1c0/0x23c
|
|
[<806fc448>] plat_time_init+0x58/0x18c
|
|
[<806fdaf0>] time_init+0x10/0x6c
|
|
[<806f9bc4>] start_kernel+0x458/0x67c
|
|
|
|
---[ end trace 0000000000000000 ]---
|
|
|
|
When this driver was mainlined we could not find any active users of old
|
|
ralink SoCs so we cannot perform any real tests for them. Now, one user
|
|
of a Belkin f9k1109 version 1 device which uses RT3883 SoC appeared and
|
|
reported some issues in openWRT:
|
|
- https://github.com/openwrt/openwrt/issues/16054
|
|
|
|
Thus, define a 'rt2880_xtal_recalc_rate()' just returning the expected
|
|
frequency 40Mhz and use it along the old ralink SoCs to have a correct
|
|
boot trace with no warnings and a working clock plan from the beggining.
|
|
|
|
Fixes: 6f3b15586eef ("clk: ralink: add clock and reset driver for MTMIPS SoCs")
|
|
Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
|
|
Link: https://lore.kernel.org/r/20240910044024.120009-3-sergio.paracuellos@gmail.com
|
|
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
|
---
|
|
drivers/clk/ralink/clk-mtmips.c | 21 +++++++++++++--------
|
|
1 file changed, 13 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/clk/ralink/clk-mtmips.c
|
|
+++ b/drivers/clk/ralink/clk-mtmips.c
|
|
@@ -263,10 +263,6 @@ err_clk_unreg:
|
|
.rate = _rate \
|
|
}
|
|
|
|
-static struct mtmips_clk_fixed rt305x_fixed_clocks[] = {
|
|
- CLK_FIXED("xtal", NULL, 40000000)
|
|
-};
|
|
-
|
|
static struct mtmips_clk_fixed rt3883_fixed_clocks[] = {
|
|
CLK_FIXED("xtal", NULL, 40000000),
|
|
CLK_FIXED("periph", "xtal", 40000000)
|
|
@@ -371,6 +367,12 @@ static inline struct mtmips_clk *to_mtmi
|
|
return container_of(hw, struct mtmips_clk, hw);
|
|
}
|
|
|
|
+static unsigned long rt2880_xtal_recalc_rate(struct clk_hw *hw,
|
|
+ unsigned long parent_rate)
|
|
+{
|
|
+ return 40000000;
|
|
+}
|
|
+
|
|
static unsigned long rt5350_xtal_recalc_rate(struct clk_hw *hw,
|
|
unsigned long parent_rate)
|
|
{
|
|
@@ -682,10 +684,12 @@ static unsigned long mt76x8_cpu_recalc_r
|
|
}
|
|
|
|
static struct mtmips_clk rt2880_clks_base[] = {
|
|
+ { CLK_BASE("xtal", NULL, rt2880_xtal_recalc_rate) },
|
|
{ CLK_BASE("cpu", "xtal", rt2880_cpu_recalc_rate) }
|
|
};
|
|
|
|
static struct mtmips_clk rt305x_clks_base[] = {
|
|
+ { CLK_BASE("xtal", NULL, rt2880_xtal_recalc_rate) },
|
|
{ CLK_BASE("cpu", "xtal", rt305x_cpu_recalc_rate) }
|
|
};
|
|
|
|
@@ -695,6 +699,7 @@ static struct mtmips_clk rt3352_clks_bas
|
|
};
|
|
|
|
static struct mtmips_clk rt3883_clks_base[] = {
|
|
+ { CLK_BASE("xtal", NULL, rt2880_xtal_recalc_rate) },
|
|
{ CLK_BASE("cpu", "xtal", rt3883_cpu_recalc_rate) },
|
|
{ CLK_BASE("bus", "cpu", rt3883_bus_recalc_rate) }
|
|
};
|
|
@@ -751,8 +756,8 @@ err_clk_unreg:
|
|
static const struct mtmips_clk_data rt2880_clk_data = {
|
|
.clk_base = rt2880_clks_base,
|
|
.num_clk_base = ARRAY_SIZE(rt2880_clks_base),
|
|
- .clk_fixed = rt305x_fixed_clocks,
|
|
- .num_clk_fixed = ARRAY_SIZE(rt305x_fixed_clocks),
|
|
+ .clk_fixed = NULL,
|
|
+ .num_clk_fixed = 0,
|
|
.clk_factor = rt2880_factor_clocks,
|
|
.num_clk_factor = ARRAY_SIZE(rt2880_factor_clocks),
|
|
.clk_periph = rt2880_pherip_clks,
|
|
@@ -762,8 +767,8 @@ static const struct mtmips_clk_data rt28
|
|
static const struct mtmips_clk_data rt305x_clk_data = {
|
|
.clk_base = rt305x_clks_base,
|
|
.num_clk_base = ARRAY_SIZE(rt305x_clks_base),
|
|
- .clk_fixed = rt305x_fixed_clocks,
|
|
- .num_clk_fixed = ARRAY_SIZE(rt305x_fixed_clocks),
|
|
+ .clk_fixed = NULL,
|
|
+ .num_clk_fixed = 0,
|
|
.clk_factor = rt305x_factor_clocks,
|
|
.num_clk_factor = ARRAY_SIZE(rt305x_factor_clocks),
|
|
.clk_periph = rt305x_pherip_clks,
|