ARM: renesas: Rename ARCH_RMOBILE to ARCH_RENESAS
[pandora-u-boot.git] / arch / arm / mach-renesas / cpu_info.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
4  * (C) Copyright 2012-2021 Renesas Solutions Corp.
5  */
6
7 #include <cpu_func.h>
8 #include <asm/cache.h>
9 #include <init.h>
10 #include <asm/io.h>
11 #include <env.h>
12 #include <linux/ctype.h>
13
14 #ifdef CONFIG_ARCH_CPU_INIT
15 int arch_cpu_init(void)
16 {
17         icache_enable();
18         return 0;
19 }
20 #endif
21
22 /* R-Car Gen3 and Gen4 D-cache is enabled in memmap-gen3.c */
23 #ifndef CONFIG_RCAR_64
24 #if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
25 void enable_caches(void)
26 {
27         dcache_enable();
28 }
29 #endif
30 #endif
31
32 #ifdef CONFIG_DISPLAY_CPUINFO
33 #if !defined(CONFIG_RZA1) && !defined(CONFIG_RZN1)
34 __weak const u8 *rzg_get_cpu_name(void)
35 {
36         return 0;
37 }
38
39 __weak u32 renesas_get_cpu_type(void)
40 {
41         return 0x0;
42 }
43
44 __weak u32 renesas_get_cpu_rev_integer(void)
45 {
46         return 0;
47 }
48
49 __weak u32 renesas_get_cpu_rev_fraction(void)
50 {
51         return 0;
52 }
53
54 /* CPU information table */
55 static const struct {
56         u16 cpu_type;
57         u8 cpu_name[10];
58 } renesas_cpuinfo[] = {
59         { RENESAS_CPU_TYPE_R8A7790, "R8A7790" },
60         { RENESAS_CPU_TYPE_R8A7791, "R8A7791" },
61         { RENESAS_CPU_TYPE_R8A7792, "R8A7792" },
62         { RENESAS_CPU_TYPE_R8A7793, "R8A7793" },
63         { RENESAS_CPU_TYPE_R8A7794, "R8A7794" },
64         { RENESAS_CPU_TYPE_R8A7795, "R8A7795" },
65         { RENESAS_CPU_TYPE_R8A7796, "R8A7796" },
66         { RENESAS_CPU_TYPE_R8A77965, "R8A77965" },
67         { RENESAS_CPU_TYPE_R8A77970, "R8A77970" },
68         { RENESAS_CPU_TYPE_R8A77980, "R8A77980" },
69         { RENESAS_CPU_TYPE_R8A77990, "R8A77990" },
70         { RENESAS_CPU_TYPE_R8A77995, "R8A77995" },
71         { RENESAS_CPU_TYPE_R8A779A0, "R8A779A0" },
72         { RENESAS_CPU_TYPE_R8A779F0, "R8A779F0" },
73         { RENESAS_CPU_TYPE_R8A779G0, "R8A779G0" },
74         { RENESAS_CPU_TYPE_R8A779H0, "R8A779H0" },
75         { 0x0, "CPU" },
76 };
77
78 static int renesas_cpuinfo_idx(void)
79 {
80         u32 cpu_type = renesas_get_cpu_type();
81         int i;
82
83         for (i = 0; i < ARRAY_SIZE(renesas_cpuinfo) - 1; i++)
84                 if (renesas_cpuinfo[i].cpu_type == cpu_type)
85                         return i;
86
87         /* Unknown "CPU" entry */
88         return ARRAY_SIZE(renesas_cpuinfo) - 1;
89 }
90
91 static const u8 *get_cpu_name(int idx)
92 {
93         const  u8 *cpu_name = rzg_get_cpu_name();
94
95         return cpu_name ? cpu_name : renesas_cpuinfo[idx].cpu_name;
96 }
97
98 #ifdef CONFIG_ARCH_MISC_INIT
99 int arch_misc_init(void)
100 {
101         int i, idx = renesas_cpuinfo_idx();
102         const u8 *cpu_name = get_cpu_name(idx);
103         char cpu[10] = { 0 };
104
105         for (i = 0; i < sizeof(cpu); i++)
106                 cpu[i] = tolower(cpu_name[i]);
107
108         env_set("platform", cpu);
109
110         return 0;
111 }
112 #endif
113
114 int print_cpuinfo(void)
115 {
116         int i = renesas_cpuinfo_idx();
117
118         if (renesas_cpuinfo[i].cpu_type == RENESAS_CPU_TYPE_R8A7796 &&
119             renesas_get_cpu_rev_integer() == 1 &&
120             renesas_get_cpu_rev_fraction() == 1) {
121                 printf("CPU:   Renesas Electronics %s rev 1.1/1.2\n", get_cpu_name(i));
122                 return 0;
123         }
124
125         printf("CPU:   Renesas Electronics %s rev %d.%d\n",
126                 get_cpu_name(i), renesas_get_cpu_rev_integer(),
127                 renesas_get_cpu_rev_fraction());
128
129         return 0;
130 }
131 #elif defined(CONFIG_RZA1)
132 int print_cpuinfo(void)
133 {
134         printf("CPU: Renesas Electronics RZ/A1\n");
135         return 0;
136 }
137 #else /* CONFIG_RZN1 */
138 int print_cpuinfo(void)
139 {
140         printf("CPU: Renesas Electronics RZ/N1\n");
141         return 0;
142 }
143 #endif
144 #endif /* CONFIG_DISPLAY_CPUINFO */