[U-Boot] [PATCH 0/8] Add get_cpu_id for STM32 SoCs

From: Patrice Chotard patrice.chotard@st.com
This series allows to get the cpu id of STM32 SoCs and to set the environment variable "soc_name" with the corresponding SoC name.
This will be useful in some development environment to retrieve files correspondig to SoC family.
Patrice Chotard (8): mach-stm32: Add get_cpu_id support mach-stm32: Move BOARD_LATE_INIT flag to mach-stm32 Kconfig board: stm32f429-discovery: Add set_env_soc_name() in board_late_init() board: stm32h743-evaluation: Add set_env_soc_name() in board_late_init() board: stm32f743-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f429-evaluation: Add set_env_soc_name() in board_late_init()
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 + arch/arm/include/asm/arch-stm32f7/stm32.h | 2 + arch/arm/include/asm/arch-stm32h7/stm32.h | 4 ++ arch/arm/mach-stm32/Kconfig | 3 ++ arch/arm/mach-stm32/soc.c | 46 ++++++++++++++++++++++ board/st/stm32f429-discovery/stm32f429-discovery.c | 7 ++++ .../st/stm32f429-evaluation/stm32f429-evaluation.c | 7 ++++ board/st/stm32f469-discovery/stm32f469-discovery.c | 7 ++++ board/st/stm32f746-disco/stm32f746-disco.c | 2 + board/st/stm32h743-disco/stm32h743-disco.c | 4 ++ board/st/stm32h743-eval/stm32h743-eval.c | 4 ++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 14 files changed, 88 insertions(+), 3 deletions(-)

From: Patrice Chotard patrice.chotard@st.com
This allows to read the CPU ID into STM32 DBGMCU_IDCODE register and create an environment variable which contains the soc name.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- arch/arm/include/asm/arch-stm32f4/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32f7/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32h7/stm32.h | 4 +++ arch/arm/mach-stm32/soc.c | 46 +++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+)
diff --git a/arch/arm/include/asm/arch-stm32f4/stm32.h b/arch/arm/include/asm/arch-stm32f4/stm32.h index 0449fcecede0..87fd0fa893e5 100644 --- a/arch/arm/include/asm/arch-stm32f4/stm32.h +++ b/arch/arm/include/asm/arch-stm32f4/stm32.h @@ -50,5 +50,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = { };
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _MACH_STM32_H_ */ diff --git a/arch/arm/include/asm/arch-stm32f7/stm32.h b/arch/arm/include/asm/arch-stm32f7/stm32.h index f54e6f195575..dade6e9661ac 100644 --- a/arch/arm/include/asm/arch-stm32f7/stm32.h +++ b/arch/arm/include/asm/arch-stm32f7/stm32.h @@ -63,5 +63,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-stm32h7/stm32.h b/arch/arm/include/asm/arch-stm32h7/stm32.h index f2922aa3237e..e520c7ea0dbd 100644 --- a/arch/arm/include/asm/arch-stm32h7/stm32.h +++ b/arch/arm/include/asm/arch-stm32h7/stm32.h @@ -18,4 +18,8 @@ * arch/arm/include/asm/arch-stm32f4/stm32.h * arch/arm/include/asm/arch-stm32f7/stm32.h */ + +int get_cpu_id(void); +void set_env_soc_name(int cpu_id); + #endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/mach-stm32/soc.c b/arch/arm/mach-stm32/soc.c index df20d547c500..0933dfce656d 100644 --- a/arch/arm/mach-stm32/soc.c +++ b/arch/arm/mach-stm32/soc.c @@ -9,6 +9,30 @@ #include <asm/io.h> #include <asm/armv7m_mpu.h>
+#define STM32_DBGMCU_IDCODE_DEV_ID GENMASK(11, 0) + +#if !defined(CONFIG_STM32H7) +#define STM32_DBGMCU_IDCODE 0xE0042000 +#else +#define STM32_DBGMCU_IDCODE 0x5C001000 +#endif + +struct cpu_id_table { + unsigned int id; + const char *name; + }; + +const struct cpu_id_table stm32_cpu_id_table[] = { + { 0x413, "stm32f4" }, + { 0x419, "stm32f4" }, + { 0x434, "stm32f4" }, + { 0x449, "stm32f7" }, + { 0x451, "stm32f7" }, + { 0x450, "stm32h7" }, + { 0x452, "stm32f7" }, + { 0 }, +}; + int arch_cpu_init(void) { int i; @@ -54,3 +78,25 @@ int arch_cpu_init(void)
return 0; } + +int get_cpu_id(void) +{ + return readl(STM32_DBGMCU_IDCODE) & STM32_DBGMCU_IDCODE_DEV_ID; +} + +void set_env_soc_name(int cpu_id) +{ + char soc[16]; + int i; + + memset(soc, '\0', sizeof(soc)); + + for (i = 0; i < sizeof(stm32_cpu_id_table); i++) { + if (stm32_cpu_id_table[i].id == cpu_id) { + snprintf(soc, sizeof(soc), stm32_cpu_id_table[i].name); + break; + } + } + + env_set("soc_name", soc); +}

