xref: /openbmc/u-boot/arch/arm/mach-uniphier/soc-info.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2107b3fb4SMasahiro Yamada /*
3e27d6c7dSMasahiro Yamada  * Copyright (C) 2017 Socionext Inc.
4e27d6c7dSMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
5107b3fb4SMasahiro Yamada  */
6107b3fb4SMasahiro Yamada 
7e27d6c7dSMasahiro Yamada #ifndef __UNIPHIER_SOC_INFO_H__
8e27d6c7dSMasahiro Yamada #define __UNIPHIER_SOC_INFO_H__
9107b3fb4SMasahiro Yamada 
10ee8ef5afSMasahiro Yamada #include <linux/kernel.h>
11ee8ef5afSMasahiro Yamada #include <linux/stddef.h>
12ee8ef5afSMasahiro Yamada 
13e27d6c7dSMasahiro Yamada #define UNIPHIER_LD4_ID		0x26
14e27d6c7dSMasahiro Yamada #define UNIPHIER_PRO4_ID	0x28
15e27d6c7dSMasahiro Yamada #define UNIPHIER_SLD8_ID	0x29
16e27d6c7dSMasahiro Yamada #define UNIPHIER_PRO5_ID	0x2a
17e27d6c7dSMasahiro Yamada #define UNIPHIER_PXS2_ID	0x2e
18e27d6c7dSMasahiro Yamada #define UNIPHIER_LD6B_ID	0x2f
19e27d6c7dSMasahiro Yamada #define UNIPHIER_LD11_ID	0x31
20e27d6c7dSMasahiro Yamada #define UNIPHIER_LD20_ID	0x32
212c2ab3d4SMasahiro Yamada #define UNIPHIER_PXS3_ID	0x35
22107b3fb4SMasahiro Yamada 
23e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_id(void);
24e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_model(void);
25e27d6c7dSMasahiro Yamada unsigned int uniphier_get_soc_revision(void);
26107b3fb4SMasahiro Yamada 
27ee8ef5afSMasahiro Yamada #define UNIPHIER_DEFINE_SOCDATA_FUNC(__func_name, __table)	\
28ee8ef5afSMasahiro Yamada static typeof(&__table[0]) __func_name(void)			\
29ee8ef5afSMasahiro Yamada {								\
30ee8ef5afSMasahiro Yamada 	unsigned int soc_id;					\
31ee8ef5afSMasahiro Yamada 	int i;							\
32ee8ef5afSMasahiro Yamada 								\
33ee8ef5afSMasahiro Yamada 	soc_id = uniphier_get_soc_id();				\
34ee8ef5afSMasahiro Yamada 	for (i = 0; i < ARRAY_SIZE(__table); i++) {		\
35ee8ef5afSMasahiro Yamada 		if (__table[i].soc_id == soc_id)		\
36ee8ef5afSMasahiro Yamada 			return &__table[i];			\
37ee8ef5afSMasahiro Yamada 	}							\
38ee8ef5afSMasahiro Yamada 								\
39ee8ef5afSMasahiro Yamada 	return NULL;						\
40ee8ef5afSMasahiro Yamada }
41ee8ef5afSMasahiro Yamada 
42e27d6c7dSMasahiro Yamada #endif /* __UNIPHIER_SOC_INFO_H__ */
43