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 Iwamatsuu32 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 Iwamatsuu32 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 Iwamatsuu32 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