]>
Commit | Line | Data |
---|---|---|
3e5f3dbe BD |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
3 | * Copyright (C) 2021 Renesas Electronics Corporation | |
4 | * | |
5 | */ | |
93565cc9 | 6 | |
3e5f3dbe BD |
7 | #include <linux/libfdt.h> |
8 | ||
9 | /* If the firmware passed a device tree, use it for soc identification. */ | |
10 | extern u64 rcar_atf_boot_args[]; | |
11 | ||
12 | /* CPU information table */ | |
13 | static const struct { | |
14 | char *soc_name; | |
15 | u8 cpu_name[10]; | |
16 | } tfa_info[] = { | |
17 | { "renesas,r8a774a1", "R8A774A1" }, | |
18 | { "renesas,r8a774b1", "R8A774B1" }, | |
19 | { "renesas,r8a774c0", "R8A774C0" }, | |
20 | { "renesas,r8a774e1", "R8A774E1" } | |
21 | }; | |
22 | ||
23 | const u8 *rzg_get_cpu_name(void) | |
24 | { | |
25 | void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]); | |
26 | bool ret = false; | |
27 | int i; | |
28 | ||
29 | if (fdt_magic(atf_fdt_blob) != FDT_MAGIC) | |
30 | return NULL; | |
31 | ||
32 | for (i = 0; i < ARRAY_SIZE(tfa_info); i++) { | |
33 | if (fdt_node_check_compatible(atf_fdt_blob, 0, | |
34 | tfa_info[i].soc_name) == 0) { | |
35 | ret = true; | |
36 | break; | |
37 | } | |
38 | } | |
39 | ||
40 | return ret ? tfa_info[i].cpu_name : NULL; | |
41 | } |