]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx: Enable ACTLR.SMP in SPL for i.MX6/7
authorSven Schwermer <sven@svenschwermer.de>
Sun, 2 Jan 2022 19:36:56 +0000 (20:36 +0100)
committerStefano Babic <sbabic@denx.de>
Sat, 5 Feb 2022 12:38:39 +0000 (13:38 +0100)
Similar to what has been done before with c5437e5b for u-boot proper, we
enable the SMP bit for SPL as well. This is necessary when SDP booting
straight into Linux, i.e. falcon boot. When SDP boot mode is active, the
ROM code does not set this bit which makes the caches not work once
activated in Linux.

On an i.MX6ULL (528MHz), this reduces a minimal kernel's boot time into
an initramfs shell from ~6.1s down to ~1.2s.

Signed-off-by: Sven Schwermer <sven@svenschwermer.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/cache.c
arch/arm/mach-imx/mx6/soc.c
arch/arm/mach-imx/mx7/soc.c
arch/arm/mach-imx/mx7ulp/soc.c

index 444834995ed099b4b770f2f22a95aab8c534f5b5..3f66d225c82ab399197205ebb56cda24e2bb63cf 100644 (file)
@@ -236,4 +236,9 @@ unsigned long call_imx_sip_ret2(unsigned long id, unsigned long reg0,
                                unsigned long reg3);
 
 void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
+
+#if defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP)
+void enable_ca7_smp(void);
+#endif
+
 #endif
index 4e3b49a3fdfc928f5e56d3babb08ca2040b9e003..ab9b621a2a6284d76a00b0cf76b9695efb234e1a 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/io.h>
 #include <asm/mach-imx/sys_proto.h>
 
-static void enable_ca7_smp(void)
+void enable_ca7_smp(void)
 {
        u32 val;
 
index bc56ef2b0b206d187ffda2883121896d89e72060..a353bffddf78e91182839d4b6ac038a30de2196c 100644 (file)
@@ -487,6 +487,9 @@ int arch_cpu_init(void)
        if (is_mx6dqp())
                noc_setup();
 #endif
+
+       enable_ca7_smp();
+
        return 0;
 }
 
index 21690072e15d3225a4b9b92dcccbc37347c94cbc..f6aec5a3aa2f39c681398fc2afd0efd119189015 100644 (file)
@@ -14,6 +14,7 @@
 #include <asm/mach-imx/rdc-sema.h>
 #include <asm/arch/imx-rdc.h>
 #include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/sys_proto.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/bootm.h>
 #include <dm.h>
@@ -323,6 +324,8 @@ int arch_cpu_init(void)
 
        imx_gpcv2_init();
 
+       enable_ca7_smp();
+
        return 0;
 }
 #else
index c90ce22404a9e69d191b1e569227bae18cb43928..bc41cbc687180d05b9cf6813f3f842a94e17a2e8 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/mach-imx/hab.h>
+#include <asm/mach-imx/sys_proto.h>
 #include <asm/setup.h>
 #include <linux/bitops.h>
 
@@ -77,6 +78,7 @@ enum bt_mode get_boot_mode(void)
 
 int arch_cpu_init(void)
 {
+       enable_ca7_smp();
        return 0;
 }