xref: /rk3399_rockchip-uboot/arch/arm/mach-uniphier/soc-info.c (revision fa8967cfbaed5582ba987756fa9f0470a9affbf4)
1e27d6c7dSMasahiro Yamada /*
2e27d6c7dSMasahiro Yamada  * Copyright (C) 2017 Socionext Inc.
3e27d6c7dSMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
4e27d6c7dSMasahiro Yamada  *
5e27d6c7dSMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
6e27d6c7dSMasahiro Yamada  */
7e27d6c7dSMasahiro Yamada 
8e27d6c7dSMasahiro Yamada #include <linux/io.h>
9e27d6c7dSMasahiro Yamada #include <linux/types.h>
10e27d6c7dSMasahiro Yamada 
11e27d6c7dSMasahiro Yamada #include "sg-regs.h"
12e27d6c7dSMasahiro Yamada #include "soc-info.h"
13e27d6c7dSMasahiro Yamada 
__uniphier_get_revision_field(unsigned int mask,unsigned int shift)14e27d6c7dSMasahiro Yamada static unsigned int __uniphier_get_revision_field(unsigned int mask,
15e27d6c7dSMasahiro Yamada 						  unsigned int shift)
16e27d6c7dSMasahiro Yamada {
17e27d6c7dSMasahiro Yamada 	u32 revision = readl(SG_REVISION);
18e27d6c7dSMasahiro Yamada 
19e27d6c7dSMasahiro Yamada 	return (revision >> shift) & mask;
20e27d6c7dSMasahiro Yamada }
21e27d6c7dSMasahiro Yamada 
uniphier_get_soc_id(void)22e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_id(void)
23e27d6c7dSMasahiro Yamada {
24e27d6c7dSMasahiro Yamada 	return __uniphier_get_revision_field(0xff, 16);
25e27d6c7dSMasahiro Yamada }
26e27d6c7dSMasahiro Yamada 
uniphier_get_soc_model(void)27e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_model(void)
28e27d6c7dSMasahiro Yamada {
29*c5bd411fSMasahiro Yamada 	return __uniphier_get_revision_field(0x7, 8);
30e27d6c7dSMasahiro Yamada }
31e27d6c7dSMasahiro Yamada 
uniphier_get_soc_revision(void)32e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_revision(void)
33e27d6c7dSMasahiro Yamada {
34e27d6c7dSMasahiro Yamada 	return __uniphier_get_revision_field(0x1f, 0);
35e27d6c7dSMasahiro Yamada }
36