Hi Patrice,
On 01/31/2018 08:09 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This allows to read the CPU ID into STM32 DBGMCU_IDCODE register and create an environment variable which contains the soc name.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32f7/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32h7/stm32.h | 4 +++ arch/arm/mach-stm32/soc.c | 46 +++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+)
diff --git a/arch/arm/include/asm/arch-stm32f4/stm32.h b/arch/arm/include/asm/arch-stm32f4/stm32.h index 0449fcecede0..87fd0fa893e5 100644 --- a/arch/arm/include/asm/arch-stm32f4/stm32.h +++ b/arch/arm/include/asm/arch-stm32f4/stm32.h @@ -50,5 +50,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = { };
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _MACH_STM32_H_ */ diff --git a/arch/arm/include/asm/arch-stm32f7/stm32.h b/arch/arm/include/asm/arch-stm32f7/stm32.h index f54e6f195575..dade6e9661ac 100644 --- a/arch/arm/include/asm/arch-stm32f7/stm32.h +++ b/arch/arm/include/asm/arch-stm32f7/stm32.h @@ -63,5 +63,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-stm32h7/stm32.h b/arch/arm/include/asm/arch-stm32h7/stm32.h index f2922aa3237e..e520c7ea0dbd 100644 --- a/arch/arm/include/asm/arch-stm32h7/stm32.h +++ b/arch/arm/include/asm/arch-stm32h7/stm32.h
how about creating one common header file for stm32.
@@ -18,4 +18,8 @@
- arch/arm/include/asm/arch-stm32f4/stm32.h
- arch/arm/include/asm/arch-stm32f7/stm32.h
*/
+int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/mach-stm32/soc.c b/arch/arm/mach-stm32/soc.c index df20d547c500..0933dfce656d 100644 --- a/arch/arm/mach-stm32/soc.c +++ b/arch/arm/mach-stm32/soc.c @@ -9,6 +9,30 @@ #include <asm/io.h> #include <asm/armv7m_mpu.h>
+#define STM32_DBGMCU_IDCODE_DEV_ID GENMASK(11, 0)
to make it clear it is MASK macro, pls replace xx_DEV_D with xx_MASK.
+#if !defined(CONFIG_STM32H7) +#define STM32_DBGMCU_IDCODE 0xE0042000 +#else +#define STM32_DBGMCU_IDCODE 0x5C001000 +#endif
move it to arch/soc register definitions like to arch/arm/include/asm/arch-stm32f7/stm32.h
+struct cpu_id_table {
- unsigned int id;
- const char *name;
- };
+const struct cpu_id_table stm32_cpu_id_table[] = {
- { 0x413, "stm32f4" },
- { 0x419, "stm32f4" },
- { 0x434, "stm32f4" },
- { 0x449, "stm32f7" },
- { 0x451, "stm32f7" },
- { 0x450, "stm32h7" },
- { 0x452, "stm32f7" },
- { 0 },
+};
int arch_cpu_init(void) { int i; @@ -54,3 +78,25 @@ int arch_cpu_init(void)
return 0; }
+int get_cpu_id(void) +{
- return readl(STM32_DBGMCU_IDCODE) & STM32_DBGMCU_IDCODE_DEV_ID;
+}
+void set_env_soc_name(int cpu_id) +{
- char soc[16];
- int i;
- memset(soc, '\0', sizeof(soc));
do we need it ?
Cheers, Vikas
- for (i = 0; i < sizeof(stm32_cpu_id_table); i++) {
if (stm32_cpu_id_table[i].id == cpu_id) {
snprintf(soc, sizeof(soc), stm32_cpu_id_table[i].name);
break;
}
- }
- env_set("soc_name", soc);
+}

