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) \ 20static 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 34SOC_INTEL_IS_CPU(byt, ATOM_SILVERMONT); 35SOC_INTEL_IS_CPU(cht, ATOM_AIRMONT); 36SOC_INTEL_IS_CPU(apl, ATOM_GOLDMONT); 37SOC_INTEL_IS_CPU(glk, ATOM_GOLDMONT_PLUS); 38SOC_INTEL_IS_CPU(cml, KABYLAKE_L); 39 40#undef SOC_INTEL_IS_CPU 41 42#else /* IS_ENABLED(CONFIG_X86) */ 43 44static inline bool soc_intel_is_byt(void) 45{ 46 return false; 47} 48 49static inline bool soc_intel_is_cht(void) 50{ 51 return false; 52} 53 54static inline bool soc_intel_is_apl(void) 55{ 56 return false; 57} 58 59static inline bool soc_intel_is_glk(void) 60{ 61 return false; 62} 63 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