xref: /illumos-gate/usr/src/uts/common/io/cpqary3/cpqary3_bd.c (revision bde334a8dbd66dfa70ce4d7fc9dcad6e1ae45fe4)
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) 2015 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 		"Smart Array P230i Controller",
414 		8,
415 		0x103c,
416 		0x1928,
417 		OUTBOUND_LIST_5300_EXISTS,
418 		SA_BD_SAS,
419 		0,
420 		INTR_PERF_MASK,
421 		0,
422 		1
423 	},
424 	{
425 		"Smart Array P430i Controller",
426 		8,
427 		0x103c,
428 		0x1920,
429 		OUTBOUND_LIST_5300_EXISTS,
430 		SA_BD_SAS,
431 		0,
432 		INTR_PERF_MASK,
433 		0,
434 		1
435 	},
436 	{
437 		"Smart Array P430 Controller",
438 		8,
439 		0x103c,
440 		0x1922,
441 		OUTBOUND_LIST_5300_EXISTS,
442 		SA_BD_SAS,
443 		0,
444 		INTR_PERF_MASK,
445 		0,
446 		1
447 	},
448 	{
449 		"Smart Array P431 Controller",
450 		8,
451 		0x103c,
452 		0x1923,
453 		OUTBOUND_LIST_5300_EXISTS,
454 		SA_BD_SAS,
455 		0,
456 		INTR_PERF_MASK,
457 		0,
458 		1
459 	},
460 	{
461 		"Smart Array P731m Controller",
462 		8,
463 		0x103c,
464 		0x1926,
465 		OUTBOUND_LIST_5300_EXISTS,
466 		SA_BD_SAS,
467 		0,
468 		INTR_PERF_MASK,
469 		0,
470 		1
471 	},
472 	{
473 		"Smart Array P830i Controller",
474 		8,
475 		0x103c,
476 		0x1921,
477 		OUTBOUND_LIST_5300_EXISTS,
478 		SA_BD_SAS,
479 		0,
480 		INTR_PERF_MASK,
481 		0,
482 		1
483 	},
484 	{
485 		"Smart Array P830 Controller",
486 		8,
487 		0x103c,
488 		0x1924,
489 		OUTBOUND_LIST_5300_EXISTS,
490 		SA_BD_SAS,
491 		0,
492 		INTR_PERF_MASK,
493 		0,
494 		1
495 	},
496 	{
497 		"Smart Array P244br Controller",
498 		8,
499 		0x103c,
500 		0x21bd,
501 		OUTBOUND_LIST_5300_EXISTS,
502 		SA_BD_SAS,
503 		0,
504 		INTR_PERF_MASK,
505 		0,
506 		1
507 	},
508 	{
509 		"Smart Array P741m Controller",
510 		8,
511 		0x103c,
512 		0x21be,
513 		OUTBOUND_LIST_5300_EXISTS,
514 		SA_BD_SAS,
515 		0,
516 		INTR_PERF_MASK,
517 		0,
518 		1
519 	},
520 	{
521 		"Smart Array H240ar Controller",
522 		8,
523 		0x103c,
524 		0x21bf,
525 		OUTBOUND_LIST_5300_EXISTS,
526 		SA_BD_SAS,
527 		0,
528 		INTR_PERF_MASK,
529 		0,
530 		1
531 	},
532 	{
533 		"Smart Array P440ar Controller",
534 		8,
535 		0x103c,
536 		0x21c0,
537 		OUTBOUND_LIST_5300_EXISTS,
538 		SA_BD_SAS,
539 		0,
540 		INTR_PERF_MASK,
541 		0,
542 		1
543 	},
544 	{
545 		"Smart Array P840ar Controller",
546 		8,
547 		0x103c,
548 		0x21c1,
549 		OUTBOUND_LIST_5300_EXISTS,
550 		SA_BD_SAS,
551 		0,
552 		INTR_PERF_MASK,
553 		0,
554 		1
555 	},
556 	{
557 		"Smart Array P440 Controller",
558 		8,
559 		0x103c,
560 		0x21c2,
561 		OUTBOUND_LIST_5300_EXISTS,
562 		SA_BD_SAS,
563 		0,
564 		INTR_PERF_MASK,
565 		0,
566 		1
567 	},
568 	{
569 		"Smart Array P441 Controller",
570 		8,
571 		0x103c,
572 		0x21c3,
573 		OUTBOUND_LIST_5300_EXISTS,
574 		SA_BD_SAS,
575 		0,
576 		INTR_PERF_MASK,
577 		0,
578 		1
579 	},
580 	{
581 		"Smart Array P841 Controller",
582 		8,
583 		0x103c,
584 		0x21c5,
585 		OUTBOUND_LIST_5300_EXISTS,
586 		SA_BD_SAS,
587 		0,
588 		INTR_PERF_MASK,
589 		0,
590 		1
591 	},
592 	{
593 		"Smart Array H244br Controller",
594 		8,
595 		0x103c,
596 		0x21c6,
597 		OUTBOUND_LIST_5300_EXISTS,
598 		SA_BD_SAS,
599 		0,
600 		INTR_PERF_MASK,
601 		0,
602 		1
603 	},
604 	{
605 		"Smart Array H240 Controller",
606 		8,
607 		0x103c,
608 		0x21c7,
609 		OUTBOUND_LIST_5300_EXISTS,
610 		SA_BD_SAS,
611 		0,
612 		INTR_PERF_MASK,
613 		0,
614 		1
615 	},
616 	{
617 		"Smart Array H241 Controller",
618 		8,
619 		0x103c,
620 		0x21c8,
621 		OUTBOUND_LIST_5300_EXISTS,
622 		SA_BD_SAS,
623 		0,
624 		INTR_PERF_MASK,
625 		0,
626 		1
627 	},
628 	{
629 		"Smart Array P246br Controller",
630 		8,
631 		0x103c,
632 		0x21ca,
633 		OUTBOUND_LIST_5300_EXISTS,
634 		SA_BD_SAS,
635 		0,
636 		INTR_PERF_MASK,
637 		0,
638 		1
639 	},
640 	{
641 		"Smart Array P840 Controller",
642 		8,
643 		0x103c,
644 		0x21cb,
645 		OUTBOUND_LIST_5300_EXISTS,
646 		SA_BD_SAS,
647 		0,
648 		INTR_PERF_MASK,
649 		0,
650 		1
651 	},
652 	{
653 		"Smart Array P542t Controller",
654 		8,
655 		0x103c,
656 		0x21cc,
657 		OUTBOUND_LIST_5300_EXISTS,
658 		SA_BD_SAS,
659 		0,
660 		INTR_PERF_MASK,
661 		0,
662 		1
663 	},
664 	{
665 		"Smart Array P240tr Controller",
666 		8,
667 		0x103c,
668 		0x21cd,
669 		OUTBOUND_LIST_5300_EXISTS,
670 		SA_BD_SAS,
671 		0,
672 		INTR_PERF_MASK,
673 		0,
674 		1
675 	},
676 	{
677 		"Smart Array H240nr Controller",
678 		8,
679 		0x103c,
680 		0x21ce,
681 		OUTBOUND_LIST_5300_EXISTS,
682 		SA_BD_SAS,
683 		0,
684 		INTR_PERF_MASK,
685 		0,
686 		1
687 	}
688 };
689 
690 #define	NBOARD_DEFS (sizeof (cpqary3_bds) / sizeof (cpqary3_bd_t))
691 
692 cpqary3_bd_t *
693 cpqary3_bd_getbybid(uint32_t bid)
694 {
695 	uint16_t vid = ((bid >> 16) & 0xffff);
696 	uint16_t sid = (bid & 0xffff);
697 	int i;
698 
699 	/* search the array for a matching board */
700 	for (i = 0; i < NBOARD_DEFS; i++) {
701 		if ((vid == cpqary3_bds[i].bd_pci_subvenid) &&
702 		    (sid == cpqary3_bds[i].bd_pci_subsysid))
703 			return (&(cpqary3_bds[i]));
704 	}
705 
706 	/* board id not found */
707 	return (NULL);
708 }
709