Hi Vikas
On 01/31/2018 07:20 PM, Vikas Manocha wrote:
Hi Patrice,
On 01/31/2018 08:09 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This allows to read the CPU ID into STM32 DBGMCU_IDCODE register and create an environment variable which contains the soc name.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32f7/stm32.h | 2 ++ arch/arm/include/asm/arch-stm32h7/stm32.h | 4 +++ arch/arm/mach-stm32/soc.c | 46 +++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+)
diff --git a/arch/arm/include/asm/arch-stm32f4/stm32.h b/arch/arm/include/asm/arch-stm32f4/stm32.h index 0449fcecede0..87fd0fa893e5 100644 --- a/arch/arm/include/asm/arch-stm32f4/stm32.h +++ b/arch/arm/include/asm/arch-stm32f4/stm32.h @@ -50,5 +50,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = { };
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _MACH_STM32_H_ */ diff --git a/arch/arm/include/asm/arch-stm32f7/stm32.h b/arch/arm/include/asm/arch-stm32f7/stm32.h index f54e6f195575..dade6e9661ac 100644 --- a/arch/arm/include/asm/arch-stm32f7/stm32.h +++ b/arch/arm/include/asm/arch-stm32f7/stm32.h @@ -63,5 +63,7 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
void stm32_flash_latency_cfg(int latency); +int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
#endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-stm32h7/stm32.h b/arch/arm/include/asm/arch-stm32h7/stm32.h index f2922aa3237e..e520c7ea0dbd 100644 --- a/arch/arm/include/asm/arch-stm32h7/stm32.h +++ b/arch/arm/include/asm/arch-stm32h7/stm32.h
how about creating one common header file for stm32.
It will be done in another series which is in preparation : _ factorize arch/arm/include/asm/arch-stm32xx/stm32.h and all others acrh files (gpio.h, stm32_defs.h, stm32_periph.h ....) _ add a common stm32_timer driver and remove arch/arm/mach- stm32/stm32f4/timer.c and arch/arm/mach-stm32/stm32f7/timer.c
@@ -18,4 +18,8 @@
- arch/arm/include/asm/arch-stm32f4/stm32.h
- arch/arm/include/asm/arch-stm32f7/stm32.h
*/
+int get_cpu_id(void); +void set_env_soc_name(int cpu_id);
- #endif /* _ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/mach-stm32/soc.c b/arch/arm/mach-stm32/soc.c index df20d547c500..0933dfce656d 100644 --- a/arch/arm/mach-stm32/soc.c +++ b/arch/arm/mach-stm32/soc.c @@ -9,6 +9,30 @@ #include <asm/io.h> #include <asm/armv7m_mpu.h>
+#define STM32_DBGMCU_IDCODE_DEV_ID GENMASK(11, 0)
to make it clear it is MASK macro, pls replace xx_DEV_D with xx_MASK.
ok
+#if !defined(CONFIG_STM32H7) +#define STM32_DBGMCU_IDCODE 0xE0042000 +#else +#define STM32_DBGMCU_IDCODE 0x5C001000 +#endif
move it to arch/soc register definitions like to arch/arm/include/asm/arch-stm32f7/stm32.h
ok
+struct cpu_id_table {
- unsigned int id;
- const char *name;
- };
+const struct cpu_id_table stm32_cpu_id_table[] = {
- { 0x413, "stm32f4" },
- { 0x419, "stm32f4" },
- { 0x434, "stm32f4" },
- { 0x449, "stm32f7" },
- { 0x451, "stm32f7" },
- { 0x450, "stm32h7" },
- { 0x452, "stm32f7" },
- { 0 },
+};
- int arch_cpu_init(void) { int i;
@@ -54,3 +78,25 @@ int arch_cpu_init(void)
return 0; }
+int get_cpu_id(void) +{
- return readl(STM32_DBGMCU_IDCODE) & STM32_DBGMCU_IDCODE_DEV_ID;
+}
+void set_env_soc_name(int cpu_id) +{
- char soc[16];
- int i;
- memset(soc, '\0', sizeof(soc));
do we need it ?
No, i will remove it
Thanks
Patrice
Cheers, Vikas
- for (i = 0; i < sizeof(stm32_cpu_id_table); i++) {
if (stm32_cpu_id_table[i].id == cpu_id) {
snprintf(soc, sizeof(soc), stm32_cpu_id_table[i].name);
break;
}
- }
- env_set("soc_name", soc);
+}

