xref: /titanic_51/usr/src/uts/common/io/cpqary3/cpqary3_bd.c (revision aed5247ff899ec457005d93dfbdb4ffd74574695)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright (C) 2013 Hewlett-Packard Development Company, L.P.
14  */
15 
16 /*
17  * Abstract:
18  * In this file, we define the static array of board definitions.
19  * the individual entries are in cpqary3_bd_defs.h, which is
20  * auto-generated from the controllers file by sacdf using
21  * the cpqary3_bd_defs.h.sacdf template.
22  */
23 
24 #include "cpqary3.h"
25 #include "cpqary3_bd.h"
26 
27 static cpqary3_bd_t cpqary3_bds[] = {
28 	{
29 		"Smart Array 5300 Controller",
30 		4,
31 		0x0e11,
32 		0x4070,
33 		OUTBOUND_LIST_5300_EXISTS,
34 		0,
35 		0,
36 		INTR_SIMPLE_MASK,
37 		INTR_SIMPLE_LOCKUP_MASK,
38 		0
39 	},
40 	{
41 		"Smart Array 5i Controller",
42 		8,
43 		0x0e11,
44 		0x4080,
45 		OUTBOUND_LIST_5I_EXISTS,
46 		0,
47 		0,
48 		INTR_SIMPLE_5I_MASK,
49 		INTR_SIMPLE_5I_LOCKUP_MASK,
50 		0
51 	},
52 	{
53 		"Smart Array 532 Controller",
54 		8,
55 		0x0e11,
56 		0x4082,
57 		OUTBOUND_LIST_5I_EXISTS,
58 		0,
59 		0,
60 		INTR_SIMPLE_5I_MASK,
61 		INTR_SIMPLE_5I_LOCKUP_MASK,
62 		0
63 	},
64 	{
65 		"Smart Array 5312 Controller",
66 		8,
67 		0x0e11,
68 		0x4083,
69 		OUTBOUND_LIST_5I_EXISTS,
70 		0,
71 		0,
72 		INTR_SIMPLE_5I_MASK,
73 		INTR_SIMPLE_5I_LOCKUP_MASK,
74 		0
75 	},
76 	{
77 		"Smart Array 6i Controller",
78 		8,
79 		0x0e11,
80 		0x4091,
81 		OUTBOUND_LIST_5300_EXISTS,
82 		0,
83 		0,
84 		INTR_SIMPLE_MASK,
85 		INTR_SIMPLE_LOCKUP_MASK,
86 		0
87 	},
88 	{
89 		"Smart Array 641 Controller",
90 		8,
91 		0x0e11,
92 		0x409a,
93 		OUTBOUND_LIST_5300_EXISTS,
94 		0,
95 		0,
96 		INTR_SIMPLE_MASK,
97 		INTR_SIMPLE_LOCKUP_MASK,
98 		0
99 	},
100 	{
101 		"Smart Array 642 Controller",
102 		8,
103 		0x0e11,
104 		0x409b,
105 		OUTBOUND_LIST_5300_EXISTS,
106 		0,
107 		0,
108 		INTR_SIMPLE_MASK,
109 		INTR_SIMPLE_LOCKUP_MASK,
110 		0
111 	},
112 	{
113 		"Smart Array 6400 Controller",
114 		8,
115 		0x0e11,
116 		0x409c,
117 		OUTBOUND_LIST_5300_EXISTS,
118 		0,
119 		0,
120 		INTR_SIMPLE_MASK,
121 		INTR_SIMPLE_LOCKUP_MASK,
122 		0
123 	},
124 	{
125 		"Smart Array 6400 EM Controller",
126 		8,
127 		0x0e11,
128 		0x409d,
129 		OUTBOUND_LIST_5300_EXISTS,
130 		0,
131 		0,
132 		INTR_SIMPLE_MASK,
133 		INTR_SIMPLE_LOCKUP_MASK,
134 		0
135 	},
136 	{
137 		"Smart Array 6422 Controller",
138 		8,
139 		0x0e11,
140 		0x409e,
141 		OUTBOUND_LIST_5300_EXISTS,
142 		0,
143 		0,
144 		INTR_SIMPLE_MASK,
145 		INTR_SIMPLE_LOCKUP_MASK,
146 		0
147 	},
148 	{
149 		"Smart Array E200i Controller",
150 		8,
151 		0x103c,
152 		0x3211,
153 		OUTBOUND_LIST_5300_EXISTS,
154 		SA_BD_SAS,
155 		1,
156 		INTR_E200_PERF_MASK,
157 		0,
158 		0
159 	},
160 	{
161 		"Smart Array E200 Controller",
162 		8,
163 		0x103c,
164 		0x3212,
165 		OUTBOUND_LIST_5300_EXISTS,
166 		SA_BD_SAS,
167 		1,
168 		INTR_E200_PERF_MASK,
169 		0,
170 		0
171 	},
172 	{
173 		"Smart Array P800 Controller",
174 		8,
175 		0x103c,
176 		0x3223,
177 		OUTBOUND_LIST_5300_EXISTS,
178 		SA_BD_SAS,
179 		0,
180 		INTR_PERF_MASK,
181 		INTR_PERF_LOCKUP_MASK,
182 		0
183 	},
184 	{
185 		"Smart Array P600 Controller",
186 		8,
187 		0x103c,
188 		0x3225,
189 		OUTBOUND_LIST_5300_EXISTS,
190 		SA_BD_SAS,
191 		0,
192 		INTR_PERF_MASK,
193 		INTR_PERF_LOCKUP_MASK,
194 		0
195 	},
196 	{
197 		"Smart Array P400 Controller",
198 		8,
199 		0x103c,
200 		0x3234,
201 		OUTBOUND_LIST_5300_EXISTS,
202 		SA_BD_SAS,
203 		0,
204 		INTR_PERF_MASK,
205 		INTR_PERF_LOCKUP_MASK,
206 		0
207 	},
208 	{
209 		"Smart Array P400i Controller",
210 		8,
211 		0x103c,
212 		0x3235,
213 		OUTBOUND_LIST_5300_EXISTS,
214 		SA_BD_SAS,
215 		0,
216 		INTR_PERF_MASK,
217 		INTR_PERF_LOCKUP_MASK,
218 		0
219 	},
220 	{
221 		"Smart Array E500 Controller",
222 		8,
223 		0x103c,
224 		0x3237,
225 		OUTBOUND_LIST_5300_EXISTS,
226 		SA_BD_SAS,
227 		0,
228 		INTR_PERF_MASK,
229 		INTR_PERF_LOCKUP_MASK,
230 		0
231 	},
232 	{
233 		"Smart Array P700m Controller",
234 		8,
235 		0x103c,
236 		0x323d,
237 		OUTBOUND_LIST_5300_EXISTS,
238 		SA_BD_SAS,
239 		0,
240 		INTR_PERF_MASK,
241 		INTR_PERF_LOCKUP_MASK,
242 		0
243 	},
244 	{
245 		"Smart Array P212 Controller",
246 		8,
247 		0x103c,
248 		0x3241,
249 		OUTBOUND_LIST_5300_EXISTS,
250 		SA_BD_SAS,
251 		0,
252 		INTR_PERF_MASK,
253 		0,
254 		1
255 	},
256 	{
257 		"Smart Array P410 Controller",
258 		8,
259 		0x103c,
260 		0x3243,
261 		OUTBOUND_LIST_5300_EXISTS,
262 		SA_BD_SAS,
263 		0,
264 		INTR_PERF_MASK,
265 		0,
266 		1
267 	},
268 	{
269 		"Smart Array P410i Controller",
270 		8,
271 		0x103c,
272 		0x3245,
273 		OUTBOUND_LIST_5300_EXISTS,
274 		SA_BD_SAS,
275 		0,
276 		INTR_PERF_MASK,
277 		0,
278 		1
279 	},
280 	{
281 		"Smart Array P411 Controller",
282 		8,
283 		0x103c,
284 		0x3247,
285 		OUTBOUND_LIST_5300_EXISTS,
286 		SA_BD_SAS,
287 		0,
288 		INTR_PERF_MASK,
289 		0,
290 		1
291 	},
292 	{
293 		"Smart Array P812 Controller",
294 		8,
295 		0x103c,
296 		0x3249,
297 		OUTBOUND_LIST_5300_EXISTS,
298 		SA_BD_SAS,
299 		0,
300 		INTR_PERF_MASK,
301 		0,
302 		1
303 	},
304 	{
305 		"Smart Array P712m Controller",
306 		8,
307 		0x103c,
308 		0x324a,
309 		OUTBOUND_LIST_5300_EXISTS,
310 		SA_BD_SAS,
311 		0,
312 		INTR_PERF_MASK,
313 		0,
314 		1
315 	},
316 	{
317 		"Smart Array P711m Controller",
318 		8,
319 		0x103c,
320 		0x324b,
321 		OUTBOUND_LIST_5300_EXISTS,
322 		SA_BD_SAS,
323 		0,
324 		INTR_PERF_MASK,
325 		0,
326 		1
327 	},
328 	{
329 		"Smart Array P222 Controller",
330 		8,
331 		0x103c,
332 		0x3350,
333 		OUTBOUND_LIST_5300_EXISTS,
334 		SA_BD_SAS,
335 		0,
336 		INTR_PERF_MASK,
337 		0,
338 		1
339 	},
340 	{
341 		"Smart Array P420 Controller",
342 		8,
343 		0x103c,
344 		0x3351,
345 		OUTBOUND_LIST_5300_EXISTS,
346 		SA_BD_SAS,
347 		0,
348 		INTR_PERF_MASK,
349 		0,
350 		1
351 	},
352 	{
353 		"Smart Array P421 Controller",
354 		8,
355 		0x103c,
356 		0x3352,
357 		OUTBOUND_LIST_5300_EXISTS,
358 		SA_BD_SAS,
359 		0,
360 		INTR_PERF_MASK,
361 		0,
362 		1
363 	},
364 	{
365 		"Smart Array P822 Controller",
366 		8,
367 		0x103c,
368 		0x3353,
369 		OUTBOUND_LIST_5300_EXISTS,
370 		SA_BD_SAS,
371 		0,
372 		INTR_PERF_MASK,
373 		0,
374 		1
375 	},
376 	{
377 		"Smart Array P420i Controller",
378 		8,
379 		0x103c,
380 		0x3354,
381 		OUTBOUND_LIST_5300_EXISTS,
382 		SA_BD_SAS,
383 		0,
384 		INTR_PERF_MASK,
385 		0,
386 		1
387 	},
388 	{
389 		"Smart Array P220i Controller",
390 		8,
391 		0x103c,
392 		0x3355,
393 		OUTBOUND_LIST_5300_EXISTS,
394 		SA_BD_SAS,
395 		0,
396 		INTR_PERF_MASK,
397 		0,
398 		1
399 	},
400 	{
401 		"Smart Array P721m Controller",
402 		8,
403 		0x103c,
404 		0x3356,
405 		OUTBOUND_LIST_5300_EXISTS,
406 		SA_BD_SAS,
407 		0,
408 		INTR_PERF_MASK,
409 		0,
410 		1
411 	}
412 };
413 
414 #define	NBOARD_DEFS (sizeof (cpqary3_bds) / sizeof (cpqary3_bd_t))
415 
416 cpqary3_bd_t *
417 cpqary3_bd_getbybid(uint32_t bid)
418 {
419 	uint16_t vid = ((bid >> 16) & 0xffff);
420 	uint16_t sid = (bid & 0xffff);
421 	int i;
422 
423 	/* search the array for a matching board */
424 	for (i = 0; i < NBOARD_DEFS; i++) {
425 		if ((vid == cpqary3_bds[i].bd_pci_subvenid) &&
426 		    (sid == cpqary3_bds[i].bd_pci_subsysid))
427 			return (&(cpqary3_bds[i]));
428 	}
429 
430 	/* board id not found */
431 	return (NULL);
432 }
433