coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
report_platform.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <arch/cpu.h>
4 #include <device/pci_ops.h>
5 #include <console/console.h>
6 #include <cpu/intel/cpu_ids.h>
7 #include <cpu/intel/microcode.h>
8 #include <cpu/x86/msr.h>
9 #include <cpu/x86/name.h>
10 #include <device/pci.h>
11 #include <device/pci_ids.h>
12 #include <soc/bootblock.h>
13 #include <soc/pch.h>
14 #include <soc/pci_devs.h>
15 
16 static struct {
18  const char *name;
19 } cpu_table[] = {
20  { CPUID_CANNONLAKE_A0, "Cannonlake A0" },
21  { CPUID_CANNONLAKE_B0, "Cannonlake B0" },
22  { CPUID_CANNONLAKE_C0, "Cannonlake C0" },
23  { CPUID_CANNONLAKE_D0, "Cannonlake D0" },
24  { CPUID_KABYLAKE_Y0, "Coffeelake D0" },
25  { CPUID_WHISKEYLAKE_V0, "Whiskeylake V0" },
26  { CPUID_WHISKEYLAKE_W0, "Whiskeylake W0" },
27  { CPUID_COFFEELAKE_U0, "Coffeelake U0 (6+2)" },
28  { CPUID_COFFEELAKE_B0, "Coffeelake B0" },
29  { CPUID_COFFEELAKE_P0, "Coffeelake P0" },
30  { CPUID_COFFEELAKE_R0, "Coffeelake R0" },
31  { CPUID_COMETLAKE_U_A0, "Cometlake-U A0 (6+2)" },
32  { CPUID_COMETLAKE_U_K0_S0, "Cometlake-U K0/S0 (6+2)/(4+2)" },
33  { CPUID_COMETLAKE_H_S_6_2_G0, "Cometlake-H/S G0 (6+2)" },
34  { CPUID_COMETLAKE_H_S_6_2_G1, "Cometlake-H/S G1 (6+2)" },
35  { CPUID_COMETLAKE_H_S_10_2_P0, "Cometlake-H/S P0 (10+2)" },
36  { CPUID_COMETLAKE_H_S_10_2_Q0_P1, "Cometlake-H/S Q0/P1 (10+2)" },
37 };
38 
39 static struct {
41  const char *name;
42 } mch_table[] = {
43  { PCI_DID_INTEL_CNL_ID_U, "Cannonlake-U" },
44  { PCI_DID_INTEL_CNL_ID_Y, "Cannonlake-Y" },
45  { PCI_DID_INTEL_CFL_ID_U, "Coffeelake U (4+3e)" },
46  { PCI_DID_INTEL_CFL_ID_U_2, "Coffeelake U (2)" },
47  { PCI_DID_INTEL_WHL_ID_W_4, "Whiskeylake W (4+2)" },
48  { PCI_DID_INTEL_WHL_ID_W_2, "Whiskeylake W (2+2)" },
49  { PCI_DID_INTEL_CFL_ID_H, "Coffeelake-H" },
50  { PCI_DID_INTEL_CFL_ID_H_4, "Coffeelake-H (4)" },
51  { PCI_DID_INTEL_CFL_ID_H_8, "Coffeelake-H (8+2)" },
52  { PCI_DID_INTEL_CFL_ID_S, "Coffeelake-S" },
53  { PCI_DID_INTEL_CFL_ID_S_DT_2, "Coffeelake-S DT(2)" },
54  { PCI_DID_INTEL_CFL_ID_S_DT_4, "Coffeelake-S DT(4)" },
55  { PCI_DID_INTEL_CFL_ID_S_DT_8, "Coffeelake-S DT(8+2)" },
56  { PCI_DID_INTEL_CFL_ID_S_WS_4, "Coffeelake-S WS(4+2)" },
57  { PCI_DID_INTEL_CFL_ID_S_WS_6, "Coffeelake-S WS(6+2)" },
58  { PCI_DID_INTEL_CFL_ID_S_WS_8, "Coffeelake-S WS(8+2)" },
59  { PCI_DID_INTEL_CFL_ID_S_S_4, "Coffeelake-S S(4)" },
60  { PCI_DID_INTEL_CFL_ID_S_S_6, "Coffeelake-S S(6)" },
61  { PCI_DID_INTEL_CFL_ID_S_S_8, "Coffeelake-S S(8)" },
62  { PCI_DID_INTEL_CML_ULT, "CometLake-U (4+2)" },
63  { PCI_DID_INTEL_CML_ULT_2_2, "CometLake-U (2+2)" },
64  { PCI_DID_INTEL_CML_ULT_6_2, "CometLake-U (6+2)" },
65  { PCI_DID_INTEL_CML_ULX, "CometLake-ULX (4+2)" },
66  { PCI_DID_INTEL_CML_S, "CometLake-S (6+2)" },
67  { PCI_DID_INTEL_CML_S_G0G1_P0P1_6_2, "CometLake-S G0/G1/P0/P1 (6+2)" },
68  { PCI_DID_INTEL_CML_S_P0P1_8_2, "CometLake-S P0/P1 (8+2)" },
69  { PCI_DID_INTEL_CML_S_P0P1_10_2, "CometLake-S P0/P1 (10+2)" },
70  { PCI_DID_INTEL_CML_S_G0G1_4, "CometLake-S G0/G1 (4+2)" },
71  { PCI_DID_INTEL_CML_S_G0G1_2, "CometLake-S G0/G1 (2+2)" },
72  { PCI_DID_INTEL_CML_H, "CometLake-H (6+2)" },
73  { PCI_DID_INTEL_CML_H_4_2, "CometLake-H (4+2)" },
74  { PCI_DID_INTEL_CML_H_8_2, "CometLake-H (8+2)" },
75 };
76 
77 static struct {
79  const char *name;
80 } pch_table[] = {
81  { PCI_DID_INTEL_CNL_BASE_U_LPC, "Cannonlake-U Base" },
82  { PCI_DID_INTEL_CNL_U_PREMIUM_LPC, "Cannonlake-U Premium" },
83  { PCI_DID_INTEL_CNL_Y_PREMIUM_LPC, "Cannonlake-Y Premium" },
84  { PCI_DID_INTEL_CNP_H_LPC_H310, "Cannonlake-H H310" },
85  { PCI_DID_INTEL_CNP_H_LPC_H370, "Cannonlake-H H370" },
86  { PCI_DID_INTEL_CNP_H_LPC_Z390, "Cannonlake-H Z390" },
87  { PCI_DID_INTEL_CNP_H_LPC_Q370, "Cannonlake-H Q370" },
88  { PCI_DID_INTEL_CNP_H_LPC_B360, "Cannonlake-H B360" },
89  { PCI_DID_INTEL_CNP_H_LPC_C246, "Cannonlake-H C246" },
90  { PCI_DID_INTEL_CNP_H_LPC_C242, "Cannonlake-H C242" },
91  { PCI_DID_INTEL_CNP_H_LPC_QM370, "Cannonlake-H QM370" },
92  { PCI_DID_INTEL_CNP_H_LPC_HM370, "Cannonlake-H HM370" },
93  { PCI_DID_INTEL_CNP_H_LPC_CM246, "Cannonlake-H CM246" },
94  { PCI_DID_INTEL_CMP_SUPER_U_LPC, "Cometlake-U Super" },
95  { PCI_DID_INTEL_CMP_PREMIUM_Y_LPC, "Cometlake-Y Premium" },
96  { PCI_DID_INTEL_CMP_PREMIUM_U_LPC, "Cometlake-U Premium" },
97  { PCI_DID_INTEL_CMP_BASE_U_LPC, "Cometlake-U Base" },
98  { PCI_DID_INTEL_CMP_SUPER_Y_LPC, "Cometlake-Y Super" },
99  { PCI_DID_INTEL_CMP_H_LPC_HM470, "Cometlake-H HM470" },
100  { PCI_DID_INTEL_CMP_H_LPC_WM490, "Cometlake-H WM490" },
101  { PCI_DID_INTEL_CMP_H_LPC_QM480, "Cometlake-H QM480" },
102  { PCI_DID_INTEL_CMP_H_LPC_W480, "Cometlake-H W480" },
103  { PCI_DID_INTEL_CMP_H_LPC_H470, "Cometlake-H H470" },
104  { PCI_DID_INTEL_CMP_H_LPC_Z490, "Cometlake-H Z490" },
105  { PCI_DID_INTEL_CMP_H_LPC_Q470, "Cometlake-H Q470" },
106 };
107 
108 static struct {
110  const char *name;
111 } igd_table[] = {
112  { PCI_DID_INTEL_CNL_GT2_ULX_1, "Cannonlake ULX GT2" },
113  { PCI_DID_INTEL_CNL_GT2_ULX_2, "Cannonlake ULX GT1.5" },
114  { PCI_DID_INTEL_CNL_GT2_ULX_3, "Cannonlake ULX GT1" },
115  { PCI_DID_INTEL_CNL_GT2_ULX_4, "Cannonlake ULX GT0.5" },
116  { PCI_DID_INTEL_CNL_GT2_ULT_1, "Cannonlake ULT GT2" },
117  { PCI_DID_INTEL_CNL_GT2_ULT_2, "Cannonlake ULT GT1.5" },
118  { PCI_DID_INTEL_CNL_GT2_ULT_3, "Cannonlake ULT GT1" },
119  { PCI_DID_INTEL_CNL_GT2_ULT_4, "Cannonlake ULT GT0.5" },
120  { PCI_DID_INTEL_CFL_GT2_ULT, "Coffeelake ULT GT2" },
121  { PCI_DID_INTEL_WHL_GT1_ULT_1, "Whiskeylake ULT GT1" },
122  { PCI_DID_INTEL_WHL_GT2_ULT_1, "Whiskeylake ULT GT2" },
123  { PCI_DID_INTEL_CFL_H_GT2, "Coffeelake-H GT2" },
124  { PCI_DID_INTEL_CFL_H_XEON_GT2, "Coffeelake-H Xeon GT2" },
125  { PCI_DID_INTEL_CFL_S_GT1_1, "Coffeelake-S GT1" },
126  { PCI_DID_INTEL_CFL_S_GT1_2, "Coffeelake-S GT1" },
127  { PCI_DID_INTEL_CFL_S_GT2_1, "Coffeelake-S GT2" },
128  { PCI_DID_INTEL_CFL_S_GT2_2, "Coffeelake-S GT2" },
129  { PCI_DID_INTEL_CFL_S_GT2_3, "Coffeelake-S GT2" },
130  { PCI_DID_INTEL_CFL_S_GT2_4, "Coffeelake-S GT2" },
131  { PCI_DID_INTEL_CFL_S_GT2_5, "Coffeelake-S GT2" },
132  { PCI_DID_INTEL_CML_GT1_ULT_1, "CometLake ULT GT1" },
133  { PCI_DID_INTEL_CML_GT1_ULT_2, "CometLake ULT GT1" },
134  { PCI_DID_INTEL_CML_GT2_ULT_1, "CometLake ULT GT2" },
135  { PCI_DID_INTEL_CML_GT2_ULT_2, "CometLake ULT GT2" },
136  { PCI_DID_INTEL_CML_GT1_ULT_3, "CometLake ULT GT1" },
137  { PCI_DID_INTEL_CML_GT1_ULT_4, "CometLake ULT GT1" },
138  { PCI_DID_INTEL_CML_GT2_ULT_3, "CometLake ULT GT2" },
139  { PCI_DID_INTEL_CML_GT2_ULT_4, "CometLake ULT GT2" },
140  { PCI_DID_INTEL_CML_GT2_ULT_5, "CometLake ULT GT2" },
141  { PCI_DID_INTEL_CML_GT2_ULT_6, "CometLake ULT GT2" },
142  { PCI_DID_INTEL_CML_GT1_ULX_1, "CometLake ULX GT1" },
143  { PCI_DID_INTEL_CML_GT2_ULX_1, "CometLake ULX GT2" },
144  { PCI_DID_INTEL_CML_GT1_S_1, "CometLake S GT1" },
145  { PCI_DID_INTEL_CML_GT1_S_2, "CometLake S GT1" },
146  { PCI_DID_INTEL_CML_GT2_S_1, "CometLake S GT2" },
147  { PCI_DID_INTEL_CML_GT2_S_2, "CometLake S GT2" },
148  { PCI_DID_INTEL_CML_GT2_S_G0, "CometLake S GT2 G0" },
149  { PCI_DID_INTEL_CML_GT2_S_P0, "CometLake S GT2 P0" },
150  { PCI_DID_INTEL_CML_GT1_H_1, "CometLake H GT1" },
151  { PCI_DID_INTEL_CML_GT1_H_2, "CometLake H GT1" },
152  { PCI_DID_INTEL_CML_GT2_H_1, "CometLake H GT2" },
153  { PCI_DID_INTEL_CML_GT2_H_2, "CometLake H GT2" },
154  { PCI_DID_INTEL_CML_GT2_H_R0, "CometLake H GT2 R0" },
155  { PCI_DID_INTEL_CML_GT2_H_R1, "CometLake H GT2 R1" },
156 
157 };
158 
160 {
161  return pci_read_config8(dev, PCI_REVISION_ID);
162 }
163 
165 {
166  return pci_read_config16(dev, PCI_DEVICE_ID);
167 }
168 
169 static void report_cpu_info(void)
170 {
171  u32 i, cpu_id, cpu_feature_flag;
172  char cpu_name[49];
173  int vt, txt, aes;
174  static const char *const mode[] = {"NOT ", ""};
175  const char *cpu_type = "Unknown";
176 
177  fill_processor_name(cpu_name);
178  cpu_id = cpu_get_cpuid();
179 
180  /* Look for string to match the name */
181  for (i = 0; i < ARRAY_SIZE(cpu_table); i++) {
182  if (cpu_table[i].cpuid == cpu_id) {
183  cpu_type = cpu_table[i].name;
184  break;
185  }
186  }
187 
188  printk(BIOS_DEBUG, "CPU: %s\n", cpu_name);
189  printk(BIOS_DEBUG, "CPU: ID %x, %s, ucode: %08x\n",
191 
192  cpu_feature_flag = cpu_get_feature_flags_ecx();
193  aes = (cpu_feature_flag & CPUID_AES) ? 1 : 0;
194  txt = (cpu_feature_flag & CPUID_SMX) ? 1 : 0;
195  vt = (cpu_feature_flag & CPUID_VMX) ? 1 : 0;
197  "CPU: AES %ssupported, TXT %ssupported, VT %ssupported\n",
198  mode[aes], mode[txt], mode[vt]);
199 }
200 
201 static void report_mch_info(void)
202 {
203  int i;
204  pci_devfn_t dev = SA_DEV_ROOT;
205  uint16_t mchid = get_dev_id(dev);
206  uint8_t mch_revision = get_dev_revision(dev);
207  const char *mch_type = "Unknown";
208 
209  for (i = 0; i < ARRAY_SIZE(mch_table); i++) {
210  if (mch_table[i].mchid == mchid) {
211  mch_type = mch_table[i].name;
212  break;
213  }
214  }
215 
216  printk(BIOS_DEBUG, "MCH: device id %04x (rev %02x) is %s\n",
217  mchid, mch_revision, mch_type);
218 }
219 
220 static void report_pch_info(void)
221 {
222  int i;
223  pci_devfn_t dev = PCH_DEV_LPC;
224  uint16_t lpcid = get_dev_id(dev);
225  const char *pch_type = "Unknown";
226 
227  for (i = 0; i < ARRAY_SIZE(pch_table); i++) {
228  if (pch_table[i].lpcid == lpcid) {
229  pch_type = pch_table[i].name;
230  break;
231  }
232  }
233  printk(BIOS_DEBUG, "PCH: device id %04x (rev %02x) is %s\n",
235 }
236 
237 static void report_igd_info(void)
238 {
239  int i;
240  pci_devfn_t dev = SA_DEV_IGD;
241  uint16_t igdid = get_dev_id(dev);
242  const char *igd_type = "Unknown";
243 
244  for (i = 0; i < ARRAY_SIZE(igd_table); i++) {
245  if (igd_table[i].igdid == igdid) {
246  igd_type = igd_table[i].name;
247  break;
248  }
249  }
250  printk(BIOS_DEBUG, "IGD: device id %04x (rev %02x) is %s\n",
251  igdid, get_dev_revision(dev), igd_type);
252 }
253 
255 {
256  report_cpu_info();
257  report_mch_info();
258  report_pch_info();
259  report_igd_info();
260 }
cpu_type
Definition: cpu.h:347
#define ARRAY_SIZE(a)
Definition: helpers.h:12
#define printk(level,...)
Definition: stdlib.h:16
uint32_t cpu_get_feature_flags_ecx(void)
Definition: cpu_common.c:72
uint32_t cpu_get_cpuid(void)
Definition: cpu_common.c:63
#define CPUID_KABYLAKE_Y0
Definition: cpu_ids.h:20
#define CPUID_COMETLAKE_H_S_6_2_G0
Definition: cpu_ids.h:44
#define CPUID_COMETLAKE_U_K0_S0
Definition: cpu_ids.h:43
#define CPUID_CANNONLAKE_B0
Definition: cpu_ids.h:24
#define CPUID_COMETLAKE_H_S_10_2_Q0_P1
Definition: cpu_ids.h:47
#define CPUID_WHISKEYLAKE_V0
Definition: cpu_ids.h:33
#define CPUID_COMETLAKE_H_S_10_2_P0
Definition: cpu_ids.h:46
#define CPUID_COFFEELAKE_P0
Definition: cpu_ids.h:37
#define CPUID_CANNONLAKE_A0
Definition: cpu_ids.h:23
#define CPUID_CANNONLAKE_C0
Definition: cpu_ids.h:25
#define CPUID_COFFEELAKE_B0
Definition: cpu_ids.h:36
#define CPUID_CANNONLAKE_D0
Definition: cpu_ids.h:26
#define CPUID_COMETLAKE_H_S_6_2_G1
Definition: cpu_ids.h:45
#define CPUID_WHISKEYLAKE_W0
Definition: cpu_ids.h:34
#define CPUID_COFFEELAKE_U0
Definition: cpu_ids.h:35
#define CPUID_COFFEELAKE_R0
Definition: cpu_ids.h:38
#define CPUID_COMETLAKE_U_A0
Definition: cpu_ids.h:42
#define CPUID_AES
Definition: msr.h:28
#define CPUID_VMX
Definition: msr.h:24
#define CPUID_SMX
Definition: msr.h:25
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
Definition: pci_ops.h:52
static __always_inline u8 pci_read_config8(const struct device *dev, u16 reg)
Definition: pci_ops.h:46
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
Definition: loglevel.h:128
uint32_t get_current_microcode_rev(void)
Definition: microcode.c:112
void fill_processor_name(char *processor_name)
Definition: name.c:8
void report_platform_info(void)
#define PCI_DEVICE_ID
Definition: pci_def.h:9
#define PCI_REVISION_ID
Definition: pci_def.h:41
#define PCI_DID_INTEL_CML_H_4_2
Definition: pci_ids.h:4016
#define PCI_DID_INTEL_CML_GT2_ULT_6
Definition: pci_ids.h:3891
#define PCI_DID_INTEL_CNP_H_LPC_H370
Definition: pci_ids.h:2900
#define PCI_DID_INTEL_CML_GT1_S_1
Definition: pci_ids.h:3896
#define PCI_DID_INTEL_CNL_U_PREMIUM_LPC
Definition: pci_ids.h:2897
#define PCI_DID_INTEL_CML_GT1_ULT_1
Definition: pci_ids.h:3884
#define PCI_DID_INTEL_CFL_H_GT2
Definition: pci_ids.h:3859
#define PCI_DID_INTEL_CMP_SUPER_Y_LPC
Definition: pci_ids.h:2920
#define PCI_DID_INTEL_CNL_GT2_ULT_4
Definition: pci_ids.h:3857
#define PCI_DID_INTEL_CNL_Y_PREMIUM_LPC
Definition: pci_ids.h:2898
#define PCI_DID_INTEL_CML_GT2_ULT_4
Definition: pci_ids.h:3893
#define PCI_DID_INTEL_CFL_ID_U
Definition: pci_ids.h:3986
#define PCI_DID_INTEL_WHL_GT2_ULT_1
Definition: pci_ids.h:3849
#define PCI_DID_INTEL_CNL_GT2_ULX_2
Definition: pci_ids.h:3851
#define PCI_DID_INTEL_CML_S_P0P1_10_2
Definition: pci_ids.h:4010
#define PCI_DID_INTEL_CMP_H_LPC_Z490
Definition: pci_ids.h:2926
#define PCI_DID_INTEL_CML_GT2_S_1
Definition: pci_ids.h:3898
#define PCI_DID_INTEL_CML_GT2_ULT_2
Definition: pci_ids.h:3887
#define PCI_DID_INTEL_CFL_S_GT2_4
Definition: pci_ids.h:3866
#define PCI_DID_INTEL_CMP_H_LPC_HM470
Definition: pci_ids.h:2921
#define PCI_DID_INTEL_CML_GT1_ULX_1
Definition: pci_ids.h:3894
#define PCI_DID_INTEL_CMP_SUPER_U_LPC
Definition: pci_ids.h:2916
#define PCI_DID_INTEL_CML_GT2_ULX_1
Definition: pci_ids.h:3895
#define PCI_DID_INTEL_CNP_H_LPC_HM370
Definition: pci_ids.h:2907
#define PCI_DID_INTEL_CFL_ID_S_WS_4
Definition: pci_ids.h:3995
#define PCI_DID_INTEL_CMP_H_LPC_W480
Definition: pci_ids.h:2924
#define PCI_DID_INTEL_CNL_GT2_ULX_3
Definition: pci_ids.h:3852
#define PCI_DID_INTEL_CMP_PREMIUM_Y_LPC
Definition: pci_ids.h:2917
#define PCI_DID_INTEL_CFL_ID_S_S_6
Definition: pci_ids.h:3999
#define PCI_DID_INTEL_CML_S_P0P1_8_2
Definition: pci_ids.h:4011
#define PCI_DID_INTEL_WHL_ID_W_4
Definition: pci_ids.h:3984
#define PCI_DID_INTEL_CML_GT2_S_2
Definition: pci_ids.h:3899
#define PCI_DID_INTEL_CFL_S_GT2_2
Definition: pci_ids.h:3864
#define PCI_DID_INTEL_CML_S_G0G1_2
Definition: pci_ids.h:4014
#define PCI_DID_INTEL_CML_GT2_S_G0
Definition: pci_ids.h:3904
#define PCI_DID_INTEL_CNP_H_LPC_C246
Definition: pci_ids.h:2904
#define PCI_DID_INTEL_CML_GT2_ULT_1
Definition: pci_ids.h:3886
#define PCI_DID_INTEL_CMP_H_LPC_Q470
Definition: pci_ids.h:2927
#define PCI_DID_INTEL_CML_S_G0G1_P0P1_6_2
Definition: pci_ids.h:4012
#define PCI_DID_INTEL_CMP_H_LPC_H470
Definition: pci_ids.h:2925
#define PCI_DID_INTEL_CFL_ID_S_WS_8
Definition: pci_ids.h:3997
#define PCI_DID_INTEL_CFL_ID_S_DT_2
Definition: pci_ids.h:3992
#define PCI_DID_INTEL_CMP_H_LPC_WM490
Definition: pci_ids.h:2922
#define PCI_DID_INTEL_CML_GT2_H_R1
Definition: pci_ids.h:3907
#define PCI_DID_INTEL_CFL_S_GT2_3
Definition: pci_ids.h:3865
#define PCI_DID_INTEL_CFL_S_GT1_1
Definition: pci_ids.h:3861
#define PCI_DID_INTEL_CNL_GT2_ULT_3
Definition: pci_ids.h:3856
#define PCI_DID_INTEL_CNL_GT2_ULT_2
Definition: pci_ids.h:3855
#define PCI_DID_INTEL_CML_GT1_ULT_3
Definition: pci_ids.h:3888
#define PCI_DID_INTEL_CML_GT1_ULT_4
Definition: pci_ids.h:3889
#define PCI_DID_INTEL_CML_GT2_H_1
Definition: pci_ids.h:3902
#define PCI_DID_INTEL_CML_GT1_H_2
Definition: pci_ids.h:3901
#define PCI_DID_INTEL_CFL_ID_H_8
Definition: pci_ids.h:3990
#define PCI_DID_INTEL_CFL_ID_S
Definition: pci_ids.h:3991
#define PCI_DID_INTEL_CNL_ID_U
Definition: pci_ids.h:3982
#define PCI_DID_INTEL_CML_GT2_S_P0
Definition: pci_ids.h:3905
#define PCI_DID_INTEL_CFL_ID_S_DT_4
Definition: pci_ids.h:3993
#define PCI_DID_INTEL_CFL_ID_H_4
Definition: pci_ids.h:3989
#define PCI_DID_INTEL_CMP_PREMIUM_U_LPC
Definition: pci_ids.h:2918
#define PCI_DID_INTEL_CNL_GT2_ULX_4
Definition: pci_ids.h:3853
#define PCI_DID_INTEL_CFL_ID_U_2
Definition: pci_ids.h:3987
#define PCI_DID_INTEL_CML_ULT_6_2
Definition: pci_ids.h:4007
#define PCI_DID_INTEL_CNP_H_LPC_B360
Definition: pci_ids.h:2903
#define PCI_DID_INTEL_CML_S_G0G1_4
Definition: pci_ids.h:4013
#define PCI_DID_INTEL_CFL_GT2_ULT
Definition: pci_ids.h:3858
#define PCI_DID_INTEL_CNP_H_LPC_CM246
Definition: pci_ids.h:2908
#define PCI_DID_INTEL_CNL_ID_Y
Definition: pci_ids.h:3983
#define PCI_DID_INTEL_CFL_ID_S_WS_6
Definition: pci_ids.h:3996
#define PCI_DID_INTEL_CNP_H_LPC_Q370
Definition: pci_ids.h:2902
#define PCI_DID_INTEL_CFL_ID_S_DT_8
Definition: pci_ids.h:3994
#define PCI_DID_INTEL_CFL_ID_H
Definition: pci_ids.h:3988
#define PCI_DID_INTEL_WHL_GT1_ULT_1
Definition: pci_ids.h:3848
#define PCI_DID_INTEL_CML_ULT
Definition: pci_ids.h:4005
#define PCI_DID_INTEL_CML_GT1_ULT_2
Definition: pci_ids.h:3885
#define PCI_DID_INTEL_CNP_H_LPC_Z390
Definition: pci_ids.h:2901
#define PCI_DID_INTEL_CNP_H_LPC_H310
Definition: pci_ids.h:2899
#define PCI_DID_INTEL_CMP_BASE_U_LPC
Definition: pci_ids.h:2919
#define PCI_DID_INTEL_CML_GT2_ULT_3
Definition: pci_ids.h:3892
#define PCI_DID_INTEL_CML_GT2_H_2
Definition: pci_ids.h:3903
#define PCI_DID_INTEL_CFL_H_XEON_GT2
Definition: pci_ids.h:3860
#define PCI_DID_INTEL_CNL_BASE_U_LPC
Definition: pci_ids.h:2896
#define PCI_DID_INTEL_CNL_GT2_ULX_1
Definition: pci_ids.h:3850
#define PCI_DID_INTEL_CML_ULX
Definition: pci_ids.h:4008
#define PCI_DID_INTEL_CFL_S_GT1_2
Definition: pci_ids.h:3862
#define PCI_DID_INTEL_CML_GT2_H_R0
Definition: pci_ids.h:3906
#define PCI_DID_INTEL_CML_H_8_2
Definition: pci_ids.h:4017
#define PCI_DID_INTEL_CFL_ID_S_S_8
Definition: pci_ids.h:4000
#define PCI_DID_INTEL_CML_GT1_H_1
Definition: pci_ids.h:3900
#define PCI_DID_INTEL_CML_S
Definition: pci_ids.h:4009
#define PCI_DID_INTEL_CML_ULT_2_2
Definition: pci_ids.h:4006
#define PCI_DID_INTEL_CFL_S_GT2_5
Definition: pci_ids.h:3867
#define PCI_DID_INTEL_CML_GT1_S_2
Definition: pci_ids.h:3897
#define PCI_DID_INTEL_WHL_ID_W_2
Definition: pci_ids.h:3985
#define PCI_DID_INTEL_CFL_ID_S_S_4
Definition: pci_ids.h:3998
#define PCI_DID_INTEL_CNP_H_LPC_C242
Definition: pci_ids.h:2905
#define PCI_DID_INTEL_CFL_S_GT2_1
Definition: pci_ids.h:3863
#define PCI_DID_INTEL_CMP_H_LPC_QM480
Definition: pci_ids.h:2923
#define PCI_DID_INTEL_CNP_H_LPC_QM370
Definition: pci_ids.h:2906
#define PCI_DID_INTEL_CML_H
Definition: pci_ids.h:4015
#define PCI_DID_INTEL_CNL_GT2_ULT_1
Definition: pci_ids.h:3854
#define PCI_DID_INTEL_CML_GT2_ULT_5
Definition: pci_ids.h:3890
u32 pci_devfn_t
Definition: pci_type.h:8
u16 mchid
u16 igdid
const char * name
u32 cpuid
unsigned int cpu_id
Definition: chip.h:47
#define PCH_DEV_LPC
Definition: pci_devs.h:224
#define SA_DEV_IGD
Definition: pci_devs.h:33
u16 lpcid
u16 pch_type(void)
Definition: pch.c:20
static struct @511 igd_table[]
static struct @509 mch_table[]
static void report_igd_info(void)
static void report_mch_info(void)
static uint16_t get_dev_id(pci_devfn_t dev)
static void report_pch_info(void)
static struct @508 cpu_table[]
static struct @510 pch_table[]
static void report_cpu_info(void)
static uint8_t get_dev_revision(pci_devfn_t dev)
#define SA_DEV_ROOT
Definition: pci_devs.h:26
unsigned short uint16_t
Definition: stdint.h:11
uint32_t u32
Definition: stdint.h:51
uint16_t u16
Definition: stdint.h:48
unsigned char uint8_t
Definition: stdint.h:8