From: Patrice Chotard patrice.chotard@st.com
Move BOARD_LATE_INIT flag from include/configs/stm32*.h to mach-stm32/Kconfig. Enable this flag also for STM32F4 SoCs family.
Signed-off-by: Patrice Chotard patrice.chotard@st.com --- arch/arm/mach-stm32/Kconfig | 3 +++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 4 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-stm32/Kconfig b/arch/arm/mach-stm32/Kconfig index f79b1a2c700e..c734a0ab8768 100644 --- a/arch/arm/mach-stm32/Kconfig +++ b/arch/arm/mach-stm32/Kconfig @@ -13,6 +13,7 @@ config STM32F4 select STM32_RCC select STM32_RESET select STM32_SERIAL + select BOARD_LATE_INIT
config STM32F7 bool "stm32f7 family" @@ -27,6 +28,7 @@ config STM32F7 select STM32_RCC select STM32_RESET select STM32_SERIAL + select BOARD_LATE_INIT select SUPPORT_SPL select SPL select SPL_BOARD_INIT @@ -63,6 +65,7 @@ config STM32H7 select STM32_RESET select STM32_SERIAL select SYSCON + select BOARD_LATE_INIT
source "arch/arm/mach-stm32/stm32f4/Kconfig" source "arch/arm/mach-stm32/stm32f7/Kconfig" diff --git a/include/configs/stm32f746-disco.h b/include/configs/stm32f746-disco.h index 3e952c2acd82..ae6889584a03 100644 --- a/include/configs/stm32f746-disco.h +++ b/include/configs/stm32f746-disco.h @@ -65,7 +65,6 @@ #define CONFIG_AUTO_COMPLETE #define CONFIG_CMDLINE_EDITING #define CONFIG_CMD_CACHE -#define CONFIG_BOARD_LATE_INIT #define CONFIG_DISPLAY_BOARDINFO
/* For SPL */ diff --git a/include/configs/stm32h743-disco.h b/include/configs/stm32h743-disco.h index 531de701492a..44b2813d3eeb 100644 --- a/include/configs/stm32h743-disco.h +++ b/include/configs/stm32h743-disco.h @@ -46,6 +46,5 @@ #define CONFIG_AUTO_COMPLETE #define CONFIG_CMDLINE_EDITING #define CONFIG_CMD_CACHE -#define CONFIG_BOARD_LATE_INIT
#endif /* __CONFIG_H */ diff --git a/include/configs/stm32h743-eval.h b/include/configs/stm32h743-eval.h index 531de701492a..44b2813d3eeb 100644 --- a/include/configs/stm32h743-eval.h +++ b/include/configs/stm32h743-eval.h @@ -46,6 +46,5 @@ #define CONFIG_AUTO_COMPLETE #define CONFIG_CMDLINE_EDITING #define CONFIG_CMD_CACHE -#define CONFIG_BOARD_LATE_INIT
#endif /* __CONFIG_H */

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32f429-discovery/stm32f429-discovery.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/board/st/stm32f429-discovery/stm32f429-discovery.c b/board/st/stm32f429-discovery/stm32f429-discovery.c index 3d90218faa61..b0d884cb95fa 100644 --- a/board/st/stm32f429-discovery/stm32f429-discovery.c +++ b/board/st/stm32f429-discovery/stm32f429-discovery.c @@ -60,6 +60,13 @@ int board_init(void) return 0; }
+int board_late_init(void) +{ + set_env_soc_name(get_cpu_id()); + + return 0; +} + #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) {

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32h743-eval/stm32h743-eval.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/board/st/stm32h743-eval/stm32h743-eval.c b/board/st/stm32h743-eval/stm32h743-eval.c index 226b7045d278..501cecf5387a 100644 --- a/board/st/stm32h743-eval/stm32h743-eval.c +++ b/board/st/stm32h743-eval/stm32h743-eval.c @@ -8,6 +8,8 @@ #include <common.h> #include <dm.h>
+#include <asm/arch/stm32.h> + DECLARE_GLOBAL_DATA_PTR;
int dram_init(void) @@ -46,6 +48,8 @@ u32 get_board_rev(void)
int board_late_init(void) { + set_env_soc_name(get_cpu_id()); + return 0; }

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32h743-disco/stm32h743-disco.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/board/st/stm32h743-disco/stm32h743-disco.c b/board/st/stm32h743-disco/stm32h743-disco.c index 226b7045d278..501cecf5387a 100644 --- a/board/st/stm32h743-disco/stm32h743-disco.c +++ b/board/st/stm32h743-disco/stm32h743-disco.c @@ -8,6 +8,8 @@ #include <common.h> #include <dm.h>
+#include <asm/arch/stm32.h> + DECLARE_GLOBAL_DATA_PTR;
int dram_init(void) @@ -46,6 +48,8 @@ u32 get_board_rev(void)
int board_late_init(void) { + set_env_soc_name(get_cpu_id()); + return 0; }

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32f746-disco/stm32f746-disco.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c index 8da70281f976..0ad03ce96d33 100644 --- a/board/st/stm32f746-disco/stm32f746-disco.c +++ b/board/st/stm32f746-disco/stm32f746-disco.c @@ -115,6 +115,8 @@ int board_late_init(void) struct gpio_desc gpio = {}; int node;
+ set_env_soc_name(get_cpu_id()); + node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,led1"); if (node < 0) return -1;

