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