diff options
author | Marek Vasut <marek.vasut+renesas@mailbox.org> | 2024-02-27 17:05:56 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-03-02 14:29:36 -0500 |
commit | 40b9d53c7402c2ceac03c4c2af77a025ce11a0ca (patch) | |
tree | 0b44b5aff4e364837093910bb38102d53c18d4ec /arch/arm/mach-renesas/cpu_info.c | |
parent | f9aabd457930f5569297f8a0c4449b9768c1e0cf (diff) | |
download | u-boot-40b9d53c7402c2ceac03c4c2af77a025ce11a0ca.zip u-boot-40b9d53c7402c2ceac03c4c2af77a025ce11a0ca.tar.gz u-boot-40b9d53c7402c2ceac03c4c2af77a025ce11a0ca.tar.bz2 |
ARM: renesas: Rename arch-/mach-rmobile to arch-/mach-renesas
Rename arch-rmobile to arch-renesas and mach-rmobile to mach-renesas
because all the chips are made by Renesas, while only a subset of
them is from the R-Mobile line.
Use the following command to perform the rename, with manual move of
the directories using git mv and manual fix up to arch/arm/Makefile:
"
$ git grep -l '\<\(arch\|mach\)-rmobile\>' | \
xargs -I {} sed -i 's@\<\(arch\|mach\)-rmobile\>@\1-renesas@g' {}
$ sed -i 's@rmobile@renesas@' board/*/*/Kconfig
"
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Diffstat (limited to 'arch/arm/mach-renesas/cpu_info.c')
-rw-r--r-- | arch/arm/mach-renesas/cpu_info.c | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/arch/arm/mach-renesas/cpu_info.c b/arch/arm/mach-renesas/cpu_info.c new file mode 100644 index 0000000..2f9a437 --- /dev/null +++ b/arch/arm/mach-renesas/cpu_info.c @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> + * (C) Copyright 2012-2021 Renesas Solutions Corp. + */ + +#include <cpu_func.h> +#include <asm/cache.h> +#include <init.h> +#include <asm/io.h> +#include <env.h> +#include <linux/ctype.h> + +#ifdef CONFIG_ARCH_CPU_INIT +int arch_cpu_init(void) +{ + icache_enable(); + return 0; +} +#endif + +/* R-Car Gen3 and Gen4 D-cache is enabled in memmap-gen3.c */ +#ifndef CONFIG_RCAR_64 +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +void enable_caches(void) +{ + dcache_enable(); +} +#endif +#endif + +#ifdef CONFIG_DISPLAY_CPUINFO +#if !defined(CONFIG_RZA1) && !defined(CONFIG_RZN1) +__weak const u8 *rzg_get_cpu_name(void) +{ + return 0; +} + +__weak u32 renesas_get_cpu_type(void) +{ + return 0x0; +} + +__weak u32 renesas_get_cpu_rev_integer(void) +{ + return 0; +} + +__weak u32 renesas_get_cpu_rev_fraction(void) +{ + return 0; +} + +/* CPU information table */ +static const struct { + u16 cpu_type; + u8 cpu_name[10]; +} renesas_cpuinfo[] = { + { RENESAS_CPU_TYPE_R8A7790, "R8A7790" }, + { RENESAS_CPU_TYPE_R8A7791, "R8A7791" }, + { RENESAS_CPU_TYPE_R8A7792, "R8A7792" }, + { RENESAS_CPU_TYPE_R8A7793, "R8A7793" }, + { RENESAS_CPU_TYPE_R8A7794, "R8A7794" }, + { RENESAS_CPU_TYPE_R8A7795, "R8A7795" }, + { RENESAS_CPU_TYPE_R8A7796, "R8A7796" }, + { RENESAS_CPU_TYPE_R8A77965, "R8A77965" }, + { RENESAS_CPU_TYPE_R8A77970, "R8A77970" }, + { RENESAS_CPU_TYPE_R8A77980, "R8A77980" }, + { RENESAS_CPU_TYPE_R8A77990, "R8A77990" }, + { RENESAS_CPU_TYPE_R8A77995, "R8A77995" }, + { RENESAS_CPU_TYPE_R8A779A0, "R8A779A0" }, + { RENESAS_CPU_TYPE_R8A779F0, "R8A779F0" }, + { RENESAS_CPU_TYPE_R8A779G0, "R8A779G0" }, + { RENESAS_CPU_TYPE_R8A779H0, "R8A779H0" }, + { 0x0, "CPU" }, +}; + +static int renesas_cpuinfo_idx(void) +{ + u32 cpu_type = renesas_get_cpu_type(); + int i; + + for (i = 0; i < ARRAY_SIZE(renesas_cpuinfo) - 1; i++) + if (renesas_cpuinfo[i].cpu_type == cpu_type) + return i; + + /* Unknown "CPU" entry */ + return ARRAY_SIZE(renesas_cpuinfo) - 1; +} + +static const u8 *get_cpu_name(int idx) +{ + const u8 *cpu_name = rzg_get_cpu_name(); + + return cpu_name ? cpu_name : renesas_cpuinfo[idx].cpu_name; +} + +#ifdef CONFIG_ARCH_MISC_INIT +int arch_misc_init(void) +{ + int i, idx = renesas_cpuinfo_idx(); + const u8 *cpu_name = get_cpu_name(idx); + char cpu[10] = { 0 }; + + for (i = 0; i < sizeof(cpu); i++) + cpu[i] = tolower(cpu_name[i]); + + env_set("platform", cpu); + + return 0; +} +#endif + +int print_cpuinfo(void) +{ + int i = renesas_cpuinfo_idx(); + + if (renesas_cpuinfo[i].cpu_type == RENESAS_CPU_TYPE_R8A7796 && + renesas_get_cpu_rev_integer() == 1 && + renesas_get_cpu_rev_fraction() == 1) { + printf("CPU: Renesas Electronics %s rev 1.1/1.2\n", get_cpu_name(i)); + return 0; + } + + printf("CPU: Renesas Electronics %s rev %d.%d\n", + get_cpu_name(i), renesas_get_cpu_rev_integer(), + renesas_get_cpu_rev_fraction()); + + return 0; +} +#elif defined(CONFIG_RZA1) +int print_cpuinfo(void) +{ + printf("CPU: Renesas Electronics RZ/A1\n"); + return 0; +} +#else /* CONFIG_RZN1 */ +int print_cpuinfo(void) +{ + printf("CPU: Renesas Electronics RZ/N1\n"); + return 0; +} +#endif +#endif /* CONFIG_DISPLAY_CPUINFO */ |