Hi,
On 01/31/2018 08:09 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
board/st/stm32f746-disco/stm32f746-disco.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c
does not match with the Subject, same mis-match in one more patch. Can we club these board patches in one.
Cheers, Vikas
index 8da70281f976..0ad03ce96d33 100644 --- a/board/st/stm32f746-disco/stm32f746-disco.c +++ b/board/st/stm32f746-disco/stm32f746-disco.c @@ -115,6 +115,8 @@ int board_late_init(void) struct gpio_desc gpio = {}; int node;
- set_env_soc_name(get_cpu_id());
- node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,led1"); if (node < 0) return -1;

Hi Vikas
On 01/31/2018 07:32 PM, Vikas Manocha wrote:
Hi,
On 01/31/2018 08:09 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com
board/st/stm32f746-disco/stm32f746-disco.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c
does not match with the Subject, same mis-match in one more patch. Can we club these board patches in one.
Ok
Thanks
Patrice
Cheers, Vikas
index 8da70281f976..0ad03ce96d33 100644 --- a/board/st/stm32f746-disco/stm32f746-disco.c +++ b/board/st/stm32f746-disco/stm32f746-disco.c @@ -115,6 +115,8 @@ int board_late_init(void) struct gpio_desc gpio = {}; int node;
- set_env_soc_name(get_cpu_id());
- node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,led1"); if (node < 0) return -1;

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32f469-discovery/stm32f469-discovery.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/board/st/stm32f469-discovery/stm32f469-discovery.c b/board/st/stm32f469-discovery/stm32f469-discovery.c index 36f7b2e8e176..c2ef76ba9ac3 100644 --- a/board/st/stm32f469-discovery/stm32f469-discovery.c +++ b/board/st/stm32f469-discovery/stm32f469-discovery.c @@ -54,6 +54,13 @@ int board_init(void) return 0; }
+int board_late_init(void) +{ + set_env_soc_name(get_cpu_id()); + + return 0; +} + #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) {

