diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-01-21 18:05:27 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-01-22 16:49:33 +0900 |
commit | ee8ef5afa87bf37d493bf7be9d475e54d6c2ebee (patch) | |
tree | 26698081909c04e0f0c3f1d1a664d83e60ec0884 /arch/arm/mach-uniphier/soc-info.h | |
parent | e27d6c7d328caf75bd7680109bc6610bc681f46e (diff) | |
download | u-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.h | 18 |
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__ */ |