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