GNU Linux-libre 6.0.15-gnu
[releases.git] / include / linux / platform_data / x86 / soc.h
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
39 static inline bool soc_intel_is_byt(void)
40 {
41         return false;
42 }
43
44 static inline bool soc_intel_is_cht(void)
45 {
46         return false;
47 }
48
49 static inline bool soc_intel_is_apl(void)
50 {
51         return false;
52 }
53
54 static inline bool soc_intel_is_glk(void)
55 {
56         return false;
57 }
58
59 static 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 */