mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
arm: mach-rmobile: Add CPU info support for RZ/G2
Add CPU info support for RZ/G2 SoC's. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
This commit is contained in:
parent
a94ab561e2
commit
3e5f3dbe3a
5 changed files with 65 additions and 4 deletions
|
@ -57,6 +57,9 @@ config R8A77995
|
|||
imply CLK_R8A77995
|
||||
imply PINCTRL_PFC_R8A77995
|
||||
|
||||
config RZ_G2
|
||||
bool "Renesas ARM SoCs RZ/G2 (64bit)"
|
||||
|
||||
endmenu
|
||||
|
||||
choice
|
||||
|
@ -107,6 +110,7 @@ config TARGET_HIHOPE_RZG2
|
|||
imply R8A774A1
|
||||
imply R8A774B1
|
||||
imply R8A774E1
|
||||
imply RZ_G2
|
||||
imply SYS_MALLOC_F
|
||||
imply MULTI_DTB_FIT
|
||||
imply MULTI_DTB_FIT_USER_DEFINED_AREA
|
||||
|
@ -116,6 +120,7 @@ config TARGET_HIHOPE_RZG2
|
|||
config TARGET_SILINUX_EK874
|
||||
bool "Silicon Linux EK874 board"
|
||||
imply R8A774C0
|
||||
imply RZ_G2
|
||||
help
|
||||
Support for Silicon Linux EK874 platform
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-sh73a0.o pfc-sh73a0.o
|
|||
obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
|
||||
obj-$(CONFIG_RCAR_GEN2) += lowlevel_init_ca15.o cpu_info-rcar.o
|
||||
obj-$(CONFIG_RCAR_GEN3) += lowlevel_init_gen3.o cpu_info-rcar.o memmap-gen3.o
|
||||
obj-$(CONFIG_RZ_G2) += cpu_info-rzg.o
|
||||
|
||||
OBJCOPYFLAGS_u-boot-spl.srec := -O srec
|
||||
quiet_cmd_objcopy = OBJCOPY $@
|
||||
|
|
41
arch/arm/mach-rmobile/cpu_info-rzg.c
Normal file
41
arch/arm/mach-rmobile/cpu_info-rzg.c
Normal file
|
@ -0,0 +1,41 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) 2021 Renesas Electronics Corporation
|
||||
*
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <linux/libfdt.h>
|
||||
|
||||
/* If the firmware passed a device tree, use it for soc identification. */
|
||||
extern u64 rcar_atf_boot_args[];
|
||||
|
||||
/* CPU information table */
|
||||
static const struct {
|
||||
char *soc_name;
|
||||
u8 cpu_name[10];
|
||||
} tfa_info[] = {
|
||||
{ "renesas,r8a774a1", "R8A774A1" },
|
||||
{ "renesas,r8a774b1", "R8A774B1" },
|
||||
{ "renesas,r8a774c0", "R8A774C0" },
|
||||
{ "renesas,r8a774e1", "R8A774E1" }
|
||||
};
|
||||
|
||||
const u8 *rzg_get_cpu_name(void)
|
||||
{
|
||||
void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
|
||||
bool ret = false;
|
||||
int i;
|
||||
|
||||
if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tfa_info); i++) {
|
||||
if (fdt_node_check_compatible(atf_fdt_blob, 0,
|
||||
tfa_info[i].soc_name) == 0) {
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret ? tfa_info[i].cpu_name : NULL;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* (C) Copyright 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
|
||||
* (C) Copyright 2012 Renesas Solutions Corp.
|
||||
* (C) Copyright 2012-2021 Renesas Solutions Corp.
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <cpu_func.h>
|
||||
|
@ -31,6 +31,11 @@ void enable_caches(void)
|
|||
|
||||
#ifdef CONFIG_DISPLAY_CPUINFO
|
||||
#ifndef CONFIG_RZA1
|
||||
__weak const u8 *rzg_get_cpu_name(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 __rmobile_get_cpu_type(void)
|
||||
{
|
||||
return 0x0;
|
||||
|
@ -52,7 +57,7 @@ static u32 __rmobile_get_cpu_rev_fraction(void)
|
|||
u32 rmobile_get_cpu_rev_fraction(void)
|
||||
__attribute__((weak, alias("__rmobile_get_cpu_rev_fraction")));
|
||||
|
||||
/* CPU infomation table */
|
||||
/* CPU information table */
|
||||
static const struct {
|
||||
u16 cpu_type;
|
||||
u8 cpu_name[10];
|
||||
|
@ -86,14 +91,22 @@ static int rmobile_cpuinfo_idx(void)
|
|||
return i;
|
||||
}
|
||||
|
||||
static const u8 *get_cpu_name(int idx)
|
||||
{
|
||||
const u8 *cpu_name = rzg_get_cpu_name();
|
||||
|
||||
return cpu_name ? cpu_name : rmobile_cpuinfo[idx].cpu_name;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_MISC_INIT
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
int i, idx = rmobile_cpuinfo_idx();
|
||||
const u8 *cpu_name = get_cpu_name(idx);
|
||||
char cpu[10] = { 0 };
|
||||
|
||||
for (i = 0; i < sizeof(cpu); i++)
|
||||
cpu[i] = tolower(rmobile_cpuinfo[idx].cpu_name[i]);
|
||||
cpu[i] = tolower(cpu_name[i]);
|
||||
|
||||
env_set("platform", cpu);
|
||||
|
||||
|
@ -106,7 +119,7 @@ int print_cpuinfo(void)
|
|||
int i = rmobile_cpuinfo_idx();
|
||||
|
||||
printf("CPU: Renesas Electronics %s rev %d.%d\n",
|
||||
rmobile_cpuinfo[i].cpu_name, rmobile_get_cpu_rev_integer(),
|
||||
get_cpu_name(i), rmobile_get_cpu_rev_integer(),
|
||||
rmobile_get_cpu_rev_fraction());
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#define RMOBILE_CPU_TYPE_R8A77995 0x58
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
const u8 *rzg_get_cpu_name(void);
|
||||
u32 rmobile_get_cpu_type(void);
|
||||
u32 rmobile_get_cpu_rev_integer(void);
|
||||
u32 rmobile_get_cpu_rev_fraction(void);
|
||||
|
|
Loading…
Reference in a new issue