xref: /rk3399_rockchip-uboot/arch/arm/mach-rmobile/cpu_info-sh73a0.c (revision c98b171e1098f94b2ff7720c45a25a602882f876)
1*badbb63cSNobuhiro Iwamatsu /*
2*badbb63cSNobuhiro Iwamatsu  * (C) Copyright 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
3*badbb63cSNobuhiro Iwamatsu  * (C) Copyright 2012 Renesas Solutions Corp.
4*badbb63cSNobuhiro Iwamatsu  *
5*badbb63cSNobuhiro Iwamatsu  * SPDX-License-Identifier:	GPL-2.0+
6*badbb63cSNobuhiro Iwamatsu  */
7*badbb63cSNobuhiro Iwamatsu #include <common.h>
8*badbb63cSNobuhiro Iwamatsu #include <asm/io.h>
9*badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_type(void)10*badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_type(void)
11*badbb63cSNobuhiro Iwamatsu {
12*badbb63cSNobuhiro Iwamatsu 	u32 id;
13*badbb63cSNobuhiro Iwamatsu 	u32 type;
14*badbb63cSNobuhiro Iwamatsu 	struct sh73a0_hpb *hpb = (struct sh73a0_hpb *)HPB_BASE;
15*badbb63cSNobuhiro Iwamatsu 
16*badbb63cSNobuhiro Iwamatsu 	id = readl(&hpb->cccr);
17*badbb63cSNobuhiro Iwamatsu 	type = (id >> 8) & 0xFF;
18*badbb63cSNobuhiro Iwamatsu 
19*badbb63cSNobuhiro Iwamatsu 	return type;
20*badbb63cSNobuhiro Iwamatsu }
21*badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_rev_integer(void)22*badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_rev_integer(void)
23*badbb63cSNobuhiro Iwamatsu {
24*badbb63cSNobuhiro Iwamatsu 	u32 id;
25*badbb63cSNobuhiro Iwamatsu 	u32 rev;
26*badbb63cSNobuhiro Iwamatsu 	struct sh73a0_hpb *hpb = (struct sh73a0_hpb *)HPB_BASE;
27*badbb63cSNobuhiro Iwamatsu 
28*badbb63cSNobuhiro Iwamatsu 	id = readl(&hpb->cccr);
29*badbb63cSNobuhiro Iwamatsu 	rev = ((id >> 4) & 0xF) + 1;
30*badbb63cSNobuhiro Iwamatsu 
31*badbb63cSNobuhiro Iwamatsu 	return rev;
32*badbb63cSNobuhiro Iwamatsu }
33*badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_rev_fraction(void)34*badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_rev_fraction(void)
35*badbb63cSNobuhiro Iwamatsu {
36*badbb63cSNobuhiro Iwamatsu 	u32 id;
37*badbb63cSNobuhiro Iwamatsu 	u32 rev;
38*badbb63cSNobuhiro Iwamatsu 	struct sh73a0_hpb *hpb = (struct sh73a0_hpb *)HPB_BASE;
39*badbb63cSNobuhiro Iwamatsu 
40*badbb63cSNobuhiro Iwamatsu 	id = readl(&hpb->cccr);
41*badbb63cSNobuhiro Iwamatsu 	rev = id & 0xF;
42*badbb63cSNobuhiro Iwamatsu 
43*badbb63cSNobuhiro Iwamatsu 	return rev;
44*badbb63cSNobuhiro Iwamatsu }
45