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 *
cpqary3_bd_getbybid(uint32_t bid)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