summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Stockhausen2025-05-23 17:21:28 +0000
committerRobert Marko2025-05-24 19:20:58 +0000
commitcd808d999739fdf65c5cfd19cd04a8a02e1c0089 (patch)
tree20208c5e366317f7854b31ee52958381e10ad8ac
parent897abbfc4a340380ae902f59cbcc0240c55fd7ed (diff)
downloadopenwrt-cd808d999739fdf65c5cfd19cd04a8a02e1c0089.tar.gz
realtek: relocate mips cpc probing
The MIPS CPC (Cluster Power Controller) is setup during boot and can take its configuration from the devicetree. This is currently not possible because the cpc probing happens before dt initialization. Call order during startup is: setup_arch() prom_init() <- our function mips_cpc_probe() smp_stuff() arch_mem_init() device_tree_init() <- our function unflatten_and_copy_device_tree() To avoid ugly hacking and support a clean devicetree relocate the cps/smp stuff to device_tree_init(). This is basically the same location as in generic mips initialization. Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com> Link: https://github.com/openwrt/openwrt/pull/18888 Signed-off-by: Robert Marko <robimarko@gmail.com>
-rw-r--r--target/linux/realtek/files-6.6/arch/mips/rtl838x/prom.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/target/linux/realtek/files-6.6/arch/mips/rtl838x/prom.c b/target/linux/realtek/files-6.6/arch/mips/rtl838x/prom.c
index 03993ec01d..0452987247 100644
--- a/target/linux/realtek/files-6.6/arch/mips/rtl838x/prom.c
+++ b/target/linux/realtek/files-6.6/arch/mips/rtl838x/prom.c
@@ -76,6 +76,23 @@ void __init device_tree_init(void)
}
initial_boot_params = (void *)fdt;
unflatten_and_copy_device_tree();
+
+ /* delay cpc & smp probing to allow devicetree access */
+ mips_cpc_probe();
+
+ if (!register_cps_smp_ops())
+ return;
+
+#ifdef CONFIG_MIPS_MT_SMP
+ if (cpu_has_mipsmt) {
+ rtl_smp_ops = vsmp_smp_ops;
+ rtl_smp_ops.init_secondary = rtl_init_secondary;
+ register_smp_ops(&rtl_smp_ops);
+ return;
+ }
+#endif
+
+ register_up_smp_ops();
}
void __init identify_rtl9302(void)
@@ -205,20 +222,4 @@ void __init prom_init(void)
fw_arg2 = 0;
fw_init_cmdline();
-
- mips_cpc_probe();
-
- if (!register_cps_smp_ops())
- return;
-
-#ifdef CONFIG_MIPS_MT_SMP
- if (cpu_has_mipsmt) {
- rtl_smp_ops = vsmp_smp_ops;
- rtl_smp_ops.init_secondary = rtl_init_secondary;
- register_smp_ops(&rtl_smp_ops);
- return;
- }
-#endif
-
- register_up_smp_ops();
}