[U-Boot] [PATCH 0/2] ARC: Allow per-board more precise CPU identification

Some of ARC boards do sport real silicon and given how flexible ARC cores might be configured it's hard to tell what "template" was used initially.
For FPGA-based boards we're left with basic info derived from IDENTITY register but for real silicon we may know more details so let's print them then.
Alexey Brodkin (2): ARC: make generic print_cpuinfo() weak iot_dk/hsdk: Implement its own print_cpuinfo()
arch/arc/lib/cpu.c | 2 +- board/synopsys/hsdk/hsdk.c | 8 ++++++++ board/synopsys/iot_devkit/iot_devkit.c | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-)

This allows board to override print_cpuinfo() because they might know better which ARChitect template was used. This way we may not only derive base architecture type and version but more meaningful things like "ARC EM7D" instead of simple "ARC EM", "ARC HS36" instead of "ARC HS".
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com --- arch/arc/lib/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c index 50cd7cd..a969a16 100644 --- a/arch/arc/lib/cpu.c +++ b/arch/arc/lib/cpu.c @@ -60,7 +60,7 @@ const char *decode_identity(void) } }
-int print_cpuinfo(void) +__weak int print_cpuinfo(void) { printf("CPU: %s\n", decode_identity()); return 0;

ARC IDENTITY register only encodes major architecture type and version while for a particular board/silicon we may know better which template was used and so we may identify CPU more precise, which exactly we do here.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com --- board/synopsys/hsdk/hsdk.c | 8 ++++++++ board/synopsys/iot_devkit/iot_devkit.c | 8 ++++++++ 2 files changed, 16 insertions(+)
diff --git a/board/synopsys/hsdk/hsdk.c b/board/synopsys/hsdk/hsdk.c index fb4286f..4f46d2e 100644 --- a/board/synopsys/hsdk/hsdk.c +++ b/board/synopsys/hsdk/hsdk.c @@ -1046,3 +1046,11 @@ int board_mmc_init(bd_t *bis)
return 0; } + +#ifdef CONFIG_DISPLAY_CPUINFO +int print_cpuinfo(void) +{ + printf("CPU: ARC HS38 v2.1c\n"); + return 0; +} +#endif /* CONFIG_DISPLAY_CPUINFO */ diff --git a/board/synopsys/iot_devkit/iot_devkit.c b/board/synopsys/iot_devkit/iot_devkit.c index c185d5c..1d848dd 100644 --- a/board/synopsys/iot_devkit/iot_devkit.c +++ b/board/synopsys/iot_devkit/iot_devkit.c @@ -166,3 +166,11 @@ int checkboard(void) puts("Board: Synopsys IoT Development Kit\n"); return 0; }; + +#ifdef CONFIG_DISPLAY_CPUINFO +int print_cpuinfo(void) +{ + printf("CPU: ARC EM9D\n"); + return 0; +} +#endif /* CONFIG_DISPLAY_CPUINFO */
participants (1)
-
Alexey Brodkin