Make sure stm32mp initcalls are only executed when running on a stm32mp SoC. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- arch/arm/mach-stm32mp/init.c | 20 +++++++++++++++++++- arch/arm/mach-stm32mp/stm32image.c | 4 ++++ include/mach/stm32mp/stm32.h | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-stm32mp/init.c b/arch/arm/mach-stm32mp/init.c index d46762e0b7..b63c1be5be 100644 --- a/arch/arm/mach-stm32mp/init.c +++ b/arch/arm/mach-stm32mp/init.c @@ -297,11 +297,29 @@ static int setup_cpu_type(void) return 0; } +static int __st32mp_soc; + +int stm32mp_soc(void) +{ + return __st32mp_soc; +} + static int stm32mp_init(void) { + if (of_machine_is_compatible("st,stm32mp135")) + __st32mp_soc = 32135; + else if (of_machine_is_compatible("st,stm32mp151")) + __st32mp_soc = 32151; + else if (of_machine_is_compatible("st,stm32mp153")) + __st32mp_soc = 32153; + else if (of_machine_is_compatible("st,stm32mp157")) + __st32mp_soc = 32157; + else + return 0; + setup_cpu_type(); setup_boot_mode(); return 0; } -core_initcall(stm32mp_init); +postcore_initcall(stm32mp_init); diff --git a/arch/arm/mach-stm32mp/stm32image.c b/arch/arm/mach-stm32mp/stm32image.c index 7867418e6c..37d7c73120 100644 --- a/arch/arm/mach-stm32mp/stm32image.c +++ b/arch/arm/mach-stm32mp/stm32image.c @@ -7,6 +7,7 @@ #include <init.h> #include <memory.h> #include <linux/sizes.h> +#include <mach/stm32mp/stm32.h> #define BAREBOX_STAGE2_OFFSET 256 @@ -45,6 +46,9 @@ static struct image_handler image_handler_stm32_image_v1_handler = { static int stm32mp_register_stm32image_image_handler(void) { + if (!stm32mp_soc()) + return 0; + return register_image_handler(&image_handler_stm32_image_v1_handler); } late_initcall(stm32mp_register_stm32image_image_handler); diff --git a/include/mach/stm32mp/stm32.h b/include/mach/stm32mp/stm32.h index adb898fa26..5ce93e5eb3 100644 --- a/include/mach/stm32mp/stm32.h +++ b/include/mach/stm32mp/stm32.h @@ -34,4 +34,6 @@ #define STM32_DDR_BASE 0xC0000000 #define STM32_DDR_SIZE SZ_1G +int stm32mp_soc(void); + #endif /* _MACH_STM32_H_ */ -- 2.30.2