From b2182cde098307a59ed389cff251bd4932654bf8 Mon Sep 17 00:00:00 2001 From: Yann Gautier Date: Tue, 4 Jun 2019 18:23:10 +0200 Subject: stm32mp1: check if the SoC is single core Among the variants of STM32MP, the STM32MP151 is a single Cortex-A7 chip. A function is added to check the part number of the SoC. If it corresponds to STM32MP151A or STM32MP151C, then the chip has a single Cortex-A7. Change-Id: Icac2015c5d03ce0bcb8e99bbaf1ec8ada34be49c Signed-off-by: Yann Gautier Signed-off-by: Nicolas Le Bayon Signed-off-by: Lionel Debieve --- plat/st/common/include/stm32mp_common.h | 2 ++ plat/st/stm32mp1/stm32mp1_private.c | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) (limited to 'plat/st') diff --git a/plat/st/common/include/stm32mp_common.h b/plat/st/common/include/stm32mp_common.h index f0573903..0d0a9c66 100644 --- a/plat/st/common/include/stm32mp_common.h +++ b/plat/st/common/include/stm32mp_common.h @@ -16,6 +16,8 @@ void stm32mp_save_boot_ctx_address(uintptr_t address); uintptr_t stm32mp_get_boot_ctx_address(void); +bool stm32mp_is_single_core(void); + /* Return the base address of the DDR controller */ uintptr_t stm32mp_ddrctrl_base(void); diff --git a/plat/st/stm32mp1/stm32mp1_private.c b/plat/st/stm32mp1/stm32mp1_private.c index c334cd1e..38ebcef6 100644 --- a/plat/st/stm32mp1/stm32mp1_private.c +++ b/plat/st/stm32mp1/stm32mp1_private.c @@ -254,6 +254,30 @@ void stm32mp_print_boardinfo(void) } } +/* Return true when SoC provides a single Cortex-A7 core, and false otherwise */ +bool stm32mp_is_single_core(void) +{ + uint32_t part_number; + bool ret = false; + + if (get_part_number(&part_number) < 0) { + ERROR("Invalid part number, assume single core chip"); + return true; + } + + switch (part_number) { + case STM32MP151A_PART_NB: + case STM32MP151C_PART_NB: + ret = true; + break; + + default: + break; + } + + return ret; +} + uint32_t stm32_iwdg_get_instance(uintptr_t base) { switch (base) { -- cgit v1.2.3