1 /*
2  * Copyright (C) 2023 Intel Corporation.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  *
24  * Device ids are available in linux kernel source tree and Intel website.
25  * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/drm/i915_pciids.h
26  * https://dgpu-docs.intel.com/devices/hardware-table.html
27  */
28 
29 #ifndef _IGD_PCIIDS_H_
30 #define _IGD_PCIIDS_H_
31 
32 #include <stdint.h>
33 
34 struct igd_device {
35 	uint16_t device;
36 	int gen;
37 };
38 
39 #define IGD_DEVICE_ENTRY(id, gen)	\
40 	{ id, gen }
41 
42 
43 /* Skylake, Gen 9 */
44 #define IGD_SKL_DEVICE_IDS	\
45 	IGD_DEVICE_ENTRY(0x1906, 9),	\
46 	IGD_DEVICE_ENTRY(0x1913, 9),	\
47 	IGD_DEVICE_ENTRY(0x190E, 9),	\
48 	IGD_DEVICE_ENTRY(0x1915, 9),	\
49 	IGD_DEVICE_ENTRY(0x1902, 9),	\
50 	IGD_DEVICE_ENTRY(0x190A, 9),	\
51 	IGD_DEVICE_ENTRY(0x190B, 9),	\
52 	IGD_DEVICE_ENTRY(0x1917, 9),	\
53 	IGD_DEVICE_ENTRY(0x1916, 9),	\
54 	IGD_DEVICE_ENTRY(0x1921, 9),	\
55 	IGD_DEVICE_ENTRY(0x191E, 9),	\
56 	IGD_DEVICE_ENTRY(0x1912, 9),	\
57 	IGD_DEVICE_ENTRY(0x191A, 9),	\
58 	IGD_DEVICE_ENTRY(0x191B, 9),	\
59 	IGD_DEVICE_ENTRY(0x191D, 9),	\
60 	IGD_DEVICE_ENTRY(0x1923, 9),	\
61 	IGD_DEVICE_ENTRY(0x1926, 9),	\
62 	IGD_DEVICE_ENTRY(0x1927, 9),	\
63 	IGD_DEVICE_ENTRY(0x192A, 9),	\
64 	IGD_DEVICE_ENTRY(0x192B, 9),	\
65 	IGD_DEVICE_ENTRY(0x192D, 9),	\
66 	IGD_DEVICE_ENTRY(0x1932, 9),	\
67 	IGD_DEVICE_ENTRY(0x193A, 9),	\
68 	IGD_DEVICE_ENTRY(0x193B, 9),	\
69 	IGD_DEVICE_ENTRY(0x193D, 9)
70 
71 /* Apollo Lake, Gen 9 */
72 #define IGD_BXT_DEVICE_IDS	\
73 	IGD_DEVICE_ENTRY(0x0A84, 9),	\
74 	IGD_DEVICE_ENTRY(0x1A84, 9),	\
75 	IGD_DEVICE_ENTRY(0x1A85, 9),	\
76 	IGD_DEVICE_ENTRY(0x5A84, 9),	\
77 	IGD_DEVICE_ENTRY(0x5A85, 9)
78 
79 /* Gemini Lake, Gen 9 */
80 #define IGD_GLK_DEVICE_IDS	\
81 	IGD_DEVICE_ENTRY(0x3184, 9),	\
82 	IGD_DEVICE_ENTRY(0x3185, 9)
83 
84 /* Kaby Lake, Gen 9 */
85 #define IGD_KBL_DEVICE_IDS	\
86 	IGD_DEVICE_ENTRY(0x5906, 9),	\
87 	IGD_DEVICE_ENTRY(0x5913, 9),	\
88 	IGD_DEVICE_ENTRY(0x590E, 9),	\
89 	IGD_DEVICE_ENTRY(0x5915, 9),	\
90 	IGD_DEVICE_ENTRY(0x5902, 9),	\
91 	IGD_DEVICE_ENTRY(0x5908, 9),	\
92 	IGD_DEVICE_ENTRY(0x590A, 9),	\
93 	IGD_DEVICE_ENTRY(0x590B, 9),	\
94 	IGD_DEVICE_ENTRY(0x5916, 9),	\
95 	IGD_DEVICE_ENTRY(0x5921, 9),	\
96 	IGD_DEVICE_ENTRY(0x591E, 9),	\
97 	IGD_DEVICE_ENTRY(0x5912, 9),	\
98 	IGD_DEVICE_ENTRY(0x5917, 9),	\
99 	IGD_DEVICE_ENTRY(0x591A, 9),	\
100 	IGD_DEVICE_ENTRY(0x591B, 9),	\
101 	IGD_DEVICE_ENTRY(0x591D, 9),	\
102 	IGD_DEVICE_ENTRY(0x5926, 9),	\
103 	IGD_DEVICE_ENTRY(0x5923, 9),	\
104 	IGD_DEVICE_ENTRY(0x5927, 9),	\
105 	IGD_DEVICE_ENTRY(0x593B, 9),	\
106 	IGD_DEVICE_ENTRY(0x591C, 9),	\
107 	IGD_DEVICE_ENTRY(0x87C0, 9)
108 
109 /* Coffee Lake/Comet Lake, Gen 9 */
110 #define IGD_CFL_DEVICE_IDS	\
111 	IGD_DEVICE_ENTRY(0x87CA, 9),	\
112 	IGD_DEVICE_ENTRY(0x9BA2, 9),	\
113 	IGD_DEVICE_ENTRY(0x9BA4, 9),	\
114 	IGD_DEVICE_ENTRY(0x9BA5, 9),	\
115 	IGD_DEVICE_ENTRY(0x9BA8, 9),	\
116 	IGD_DEVICE_ENTRY(0x9B21, 9),	\
117 	IGD_DEVICE_ENTRY(0x9BAA, 9),	\
118 	IGD_DEVICE_ENTRY(0x9BAC, 9),	\
119 	IGD_DEVICE_ENTRY(0x9BC2, 9),	\
120 	IGD_DEVICE_ENTRY(0x9BC4, 9),	\
121 	IGD_DEVICE_ENTRY(0x9BC5, 9),	\
122 	IGD_DEVICE_ENTRY(0x9BC6, 9),	\
123 	IGD_DEVICE_ENTRY(0x9BC8, 9),	\
124 	IGD_DEVICE_ENTRY(0x9BE6, 9),	\
125 	IGD_DEVICE_ENTRY(0x9BF6, 9),	\
126 	IGD_DEVICE_ENTRY(0x9B41, 9),	\
127 	IGD_DEVICE_ENTRY(0x9BCA, 9),	\
128 	IGD_DEVICE_ENTRY(0x9BCC, 9),	\
129 	IGD_DEVICE_ENTRY(0x3E90, 9),	\
130 	IGD_DEVICE_ENTRY(0x3E93, 9),	\
131 	IGD_DEVICE_ENTRY(0x3E99, 9),	\
132 	IGD_DEVICE_ENTRY(0x3E91, 9),	\
133 	IGD_DEVICE_ENTRY(0x3E92, 9),	\
134 	IGD_DEVICE_ENTRY(0x3E96, 9),	\
135 	IGD_DEVICE_ENTRY(0x3E98, 9),	\
136 	IGD_DEVICE_ENTRY(0x3E9A, 9),	\
137 	IGD_DEVICE_ENTRY(0x3E9C, 9),	\
138 	IGD_DEVICE_ENTRY(0x3E94, 9),	\
139 	IGD_DEVICE_ENTRY(0x3E9B, 9),	\
140 	IGD_DEVICE_ENTRY(0x3EA9, 9),	\
141 	IGD_DEVICE_ENTRY(0x3EA5, 9),	\
142 	IGD_DEVICE_ENTRY(0x3EA6, 9),	\
143 	IGD_DEVICE_ENTRY(0x3EA7, 9),	\
144 	IGD_DEVICE_ENTRY(0x3EA8, 9),	\
145 	IGD_DEVICE_ENTRY(0x3EA1, 9),	\
146 	IGD_DEVICE_ENTRY(0x3EA4, 9),	\
147 	IGD_DEVICE_ENTRY(0x3EA0, 9),	\
148 	IGD_DEVICE_ENTRY(0x3EA3, 9),	\
149 	IGD_DEVICE_ENTRY(0x3EA2, 9)
150 
151 /* Ice Lake, Gen 11 */
152 #define IGD_ICL_DEVICE_IDS	\
153 	IGD_DEVICE_ENTRY(0x8A50, 11),	\
154 	IGD_DEVICE_ENTRY(0x8A52, 11),	\
155 	IGD_DEVICE_ENTRY(0x8A53, 11),	\
156 	IGD_DEVICE_ENTRY(0x8A54, 11),	\
157 	IGD_DEVICE_ENTRY(0x8A56, 11),	\
158 	IGD_DEVICE_ENTRY(0x8A57, 11),	\
159 	IGD_DEVICE_ENTRY(0x8A58, 11),	\
160 	IGD_DEVICE_ENTRY(0x8A59, 11),	\
161 	IGD_DEVICE_ENTRY(0x8A5A, 11),	\
162 	IGD_DEVICE_ENTRY(0x8A5B, 11),	\
163 	IGD_DEVICE_ENTRY(0x8A5C, 11),	\
164 	IGD_DEVICE_ENTRY(0x8A70, 11),	\
165 	IGD_DEVICE_ENTRY(0x8A71, 11),	\
166 	IGD_DEVICE_ENTRY(0x8A51, 11),	\
167 	IGD_DEVICE_ENTRY(0x8A5D, 11)
168 
169 /* Elkhart Lake, Gen 12 */
170 #define IGD_EHL_DEVICE_IDS	\
171 	IGD_DEVICE_ENTRY(0x4541, 12),	\
172 	IGD_DEVICE_ENTRY(0x4551, 12),	\
173 	IGD_DEVICE_ENTRY(0x4555, 12),	\
174 	IGD_DEVICE_ENTRY(0x4557, 12),	\
175 	IGD_DEVICE_ENTRY(0x4570, 12),	\
176 	IGD_DEVICE_ENTRY(0x4571, 12)
177 
178 /* Jasper Lake, Gen 12 */
179 #define IGD_JSL_DEVICE_IDS	\
180 	IGD_DEVICE_ENTRY(0x4E51, 12),	\
181 	IGD_DEVICE_ENTRY(0x4E55, 12),	\
182 	IGD_DEVICE_ENTRY(0x4E57, 12),	\
183 	IGD_DEVICE_ENTRY(0x4E61, 12),	\
184 	IGD_DEVICE_ENTRY(0x4E71, 12)
185 
186 /* Tiger Lake, Gen 12 */
187 #define IGD_TGL_DEVICE_IDS	\
188 	IGD_DEVICE_ENTRY(0x9A60, 12),	\
189 	IGD_DEVICE_ENTRY(0x9A68, 12),	\
190 	IGD_DEVICE_ENTRY(0x9A70, 12),	\
191 	IGD_DEVICE_ENTRY(0x9A40, 12),	\
192 	IGD_DEVICE_ENTRY(0x9A49, 12),	\
193 	IGD_DEVICE_ENTRY(0x9A59, 12),	\
194 	IGD_DEVICE_ENTRY(0x9A78, 12),	\
195 	IGD_DEVICE_ENTRY(0x9AC0, 12),	\
196 	IGD_DEVICE_ENTRY(0x9AC9, 12),	\
197 	IGD_DEVICE_ENTRY(0x9AD9, 12),	\
198 	IGD_DEVICE_ENTRY(0x9AF8, 12)
199 
200 /* Rocket Lake, Gen 12 */
201 #define IGD_RKL_DEVICE_IDS	\
202 	IGD_DEVICE_ENTRY(0x4C80, 12),	\
203 	IGD_DEVICE_ENTRY(0x4C8A, 12),	\
204 	IGD_DEVICE_ENTRY(0x4C8B, 12),	\
205 	IGD_DEVICE_ENTRY(0x4C8C, 12),	\
206 	IGD_DEVICE_ENTRY(0x4C90, 12),	\
207 	IGD_DEVICE_ENTRY(0x4C9A, 12)
208 
209 /* Alder Lake-S, Gen 12 */
210 #define IGD_ADLS_DEVICE_IDS	\
211 	IGD_DEVICE_ENTRY(0x4680, 12),	\
212 	IGD_DEVICE_ENTRY(0x4682, 12),	\
213 	IGD_DEVICE_ENTRY(0x4688, 12),	\
214 	IGD_DEVICE_ENTRY(0x468A, 12),	\
215 	IGD_DEVICE_ENTRY(0x468B, 12),	\
216 	IGD_DEVICE_ENTRY(0x4690, 12),	\
217 	IGD_DEVICE_ENTRY(0x4692, 12),	\
218 	IGD_DEVICE_ENTRY(0x4693, 12)
219 
220 /* Alder Lake-P, Gen 12 */
221 #define IGD_ADLP_DEVICE_IDS	\
222 	IGD_DEVICE_ENTRY(0x46A0, 12),	\
223 	IGD_DEVICE_ENTRY(0x46A1, 12),	\
224 	IGD_DEVICE_ENTRY(0x46A2, 12),	\
225 	IGD_DEVICE_ENTRY(0x46A3, 12),	\
226 	IGD_DEVICE_ENTRY(0x46A6, 12),	\
227 	IGD_DEVICE_ENTRY(0x46A8, 12),	\
228 	IGD_DEVICE_ENTRY(0x46AA, 12),	\
229 	IGD_DEVICE_ENTRY(0x462A, 12),	\
230 	IGD_DEVICE_ENTRY(0x4626, 12),	\
231 	IGD_DEVICE_ENTRY(0x4628, 12),	\
232 	IGD_DEVICE_ENTRY(0x46B0, 12),	\
233 	IGD_DEVICE_ENTRY(0x46B1, 12),	\
234 	IGD_DEVICE_ENTRY(0x46B2, 12),	\
235 	IGD_DEVICE_ENTRY(0x46B3, 12),	\
236 	IGD_DEVICE_ENTRY(0x46C0, 12),	\
237 	IGD_DEVICE_ENTRY(0x46C1, 12),	\
238 	IGD_DEVICE_ENTRY(0x46C2, 12),	\
239 	IGD_DEVICE_ENTRY(0x46C3, 12)
240 
241 /* Alder Lake-N, Gen 12 */
242 #define IGD_ADLN_DEVICE_IDS	\
243 	IGD_DEVICE_ENTRY(0x46D0, 12),	\
244 	IGD_DEVICE_ENTRY(0x46D1, 12),	\
245 	IGD_DEVICE_ENTRY(0x46D2, 12),	\
246 	IGD_DEVICE_ENTRY(0x46D3, 12),	\
247 	IGD_DEVICE_ENTRY(0x46D4, 12)
248 
249 /* Raptor Lake-S, Gen 12 */
250 #define IGD_RPLS_DEVICE_IDS	\
251 	IGD_DEVICE_ENTRY(0xA780, 12),	\
252 	IGD_DEVICE_ENTRY(0xA781, 12),	\
253 	IGD_DEVICE_ENTRY(0xA782, 12),	\
254 	IGD_DEVICE_ENTRY(0xA783, 12),	\
255 	IGD_DEVICE_ENTRY(0xA788, 12),	\
256 	IGD_DEVICE_ENTRY(0xA789, 12),	\
257 	IGD_DEVICE_ENTRY(0xA78A, 12),	\
258 	IGD_DEVICE_ENTRY(0xA78B, 12)
259 
260 /* Raptor Lake-P, Gen 12 */
261 #define IGD_RPLP_DEVICE_IDS	\
262 	IGD_DEVICE_ENTRY(0xA721, 12),	\
263 	IGD_DEVICE_ENTRY(0xA7A1, 12),	\
264 	IGD_DEVICE_ENTRY(0xA7A9, 12),	\
265 	IGD_DEVICE_ENTRY(0xA7AC, 12),	\
266 	IGD_DEVICE_ENTRY(0xA7AD, 12),	\
267 	IGD_DEVICE_ENTRY(0xA720, 12),	\
268 	IGD_DEVICE_ENTRY(0xA7A0, 12),	\
269 	IGD_DEVICE_ENTRY(0xA7A8, 12),	\
270 	IGD_DEVICE_ENTRY(0xA7AA, 12),	\
271 	IGD_DEVICE_ENTRY(0xA7AB, 12)
272 
273 #endif
274