1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Helpers for Intel SoC model detection 4 * 5 * Copyright (c) 2019, Intel Corporation. 6 */ 7 8 #ifndef __PLATFORM_DATA_X86_SOC_H 9 #define __PLATFORM_DATA_X86_SOC_H 10 11 #include <linux/types.h> 12 13 #if IS_ENABLED(CONFIG_X86) 14 15 #include <linux/mod_devicetable.h> 16 17 #include <asm/cpu_device_id.h> 18 19 #define SOC_INTEL_IS_CPU(soc, type) \ 20 static inline bool soc_intel_is_##soc(void) \ 21 { \ 22 static const struct x86_cpu_id soc##_cpu_ids[] = { \ 23 X86_MATCH_INTEL_FAM6_MODEL(type, NULL), \ 24 {} \ 25 }; \ 26 const struct x86_cpu_id *id; \ 27 \ 28 id = x86_match_cpu(soc##_cpu_ids); \ 29 if (id) \ 30 return true; \ 31 return false; \ 32 } 33 34 SOC_INTEL_IS_CPU(byt, ATOM_SILVERMONT); 35 SOC_INTEL_IS_CPU(cht, ATOM_AIRMONT); 36 SOC_INTEL_IS_CPU(apl, ATOM_GOLDMONT); 37 SOC_INTEL_IS_CPU(glk, ATOM_GOLDMONT_PLUS); 38 SOC_INTEL_IS_CPU(cml, KABYLAKE_L); 39 40 #undef SOC_INTEL_IS_CPU 41 42 #else /* IS_ENABLED(CONFIG_X86) */ 43 soc_intel_is_byt(void)44static inline bool soc_intel_is_byt(void) 45 { 46 return false; 47 } 48 soc_intel_is_cht(void)49static inline bool soc_intel_is_cht(void) 50 { 51 return false; 52 } 53 soc_intel_is_apl(void)54static inline bool soc_intel_is_apl(void) 55 { 56 return false; 57 } 58 soc_intel_is_glk(void)59static inline bool soc_intel_is_glk(void) 60 { 61 return false; 62 } 63 soc_intel_is_cml(void)64static inline bool soc_intel_is_cml(void) 65 { 66 return false; 67 } 68 #endif /* IS_ENABLED(CONFIG_X86) */ 69 70 #endif /* __PLATFORM_DATA_X86_SOC_H */ 71