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

source code of linux/include/linux/platform_data/x86/soc.h