blob: 62017f52c3bafeebfc2faf7164741bfa9440899e [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +09002/*
Nobuhiro Iwamatsu091bc062014-03-28 11:07:39 +09003 * arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +09004 *
Nobuhiro Iwamatsu091bc062014-03-28 11:07:39 +09005 * Copyright (C) 2013,2014 Renesas Electronics Corporation
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +09006 */
7#include <common.h>
8#include <asm/io.h>
9
Marek Vasut14cdf952017-05-13 15:57:38 +020010#define PRR_MASK 0x7fff
11#define R8A7796_REV_1_0 0x5200
12#define R8A7796_REV_1_1 0x5210
Biju Das4e93dc92020-09-15 15:15:22 +010013#define R8A7796_REV_1_3 0x5211
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +090014
Marek Vasute2985262018-10-18 20:28:19 +020015static u32 rmobile_get_prr(void)
16{
Hai Pham9046b5f2023-02-28 22:22:03 +010017 if (IS_ENABLED(CONFIG_RCAR_64))
Marek Vasut43f5dc02023-02-28 07:27:51 +010018 return readl(0xFFF00044);
19
Marek Vasute2985262018-10-18 20:28:19 +020020 return readl(0xFF000044);
Marek Vasute2985262018-10-18 20:28:19 +020021}
Marek Vasutab7899b2017-11-09 21:49:48 +010022
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +090023u32 rmobile_get_cpu_type(void)
24{
Marek Vasutab7899b2017-11-09 21:49:48 +010025 return (rmobile_get_prr() & 0x00007F00) >> 8;
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +090026}
27
28u32 rmobile_get_cpu_rev_integer(void)
29{
Marek Vasutab7899b2017-11-09 21:49:48 +010030 const u32 prr = rmobile_get_prr();
Biju Das4e93dc92020-09-15 15:15:22 +010031 const u32 rev = prr & PRR_MASK;
Marek Vasut14cdf952017-05-13 15:57:38 +020032
Biju Das4e93dc92020-09-15 15:15:22 +010033 if (rev == R8A7796_REV_1_1 || rev == R8A7796_REV_1_3)
Marek Vasut14cdf952017-05-13 15:57:38 +020034 return 1;
35 else
36 return ((prr & 0x000000F0) >> 4) + 1;
Nobuhiro Iwamatsuc6ccb472013-11-21 17:06:45 +090037}
Nobuhiro Iwamatsu520d06d2014-03-28 11:15:59 +090038
39u32 rmobile_get_cpu_rev_fraction(void)
40{
Marek Vasutab7899b2017-11-09 21:49:48 +010041 const u32 prr = rmobile_get_prr();
Biju Das4e93dc92020-09-15 15:15:22 +010042 const u32 rev = prr & PRR_MASK;
Marek Vasut14cdf952017-05-13 15:57:38 +020043
Biju Das4e93dc92020-09-15 15:15:22 +010044 if (rev == R8A7796_REV_1_1)
Marek Vasut14cdf952017-05-13 15:57:38 +020045 return 1;
Biju Das4e93dc92020-09-15 15:15:22 +010046 else if (rev == R8A7796_REV_1_3)
47 return 3;
Marek Vasut14cdf952017-05-13 15:57:38 +020048 else
49 return prr & 0x0000000F;
Nobuhiro Iwamatsu520d06d2014-03-28 11:15:59 +090050}