summaryrefslogtreecommitdiff
path: root/arch/arm/mach-uniphier/soc-info.h
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2017-01-21 18:05:27 +0900
committerMasahiro Yamada <yamada.masahiro@socionext.com>2017-01-22 16:49:33 +0900
commitee8ef5afa87bf37d493bf7be9d475e54d6c2ebee (patch)
tree26698081909c04e0f0c3f1d1a664d83e60ec0884 /arch/arm/mach-uniphier/soc-info.h
parente27d6c7d328caf75bd7680109bc6610bc681f46e (diff)
downloadu-boot-imx-ee8ef5afa87bf37d493bf7be9d475e54d6c2ebee.zip
u-boot-imx-ee8ef5afa87bf37d493bf7be9d475e54d6c2ebee.tar.gz
u-boot-imx-ee8ef5afa87bf37d493bf7be9d475e54d6c2ebee.tar.bz2
ARM: uniphier: add macro to generate SoC data look-up function
There are similar functions that look up SoC data by the SoC ID. The new macro UNIPHIER_DEFINE_SOCDATA_FUNC will be helpful to avoid the code duplication. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'arch/arm/mach-uniphier/soc-info.h')
-rw-r--r--arch/arm/mach-uniphier/soc-info.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mach-uniphier/soc-info.h b/arch/arm/mach-uniphier/soc-info.h
index b528fa9..d7619f4 100644
--- a/arch/arm/mach-uniphier/soc-info.h
+++ b/arch/arm/mach-uniphier/soc-info.h
@@ -8,6 +8,9 @@
#ifndef __UNIPHIER_SOC_INFO_H__
#define __UNIPHIER_SOC_INFO_H__
+#include <linux/kernel.h>
+#include <linux/stddef.h>
+
#define UNIPHIER_SLD3_ID 0x25
#define UNIPHIER_LD4_ID 0x26
#define UNIPHIER_PRO4_ID 0x28
@@ -22,4 +25,19 @@ unsigned int uniphier_get_soc_id(void);
unsigned int uniphier_get_soc_model(void);
unsigned int uniphier_get_soc_revision(void);
+#define UNIPHIER_DEFINE_SOCDATA_FUNC(__func_name, __table) \
+static typeof(&__table[0]) __func_name(void) \
+{ \
+ unsigned int soc_id; \
+ int i; \
+ \
+ soc_id = uniphier_get_soc_id(); \
+ for (i = 0; i < ARRAY_SIZE(__table); i++) { \
+ if (__table[i].soc_id == soc_id) \
+ return &__table[i]; \
+ } \
+ \
+ return NULL; \
+}
+
#endif /* __UNIPHIER_SOC_INFO_H__ */