From: Patrice Chotard patrice.chotard@st.com
Add set_env_soc_name() call in board_late_init() to set environment variable "soc_name" with the name of current STM32 SoC.
Signed-off-by: Christophe Priouzeau christophe.priouzeau@st.com Signed-off-by: Patrice Chotard patrice.chotard@st.com --- board/st/stm32f429-evaluation/stm32f429-evaluation.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/board/st/stm32f429-evaluation/stm32f429-evaluation.c b/board/st/stm32f429-evaluation/stm32f429-evaluation.c index 25e020784d62..108b22a8dcba 100644 --- a/board/st/stm32f429-evaluation/stm32f429-evaluation.c +++ b/board/st/stm32f429-evaluation/stm32f429-evaluation.c @@ -54,6 +54,13 @@ int board_init(void) return 0; }
+int board_late_init(void) +{ + set_env_soc_name(get_cpu_id()); + + return 0; +} + #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) {

Hi Patrice,
On 01/31/2018 08:08 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This series allows to get the cpu id of STM32 SoCs and to set the environment variable "soc_name" with the corresponding SoC name.
This will be useful in some development environment to retrieve files correspondig to SoC family.
can you provide some example ? We have the device tree compatible string to distinguish board & soc.
Cheers, Vikas
Patrice Chotard (8): mach-stm32: Add get_cpu_id support mach-stm32: Move BOARD_LATE_INIT flag to mach-stm32 Kconfig board: stm32f429-discovery: Add set_env_soc_name() in board_late_init() board: stm32h743-evaluation: Add set_env_soc_name() in board_late_init() board: stm32f743-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f429-evaluation: Add set_env_soc_name() in board_late_init()
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 + arch/arm/include/asm/arch-stm32f7/stm32.h | 2 + arch/arm/include/asm/arch-stm32h7/stm32.h | 4 ++ arch/arm/mach-stm32/Kconfig | 3 ++ arch/arm/mach-stm32/soc.c | 46 ++++++++++++++++++++++ board/st/stm32f429-discovery/stm32f429-discovery.c | 7 ++++ .../st/stm32f429-evaluation/stm32f429-evaluation.c | 7 ++++ board/st/stm32f469-discovery/stm32f469-discovery.c | 7 ++++ board/st/stm32f746-disco/stm32f746-disco.c | 2 + board/st/stm32h743-disco/stm32h743-disco.c | 4 ++ board/st/stm32h743-eval/stm32h743-eval.c | 4 ++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 14 files changed, 88 insertions(+), 3 deletions(-)

