1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2004-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in
13  * all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22  */
23 
24 #ifndef NVCST_H
25 #define NVCST_H
26 
27 #include <platform/chipset/chipset.h>
28 #include <platform/chipset/chipset_info.h>
29 #include <nvpcie.h>
30 #include <nvdevid.h>
31 
32 #define CHIPSET_SETUP_FUNC(name) static NV_STATUS name(OBJCL *pCl);
33 
34 CHIPSET_SETUP_FUNC(Intel_25XX_setupFunc)
35 CHIPSET_SETUP_FUNC(Intel_27XX_setupFunc)
36 CHIPSET_SETUP_FUNC(Intel_2A40_setupFunc)
37 CHIPSET_SETUP_FUNC(Intel_0040_setupFunc)
38 CHIPSET_SETUP_FUNC(Intel_2E00_setupFunc)
39 CHIPSET_SETUP_FUNC(Intel_25E0_setupFunc)
40 CHIPSET_SETUP_FUNC(Intel_29XX_setupFunc)
41 CHIPSET_SETUP_FUNC(Intel_29X0_setupFunc)
42 CHIPSET_SETUP_FUNC(Intel_29E0_setupFunc)
43 CHIPSET_SETUP_FUNC(Intel_359E_setupFunc)
44 CHIPSET_SETUP_FUNC(Intel_4000_setupFunc)
45 CHIPSET_SETUP_FUNC(Intel_4003_setupFunc)
46 CHIPSET_SETUP_FUNC(Intel_3400_setupFunc)
47 CHIPSET_SETUP_FUNC(Intel_3B42_setupFunc)
48 CHIPSET_SETUP_FUNC(Intel_1C46_setupFunc)
49 CHIPSET_SETUP_FUNC(Intel_1C10_setupFunc)
50 CHIPSET_SETUP_FUNC(Intel_1C4B_setupFunc)
51 CHIPSET_SETUP_FUNC(Intel_1C49_setupFunc)
52 CHIPSET_SETUP_FUNC(Intel_1D40_setupFunc)
53 CHIPSET_SETUP_FUNC(Intel_8D47_setupFunc)
54 CHIPSET_SETUP_FUNC(Intel_8D44_setupFunc)
55 CHIPSET_SETUP_FUNC(Intel_1E10_setupFunc)
56 CHIPSET_SETUP_FUNC(Intel_8C4B_setupFunc)
57 CHIPSET_SETUP_FUNC(Intel_8CC4_setupFunc)
58 CHIPSET_SETUP_FUNC(Intel_A145_setupFunc)
59 CHIPSET_SETUP_FUNC(Intel_A2C5_setupFunc)
60 CHIPSET_SETUP_FUNC(Intel_A242_setupFunc)
61 CHIPSET_SETUP_FUNC(Intel_A2D2_setupFunc)
62 CHIPSET_SETUP_FUNC(Intel_A2C9_setupFunc)
63 CHIPSET_SETUP_FUNC(Intel_A301_setupFunc)
64 CHIPSET_SETUP_FUNC(Intel_0685_setupFunc)
65 CHIPSET_SETUP_FUNC(Intel_4381_setupFunc)
66 CHIPSET_SETUP_FUNC(Intel_7A82_setupFunc)
67 CHIPSET_SETUP_FUNC(Intel_7A04_setupFunc)
68 CHIPSET_SETUP_FUNC(SiS_656_setupFunc)
69 CHIPSET_SETUP_FUNC(ATI_RS400_setupFunc)
70 CHIPSET_SETUP_FUNC(ATI_RS480_setupFunc)
71 CHIPSET_SETUP_FUNC(ATI_RD870_setupFunc)
72 CHIPSET_SETUP_FUNC(ATI_RD890_setupFunc)
73 CHIPSET_SETUP_FUNC(ATI_RX780_setupFunc)
74 CHIPSET_SETUP_FUNC(ATI_FX990_setupFunc)
75 CHIPSET_SETUP_FUNC(AMD_RS780_setupFunc)
76 CHIPSET_SETUP_FUNC(AMD_FX790_setupFunc)
77 CHIPSET_SETUP_FUNC(AMD_FX890_setupFunc)
78 CHIPSET_SETUP_FUNC(AMD_X370_setupFunc)
79 CHIPSET_SETUP_FUNC(VIA_VX900_setupFunc)
80 CHIPSET_SETUP_FUNC(APM_Storm_setupFunc)
81 CHIPSET_SETUP_FUNC(ARMV8_generic_setupFunc)
82 CHIPSET_SETUP_FUNC(Marvell_ThunderX2_setupFunc)
83 CHIPSET_SETUP_FUNC(QEMU_setupFunc)
84 CHIPSET_SETUP_FUNC(Ampere_eMag_setupFunc)
85 CHIPSET_SETUP_FUNC(Huawei_Kunpeng920_setupFunc)
86 CHIPSET_SETUP_FUNC(Mellanox_BlueField_setupFunc)
87 CHIPSET_SETUP_FUNC(Mellanox_BlueField3_setupFunc)
88 CHIPSET_SETUP_FUNC(Amazon_Gravitron2_setupFunc)
89 CHIPSET_SETUP_FUNC(Fujitsu_A64FX_setupFunc)
90 CHIPSET_SETUP_FUNC(Ampere_Altra_setupFunc)
91 CHIPSET_SETUP_FUNC(Arm_NeoverseN1_setupFunc)
92 CHIPSET_SETUP_FUNC(Ampere_AmpereOne_setupFunc)
93 CHIPSET_SETUP_FUNC(Nvidia_T210_setupFunc)
94 CHIPSET_SETUP_FUNC(Nvidia_T194_setupFunc)
95 CHIPSET_SETUP_FUNC(Nvidia_TH500_setupFunc)
96 CHIPSET_SETUP_FUNC(PLDA_XpressRichAXI_setupFunc)
97 CHIPSET_SETUP_FUNC(Riscv_generic_setupFunc)
98 
99 
100 // Keep string length <=32 (including termination) to avoid string copy overflow
101 CSINFO chipsetInfo[] =
102 {
103     // PCI Express chipset
104 
105     {PCI_VENDOR_ID_INTEL,       0x2580, CS_INTEL_2580,      "Grantsdale",   Intel_25XX_setupFunc},
106     {PCI_VENDOR_ID_INTEL,       0x2584, CS_INTEL_2584,      "Alderwood",    Intel_25XX_setupFunc},
107     {PCI_VENDOR_ID_INTEL,       0x2588, CS_INTEL_2588,      "Intel2588",    Intel_25XX_setupFunc},
108     {PCI_VENDOR_ID_INTEL,       0x2590, CS_INTEL_2590,      "Alviso",       Intel_25XX_setupFunc},
109     {PCI_VENDOR_ID_INTEL,       0x25C0, CS_INTEL_25E0,      "Greencreek",   Intel_25E0_setupFunc},
110     {PCI_VENDOR_ID_INTEL,       0x25E0, CS_INTEL_25E0,      "Greencreek",   Intel_25E0_setupFunc},
111     {PCI_VENDOR_ID_INTEL,       0x29B0, CS_INTEL_29X0,      "IntelQ35",     Intel_29X0_setupFunc},
112     {PCI_VENDOR_ID_INTEL,       0x29C0, CS_INTEL_29X0,      "BearlakeB",    Intel_29X0_setupFunc},
113     {PCI_VENDOR_ID_INTEL,       0x29D0, CS_INTEL_29X0,      "IntelQ33",     Intel_29X0_setupFunc},
114     {PCI_VENDOR_ID_INTEL,       0x29E0, CS_INTEL_29E0,      "BearlakeX",    Intel_29E0_setupFunc},
115     {PCI_VENDOR_ID_INTEL,       0x359E, CS_INTEL_359E,      "Tumwater",     Intel_359E_setupFunc},
116     {PCI_VENDOR_ID_INTEL,       0x4000, CS_INTEL_4000,      "Stoakley",     Intel_4000_setupFunc},
117     {PCI_VENDOR_ID_INTEL,       0x4003, CS_INTEL_4003,      "SkullTrail",   Intel_4003_setupFunc},
118     {PCI_VENDOR_ID_INTEL,       0x3400, CS_INTEL_3400,      "IntelX58",     Intel_3400_setupFunc},
119     {PCI_VENDOR_ID_INTEL,       0x3403, CS_INTEL_3400,      "IntelX58",     Intel_3400_setupFunc},
120     {PCI_VENDOR_ID_INTEL,       0x3405, CS_INTEL_3400,      "IntelX58",     Intel_3400_setupFunc},
121     {PCI_VENDOR_ID_INTEL,       0x3406, CS_INTEL_3400,      "Tylersburg",   Intel_3400_setupFunc},
122     {PCI_VENDOR_ID_INTEL,       0x2770, CS_INTEL_2770,      "Lakeport",     Intel_25XX_setupFunc},
123     {PCI_VENDOR_ID_INTEL,       0x2774, CS_INTEL_2774,      "Glenwood",     Intel_27XX_setupFunc},
124     {PCI_VENDOR_ID_INTEL,       0x277C, CS_INTEL_277C,      "Glenwood",     Intel_27XX_setupFunc},
125     {PCI_VENDOR_ID_INTEL,       0x2A40, CS_INTEL_2A40,      "Montevina",    Intel_2A40_setupFunc},
126     {PCI_VENDOR_ID_INTEL,       0x2E00, CS_INTEL_2E00,      "Eaglelake",    Intel_2E00_setupFunc},
127     {PCI_VENDOR_ID_INTEL,       0x2E10, CS_INTEL_2E00,      "Eaglelake",    Intel_2E00_setupFunc},
128     {PCI_VENDOR_ID_INTEL,       0x2E20, CS_INTEL_2E00,      "Eaglelake",    Intel_2E00_setupFunc},
129     {PCI_VENDOR_ID_INTEL,       0x2E30, CS_INTEL_2E00,      "Eaglelake",    Intel_2E00_setupFunc},
130     {PCI_VENDOR_ID_INTEL,       0x0044, CS_INTEL_0040,      "Arrandale/Auburndale", Intel_0040_setupFunc},
131     {PCI_VENDOR_ID_INTEL,       0x0062, CS_INTEL_0040,      "Arrandale/Auburndale", Intel_0040_setupFunc},
132     {PCI_VENDOR_ID_INTEL,       0xD130, CS_INTEL_3B42,      "Clarksfield",          Intel_3B42_setupFunc},
133     {PCI_VENDOR_ID_INTEL,       0xD132, CS_INTEL_3B42,      "Clarksfield",          Intel_3B42_setupFunc},
134     {PCI_VENDOR_ID_INTEL,       0x3B42, CS_INTEL_3B42,      "P55/PM55/H57",         Intel_3B42_setupFunc},
135     {PCI_VENDOR_ID_INTEL,       0x1C46, CS_INTEL_1C46,      "IntelP67-CougarPoint", Intel_1C46_setupFunc},
136     {PCI_VENDOR_ID_INTEL,       0x1C4B, CS_INTEL_1C46,      "HuronRiver-HM67",      Intel_1C4B_setupFunc},
137     {PCI_VENDOR_ID_INTEL,       0x1C4F, CS_INTEL_1C46,      "HuronRiver-QM67",      Intel_1C4B_setupFunc},
138     {PCI_VENDOR_ID_INTEL,       0x1C49, CS_INTEL_1C49,      "HuronRiver-HM65",      Intel_1C49_setupFunc},
139     {PCI_VENDOR_ID_INTEL,       0x1C44, CS_INTEL_1C46,      "IntelZ68",             Intel_1C46_setupFunc},
140     {PCI_VENDOR_ID_INTEL,       0x1C10, CS_INTEL_1C10,      "IntelP67",             Intel_1C10_setupFunc},
141     {PCI_VENDOR_ID_INTEL,       0x1D40, CS_INTEL_1D40,      "IntelX79",             Intel_1D40_setupFunc},
142     {PCI_VENDOR_ID_INTEL,       0x1D41, CS_INTEL_1D40,      "IntelX79",             Intel_1D40_setupFunc},
143     {PCI_VENDOR_ID_INTEL,       0x1E10, CS_INTEL_1E10,      "IntelZ75",             Intel_1E10_setupFunc},
144     {PCI_VENDOR_ID_INTEL,       0x0150, CS_INTEL_1E10,      "IntelZ77A-GD55",       Intel_1E10_setupFunc},
145     {PCI_VENDOR_ID_INTEL,       0x0151, CS_INTEL_1E10,      "IntelZ77A-GD55",       Intel_1E10_setupFunc},
146     {PCI_VENDOR_ID_INTEL,       0x0100, CS_INTEL_1E10,      "IntelZ77A-GD55",       Intel_1E10_setupFunc},
147     {PCI_VENDOR_ID_INTEL,       0x8C4B, CS_INTEL_8C4B,      "SharkBay-HM87",        Intel_8C4B_setupFunc},
148     {PCI_VENDOR_ID_INTEL,       0x8C44, CS_INTEL_8C4B,      "SharkBay-Z87",         Intel_8C4B_setupFunc},
149     {PCI_VENDOR_ID_INTEL,       0x8C41, CS_INTEL_8C4B,      "SharkBay-H8x/P8x",     Intel_8C4B_setupFunc},
150     {PCI_VENDOR_ID_INTEL,       0x8C49, CS_INTEL_8C4B,      "SharkBay-HM86",        Intel_8C4B_setupFunc},
151     {PCI_VENDOR_ID_INTEL,       0x8C52, CS_INTEL_8C4B,      "SharkBay-E3",          Intel_8C4B_setupFunc}, // Does not support SLI
152     {PCI_VENDOR_ID_INTEL,       0x8CC4, CS_INTEL_8CC4,      "IntelZ97",             Intel_8CC4_setupFunc},
153     {PCI_VENDOR_ID_INTEL,       0x8CC3, CS_INTEL_8CC4,      "IntelHM97",            Intel_8CC4_setupFunc},
154     {PCI_VENDOR_ID_INTEL,       0xA145, CS_INTEL_A145,      "IntelZ170",            Intel_A145_setupFunc},
155     {PCI_VENDOR_ID_INTEL,       0xA14E, CS_INTEL_A145,      "IntelHM170",           Intel_A145_setupFunc},
156     {PCI_VENDOR_ID_INTEL,       0xA150, CS_INTEL_A145,      "IntelHM170",           Intel_A145_setupFunc},
157     {PCI_VENDOR_ID_INTEL,       0xA149, CS_INTEL_A145,      "SkyLake C236",         Intel_A145_setupFunc},
158     {PCI_VENDOR_ID_INTEL,       0xA14A, CS_INTEL_A145,      "SkyLake C232",         Intel_A145_setupFunc},
159     {PCI_VENDOR_ID_INTEL,       0xA14D, CS_INTEL_A145,      "SkyLake-H",            Intel_A145_setupFunc},
160     {PCI_VENDOR_ID_INTEL,       0xA244, CS_INTEL_A145,      "SkyLake C620",         Intel_A145_setupFunc},
161     {PCI_VENDOR_ID_INTEL,       0xA1C8, CS_INTEL_A145,      "SkyLake C620",         Intel_A145_setupFunc},
162     {PCI_VENDOR_ID_INTEL,       0x8D47, CS_INTEL_8D47,      "IntelX99",             Intel_8D47_setupFunc},
163     {PCI_VENDOR_ID_INTEL,       0x8D44, CS_INTEL_8D47,      "IntelC612",            Intel_8D44_setupFunc},
164     {PCI_VENDOR_ID_INTEL,       0xA2C5, CS_INTEL_A2C5,      "IntelZ270",            Intel_A2C5_setupFunc},
165     {PCI_VENDOR_ID_INTEL,       0xA154, CS_INTEL_A2C5,      "IntelZ270",            Intel_A2C5_setupFunc},
166     {PCI_VENDOR_ID_INTEL,       0xA152, CS_INTEL_A2C5,      "IntelRX9S",            Intel_A2C5_setupFunc},
167     {PCI_VENDOR_ID_INTEL,       0xA242, CS_INTEL_A242,      "IntelC422",            Intel_A242_setupFunc},
168     {PCI_VENDOR_ID_INTEL,       0xA241, CS_INTEL_A242,      "IntelC422",            Intel_A242_setupFunc},
169     {PCI_VENDOR_ID_INTEL,       0xA243, CS_INTEL_A242,      "IntelC422",            Intel_A242_setupFunc},
170     {PCI_VENDOR_ID_INTEL,       0xA2D2, CS_INTEL_A2D2,      "IntelX299",            Intel_A2D2_setupFunc},
171     {PCI_VENDOR_ID_INTEL,       0xA2D3, CS_INTEL_A242,      "IntelC422",            Intel_A242_setupFunc},
172     {PCI_VENDOR_ID_INTEL,       0xA1C1, CS_INTEL_A242,      "IntelC621",            Intel_A242_setupFunc},
173     {PCI_VENDOR_ID_INTEL,       0xA1C2, CS_INTEL_A242,      "IntelC622",            Intel_A242_setupFunc},
174     {PCI_VENDOR_ID_INTEL,       0xA1C3, CS_INTEL_A242,      "IntelC624",            Intel_A242_setupFunc},
175     {PCI_VENDOR_ID_INTEL,       0xA1C4, CS_INTEL_A242,      "IntelC625",            Intel_A242_setupFunc},
176     {PCI_VENDOR_ID_INTEL,       0xA1C5, CS_INTEL_A242,      "IntelC626",            Intel_A242_setupFunc},
177     {PCI_VENDOR_ID_INTEL,       0xA1C6, CS_INTEL_A242,      "IntelC627",            Intel_A242_setupFunc},
178     {PCI_VENDOR_ID_INTEL,       0xA1C7, CS_INTEL_A242,      "IntelC628",            Intel_A242_setupFunc},
179     {PCI_VENDOR_ID_INTEL,       0xA2C9, CS_INTEL_A2C9,      "IntelZ370",            Intel_A2C9_setupFunc},
180     {PCI_VENDOR_ID_INTEL,       0xA310, CS_INTEL_A2C9,      "IntelZ370",            Intel_A2C9_setupFunc},
181     {PCI_VENDOR_ID_INTEL,       0xA30E, CS_INTEL_A2C9,      "IntelZ370",            Intel_A2C9_setupFunc},
182     {PCI_VENDOR_ID_INTEL,       0xA305, CS_INTEL_A2C9,      "IntelZ390",            Intel_A2C9_setupFunc},
183     {PCI_VENDOR_ID_INTEL,       0xA30D, CS_INTEL_A2C9,      "IntelH370",            Intel_A2C9_setupFunc},
184     {PCI_VENDOR_ID_INTEL,       0xA301, CS_INTEL_A301,      "Intel-CannonLake",     Intel_A301_setupFunc},
185     {PCI_VENDOR_ID_INTEL,       0x0685, CS_INTEL_0685,      "Intel-CometLake",      Intel_0685_setupFunc},
186     {PCI_VENDOR_ID_INTEL,       0xA1CB, CS_INTEL_C620,      "Intel-IceLake",        NULL},
187 	{PCI_VENDOR_ID_INTEL,       0x4381, CS_INTEL_4381,      "Intel-RocketLake",     Intel_4381_setupFunc},
188     {PCI_VENDOR_ID_INTEL,       0x4385, CS_INTEL_4381,      "Intel-RocketLake",     Intel_4381_setupFunc},
189     {PCI_VENDOR_ID_INTEL,       0x7A82, CS_INTEL_7A82,      "Intel-AlderLake",      Intel_7A82_setupFunc},
190     {PCI_VENDOR_ID_INTEL,       0x7A84, CS_INTEL_7A82,      "Intel-AlderLake",      Intel_7A82_setupFunc},
191     {PCI_VENDOR_ID_INTEL,       0x1B81, CS_INTEL_1B81,      "Intel-SapphireRapids", NULL},
192     {PCI_VENDOR_ID_INTEL,       0x7A8A, CS_INTEL_1B81,      "Intel-SapphireRapids", NULL},
193     {PCI_VENDOR_ID_INTEL,       0x18DC, CS_INTEL_18DC,      "Intel-IceLake",        NULL},
194     {PCI_VENDOR_ID_INTEL,       0x7A04, CS_INTEL_7A04,      "Intel-RaptorLake",     Intel_7A04_setupFunc},
195 
196     {PCI_VENDOR_ID_NVIDIA,      0x0FAE, CS_NVIDIA_T210,      "T210",      Nvidia_T210_setupFunc},
197     {PCI_VENDOR_ID_NVIDIA,      0x0FAF, CS_NVIDIA_T210,      "T210",      Nvidia_T210_setupFunc},
198     {PCI_VENDOR_ID_NVIDIA,      0x10E5, CS_NVIDIA_T186,      "T186",      Nvidia_T210_setupFunc},
199     {PCI_VENDOR_ID_NVIDIA,      0x10E6, CS_NVIDIA_T186,      "T186",      Nvidia_T210_setupFunc},
200     {PCI_VENDOR_ID_NVIDIA,      0x1AD0, CS_NVIDIA_T194,      "T194",      Nvidia_T194_setupFunc},
201     {PCI_VENDOR_ID_NVIDIA,      0x1AD1, CS_NVIDIA_T194,      "T194",      Nvidia_T194_setupFunc},
202     {PCI_VENDOR_ID_NVIDIA,      0x1AD2, CS_NVIDIA_T194,      "T194",      Nvidia_T194_setupFunc},
203     {PCI_VENDOR_ID_NVIDIA,      0x229A, CS_NVIDIA_T234,      "T234",      Nvidia_T194_setupFunc},
204     {PCI_VENDOR_ID_NVIDIA,      0x229C, CS_NVIDIA_T234,      "T234",      Nvidia_T194_setupFunc},
205     {PCI_VENDOR_ID_NVIDIA,      0x229E, CS_NVIDIA_T234,      "T234",      Nvidia_T194_setupFunc},
206     {PCI_VENDOR_ID_NVIDIA,      0x22C2, CS_NVIDIA_T23x,      "T23x",      Nvidia_T194_setupFunc},
207     {PCI_VENDOR_ID_NVIDIA,      0x22C3, CS_NVIDIA_T23x,      "T23x",      Nvidia_T194_setupFunc},
208     {PCI_VENDOR_ID_NVIDIA,      0x22B1, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
209     {PCI_VENDOR_ID_NVIDIA,      0x22B2, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
210     {PCI_VENDOR_ID_NVIDIA,      0x22B3, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
211     {PCI_VENDOR_ID_NVIDIA,      0x22B4, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
212     {PCI_VENDOR_ID_NVIDIA,      0x22B8, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
213     {PCI_VENDOR_ID_NVIDIA,      0x22B9, CS_NVIDIA_TH500,     "TH500",     Nvidia_TH500_setupFunc},
214 
215     {PCI_VENDOR_ID_SIS,         0x0649, CS_SIS_649,          "649",          SiS_656_setupFunc},
216     {PCI_VENDOR_ID_SIS,         0x0656, CS_SIS_656,          "656",          SiS_656_setupFunc},
217 
218     {PCI_VENDOR_ID_ATI,         0x5A31, CS_ATI_RS400,        "RS400",        ATI_RS400_setupFunc},
219     {PCI_VENDOR_ID_ATI,         0x5A33, CS_ATI_RS400,        "RS400",        ATI_RS400_setupFunc},
220     {PCI_VENDOR_ID_ATI,         0x5950, CS_ATI_RS480,        "RS480",        ATI_RS480_setupFunc},
221     {PCI_VENDOR_ID_ATI,         0x5951, CS_ATI_RS480,        "RS480",        ATI_RS480_setupFunc},
222     {PCI_VENDOR_ID_ATI,         0x5956, CS_ATI_FX790,        "FX790"        ,AMD_FX790_setupFunc},
223     {PCI_VENDOR_ID_ATI,         0x5A11, CS_ATI_FX890,        "FX890"        ,AMD_FX890_setupFunc},
224     {PCI_VENDOR_ID_ATI,         0x5a13, CS_ATI_RD850,        "RD850"        ,ATI_RD870_setupFunc},
225     {PCI_VENDOR_ID_ATI,         0x5a12, CS_ATI_RD870,        "RD870"        ,ATI_RD870_setupFunc},
226     {PCI_VENDOR_ID_ATI,         0x5a10, CS_ATI_RD890,        "RD890"        ,ATI_RD890_setupFunc},
227     {PCI_VENDOR_ID_ATI,         0x5957, CS_ATI_RX780,        "RX780"        ,ATI_RX780_setupFunc},
228     {PCI_VENDOR_ID_ATI,         0x5A14, CS_ATI_FX990,        "FX990/X990/970",ATI_FX990_setupFunc},
229 
230     {PCI_VENDOR_ID_AMD,         0x9601, CS_AMD_GX890,        "GX890"        ,AMD_FX890_setupFunc},
231     {PCI_VENDOR_ID_AMD,         0x9600, CS_AMD_RS780,        "RS780"        ,AMD_RS780_setupFunc},
232     {PCI_VENDOR_ID_AMD,         0x790e, CS_AMD_X370,         "X370/X399/X470/ TRX40/X570/WRX80", AMD_X370_setupFunc },
233 
234     {PCI_VENDOR_ID_VIA,         0x0308, CS_VIA_VT8369B,      "VT8369B",      NULL},
235     {PCI_VENDOR_ID_VIA,         0x0410, CS_VIA_VX900,        "VX900",        VIA_VX900_setupFunc},
236     {PCI_VENDOR_ID_APM,         0xe004, CS_APM_STORM,        "X-Gene Storm", APM_Storm_setupFunc},
237     {PCI_VENDOR_ID_IBM,         0x03DC, CS_IBM_VENICE,       "Venice",       NULL},
238     {PCI_VENDOR_ID_MARVELL,     0xAF00, CS_MARVELL_THUNDERX2, "Marvell ThunderX2", Marvell_ThunderX2_setupFunc},
239     {PCI_VENDOR_ID_REDHAT,      0x0008, CS_REDHAT_QEMU,      "QEMU Redhat",  QEMU_setupFunc},
240     {PCI_VENDOR_ID_AMPERE,      0xE005, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
241     {PCI_VENDOR_ID_AMPERE,      0xE006, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
242     {PCI_VENDOR_ID_AMPERE,      0xE007, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
243     {PCI_VENDOR_ID_AMPERE,      0xE008, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
244     {PCI_VENDOR_ID_AMPERE,      0xE009, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
245     {PCI_VENDOR_ID_AMPERE,      0xE00A, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
246     {PCI_VENDOR_ID_AMPERE,      0xE00B, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
247     {PCI_VENDOR_ID_AMPERE,      0xE00C, CS_AMPERE_EMAG,      "AMPERE eMag",  Ampere_eMag_setupFunc},
248     {PCI_VENDOR_ID_HUAWEI,      0xA120, CS_HUAWEI_KUNPENG920, "Huawei Kunpeng920",  Huawei_Kunpeng920_setupFunc},
249     {PCI_VENDOR_ID_MELLANOX,    0xA2D0, CS_MELLANOX_BLUEFIELD, "Mellanox BlueField",  Mellanox_BlueField_setupFunc},
250     {PCI_VENDOR_ID_MELLANOX,    0xA2D4, CS_MELLANOX_BLUEFIELD2, "Mellanox BlueField 2",  NULL},
251     {PCI_VENDOR_ID_MELLANOX,    0xA2D5, CS_MELLANOX_BLUEFIELD2, "Mellanox BlueField 2 Crypto disabled",  NULL},
252     {PCI_VENDOR_ID_MELLANOX,    0xA2DA, CS_MELLANOX_BLUEFIELD3, "Mellanox BlueField 3 Crypto enabled",  Mellanox_BlueField3_setupFunc},
253     {PCI_VENDOR_ID_MELLANOX,    0xA2DB, CS_MELLANOX_BLUEFIELD3, "Mellanox BlueField 3 Crypto disabled",  Mellanox_BlueField3_setupFunc},
254     {PCI_VENDOR_ID_AMAZON,      0x0200, CS_AMAZON_GRAVITRON2, "Amazon Gravitron2",  Amazon_Gravitron2_setupFunc},
255     {PCI_VENDOR_ID_FUJITSU,     0x1952, CS_FUJITSU_A64FX,     "Fujitsu A64FX", Fujitsu_A64FX_setupFunc},
256     {PCI_VENDOR_ID_CADENCE,     0xDC01, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
257     {PCI_VENDOR_ID_CADENCE,     0xDC08, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
258     {PCI_VENDOR_ID_CADENCE,     0xDC16, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
259     {PCI_VENDOR_ID_CADENCE,     0xFC01, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
260     {PCI_VENDOR_ID_CADENCE,     0xFC08, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
261     {PCI_VENDOR_ID_CADENCE,     0xFC16, CS_PHYTIUM_S2500,  "Phytium S2500",  NULL},
262     {PCI_VENDOR_ID_AMPERE,      0xE000, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
263     {PCI_VENDOR_ID_AMPERE,      0xE00D, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
264     {PCI_VENDOR_ID_AMPERE,      0xE00E, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
265     {PCI_VENDOR_ID_AMPERE,      0xE010, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
266     {PCI_VENDOR_ID_AMPERE,      0xE100, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
267     {PCI_VENDOR_ID_AMPERE,      0xE110, CS_AMPERE_ALTRA, "Ampere Altra", Ampere_Altra_setupFunc},
268     {PCI_VENDOR_ID_ARM,         0x0100, CS_ARM_NEOVERSEN1, "Arm Neoverse N1",  Arm_NeoverseN1_setupFunc},
269     {PCI_VENDOR_ID_HYGON,       0x790E, CS_HYGON_C86,      "Hygon-C86-7151",   NULL},
270     {PCI_VENDOR_ID_MARVELL,     0xA02D, CS_MARVELL_OCTEON_CN96XX, "Marvell Octeon CN96xx", ARMV8_generic_setupFunc},
271     {PCI_VENDOR_ID_MARVELL,     0xA02D, CS_MARVELL_OCTEON_CN98XX, "Marvell Octeon CN98xx", ARMV8_generic_setupFunc},
272     {PCI_VENDOR_ID_SIFIVE,      0x0000, CS_SIFIVE_FU740_C000, "SiFive FU740-000", Riscv_generic_setupFunc},
273     {PCI_VENDOR_ID_PLDA,        0x1111, CS_PLDA_XPRESSRICH_AXI_REF, "XpressRich-AXI Ref Design", PLDA_XpressRichAXI_setupFunc},
274     {PCI_VENDOR_ID_AMPERE,      0xE200, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
275     {PCI_VENDOR_ID_AMPERE,      0xE201, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
276     {PCI_VENDOR_ID_AMPERE,      0xE202, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
277     {PCI_VENDOR_ID_AMPERE,      0xE203, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
278     {PCI_VENDOR_ID_AMPERE,      0xE204, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
279     {PCI_VENDOR_ID_AMPERE,      0xE205, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
280     {PCI_VENDOR_ID_AMPERE,      0xE206, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
281     {PCI_VENDOR_ID_AMPERE,      0xE207, CS_AMPERE_AMPEREONE, "Ampere AmpereOne", Ampere_AmpereOne_setupFunc},
282 
283 ///////////////////////////////////////////////////////////////////////////////////////////////////
284 
285     // last element must have chipset CS_UNKNOWN (zero)
286     {0,                         0,      CS_UNKNOWN,         "Unknown",      NULL}
287 };
288 
289 
290 VENDORNAME vendorName[] =
291 {
292     {PCI_VENDOR_ID_NVIDIA,      "NVIDIA"},
293     {PCI_VENDOR_ID_INTEL,       "Intel"},
294     {PCI_VENDOR_ID_VIA,         "VIA"},
295     {PCI_VENDOR_ID_RCC,         "ServerWorks"},
296     {PCI_VENDOR_ID_MICRON_1,    "Micron"},
297     {PCI_VENDOR_ID_MICRON_2,    "Micron"},
298     {PCI_VENDOR_ID_APPLE,       "Apple"},
299     {PCI_VENDOR_ID_SIS,         "SiS"},
300     {PCI_VENDOR_ID_ATI,         "ATI"},
301     {PCI_VENDOR_ID_TRANSMETA,   "Transmeta"},
302     {PCI_VENDOR_ID_HP,          "HP"},
303     {PCI_VENDOR_ID_AMD,         "AMD"},
304     {PCI_VENDOR_ID_ALI,         "ALi"},
305     {PCI_VENDOR_ID_APM,         "AppliedMicro"},
306     {PCI_VENDOR_ID_IBM,         "IBM"},
307     {PCI_VENDOR_ID_MARVELL,     "MarvellThunderX2"},
308     {PCI_VENDOR_ID_REDHAT,      "QemuRedhat"},
309     {PCI_VENDOR_ID_AMPERE,      "AmpereComputing"},
310     {PCI_VENDOR_ID_HUAWEI,      "Huawei"},
311     {PCI_VENDOR_ID_MELLANOX,    "Mellanox"},
312     {PCI_VENDOR_ID_AMAZON,      "Amazon"},
313     {PCI_VENDOR_ID_FUJITSU,     "Fujitsu"},
314     {PCI_VENDOR_ID_CADENCE,     "Cadence"},
315     {PCI_VENDOR_ID_ARM,         "ARM"},
316     {PCI_VENDOR_ID_ALIBABA,     "Alibaba"},
317     {PCI_VENDOR_ID_SIFIVE,      "SiFive"},
318     {PCI_VENDOR_ID_PLDA,        "PLDA"},
319     {0,                         "Unknown"} // Indicates end of the table
320 };
321 
322 
323 //
324 // Allowlist all chipsets with which dGPU over PCIe is supported on ARM
325 // (both v7 and v8) platforms
326 //
327 ARMCSALLOWLISTINFO armChipsetAllowListInfo[] =
328 {
329     {PCI_VENDOR_ID_NVIDIA,      0x0FAE, CS_NVIDIA_T210},        // NVIDIA Tegra X1 RP0
330     {PCI_VENDOR_ID_NVIDIA,      0x0FAF, CS_NVIDIA_T210},        // NVIDIA Tegra X1 RP1
331     {PCI_VENDOR_ID_NVIDIA,      0x10E5, CS_NVIDIA_T186},        // NVIDIA Tegra P1 RP0
332     {PCI_VENDOR_ID_NVIDIA,      0x10E6, CS_NVIDIA_T186},        // NVIDIA Tegra P1 RP1
333     {PCI_VENDOR_ID_NVIDIA,      0x1AD0, CS_NVIDIA_T194},        // NVIDIA Tegra V1 RP0
334     {PCI_VENDOR_ID_NVIDIA,      0x1AD1, CS_NVIDIA_T194},        // NVIDIA Tegra V1 RP1
335     {PCI_VENDOR_ID_NVIDIA,      0x1AD2, CS_NVIDIA_T194},        // NVIDIA Tegra V1 RP2
336     {PCI_VENDOR_ID_NVIDIA,      0x229A, CS_NVIDIA_T234},        // NVIDIA Tegra Orin RP0
337     {PCI_VENDOR_ID_NVIDIA,      0x229C, CS_NVIDIA_T234},        // NVIDIA Tegra Orin RP1
338     {PCI_VENDOR_ID_NVIDIA,      0x229E, CS_NVIDIA_T234},        // NVIDIA Tegra Orin RP2
339     {PCI_VENDOR_ID_NVIDIA,      0x22C2, CS_NVIDIA_T23x},        // NVIDIA Tegra RP0
340     {PCI_VENDOR_ID_NVIDIA,      0x22C3, CS_NVIDIA_T23x},        // NVIDIA Tegra RP1
341     {PCI_VENDOR_ID_NVIDIA,      0x22B1, CS_NVIDIA_TH500},       // NVIDIA TH500 RP for GH100 GPU in GH180.
342     {PCI_VENDOR_ID_NVIDIA,      0x22B2, CS_NVIDIA_TH500},       // NVIDIA TH500 RP x16
343     {PCI_VENDOR_ID_NVIDIA,      0x22B3, CS_NVIDIA_TH500},       // NVIDIA TH500 RP x4
344     {PCI_VENDOR_ID_NVIDIA,      0x22B4, CS_NVIDIA_TH500},       // NVIDIA TH500 RP x1
345     {PCI_VENDOR_ID_NVIDIA,      0x22B8, CS_NVIDIA_TH500},       // NVIDIA TH500 RP x8
346     {PCI_VENDOR_ID_NVIDIA,      0x22B9, CS_NVIDIA_TH500},       // NVIDIA TH500 RP x2
347 
348     {PCI_VENDOR_ID_APM,         0xe004, CS_APM_STORM},          // Applied Micro X-Gene "Storm"
349     {PCI_VENDOR_ID_MARVELL,     0xAF00, CS_MARVELL_THUNDERX2},  // Marvell ThunderX2
350     {PCI_VENDOR_ID_REDHAT,      0x0008, CS_REDHAT_QEMU},        // Redhat QEMU
351     {PCI_VENDOR_ID_AMPERE,      0xE005, CS_AMPERE_EMAG},        // Ampere eMag
352     {PCI_VENDOR_ID_AMPERE,      0xE006, CS_AMPERE_EMAG},        // Ampere eMag
353     {PCI_VENDOR_ID_AMPERE,      0xE007, CS_AMPERE_EMAG},        // Ampere eMag
354     {PCI_VENDOR_ID_AMPERE,      0xE008, CS_AMPERE_EMAG},        // Ampere eMag
355     {PCI_VENDOR_ID_AMPERE,      0xE009, CS_AMPERE_EMAG},        // Ampere eMag
356     {PCI_VENDOR_ID_AMPERE,      0xE00A, CS_AMPERE_EMAG},        // Ampere eMag
357     {PCI_VENDOR_ID_AMPERE,      0xE00B, CS_AMPERE_EMAG},        // Ampere eMag
358     {PCI_VENDOR_ID_AMPERE,      0xE00C, CS_AMPERE_EMAG},        // Ampere eMag
359     {PCI_VENDOR_ID_HUAWEI,      0xA120, CS_HUAWEI_KUNPENG920},  // Huawei Kunpeng 920
360     {PCI_VENDOR_ID_MELLANOX,    0xA2D0, CS_MELLANOX_BLUEFIELD}, // Mellanox BlueField
361     {PCI_VENDOR_ID_MELLANOX,    0xA2D4, CS_MELLANOX_BLUEFIELD2},// Mellanox BlueField 2
362     {PCI_VENDOR_ID_MELLANOX,    0xA2D5, CS_MELLANOX_BLUEFIELD2},// Mellanox BlueField 2 Crypto disabled
363     {PCI_VENDOR_ID_MELLANOX,    0xA2DB, CS_MELLANOX_BLUEFIELD3},// Mellanox BlueField 3
364     {PCI_VENDOR_ID_AMAZON,      0x0200, CS_AMAZON_GRAVITRON2},  // Amazon Gravitron2
365     {PCI_VENDOR_ID_FUJITSU,     0x1952, CS_FUJITSU_A64FX},      // Fujitsu A64FX
366     {PCI_VENDOR_ID_CADENCE,     0xDC01, CS_PHYTIUM_S2500},      // Phytium S2500
367     {PCI_VENDOR_ID_CADENCE,     0xDC08, CS_PHYTIUM_S2500},      // Phytium S2500
368     {PCI_VENDOR_ID_CADENCE,     0xDC16, CS_PHYTIUM_S2500},      // Phytium S2500
369     {PCI_VENDOR_ID_CADENCE,     0xFC01, CS_PHYTIUM_S2500},      // Phytium S2500
370     {PCI_VENDOR_ID_CADENCE,     0xFC08, CS_PHYTIUM_S2500},      // Phytium S2500
371     {PCI_VENDOR_ID_CADENCE,     0xFC16, CS_PHYTIUM_S2500},      // Phytium S2500
372     {PCI_VENDOR_ID_AMPERE,      0xE000, CS_AMPERE_ALTRA},       // Ampere Altra
373     {PCI_VENDOR_ID_AMPERE,      0xE00D, CS_AMPERE_ALTRA},       // Ampere Altra
374     {PCI_VENDOR_ID_AMPERE,      0xE00E, CS_AMPERE_ALTRA},       // Ampere Altra
375     {PCI_VENDOR_ID_AMPERE,      0xE010, CS_AMPERE_ALTRA},       // Ampere Altra
376     {PCI_VENDOR_ID_AMPERE,      0xE100, CS_AMPERE_ALTRA},       // Ampere Altra
377     {PCI_VENDOR_ID_AMPERE,      0xE110, CS_AMPERE_ALTRA},       // Ampere Altra
378     {PCI_VENDOR_ID_ARM,         0x0100, CS_ARM_NEOVERSEN1},     // Arm Neoverse N1
379     {PCI_VENDOR_ID_MARVELL,     0xA02D, CS_MARVELL_OCTEON_CN96XX}, // Marvell OCTEON CN96xx
380     {PCI_VENDOR_ID_MARVELL,     0xA02D, CS_MARVELL_OCTEON_CN98XX}, // Marvell OCTEON CN98xx
381     {PCI_VENDOR_ID_ALIBABA,     0x8000, CS_ALIBABA_YITIAN},      // Alibaba Yitian
382     {PCI_VENDOR_ID_AMPERE,      0xE200, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
383     {PCI_VENDOR_ID_AMPERE,      0xE201, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
384     {PCI_VENDOR_ID_AMPERE,      0xE202, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
385     {PCI_VENDOR_ID_AMPERE,      0xE203, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
386     {PCI_VENDOR_ID_AMPERE,      0xE204, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
387     {PCI_VENDOR_ID_AMPERE,      0xE205, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
388     {PCI_VENDOR_ID_AMPERE,      0xE206, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
389     {PCI_VENDOR_ID_AMPERE,      0xE207, CS_AMPERE_AMPEREONE},   // Ampere AmpereOne
390 
391     // last element must have chipset CS_UNKNOWN (zero)
392     {0,                         0,      CS_UNKNOWN}
393 };
394 
395 #endif /* NVCST_H */
396