1
2
3
4
5
6
7#include <common.h>
8#include <asm/io.h>
9
10#define PRR_MASK 0x7fff
11#define R8A7796_REV_1_0 0x5200
12#define R8A7796_REV_1_1 0x5210
13#define R8A7796_REV_1_3 0x5211
14
15static u32 rmobile_get_prr(void)
16{
17#ifdef CONFIG_RCAR_GEN3
18 return readl(0xFFF00044);
19#else
20 return readl(0xFF000044);
21#endif
22}
23
24u32 rmobile_get_cpu_type(void)
25{
26 return (rmobile_get_prr() & 0x00007F00) >> 8;
27}
28
29u32 rmobile_get_cpu_rev_integer(void)
30{
31 const u32 prr = rmobile_get_prr();
32 const u32 rev = prr & PRR_MASK;
33
34 if (rev == R8A7796_REV_1_1 || rev == R8A7796_REV_1_3)
35 return 1;
36 else
37 return ((prr & 0x000000F0) >> 4) + 1;
38}
39
40u32 rmobile_get_cpu_rev_fraction(void)
41{
42 const u32 prr = rmobile_get_prr();
43 const u32 rev = prr & PRR_MASK;
44
45 if (rev == R8A7796_REV_1_1)
46 return 1;
47 else if (rev == R8A7796_REV_1_3)
48 return 3;
49 else
50 return prr & 0x0000000F;
51}
52