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