stm32mp1: check if the SoC is single core
authorYann Gautier <yann.gautier@st.com>
Tue, 4 Jun 2019 16:23:10 +0000 (18:23 +0200)
committerYann Gautier <yann.gautier@st.com>
Mon, 2 Sep 2019 15:51:06 +0000 (17:51 +0200)
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 <yann.gautier@st.com>
Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com>
Signed-off-by: Lionel Debieve <lionel.debieve@st.com>
plat/st/common/include/stm32mp_common.h
plat/st/stm32mp1/stm32mp1_private.c

index f0573903de5f920967612cdc470f05998e76a30b..0d0a9c66972b151993403417738b0d7db0011f18 100644 (file)
@@ -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);
 
index c334cd1e0f6c24c8d8569ff197ddf7b266f55a9b..38ebcef64c0d1a6b16ca470c320115bab79ff969 100644 (file)
@@ -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) {