+Christophe Priouzeau who is the requester/developper of this feature
On 01/31/2018 07:22 PM, Vikas Manocha wrote:
Hi Patrice,
On 01/31/2018 08:08 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This series allows to get the cpu id of STM32 SoCs and to set the environment variable "soc_name" with the corresponding SoC name.
This will be useful in some development environment to retrieve files correspondig to SoC family.
can you provide some example ? We have the device tree compatible string to distinguish board & soc.
We will add STM32 SoCs support in buildroot environment Our objective is to propose a flexible solution to boot linux kernel from sdcard.
As for STM32F4, STM32F7 and STM32H7 linux defconfig is slightly different (specific CONFIG_DRAM_BASE and CONFIG_DRAM_SIZE) we can't use the same zImage for all these SoCs.
To simplify, we will embed all dtb/zImage in the sdcard and using the soc_name environment variable to select the correct zImage.
Patrice
Cheers, Vikas
Patrice Chotard (8): mach-stm32: Add get_cpu_id support mach-stm32: Move BOARD_LATE_INIT flag to mach-stm32 Kconfig board: stm32f429-discovery: Add set_env_soc_name() in board_late_init() board: stm32h743-evaluation: Add set_env_soc_name() in board_late_init() board: stm32f743-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f429-evaluation: Add set_env_soc_name() in board_late_init()
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 + arch/arm/include/asm/arch-stm32f7/stm32.h | 2 + arch/arm/include/asm/arch-stm32h7/stm32.h | 4 ++ arch/arm/mach-stm32/Kconfig | 3 ++ arch/arm/mach-stm32/soc.c | 46 ++++++++++++++++++++++ board/st/stm32f429-discovery/stm32f429-discovery.c | 7 ++++ .../st/stm32f429-evaluation/stm32f429-evaluation.c | 7 ++++ board/st/stm32f469-discovery/stm32f469-discovery.c | 7 ++++ board/st/stm32f746-disco/stm32f746-disco.c | 2 + board/st/stm32h743-disco/stm32h743-disco.c | 4 ++ board/st/stm32h743-eval/stm32h743-eval.c | 4 ++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 14 files changed, 88 insertions(+), 3 deletions(-)

Hi Patrice,
On 02/02/2018 12:22 AM, Patrice CHOTARD wrote:
+Christophe Priouzeau who is the requester/developper of this feature
On 01/31/2018 07:22 PM, Vikas Manocha wrote:
Hi Patrice,
On 01/31/2018 08:08 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This series allows to get the cpu id of STM32 SoCs and to set the environment variable "soc_name" with the corresponding SoC name.
This will be useful in some development environment to retrieve files correspondig to SoC family.
can you provide some example ? We have the device tree compatible string to distinguish board & soc.
We will add STM32 SoCs support in buildroot environment Our objective is to propose a flexible solution to boot linux kernel from sdcard.
As for STM32F4, STM32F7 and STM32H7 linux defconfig is slightly different (specific CONFIG_DRAM_BASE and CONFIG_DRAM_SIZE) we can't use the same zImage for all these SoCs.
To simplify, we will embed all dtb/zImage in the sdcard and using the soc_name environment variable to select the correct zImage.
soc name is already part of configuration (SYS_SOC). It would be simpler and less expensive (for both cpu & memory) to use it. In this patchset, 56 Bytes(currently, which will increase with more SOCs support) of lookup table are becoming part of text apart from the additional code.
Cheers, Vikas
Patrice
Cheers, Vikas
Patrice Chotard (8): mach-stm32: Add get_cpu_id support mach-stm32: Move BOARD_LATE_INIT flag to mach-stm32 Kconfig board: stm32f429-discovery: Add set_env_soc_name() in board_late_init() board: stm32h743-evaluation: Add set_env_soc_name() in board_late_init() board: stm32f743-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f429-evaluation: Add set_env_soc_name() in board_late_init()
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 + arch/arm/include/asm/arch-stm32f7/stm32.h | 2 + arch/arm/include/asm/arch-stm32h7/stm32.h | 4 ++ arch/arm/mach-stm32/Kconfig | 3 ++ arch/arm/mach-stm32/soc.c | 46 ++++++++++++++++++++++ board/st/stm32f429-discovery/stm32f429-discovery.c | 7 ++++ .../st/stm32f429-evaluation/stm32f429-evaluation.c | 7 ++++ board/st/stm32f469-discovery/stm32f469-discovery.c | 7 ++++ board/st/stm32f746-disco/stm32f746-disco.c | 2 + board/st/stm32h743-disco/stm32h743-disco.c | 4 ++ board/st/stm32h743-eval/stm32h743-eval.c | 4 ++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 14 files changed, 88 insertions(+), 3 deletions(-)

