1 /*========================== begin_copyright_notice ============================
2 
3 Copyright (C) 2019-2021 Intel Corporation
4 
5 SPDX-License-Identifier: MIT
6 
7 ============================= end_copyright_notice ===========================*/
8 
9 #ifndef __IGFXFMID_H__
10 #define __IGFXFMID_H__
11 
12 typedef enum {
13     IGFX_UNKNOWN        = 0,
14     IGFX_BROADWELL      = 16,
15     IGFX_CHERRYVIEW,
16     IGFX_SKYLAKE,
17     IGFX_KABYLAKE,
18     IGFX_COFFEELAKE,
19     IGFX_WILLOWVIEW,
20     IGFX_BROXTON,
21     IGFX_GEMINILAKE,
22     IGFX_CANNONLAKE,
23     IGFX_ICELAKE,
24     IGFX_ICELAKE_LP,
25     IGFX_LAKEFIELD,
26     IGFX_JASPERLAKE,
27     IGFX_ELKHARTLAKE = IGFX_JASPERLAKE,
28     IGFX_TIGERLAKE_LP,
29     IGFX_ROCKETLAKE,
30     IGFX_ALDERLAKE_S,
31     IGFX_ALDERLAKE_P,
32     IGFX_DG1 = 1210,
33     IGFX_XE_HP_SDV = 1250,
34     IGFX_DG2 = 1270,
35     IGFX_PVC = 1271,
36     IGFX_MAX_PRODUCT,
37 
38 
39     IGFX_GENNEXT               = 0x7ffffffe,
40     PRODUCT_FAMILY_FORCE_ULONG = 0x7fffffff
41 } PRODUCT_FAMILY;
42 
43 typedef enum {
44     PCH_UNKNOWN    = 0,
45     PCH_IBX,            // Ibexpeak
46     PCH_CPT,            // Cougarpoint,
47     PCH_CPTR,           // Cougarpoint Refresh,
48     PCH_PPT,            // Panther Point
49     PCH_LPT,            // Lynx Point
50     PCH_LPTR,           // Lynx Point Refresh
51     PCH_WPT,            // Wildcat point
52     PCH_SPT,            // Sunrise point
53     PCH_KBP,            // Kabylake PCH
54     PCH_CNP_LP,         // Cannonlake LP PCH
55     PCH_CNP_H,          // Cannonlake Halo PCH
56     PCH_ICP_LP,         // ICL LP PCH
57     PCH_ICP_N,          // ICL N PCH
58     PCH_ICP_HP,         // ICL HP PCH
59     PCH_LKF,            // LKF PCH
60     PCH_TGL_LP,         // TGL LP PCH
61     PCH_PRODUCT_FAMILY_FORCE_ULONG = 0x7fffffff
62 } PCH_PRODUCT_FAMILY;
63 
64 typedef enum {
65     IGFX_UNKNOWN_CORE = 0,
66     IGFX_GEN3_CORE    = 1,      // Gen3 Family
67     IGFX_GEN3_5_CORE  = 2,      // Gen3.5 Family
68     IGFX_GEN4_CORE    = 3,      // Gen4 Family
69     IGFX_GEN4_5_CORE  = 4,      // Gen4.5 Family
70     IGFX_GEN5_CORE    = 5,      // Gen5 Family
71     IGFX_GEN5_5_CORE  = 6,      // Gen5.5 Family
72     IGFX_GEN5_75_CORE = 7,      // Gen5.75 Family
73     IGFX_GEN6_CORE    = 8,      // Gen6 Family
74     IGFX_GEN7_CORE    = 9,      // Gen7 Family
75     IGFX_GEN7_5_CORE  = 10,     // Gen7.5 Family
76     IGFX_GEN8_CORE    = 11,     // Gen8 Family
77     IGFX_GEN9_CORE    = 12,     // Gen9 Family
78     IGFX_GEN10_CORE   = 13,     // Gen10 Family
79     IGFX_GEN10LP_CORE = 14,     // Gen10 LP Family
80     IGFX_GEN11_CORE   = 15,     // Gen11 Family
81     IGFX_GEN11LP_CORE = 16,     // Gen11 LP Family
82     IGFX_GEN12_CORE   = 17,     // Gen12 Family
83     IGFX_GEN12LP_CORE = 18,     // Gen12 LP Family
84     IGFX_XE_HP_CORE   = 0x0c05, // XeHP Family
85     IGFX_XE_HPG_CORE = 0x0c07,  // XE_HPG Family
86     IGFX_XE_HPC_CORE = 0x0c08,  // XE_HPC Family
87     IGFX_MAX_CORE,              // Max Family, for lookup table
88 
89     IGFX_GENNEXT_CORE          = 0x7ffffffe,  //GenNext
90     GFXCORE_FAMILY_FORCE_ULONG = 0x7fffffff
91 } GFXCORE_FAMILY;
92 
93 typedef enum {
94     IGFX_SKU_NONE       = 0,
95     IGFX_SKU_ULX        = 1,
96     IGFX_SKU_ULT        = 2,
97     IGFX_SKU_T          = 3,
98     IGFX_SKU_ALL        = 0xff
99 } PLATFORM_SKU;
100 
101 typedef enum __GTTYPE
102 {
103     GTTYPE_GT1 = 0x0,
104     GTTYPE_GT2,
105     GTTYPE_GT2_FUSED_TO_GT1,
106     GTTYPE_GT2_FUSED_TO_GT1_6, //IVB
107     GTTYPE_GTL, // HSW
108     GTTYPE_GTM, // HSW
109     GTTYPE_GTH, // HSW
110     GTTYPE_GT1_5,//HSW
111     GTTYPE_GT1_75,//HSW
112     GTTYPE_GT3,//BDW
113     GTTYPE_GT4,//BDW
114     GTTYPE_GT0,//BDW
115     GTTYPE_GTA,// BXT
116     GTTYPE_GTC,// BXT
117     GTTYPE_GTX, // BXT
118     GTTYPE_GT2_5,//CNL
119     GTTYPE_GT3_5,//SKL
120     GTTYPE_GT0_5,//CNL
121     GTTYPE_UNDEFINED,//Always at the end.
122 }GTTYPE, *PGTTYPE;
123 
124 /////////////////////////////////////////////////////////////////
125 //
126 //    Platform types which are used during Sku/Wa initialization.
127 //
128 #ifndef _COMMON_PPA
129     typedef enum {
130         PLATFORM_NONE       = 0x00,
131         PLATFORM_DESKTOP    = 0x01,
132         PLATFORM_MOBILE     = 0x02,
133         PLATFORM_TABLET     = 0X03,
134         PLATFORM_ALL        = 0xff, // flag used for applying any feature/WA for All platform types
135     } PLATFORM_TYPE;
136 #endif
137 typedef struct PLATFORM_STR {
138     PRODUCT_FAMILY      eProductFamily;
139     PCH_PRODUCT_FAMILY  ePCHProductFamily;
140     GFXCORE_FAMILY      eDisplayCoreFamily;
141     GFXCORE_FAMILY      eRenderCoreFamily;
142     #ifndef _COMMON_PPA
143     PLATFORM_TYPE       ePlatformType;
144     #endif
145 
146     unsigned short      usDeviceID;
147     unsigned short      usRevId;
148     unsigned short      usDeviceID_PCH;
149     unsigned short      usRevId_PCH;
150     // GT Type
151     // Note: Is valid only till Gen9. From Gen10 SKUs are not identified by any GT flags. 'GT_SYSTEM_INFO' should be used instead.
152     GTTYPE              eGTType;
153 } PLATFORM;
154 
155 // add enums at the end
156 typedef enum __SKUIDTYPE
157 {
158     SKU_FULL_TYPE = 0x0,
159     SKU_VALUE_TYPE,
160     SKU_PLUS_FULL_TYPE,
161     SKU_PLUS_VALUE_TYPE,
162     SKU_T_TYPE,
163     SKU_PLUS_T_TYPE,
164     SKU_P_TYPE,
165     SKU_PLUS_P_TYPE,
166     SKU_SMALL_TYPE,
167     SKU_LIGHT_TYPE,
168     SKU_N_TYPE
169 }SKUIDTYPE, *PSKUIDTYPE;
170 
171 typedef enum __CPUTYPE
172 {
173     CPU_UNDEFINED = 0x0,
174     CPU_CORE_I3,
175     CPU_CORE_I5,
176     CPU_CORE_I7,
177     CPU_PENTIUM,
178     CPU_CELERON,
179     CPU_CORE,
180     CPU_VPRO,
181     CPU_SUPER_SKU,
182     CPU_ATOM,
183     CPU_CORE1,
184     CPU_CORE2,
185     CPU_WS,
186     CPU_SERVER,
187     CPU_CORE_I5_I7,
188     CPU_COREX1_4,
189     CPU_ULX_PENTIUM,
190     CPU_MB_WORKSTATION,
191     CPU_DT_WORKSTATION,
192     CPU_M3,
193     CPU_M5,
194     CPU_M7,
195     CPU_MEDIA_SERVER //Added for KBL
196 }CPUTYPE, *PCPUTYPE;
197 
198 // the code below convert platform real revision number to pre-defined revision number, the revision will be set as follow
199 // REVISION_A0 - this will include all incarnations for A stepping in all packages types A = {A0}
200 // REVISION_A1 - this will include all incarnations for A stepping in all packages types A = {A1}
201 // REVISION_A3 - this will include all incarnations for A stepping in all packages types A = {A3,...,A7}
202 // REVISION_B - this will include all incarnations for B stepping in all packages types B = {B0,B1,..,B7}
203 // REVISION_C - this will include all incarnations for C stepping in all packages types C = {C0,C1,..,C7}
204 // REVISION_D - this will include all incarnations for C stepping in all packages types C = {D0,D1}
205 // REVISION_K - this will include all incarnations for K stepping in all packages types K = {K0,K1,..,K7}
206 typedef enum __REVID
207 {
208     REVISION_A0 = 0,
209     REVISION_A1, //1
210     REVISION_A3,//2
211     REVISION_B,//3
212     REVISION_C,//4
213     REVISION_D,//5
214     REVISION_K//6
215 }REVID, *PREVID;
216 
217 typedef enum __NATIVEGTTYPE
218 {
219     NATIVEGTTYPE_HSW_UNDEFINED  = 0x00,
220     NATIVEGTTYPE_HSW_GT1        = 0x01,
221     NATIVEGTTYPE_HSW_GT2        = 0x02,
222     NATIVEGTTYPE_HSW_GT3        = 0x03,
223 }NATIVEGTTYPE;
224 
225 // Following macros return true/false depending on the current PCH family
226 #define PCH_IS_PRODUCT(p, r)            ( (p).ePCHProductFamily == r )
227 #define PCH_GET_CURRENT_PRODUCT(p)      ( (p).ePCHProductFamily )
228 
229 // These macros return true/false depending on current product/core family.
230 #define GFX_IS_PRODUCT(p, r)           ( (p).eProductFamily == r )
231 #define GFX_IS_DISPLAYCORE(p, d)       ( (p).eDisplayCoreFamily == d )
232 #define GFX_IS_RENDERCORE(p, r)        ( (p).eRenderCoreFamily == r )
233 // These macros return the current product/core family enum.
234 // Relational compares (</>) should not be done when using GFX_GET_CURRENT_PRODUCT
235 // macro.  There are no relationships between the PRODUCT_FAMILY enum values.
236 #define GFX_GET_CURRENT_PRODUCT(p)     ( (p).eProductFamily )
237 #define GFX_GET_CURRENT_DISPLAYCORE(p) ( (p).eDisplayCoreFamily )
238 #define GFX_GET_CURRENT_RENDERCORE(p)  ( (p).eRenderCoreFamily )
239 #define GFX_IS_DISCRETE_FAMILY(p)      ( ( GFX_GET_CURRENT_PRODUCT(p) == IGFX_DG1 )             ||   \
240                                          ( GFX_GET_CURRENT_PRODUCT(p) == IGFX_DG2 )             ||   \
241                                          ( GFX_GET_CURRENT_PRODUCT(p) == IGFX_XE_HP_SDV ) )
242 // These macros return true/false depending on the current render family.
243 #define GFX_IS_NAPA_RENDER_FAMILY(p)   ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN3_CORE )    ||   \
244                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN3_5_CORE ) )
245 
246 #define GFX_IS_GEN_RENDER_FAMILY(p)    ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN4_CORE )    ||   \
247                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN4_5_CORE )  ||   \
248                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_CORE )    ||   \
249                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_5_CORE )  ||   \
250                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_75_CORE ) ||   \
251                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN6_CORE )    ||   \
252                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_CORE )    ||   \
253                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||   \
254                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||   \
255                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||   \
256                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||   \
257                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||   \
258                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||   \
259                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
260                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
261 
262 #define GFX_IS_GEN_5_OR_LATER(p)       ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_CORE )    ||   \
263                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_5_CORE )  ||   \
264                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_75_CORE ) ||   \
265                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN6_CORE )    ||   \
266                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_CORE )    ||   \
267                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||   \
268                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||   \
269                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||   \
270                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||   \
271                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||   \
272                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||   \
273                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
274                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
275 
276 #define GFX_IS_GEN_5_75_OR_LATER(p)    ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN5_75_CORE ) ||   \
277                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN6_CORE )    ||   \
278                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_CORE )    ||   \
279                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||   \
280                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||   \
281                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||   \
282                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||   \
283                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||   \
284                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||   \
285                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
286                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
287 
288 #define GFX_IS_GEN_6_OR_LATER(p)       ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN6_CORE )    ||   \
289                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_CORE )    ||   \
290                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||   \
291                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||   \
292                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||   \
293                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||   \
294                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||   \
295                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||   \
296                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
297                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
298 
299 #define GFX_IS_GEN_7_OR_LATER(p)       ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_CORE )    ||   \
300                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||   \
301                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||   \
302                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||   \
303                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||   \
304                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||   \
305                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||   \
306                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
307                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
308 
309 #define GFX_IS_GEN_7_5_OR_LATER(p)     ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN7_5_CORE )  ||  \
310                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||  \
311                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||  \
312                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||  \
313                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||  \
314                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||  \
315                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
316                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
317 
318 #define GFX_IS_GEN_8_OR_LATER(p)       ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN8_CORE )    ||  \
319                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||  \
320                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||  \
321                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||  \
322                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||  \
323                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
324                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
325 
326 #define GFX_IS_GEN_8_CHV_OR_LATER(p)   ( ( GFX_GET_CURRENT_PRODUCT(p) == IGFX_CHERRYVIEW )      ||  \
327                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||  \
328                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||  \
329                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||  \
330                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||  \
331                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
332                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
333 
334 #define GFX_IS_GEN_9_OR_LATER(p)       ( ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN9_CORE )    ||  \
335                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )   ||  \
336                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   ||  \
337                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )   ||  \
338                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
339                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
340 
341 #define GFX_IS_GEN_10_OR_LATER(p)       (( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN10_CORE )  ||  \
342                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   || \
343                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )  ||  \
344                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
345                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
346 
347 #define GFX_IS_GEN_11_OR_LATER(p)       (( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN11_CORE )   || \
348                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GEN12_CORE )  ||  \
349                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_XE_HP_CORE )   ||   \
350                                          ( GFX_GET_CURRENT_RENDERCORE(p) == IGFX_GENNEXT_CORE ) )
351 
352 #define GFX_IS_GEN_12_OR_LATER(p)       (( GFX_GET_CURRENT_RENDERCORE(p) >= IGFX_GEN12_CORE ))
353 
354 #define GFX_IS_ATOM_PRODUCT_FAMILY(p)  ( GFX_IS_PRODUCT(p, IGFX_VALLEYVIEW)   ||  \
355                                          GFX_IS_PRODUCT(p, IGFX_CHERRYVIEW)   ||  \
356                                          GFX_IS_PRODUCT(p, IGFX_BROXTON) )
357 
358 ///////////////////////////////////////////////////////////////////
359 //
360 // macros for comparing Graphics family and products
361 //
362 ///////////////////////////////////////////////////////////////////
363 #define GFX_IS_FAMILY_EQUAL_OR_ABOVE(family1, family2) ((family1)>=(family2) ? TRUE : FALSE)
364 #define GFX_IS_FAMILY_EQUAL_OR_BELOW(family1, family2) ((family1)<=(family2) ? TRUE : FALSE)
365 #define GFX_IS_FAMILY_BELOW(family1, family2) ((family1)<(family2) ? TRUE : FALSE)
366 #define GFX_IS_PRODUCT_EQUAL_OR_ABOVE(product1, product2) ((product1)>=(product2) ? TRUE : FALSE)
367 #define GFX_IS_PRODUCT_EQUAL_OR_BELOW(product1, product2) ((product1)<=(product2) ? TRUE : FALSE)
368 #define GFX_IS_PRODUCT_BELOW(product1, product2)  ((product1) <(product2) ? TRUE : FALSE)
369 
370 //Feature ID: Graphics PRD PC11.0 - Brookdale-G Support
371 //Description: Move device and vendor ID's to igfxfmid.h.
372 //  Add #include "igfxfmid.h".
373 //Other Files Modified: dispconf.c, kcconfig.c, kchmisc.c, kchsys.c,
374 //  driver.h, igfxfmid.h, imdefs.h, kchialm.h, kchname.h, softbios.h,
375 //  swbios.h, vddcomm.h, vidmini.h
376 
377 #define INTEL_VENDOR_ID              0x8086   // Intel Corporation
378 
379 //Device IDs
380 #define UNKNOWN_DEVICE_ID            0xFFFF   // Unknown device
381 
382 //CHV device ids
383 #define ICHV_MOBL_DEVICE_F0_ID           0x22B0   // CHV TABLET i.e CHT
384 #define ICHV_PLUS_MOBL_DEVICE_F0_ID      0x22B1   // Essential i.e Braswell
385 #define ICHV_DESK_DEVICE_F0_ID           0x22B2   // Reserved
386 #define ICHV_PLUS_DESK_DEVICE_F0_ID      0x22B3   // Reserved
387 
388 //BDW device ids
389 #define IBDW_GT0_DESK_DEVICE_F0_ID              0x0BD0
390 #define IBDW_GT1_DESK_DEVICE_F0_ID              0x0BD1
391 #define IBDW_GT2_DESK_DEVICE_F0_ID              0x0BD2
392 #define IBDW_GT3_DESK_DEVICE_F0_ID              0x0BD3
393 #define IBDW_GT4_DESK_DEVICE_F0_ID              0x0BD4
394 
395 #define IBDW_GT1_HALO_MOBL_DEVICE_F0_ID         0x1602
396 #define IBDW_GT1_ULT_MOBL_DEVICE_F0_ID          0x1606
397 #define IBDW_GT1_RSVD_DEVICE_F0_ID              0x160B
398 #define IBDW_GT1_SERV_DEVICE_F0_ID              0x160A
399 #define IBDW_GT1_WRK_DEVICE_F0_ID               0x160D
400 #define IBDW_GT1_ULX_DEVICE_F0_ID               0x160E
401 #define IBDW_GT2_HALO_MOBL_DEVICE_F0_ID         0x1612
402 #define IBDW_GT2_ULT_MOBL_DEVICE_F0_ID          0x1616
403 #define IBDW_GT2_RSVD_DEVICE_F0_ID              0x161B
404 #define IBDW_GT2_SERV_DEVICE_F0_ID              0x161A
405 #define IBDW_GT2_WRK_DEVICE_F0_ID               0x161D
406 #define IBDW_GT2_ULX_DEVICE_F0_ID               0x161E
407 #define IBDW_GT3_HALO_MOBL_DEVICE_F0_ID         0x1622
408 #define IBDW_GT3_ULT_MOBL_DEVICE_F0_ID          0x1626
409 #define IBDW_GT3_ULT25W_MOBL_DEVICE_F0_ID       0x162B
410 #define IBDW_GT3_SERV_DEVICE_F0_ID              0x162A
411 #define IBDW_GT3_WRK_DEVICE_F0_ID               0x162D
412 #define IBDW_GT3_ULX_DEVICE_F0_ID               0x162E
413 #define IBDW_RSVD_MRKT_DEVICE_F0_ID             0x1632
414 #define IBDW_RSVD_ULT_MOBL_DEVICE_F0_ID         0x1636
415 #define IBDW_RSVD_HALO_MOBL_DEVICE_F0_ID        0x163B
416 #define IBDW_RSVD_SERV_DEVICE_F0_ID             0x163A
417 #define IBDW_RSVD_WRK_DEVICE_F0_ID              0x163D
418 #define IBDW_RSVD_ULX_DEVICE_F0_ID              0x163E
419 
420 //skl placeholder
421 
422 #define ISKL_GT4_DT_DEVICE_F0_ID                0x1932
423 #define ISKL_GT2_DT_DEVICE_F0_ID                0x1912 // Used on actual Silicon
424 
425 #define ISKL_GT1_DT_DEVICE_F0_ID                0x1902
426 
427 
428 #define ISKL_GT2_ULT_DEVICE_F0_ID               0x1916
429 #define ISKL_GT2F_ULT_DEVICE_F0_ID              0x1921
430 #define ISKL_GT3e_ULT_DEVICE_F0_ID_540          0x1926
431 #define ISKL_GT3e_ULT_DEVICE_F0_ID_550          0x1927
432 
433 #define ISKL_GT2_ULX_DEVICE_F0_ID               0x191E
434 #define ISKL_GT1_ULT_DEVICE_F0_ID               0x1906
435 #define ISKL_GT3_MEDIA_SERV_DEVICE_F0_ID        0x192D
436 #define ISKL_GT1_5_ULT_DEVICE_F0_ID             0x1913
437 
438 #define ISKL_GT3_ULT_DEVICE_F0_ID               0x1923
439 
440 #define ISKL_GT2_HALO_MOBL_DEVICE_F0_ID         0x191B
441 
442 #define ISKL_GT4_HALO_MOBL_DEVICE_F0_ID         0x193B
443 #define ISKL_GT4_SERV_DEVICE_F0_ID              0x193A
444 #define ISKL_GT2_WRK_DEVICE_F0_ID               0x191D
445 #define ISKL_GT4_WRK_DEVICE_F0_ID               0x193D
446 
447 
448 #define ISKL_GT0_DESK_DEVICE_F0_ID              0x0900
449 #define ISKL_GT1_DESK_DEVICE_F0_ID              0x0901
450 #define ISKL_GT2_DESK_DEVICE_F0_ID              0x0902
451 #define ISKL_GT3_DESK_DEVICE_F0_ID              0x0903
452 #define ISKL_GT4_DESK_DEVICE_F0_ID              0x0904
453 #define ISKL_GT1_ULX_DEVICE_F0_ID               0x190E
454 //SKL strings to be be deleted in future
455 
456 #define ISKL_GT1_HALO_MOBL_DEVICE_F0_ID         0x190B
457 #define ISKL_GT1_SERV_DEVICE_F0_ID              0x190A
458 #define ISKL_GT1_5_ULX_DEVICE_F0_ID             0x1915
459 #define ISKL_GT1_5_DT_DEVICE_F0_ID              0x1917
460 #define ISKL_GT2_SERV_DEVICE_F0_ID              0x191A
461 #define ISKL_LP_DEVICE_F0_ID                    0x9905
462 #define ISKL_GT3_HALO_MOBL_DEVICE_F0_ID         0x192B
463 #define ISKL_GT3_SERV_DEVICE_F0_ID              0x192A
464 #define ISKL_GT0_MOBL_DEVICE_F0_ID              0xFFFF
465 
466 // KabyLake Device ids
467 #define IKBL_GT1_ULT_DEVICE_F0_ID               0x5906
468 #define IKBL_GT1_5_ULT_DEVICE_F0_ID             0x5913
469 #define IKBL_GT2_ULT_DEVICE_F0_ID               0x5916
470 #define IKBL_GT2F_ULT_DEVICE_F0_ID              0x5921
471 #define IKBL_GT3_15W_ULT_DEVICE_F0_ID           0x5926
472 //#define IKBL_GT3E_ULT_DEVICE_F0_ID              0x5926
473 #define IKBL_GT1_ULX_DEVICE_F0_ID               0x590E
474 #define IKBL_GT1_5_ULX_DEVICE_F0_ID             0x5915
475 #define IKBL_GT2_ULX_DEVICE_F0_ID               0x591E
476 #define IKBL_GT1_DT_DEVICE_F0_ID                0x5902
477 #define IKBL_GT2_R_ULT_DEVICE_F0_ID             0x5917
478 #define IKBL_GT2_DT_DEVICE_F0_ID                0x5912
479 #define IKBL_GT1_HALO_DEVICE_F0_ID              0x590B
480 #define IKBL_GT1F_HALO_DEVICE_F0_ID             0x5908
481 #define IKBL_GT2_HALO_DEVICE_F0_ID              0x591B
482 #define IKBL_GT4_HALO_DEVICE_F0_ID              0x593B
483 #define IKBL_GT1_SERV_DEVICE_F0_ID              0x590A
484 #define IKBL_GT2_SERV_DEVICE_F0_ID              0x591A
485 #define IKBL_GT2_WRK_DEVICE_F0_ID               0x591D
486 #define IKBL_GT3_ULT_DEVICE_F0_ID               0x5923
487 #define IKBL_GT3_28W_ULT_DEVICE_F0_ID           0x5927
488 //keeping the below ids as its been used in linux . need to be removed once removed from linux files.
489 #define IKBL_GT4_DT_DEVICE_F0_ID                0x5932
490 #define IKBL_GT3_HALO_DEVICE_F0_ID              0x592B
491 #define IKBL_GT3_SERV_DEVICE_F0_ID              0x592A
492 #define IKBL_GT4_SERV_DEVICE_F0_ID              0x593A
493 #define IKBL_GT4_WRK_DEVICE_F0_ID               0x593D
494 
495 //GLK Device ids
496 #define IGLK_GT2_ULT_18EU_DEVICE_F0_ID          0x3184
497 #define IGLK_GT2_ULT_12EU_DEVICE_F0_ID          0x3185
498 
499 //BXT BIOS programmed Silicon ids.
500 #define IBXT_GT_3x6_DEVICE_ID                0x0A84
501 #define IBXT_PRO_3x6_DEVICE_ID               0x1A84 //18EU
502 #define IBXT_PRO_12EU_3x6_DEVICE_ID          0x1A85 //12 EU
503 #define IBXT_P_3x6_DEVICE_ID                 0x5A84 //18EU APL
504 #define IBXT_P_12EU_3x6_DEVICE_ID            0x5A85 //12EU APL
505 
506 // CNL Placeholder
507 // These device ID defs to be removed later on after UMD switches to GT_SYSTEM_INFO interface.
508 #define ICNL_GT0_DESK_DEVICE_F0_ID              0XDEAD      // Not Valid - To be cleaned up.
509 #define ICNL_GT1_DESK_DEVICE_F0_ID              0x0A01
510 #define ICNL_GT2_DESK_DEVICE_F0_ID              0x0A02
511 #define ICNL_GT2_5_DESK_DEVICE_F0_ID            0x0A00      // Not POR - To be cleaned up.
512 #define ICNL_GT3_DESK_DEVICE_F0_ID              0x0A05
513 #define ICNL_GT4_DESK_DEVICE_F0_ID              0x0A07
514 
515 // CNL Si device ids
516 #define ICNL_5x8_ULX_DEVICE_F0_ID               0x5A51      //GT2
517 #define ICNL_5x8_ULT_DEVICE_F0_ID               0x5A52      //GT2
518 #define ICNL_4x8_ULT_DEVICE_F0_ID               0x5A5A      //GT1.5
519 #define ICNL_3x8_ULT_DEVICE_F0_ID               0x5A42      //GT1
520 #define ICNL_2x8_ULT_DEVICE_F0_ID               0x5A4A      //GT0.5
521 #define ICNL_9x8_ULT_DEVICE_F0_ID               0x5A62
522 #define ICNL_9x8_SUPERSKU_DEVICE_F0_ID          0x5A60
523 #define ICNL_5x8_SUPERSKU_DEVICE_F0_ID          0x5A50      //GT2
524 #define ICNL_1x6_5x8_SUPERSKU_DEVICE_F0_ID      0x5A40      //GTx
525 #define ICNL_5x8_HALO_DEVICE_F0_ID              0x5A54      //GT2
526 #define ICNL_3x8_HALO_DEVICE_F0_ID              0x5A44      //GT1
527 #define ICNL_5x8_DESKTOP_DEVICE_F0_ID           0x5A55
528 #define ICNL_3x8_DESKTOP_DEVICE_F0_ID           0x5A45
529 #define ICNL_4x8_ULX_DEVICE_F0_ID               0x5A59      //GT1.5
530 #define ICNL_3x8_ULX_DEVICE_F0_ID               0x5A41      //GT1
531 #define ICNL_2x8_ULX_DEVICE_F0_ID               0x5A49      //GT0.5
532 #define ICNL_4x8_HALO_DEVICE_F0_ID              0x5A5C      //GT1.5
533 
534 #define ICFL_GT1_S61_DT_DEVICE_F0_ID            0x3E90
535 #define ICFL_GT1_S41_DT_DEVICE_F0_ID            0x3E93
536 #define ICFL_GT2_S62_DT_DEVICE_F0_ID            0x3E92
537 #define ICFL_GT2_HALO_DEVICE_F0_ID              0x3E9B
538 #define ICFL_GT2_SERV_DEVICE_F0_ID              0x3E96
539 #define ICFL_GT2_HALO_WS_DEVICE_F0_ID           0x3E94
540 #define ICFL_GT2_S42_DT_DEVICE_F0_ID            0x3E91
541 #define ICFL_GT3_ULT_15W_DEVICE_F0_ID           0x3EA6
542 #define ICFL_GT3_ULT_15W_42EU_DEVICE_F0_ID      0x3EA7
543 #define ICFL_GT3_ULT_28W_DEVICE_F0_ID           0x3EA8
544 #define ICFL_GT3_ULT_DEVICE_F0_ID               0x3EA5
545 #define ICFL_HALO_DEVICE_F0_ID                  0x3E95
546 #define ICFL_GT2_WKS_DEVICE_P0_ID               0x9BC6
547 
548 //GLV
549 #define IGLV_GT1_MOB_SIM_DEVICE_F0_ID           0xFF10
550 #define IGLV_GT1_MOB_DEVICE_F0_ID               0x3E04
551 
552 //GEN11LP
553 #define IICL_LP_GT1_MOB_DEVICE_F0_ID            0xFF05
554 #define IICL_LP_1x8x8_SUPERSKU_DEVICE_F0_ID     0x8A50
555 #define IICL_LP_1x8x8_ULX_DEVICE_F0_ID          0x8A51
556 #define IICL_LP_1x6x8_ULX_DEVICE_F0_ID          0x8A5C
557 #define IICL_LP_1x4x8_ULX_DEVICE_F0_ID          0x8A5D
558 #define IICL_LP_1x8x8_ULT_DEVICE_F0_ID          0x8A52
559 #define IICL_LP_1x6x8_ULT_DEVICE_F0_ID          0x8A5A
560 #define IICL_LP_1x4x8_ULT_DEVICE_F0_ID          0x8A5B
561 #define IICL_LP_0x0x0_ULT_DEVICE_A0_ID          0x8A70
562 #define IICL_LP_1x1x8_ULT_DEVICE_A0_ID          0x8A71
563 #define IICL_LP_1x4x8_LOW_MEDIA_ULT_DEVICE_F0_ID 0x8A56
564 
565 //TGL LP
566 #define IGEN12LP_GT1_MOB_DEVICE_F0_ID           0xFF20
567 #define ITGL_LP_1x6x16_UNKNOWN_SKU_F0_ID_5      0x9A49
568 #define ITGL_LP_1x6x16_ULT_15W_DEVICE_F0_ID     0x9A49
569 #define ITGL_LP_1x6x16_ULX_5_2W_DEVICE_F0_ID    0x9A40
570 #define ITGL_LP_1x6x16_ULT_12W_DEVICE_F0_ID     0x9A59
571 #define ITGL_LP_1x2x16_HALO_45W_DEVICE_F0_ID    0x9A60
572 #define ITGL_LP_1x2x16_DESK_65W_DEVICE_F0_ID    0x9A68
573 #define ITGL_LP_1x2x16_HALO_WS_45W_DEVICE_F0_ID 0x9A70
574 #define ITGL_LP_1x2x16_DESK_WS_65W_DEVICE_F0_ID 0x9A78
575 #define ITGL_LP_GT0_ULT_DEVICE_F0_ID            0x9A7F
576 
577 #define DEV_ID_4905                             0x4905
578 #define IRKL_1x2x16_GT1_ULT_SKU_DEVICE_F0_ID_0     0x4C80 // Obsolete, to be removed once removed from linux code base
579 #define IRKL_1x2x16_GT1_SUPER_SKU_DEVICE_F0_ID_1   0x4C8A // Obsolete, to be removed once removed from linux code base
580 #define IRKL_1X2X12_GT1_SUPER_SKU_DEVICE_F0_ID_2   0x4C8B // Obsolete, to be removed once removed from linux code base
581 #define IRKL_1X1X16_GT0P5_SUPER_SKU_DEVICE_F0_ID_3 0x4C8C // Obsolete, to be removed once removed from linux code base
582 #define IRKL_1X2X16_GT1_SUPER_SKU_DEVICE_F0_ID_4   0x4C90 // Obsolete, to be removed once removed from linux code base
583 #define IRKL_1X2X16_GT1_SUPER_SKU_DEVICE_F0_ID_5   0x4C9A // Obsolete, to be removed once removed from linux code base
584 #define IRKL_GT0_SKU_DEVICE_F0_ID                  0x4C9F // Obsolete, to be removed once removed from linux code base
585 
586 #define DEV_ID_4C80         0x4C80
587 #define DEV_ID_4C8A         0x4C8A
588 #define DEV_ID_4C8B         0x4C8B
589 #define DEV_ID_4C8C         0x4C8C
590 #define DEV_ID_4C90         0x4C90
591 #define DEV_ID_4C9A         0x4C9A
592 #define DEV_ID_4C9F         0x4C9F
593 //LKF
594 #define ILKF_1x8x8_DESK_DEVICE_F0_ID            0x9840
595 #define ILKF_GT0_DESK_DEVICE_A0_ID              0x9850
596 
597 //EHL
598 #define IEHL_1x4x8_SUPERSKU_DEVICE_A0_ID        0x4500
599 #define IEHL_1x2x4_DEVICE_A0_ID                 0x4541
600 #define IEHL_1x4x4_DEVICE_A0_ID                 0x4551
601 #define IEHL_1x4x8_DEVICE_A0_ID                 0x4571
602 #define IEHL_VAL_0x0x0_DEVICE_A0_ID             0x4569
603 
604 //JSL
605 #define IJSL_1x4x8_DEVICE_A0_ID                 0x4500
606 
607 // ADL-S
608 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_0                       0x4680
609 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_1                       0x4681
610 #define IADLS_1X2X12_GT1_UNKNOWN_SKU_ID_2                       0X4682
611 #define IADLS_1X1X16_GT0P5_UNKNOWN_SKU_ID_3                     0x4683
612 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_4                       0x4690
613 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_5                       0x4691
614 #define IADLS_1X2X12_GT1_UNKNOWN_SKU_ID_6                       0x4692
615 #define IADLS_1X1X16_GT1_UNKNOWN_SKU_ID_7                       0x4693
616 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_8                       0x4698
617 #define IADLS_1X2X16_GT1_UNKNOWN_SKU_ID_9                       0x4699
618 
619 
620 #define IADLS_GT0_DEVICE_A0_ID                                  0x469F
621 #define DEV_ID_4600                                             0x4600
622 #define DEV_ID_461F                                             0x461F
623 
624 // ADL-P
625 #define DEV_ID_46A0                             0x46A0
626 #define DEV_ID_46A1                             0x46A1
627 #define DEV_ID_46A2                             0x46A2
628 #define DEV_ID_46A3                             0x46A3
629 #define DEV_ID_46A6                             0x46A6
630 #define DEV_ID_46A8                             0x46A8
631 #define DEV_ID_46AA                             0x46AA
632 #define DEV_ID_4626                             0x4626
633 #define DEV_ID_4628                             0x4628
634 #define DEV_ID_462A                             0x462A
635 #define DEV_ID_46B0                             0x46B0
636 #define DEV_ID_46B1                             0x46B1
637 #define DEV_ID_46B2                             0x46B2
638 #define DEV_ID_46B3                             0x46B3
639 #define DEV_ID_46C0                             0x46C0
640 #define DEV_ID_46C1                             0x46C1
641 #define DEV_ID_46C2                             0x46C2
642 #define DEV_ID_46C3                             0x46C3
643 
644 #endif
645