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 #if IS_ENABLED(CONFIG_X86) 12 13 #include <asm/cpu_device_id.h> 14 #include <asm/intel-family.h> 15 16 #define SOC_INTEL_IS_CPU(soc, type) \ 17 static inline bool soc_intel_is_##soc(void) \ 18 { \ 19 static const struct x86_cpu_id soc##_cpu_ids[] = { \ 20 X86_MATCH_INTEL_FAM6_MODEL(type, NULL), \ 21 {} \ 22 }; \ 23 const struct x86_cpu_id *id; \ 24 \ 25 id = x86_match_cpu(soc##_cpu_ids); \ 26 if (id) \ 27 return true; \ 28 return false; \ 29 } 30 31 SOC_INTEL_IS_CPU(byt, ATOM_SILVERMONT); 32 SOC_INTEL_IS_CPU(cht, ATOM_AIRMONT); 33 SOC_INTEL_IS_CPU(apl, ATOM_GOLDMONT); 34 SOC_INTEL_IS_CPU(glk, ATOM_GOLDMONT_PLUS); 35 SOC_INTEL_IS_CPU(cml, KABYLAKE_L); 36 37 #else /* IS_ENABLED(CONFIG_X86) */ 38 soc_intel_is_byt(void)39static inline bool soc_intel_is_byt(void) 40 { 41 return false; 42 } 43 soc_intel_is_cht(void)44static inline bool soc_intel_is_cht(void) 45 { 46 return false; 47 } 48 soc_intel_is_apl(void)49static inline bool soc_intel_is_apl(void) 50 { 51 return false; 52 } 53 soc_intel_is_glk(void)54static inline bool soc_intel_is_glk(void) 55 { 56 return false; 57 } 58 soc_intel_is_cml(void)59static inline bool soc_intel_is_cml(void) 60 { 61 return false; 62 } 63 #endif /* IS_ENABLED(CONFIG_X86) */ 64 65 #endif /* __PLATFORM_DATA_X86_SOC_H */ 66