xref: /rk3399_rockchip-uboot/arch/arm/mach-rmobile/cpu_info-rcar.c (revision be62fbf376261ab3a4ed5db3bf54d5df9e216d9f)
1badbb63cSNobuhiro Iwamatsu /*
2badbb63cSNobuhiro Iwamatsu  * arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c
3badbb63cSNobuhiro Iwamatsu  *
4badbb63cSNobuhiro Iwamatsu  * Copyright (C) 2013,2014 Renesas Electronics Corporation
5badbb63cSNobuhiro Iwamatsu  *
6badbb63cSNobuhiro Iwamatsu  * SPDX-License-Identifier: GPL-2.0
7badbb63cSNobuhiro Iwamatsu  */
8badbb63cSNobuhiro Iwamatsu #include <common.h>
9badbb63cSNobuhiro Iwamatsu #include <asm/io.h>
10badbb63cSNobuhiro Iwamatsu 
11badbb63cSNobuhiro Iwamatsu #define PRR			0xFF000044
12*e965c890SMarek Vasut #define PRR_MASK		0x7fff
13*e965c890SMarek Vasut #define R8A7796_REV_1_0		0x5200
14*e965c890SMarek Vasut #define R8A7796_REV_1_1		0x5210
15badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_type(void)16badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_type(void)
17badbb63cSNobuhiro Iwamatsu {
18badbb63cSNobuhiro Iwamatsu 	return (readl(PRR) & 0x00007F00) >> 8;
19badbb63cSNobuhiro Iwamatsu }
20badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_rev_integer(void)21badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_rev_integer(void)
22badbb63cSNobuhiro Iwamatsu {
23*e965c890SMarek Vasut 	const u32 prr = readl(PRR);
24*e965c890SMarek Vasut 
25*e965c890SMarek Vasut 	if ((prr & PRR_MASK) == R8A7796_REV_1_1)
26*e965c890SMarek Vasut 		return 1;
27*e965c890SMarek Vasut 	else
28*e965c890SMarek Vasut 		return ((prr & 0x000000F0) >> 4) + 1;
29badbb63cSNobuhiro Iwamatsu }
30badbb63cSNobuhiro Iwamatsu 
rmobile_get_cpu_rev_fraction(void)31badbb63cSNobuhiro Iwamatsu u32 rmobile_get_cpu_rev_fraction(void)
32badbb63cSNobuhiro Iwamatsu {
33*e965c890SMarek Vasut 	const u32 prr = readl(PRR);
34*e965c890SMarek Vasut 
35*e965c890SMarek Vasut 	if ((prr & PRR_MASK) == R8A7796_REV_1_1)
36*e965c890SMarek Vasut 		return 1;
37*e965c890SMarek Vasut 	else
38*e965c890SMarek Vasut 		return prr & 0x0000000F;
39badbb63cSNobuhiro Iwamatsu }
40