Hi Vikas
On 02/02/2018 06:20 PM, Vikas Manocha wrote:
Hi Patrice,
On 02/02/2018 12:22 AM, Patrice CHOTARD wrote:
+Christophe Priouzeau who is the requester/developper of this feature
On 01/31/2018 07:22 PM, Vikas Manocha wrote:
Hi Patrice,
On 01/31/2018 08:08 AM, patrice.chotard@st.com wrote:
From: Patrice Chotard patrice.chotard@st.com
This series allows to get the cpu id of STM32 SoCs and to set the environment variable "soc_name" with the corresponding SoC name.
This will be useful in some development environment to retrieve files correspondig to SoC family.
can you provide some example ? We have the device tree compatible string to distinguish board & soc.
We will add STM32 SoCs support in buildroot environment Our objective is to propose a flexible solution to boot linux kernel from sdcard.
As for STM32F4, STM32F7 and STM32H7 linux defconfig is slightly different (specific CONFIG_DRAM_BASE and CONFIG_DRAM_SIZE) we can't use the same zImage for all these SoCs.
To simplify, we will embed all dtb/zImage in the sdcard and using the soc_name environment variable to select the correct zImage.
soc name is already part of configuration (SYS_SOC). It would be simpler and less expensive (for both cpu & memory) to use it. In this patchset, 56 Bytes(currently, which will increase with more SOCs support) of lookup table are becoming part of text apart from the additional code.
Ok i got your point, i will rework this series
Thanks
Patrice
Cheers, Vikas
Patrice
Cheers, Vikas
Patrice Chotard (8): mach-stm32: Add get_cpu_id support mach-stm32: Move BOARD_LATE_INIT flag to mach-stm32 Kconfig board: stm32f429-discovery: Add set_env_soc_name() in board_late_init() board: stm32h743-evaluation: Add set_env_soc_name() in board_late_init() board: stm32f743-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f469-discovery: Add set_env_soc_name() in board_late_init() board: stm32f429-evaluation: Add set_env_soc_name() in board_late_init()
arch/arm/include/asm/arch-stm32f4/stm32.h | 2 + arch/arm/include/asm/arch-stm32f7/stm32.h | 2 + arch/arm/include/asm/arch-stm32h7/stm32.h | 4 ++ arch/arm/mach-stm32/Kconfig | 3 ++ arch/arm/mach-stm32/soc.c | 46 ++++++++++++++++++++++ board/st/stm32f429-discovery/stm32f429-discovery.c | 7 ++++ .../st/stm32f429-evaluation/stm32f429-evaluation.c | 7 ++++ board/st/stm32f469-discovery/stm32f469-discovery.c | 7 ++++ board/st/stm32f746-disco/stm32f746-disco.c | 2 + board/st/stm32h743-disco/stm32h743-disco.c | 4 ++ board/st/stm32h743-eval/stm32h743-eval.c | 4 ++ include/configs/stm32f746-disco.h | 1 - include/configs/stm32h743-disco.h | 1 - include/configs/stm32h743-eval.h | 1 - 14 files changed, 88 insertions(+), 3 deletions(-)
participants (3)
-
Patrice CHOTARD
-
patrice.chotard@st.com
-
Vikas Manocha