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