Lines Matching defs:schpc_p

113 static schpc_t	*schpc_p;
435 schpc_p = (schpc_t *)ddi_get_soft_state(per_schpc_state,
438 if (schpc_p == NULL) {
442 mutex_init(&schpc_p->schpc_mutex, NULL, MUTEX_DRIVER, NULL);
443 cv_init(&schpc_p->schpc_cv, NULL, CV_DRIVER, NULL);
452 schpc_p->schpc_transid = 0;
454 schpc_p->schpc_number_of_slots = STARCAT_MAX_SLOTS;
458 schpc_p->schpc_number_of_slots);
460 schpc_p->schpc_hotplugmodel = ddi_getprop(DDI_DEV_T_ANY,
464 instance, schpc_p->schpc_hotplugmodel);
471 if (schpc_p->schpc_hotplugmodel !=
473 schpc_p->schpc_hotplugmodel =
477 schpc_p->schpc_slot = (schpc_slot_t *)kmem_zalloc((size_t)
478 (schpc_p->schpc_number_of_slots * sizeof (schpc_slot_t)),
481 schpc_p->schpc_devi = devi;
482 schpc_p->schpc_instance = instance;
489 (void *)schpc_p, 0, &p0, TS_RUN, minclsyspri);
561 mutex_enter(&schpc_p->schpc_mutex);
563 slot = schpc_slot_get_index(schpc_p, slot_hdl);
565 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_HPCINITED)) {
567 mutex_exit(&schpc_p->schpc_mutex);
574 if (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_CONNECTED) {
575 mutex_exit(&schpc_p->schpc_mutex);
582 while (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_EXECUTING) {
583 cv_wait(&schpc_p->schpc_cv, &schpc_p->schpc_mutex);
586 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_EXECUTING;
588 mutex_exit(&schpc_p->schpc_mutex);
590 expander = schpc_p->schpc_slot[slot].expander; /* get expander */
591 board = schpc_p->schpc_slot[slot].board; /* get board */
598 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_OCC_GOOD)) {
603 schpc_p->schpc_slot[slot].ap_id);
610 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_REC_GOOD)) {
615 schpc_p->schpc_slot[slot].ap_id);
631 SCHPC_SLOT_NUM(slot), schpc_p->schpc_slot[slot].ap_id);
643 SCHPC_SLOT_NUM(slot), schpc_p->schpc_slot[slot].ap_id);
668 schpc_p->schpc_slot[slot].ap_id);
676 (schpc_p->schpc_slot[slot].saved_regs == NULL)) {
691 schpc_p->schpc_slot[slot].ap_id);
717 SCHPC_SLOT_NUM(slot), schpc_p->schpc_slot[slot].ap_id);
746 schpc_p->schpc_slot[slot].ap_id);
759 schpc_p->schpc_slot[slot].ap_id);
772 schpc_p->schpc_slot[slot].ap_id);
798 schpc_p->schpc_slot[slot].ap_id);
840 schpc_p->schpc_slot[slot].ap_id);
858 schpc_p->schpc_slot[slot].state |=
864 find_dev.cname = schpc_p->schpc_slot[slot].nexus_path;
897 mutex_enter(&schpc_p->schpc_mutex);
898 schpc_p->schpc_slot[slot].state &=
915 cv_signal(&schpc_p->schpc_cv);
916 mutex_exit(&schpc_p->schpc_mutex);
928 schpc_p->schpc_slot[slot].ap_id);
942 schpc_p->schpc_slot[slot].ap_id);
947 mutex_enter(&schpc_p->schpc_mutex);
948 schpc_p->schpc_slot[slot].state &=
950 cv_signal(&schpc_p->schpc_cv);
951 mutex_exit(&schpc_p->schpc_mutex);
975 mutex_enter(&schpc_p->schpc_mutex);
977 slot = schpc_slot_get_index(schpc_p, slot_hdl);
979 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_HPCINITED)) {
982 mutex_exit(&schpc_p->schpc_mutex);
989 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_CONNECTED)) {
990 mutex_exit(&schpc_p->schpc_mutex);
997 while (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_EXECUTING) {
998 cv_wait(&schpc_p->schpc_cv, &schpc_p->schpc_mutex);
1001 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_EXECUTING;
1003 mutex_exit(&schpc_p->schpc_mutex);
1005 expander = schpc_p->schpc_slot[slot].expander; /* get expander */
1006 board = schpc_p->schpc_slot[slot].board; /* get board */
1019 schpc_p->schpc_slot[slot].ap_id);
1051 SCHPC_SLOT_NUM(slot), schpc_p->schpc_slot[slot].ap_id);
1066 schpc_p->schpc_slot[slot].state &=
1075 mutex_enter(&schpc_p->schpc_mutex);
1076 schpc_p->schpc_slot[slot].state &=
1078 cv_signal(&schpc_p->schpc_cv);
1079 mutex_exit(&schpc_p->schpc_mutex);
1090 schpc_p->schpc_slot[slot].ap_id);
1096 mutex_enter(&schpc_p->schpc_mutex);
1097 schpc_p->schpc_slot[slot].state &=
1099 cv_signal(&schpc_p->schpc_cv);
1100 mutex_exit(&schpc_p->schpc_mutex);
1126 mutex_enter(&schpc_p->schpc_mutex);
1128 slot = schpc_slot_get_index(schpc_p, slot_hdl);
1130 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_HPCINITED)) {
1133 mutex_exit(&schpc_p->schpc_mutex);
1140 while (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_EXECUTING) {
1141 cv_wait(&schpc_p->schpc_cv, &schpc_p->schpc_mutex);
1144 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_EXECUTING;
1146 mutex_exit(&schpc_p->schpc_mutex);
1148 expander = schpc_p->schpc_slot[slot].expander; /* get expander */
1149 board = schpc_p->schpc_slot[slot].board; /* get board */
1159 switch (schpc_p->schpc_slot[slot].led.led_power) {
1171 switch (schpc_p->schpc_slot[slot].led.led_service) {
1183 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1204 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1218 switch (schpc_p->schpc_slot[slot].led.led_power) {
1231 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1244 switch (schpc_p->schpc_slot[slot].led.led_service) {
1260 mutex_enter(&schpc_p->schpc_mutex);
1261 schpc_p->schpc_slot[slot].state &=
1263 cv_signal(&schpc_p->schpc_cv);
1264 mutex_exit(&schpc_p->schpc_mutex);
1269 mutex_enter(&schpc_p->schpc_mutex);
1270 schpc_p->schpc_slot[slot].state &=
1272 cv_signal(&schpc_p->schpc_cv);
1273 mutex_exit(&schpc_p->schpc_mutex);
1288 schpc_p->schpc_slot[slot].led.led_fault =
1293 schpc_p->schpc_slot[slot].led.led_fault =
1298 schpc_p->schpc_slot[slot].led.led_fault =
1307 schpc_p->schpc_slot[slot].led.led_power =
1312 schpc_p->schpc_slot[slot].led.led_power =
1317 schpc_p->schpc_slot[slot].led.led_power =
1326 schpc_p->schpc_slot[slot].led.led_fault =
1331 schpc_p->schpc_slot[slot].led.led_fault =
1336 schpc_p->schpc_slot[slot].led.led_fault =
1345 schpc_p->schpc_slot[slot].led.led_service =
1350 schpc_p->schpc_slot[slot].led.led_service =
1355 schpc_p->schpc_slot[slot].led.led_service =
1362 mutex_enter(&schpc_p->schpc_mutex);
1363 schpc_p->schpc_slot[slot].state &=
1365 cv_signal(&schpc_p->schpc_cv);
1366 mutex_exit(&schpc_p->schpc_mutex);
1373 mutex_enter(&schpc_p->schpc_mutex);
1374 schpc_p->schpc_slot[slot].state &=
1376 cv_signal(&schpc_p->schpc_cv);
1377 mutex_exit(&schpc_p->schpc_mutex);
1404 schpc_p->schpc_slot[slot].state |=
1410 schpc_p->schpc_slot[slot].state &=
1416 mutex_enter(&schpc_p->schpc_mutex);
1417 schpc_p->schpc_slot[slot].state &=
1419 cv_signal(&schpc_p->schpc_cv);
1420 mutex_exit(&schpc_p->schpc_mutex);
1425 mutex_enter(&schpc_p->schpc_mutex);
1426 schpc_p->schpc_slot[slot].state &=
1428 cv_signal(&schpc_p->schpc_cv);
1429 mutex_exit(&schpc_p->schpc_mutex);
1447 mutex_enter(&schpc_p->schpc_mutex);
1448 schpc_p->schpc_slot[slot].state &=
1450 cv_signal(&schpc_p->schpc_cv);
1451 mutex_exit(&schpc_p->schpc_mutex);
1460 mutex_enter(&schpc_p->schpc_mutex);
1461 schpc_p->schpc_slot[slot].state &=
1463 cv_signal(&schpc_p->schpc_cv);
1464 mutex_exit(&schpc_p->schpc_mutex);
1472 if (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_ENUM) {
1477 rval = schpc_disconnect((caddr_t)schpc_p,
1478 schpc_p->schpc_slot[slot].slot_handle,
1481 schpc_p->schpc_slot[slot].state &=
1485 mutex_enter(&schpc_p->schpc_mutex);
1486 schpc_p->schpc_slot[slot].state &=
1488 cv_signal(&schpc_p->schpc_cv);
1489 mutex_exit(&schpc_p->schpc_mutex);
1497 schpc_p->schpc_slot[slot].state |=
1500 mutex_enter(&schpc_p->schpc_mutex);
1501 schpc_p->schpc_slot[slot].state &=
1503 cv_signal(&schpc_p->schpc_cv);
1504 mutex_exit(&schpc_p->schpc_mutex);
1511 schpc_p->schpc_slot[slot].state &=
1514 mutex_enter(&schpc_p->schpc_mutex);
1515 schpc_p->schpc_slot[slot].state &=
1517 cv_signal(&schpc_p->schpc_cv);
1518 mutex_exit(&schpc_p->schpc_mutex);
1533 mutex_enter(&schpc_p->schpc_mutex);
1534 schpc_p->schpc_slot[slot].state &=
1536 cv_signal(&schpc_p->schpc_cv);
1537 mutex_exit(&schpc_p->schpc_mutex);
1552 mutex_enter(&schpc_p->schpc_mutex);
1553 schpc_p->schpc_slot[slot].state &=
1555 cv_signal(&schpc_p->schpc_cv);
1556 mutex_exit(&schpc_p->schpc_mutex);
1564 mutex_enter(&schpc_p->schpc_mutex);
1565 schpc_p->schpc_slot[slot].state &=
1567 cv_signal(&schpc_p->schpc_cv);
1568 mutex_exit(&schpc_p->schpc_mutex);
1595 mutex_enter(&schpc_p->schpc_mutex);
1597 slot = schpc_slot_get_index(schpc_p, slot_hdl);
1599 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_HPCINITED)) {
1602 mutex_exit(&schpc_p->schpc_mutex);
1609 while (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_EXECUTING) {
1610 cv_wait(&schpc_p->schpc_cv, &schpc_p->schpc_mutex);
1613 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_EXECUTING;
1615 mutex_exit(&schpc_p->schpc_mutex);
1617 expander = schpc_p->schpc_slot[slot].expander; /* get expander */
1618 board = schpc_p->schpc_slot[slot].board; /* get board */
1628 switch (schpc_p->schpc_slot[slot].led.led_power) {
1640 switch (schpc_p->schpc_slot[slot].led.led_service) {
1652 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1682 mutex_enter(&schpc_p->schpc_mutex);
1683 schpc_p->schpc_slot[slot].state &=
1685 cv_signal(&schpc_p->schpc_cv);
1686 mutex_exit(&schpc_p->schpc_mutex);
1697 schpc_p->schpc_slot[slot].state |=
1703 schpc_p->schpc_slot[slot].state &=
1709 mutex_enter(&schpc_p->schpc_mutex);
1710 schpc_p->schpc_slot[slot].state &=
1712 cv_signal(&schpc_p->schpc_cv);
1713 mutex_exit(&schpc_p->schpc_mutex);
1718 mutex_enter(&schpc_p->schpc_mutex);
1719 schpc_p->schpc_slot[slot].state &=
1721 cv_signal(&schpc_p->schpc_cv);
1722 mutex_exit(&schpc_p->schpc_mutex);
1741 mutex_enter(&schpc_p->schpc_mutex);
1742 schpc_p->schpc_slot[slot].state &=
1744 cv_signal(&schpc_p->schpc_cv);
1745 mutex_exit(&schpc_p->schpc_mutex);
1754 mutex_enter(&schpc_p->schpc_mutex);
1755 schpc_p->schpc_slot[slot].state &=
1757 cv_signal(&schpc_p->schpc_cv);
1758 mutex_exit(&schpc_p->schpc_mutex);
1769 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1783 switch (schpc_p->schpc_slot[slot].led.led_power) {
1796 switch (schpc_p->schpc_slot[slot].led.led_fault) {
1809 switch (schpc_p->schpc_slot[slot].led.led_service) {
1825 mutex_enter(&schpc_p->schpc_mutex);
1826 schpc_p->schpc_slot[slot].state &=
1828 cv_signal(&schpc_p->schpc_cv);
1829 mutex_exit(&schpc_p->schpc_mutex);
1834 mutex_enter(&schpc_p->schpc_mutex);
1835 schpc_p->schpc_slot[slot].state &=
1837 cv_signal(&schpc_p->schpc_cv);
1838 mutex_exit(&schpc_p->schpc_mutex);
1853 schpc_p->schpc_slot[slot].led.led_fault =
1858 schpc_p->schpc_slot[slot].led.led_fault =
1863 schpc_p->schpc_slot[slot].led.led_fault =
1872 schpc_p->schpc_slot[slot].led.led_power =
1877 schpc_p->schpc_slot[slot].led.led_power =
1882 schpc_p->schpc_slot[slot].led.led_power =
1891 schpc_p->schpc_slot[slot].led.led_fault =
1896 schpc_p->schpc_slot[slot].led.led_fault =
1901 schpc_p->schpc_slot[slot].led.led_fault =
1910 schpc_p->schpc_slot[slot].led.led_service =
1915 schpc_p->schpc_slot[slot].led.led_service =
1920 schpc_p->schpc_slot[slot].led.led_service =
1927 mutex_enter(&schpc_p->schpc_mutex);
1928 schpc_p->schpc_slot[slot].state &=
1930 cv_signal(&schpc_p->schpc_cv);
1931 mutex_exit(&schpc_p->schpc_mutex);
1938 mutex_enter(&schpc_p->schpc_mutex);
1939 schpc_p->schpc_slot[slot].state &=
1941 cv_signal(&schpc_p->schpc_cv);
1942 mutex_exit(&schpc_p->schpc_mutex);
1950 schpc_p->schpc_slot[slot].state |=
1953 mutex_enter(&schpc_p->schpc_mutex);
1954 schpc_p->schpc_slot[slot].state &=
1956 cv_signal(&schpc_p->schpc_cv);
1957 mutex_exit(&schpc_p->schpc_mutex);
1964 schpc_p->schpc_slot[slot].state &=
1967 mutex_enter(&schpc_p->schpc_mutex);
1968 schpc_p->schpc_slot[slot].state &=
1970 cv_signal(&schpc_p->schpc_cv);
1971 mutex_exit(&schpc_p->schpc_mutex);
1978 mutex_enter(&schpc_p->schpc_mutex);
1979 schpc_p->schpc_slot[slot].state &=
1981 cv_signal(&schpc_p->schpc_cv);
1982 mutex_exit(&schpc_p->schpc_mutex);
2008 schpc_p->schpc_slot[slot].expander,
2009 schpc_p->schpc_slot[slot].board, SCHPC_SLOT_NUM(slot));
2011 expander = schpc_p->schpc_slot[slot].expander;
2012 board = schpc_p->schpc_slot[slot].board;
2018 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_REC_GOOD;
2019 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_OCC_GOOD;
2031 SCHPC_SLOT_NUM(slot), schpc_p->schpc_slot[slot].ap_id);
2033 schpc_p->schpc_slot[slot].state &= ~SCHPC_SLOTSTATE_REC_GOOD;
2043 schpc_p->schpc_slot[slot].state &= ~SCHPC_SLOTSTATE_REC_GOOD;
2053 schpc_p->schpc_slot[slot].ap_id);
2058 schpc_p->schpc_slot[slot].state &= ~SCHPC_SLOTSTATE_OCC_GOOD;
2065 schpc_p->schpc_slot[slot].ap_id);
2070 schpc_p->schpc_slot[slot].state &= ~SCHPC_SLOTSTATE_REC_GOOD;
2075 schpc_p->schpc_slot[slot].led.led_power = PCIMSG_LED_ON;
2085 schpc_p->schpc_slot[slot].ap_id);
2090 schpc_p->schpc_slot[slot].state &=
2104 schpc_p->schpc_slot[slot].ap_id);
2109 schpc_p->schpc_slot[slot].state &=
2123 schpc_p->schpc_slot[slot].ap_id);
2128 schpc_p->schpc_slot[slot].state &=
2143 schpc_p->schpc_slot[slot].state &=
2196 schpc_p->schpc_slot[slot].state |=
2208 schpc_p->schpc_slot[slot].state |=
2218 schpc_p->schpc_slot[slot].state &=
2236 schpc_p->schpc_slot[slot].led.led_power = LED_ON;
2239 schpc_p->schpc_slot[slot].led.led_power = LED_OFF;
2242 schpc_p->schpc_slot[slot].led.led_power = LED_FLASH;
2247 schpc_p->schpc_slot[slot].led.led_service = LED_ON;
2250 schpc_p->schpc_slot[slot].led.led_service = LED_OFF;
2253 schpc_p->schpc_slot[slot].led.led_service = LED_FLASH;
2258 schpc_p->schpc_slot[slot].led.led_fault = LED_ON;
2261 schpc_p->schpc_slot[slot].led.led_fault = LED_OFF;
2264 schpc_p->schpc_slot[slot].led.led_fault = LED_FLASH;
2305 if (schpc_p == NULL) {
2311 mutex_enter(&schpc_p->schpc_mutex);
2313 if (!(schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_HPCINITED)) {
2315 mutex_exit(&schpc_p->schpc_mutex);
2322 while (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_EXECUTING) {
2324 cv_wait(&schpc_p->schpc_cv, &schpc_p->schpc_mutex);
2327 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_EXECUTING;
2329 mutex_exit(&schpc_p->schpc_mutex);
2338 mutex_enter(&schpc_p->schpc_mutex);
2339 schpc_p->schpc_slot[slot].state &=
2341 cv_signal(&schpc_p->schpc_cv);
2342 mutex_exit(&schpc_p->schpc_mutex);
2352 mutex_enter(&schpc_p->schpc_mutex);
2353 schpc_p->schpc_slot[slot].state &=
2355 cv_signal(&schpc_p->schpc_cv);
2356 mutex_exit(&schpc_p->schpc_mutex);
2365 if (schpc_p->schpc_slot[slot].slot_ops == NULL) {
2370 mutex_enter(&schpc_p->schpc_mutex);
2371 schpc_p->schpc_slot[slot].state &=
2373 cv_signal(&schpc_p->schpc_cv);
2374 mutex_exit(&schpc_p->schpc_mutex);
2388 schpc_p->schpc_slot[slot].state |=
2392 schpc_p->schpc_slot[slot].slot_handle,
2395 schpc_p->schpc_slot[slot].state &=
2399 schpc_p->schpc_slot[slot].slot_handle,
2413 if (schpc_p->schpc_slot[slot].state &
2425 schpc_p->schpc_slot[slot].state &=
2427 rval = schpc_disconnect((caddr_t)schpc_p,
2428 schpc_p->schpc_slot[slot].slot_handle,
2430 mutex_enter(&schpc_p->schpc_mutex);
2431 while (schpc_p->schpc_slot[slot].state &
2436 cv_wait(&schpc_p->schpc_cv,
2437 &schpc_p->schpc_mutex);
2440 schpc_p->schpc_slot[slot].state |=
2443 mutex_exit(&schpc_p->schpc_mutex);
2445 schpc_p->schpc_slot[slot].state |=
2448 schpc_p->schpc_slot[slot].state &=
2452 schpc_p->schpc_slot[slot].slot_handle,
2460 if (schpc_p->schpc_slot[slot].state &
2470 mutex_enter(&schpc_p->schpc_mutex);
2471 schpc_p->schpc_slot[slot].state &=
2473 cv_signal(&schpc_p->schpc_cv);
2474 mutex_exit(&schpc_p->schpc_mutex);
2480 schpc_p->schpc_slot[slot].state |=
2483 schpc_p->schpc_slot[slot].state &=
2487 schpc_p->schpc_slot[slot].slot_handle,
2490 if (schpc_p->schpc_slot[slot].state &
2495 schpc_p->schpc_slot[slot].state &=
2498 rval = schpc_connect((caddr_t)schpc_p,
2499 schpc_p->schpc_slot[slot].slot_handle,
2506 mutex_enter(&schpc_p->schpc_mutex);
2507 schpc_p->schpc_slot[slot].state &=
2509 cv_signal(&schpc_p->schpc_cv);
2510 mutex_exit(&schpc_p->schpc_mutex);
2515 mutex_enter(&schpc_p->schpc_mutex);
2516 while (schpc_p->schpc_slot[slot].state &
2521 cv_wait(&schpc_p->schpc_cv,
2522 &schpc_p->schpc_mutex);
2525 schpc_p->schpc_slot[slot].state |=
2528 mutex_exit(&schpc_p->schpc_mutex);
2531 schpc_p->schpc_slot[slot].slot_handle,
2552 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_ENUM;
2555 schpc_p->schpc_slot[slot].slot_handle,
2567 schpc_p->schpc_slot[slot].state &=
2571 schpc_p->schpc_slot[slot].slot_handle,
2578 schpc_p->schpc_slot[slot].state |=
2582 schpc_p->schpc_slot[slot].slot_handle,
2598 schpc_p->schpc_slot[slot].state |=
2602 schpc_p->schpc_slot[slot].slot_handle,
2611 if (schpc_p->schpc_slot[slot].state &
2617 schpc_p->schpc_slot[slot].state &=
2621 schpc_p->schpc_slot[slot].slot_handle,
2638 schpc_p->schpc_slot[slot].state &=
2642 schpc_p->schpc_slot[slot].slot_handle,
2650 schpc_p->schpc_slot[slot].state |=
2654 schpc_p->schpc_slot[slot].slot_handle,
2661 mutex_enter(&schpc_p->schpc_mutex);
2662 schpc_p->schpc_slot[slot].state &=
2664 cv_signal(&schpc_p->schpc_cv);
2665 mutex_exit(&schpc_p->schpc_mutex);
3094 if (schpc_p == NULL) {
3108 transid = schpc_gettransid(schpc_p, slot);
3188 if (schpc_p == NULL) {
3208 transid = schpc_gettransid(schpc_p, slot);
3255 if (schpc_p == NULL) {
3262 schpc_p->schpc_slot[slot].led.led_power = PCIMSG_LED_ON;
3265 schpc_p->schpc_slot[slot].led.led_power = PCIMSG_LED_OFF;
3268 schpc_p->schpc_slot[slot].led.led_power = PCIMSG_LED_FLASH;
3271 schpc_p->schpc_slot[slot].led.led_service = PCIMSG_LED_ON;
3274 schpc_p->schpc_slot[slot].led.led_service = PCIMSG_LED_OFF;
3277 schpc_p->schpc_slot[slot].led.led_service = PCIMSG_LED_FLASH;
3280 schpc_p->schpc_slot[slot].led.led_fault = PCIMSG_LED_ON;
3283 schpc_p->schpc_slot[slot].led.led_fault = PCIMSG_LED_OFF;
3286 schpc_p->schpc_slot[slot].led.led_fault = PCIMSG_LED_FLASH;
3289 switch (schpc_p->schpc_slot[slot].led.led_power) {
3300 switch (schpc_p->schpc_slot[slot].led.led_service) {
3311 switch (schpc_p->schpc_slot[slot].led.led_fault) {
3354 schpc_gettransid(schpc_t *schpc_p, int slot)
3358 mutex_enter(&schpc_p->schpc_mutex);
3360 if (++schpc_p->schpc_transid == 0)
3361 schpc_p->schpc_transid = 1;
3363 trans_id = (schpc_p->schpc_slot[slot].expander<<24) |
3364 (schpc_p->schpc_slot[slot].board << 16) | schpc_p->schpc_transid;
3366 mutex_exit(&schpc_p->schpc_mutex);
3380 schpc_slot_get_index(schpc_t *schpc_p, hpc_slot_t slot)
3385 ASSERT(MUTEX_HELD(&schpc_p->schpc_mutex));
3387 for (i = 0; i < schpc_p->schpc_number_of_slots; i++) {
3388 if (schpc_p->schpc_slot[i].slot_handle == slot)
3403 schpc_register_all_slots(schpc_t *schpc_p)
3412 "schpc_register_all_slots(schpc_p=%p)", (void *)schpc_p);
3502 if (schpc_p == NULL) {
3582 if (schpc_p->schpc_slot[slot].devi) {
3601 schpc_p->schpc_slot[slot].devi = bdip;
3603 schpc_p->schpc_slot[slot].expander = expander;
3604 schpc_p->schpc_slot[slot].board = board;
3605 schpc_p->schpc_slot[slot].schizo = schizo;
3606 schpc_p->schpc_slot[slot].leaf = leaf;
3611 schpc_p->schpc_slot[slot].pci_id = 1;
3615 (void) strcpy(schpc_p->schpc_slot[slot].ap_id, (char *)&ap_id);
3618 (void) ddi_pathname(sdip, schpc_p->schpc_slot[slot].nexus_path);
3631 schpc_test((caddr_t)schpc_p, slot, 0, 0);
3634 schpc_p->schpc_slot[slot].state = 0;
3640 schpc_p->schpc_slot[slot].state = 0;
3647 if (schpc_p->schpc_slot[slot].state & SCHPC_SLOTSTATE_REC_GOOD) {
3652 schpc_p->schpc_slot[slot].slot_ops = slot_ops;
3657 schpc_p->schpc_slot[slot].state &=
3666 if (schpc_p->schpc_hotplugmodel ==
3673 schpc_p->schpc_slot[slot].pci_id;
3684 schpc_p->schpc_slot[slot].ap_id);
3692 if (schpc_p->schpc_hotplugmodel ==
3708 "- nexus =%s schpc_p=%p slot=%d pci number=%d ap_id=%s",
3709 schpc_p->schpc_slot[slot].nexus_path,
3710 (void *)schpc_p, SCHPC_SLOT_NUM(slot),
3714 if (hpc_slot_register(schpc_p->schpc_devi,
3715 schpc_p->schpc_slot[slot].nexus_path, &slot_info,
3716 &schpc_p->schpc_slot[slot].slot_handle,
3717 slot_ops, (caddr_t)schpc_p, 0) != 0) {
3724 "Slot %s", schpc_p->schpc_instance,
3727 hpc_free_slot_ops(schpc_p->schpc_slot[slot].slot_ops);
3729 schpc_p->schpc_slot[slot].slot_ops = NULL;
3737 schpc_p->schpc_slot[slot].state |= SCHPC_SLOTSTATE_HPCINITED;
3756 if (schpc_p == NULL) {
3763 for (slot = 0; slot < schpc_p->schpc_number_of_slots; slot++) {
3764 if (schpc_p->schpc_slot[slot].devi == dip) {
3766 if (schpc_p->schpc_slot[slot].slot_ops) {
3768 &schpc_p->schpc_slot[slot].slot_handle)) {
3776 schpc_p->schpc_slot[slot].slot_ops);
3778 schpc_p->schpc_slot[slot].slot_ops =
3781 schpc_p->schpc_slot[slot].devi = NULL;
3786 schpc_p->schpc_slot[slot].devi = NULL;
3889 while (schpc_p->schpc_slot[slot].pci_id
3901 if (schpc_p->schpc_slot[slot].pci_id !=
4108 if (ddi_regs_map_setup(schpc_p->schpc_slot[slot].devi, reg,
4109 &leaf_regs, 0, 0, &attr, &schpc_p->schpc_slot[slot].
4112 schpc_p->schpc_slot[slot].saved_regs_va[reg] = NULL;
4116 schpc_p->schpc_slot[slot].saved_regs_va[reg] = leaf_regs;
4131 schpc_p->schpc_slot[slot].saved_size = (save_entry * sizeof (uint64_t));
4133 if (schpc_p->schpc_slot[slot].saved_size == 0)
4136 schpc_p->schpc_slot[slot].saved_regs =
4137 (uint64_t *)kmem_zalloc(schpc_p->schpc_slot[slot].saved_size,
4161 if (schpc_p->schpc_slot[slot].saved_regs == NULL)
4181 if (schpc_p->schpc_slot[slot].saved_regs_va[reg]) {
4184 &schpc_p->schpc_slot[slot].saved_handle[reg]);
4186 schpc_p->schpc_slot[slot].saved_regs_va[reg] = NULL;
4190 kmem_free(schpc_p->schpc_slot[slot].saved_regs,
4191 schpc_p->schpc_slot[slot].saved_size);
4193 schpc_p->schpc_slot[slot].saved_size = 0;
4194 schpc_p->schpc_slot[slot].saved_regs = NULL;
4209 schpc_p->schpc_slot[slot].saved_regs[save_entry] =
4211 schpc_p->schpc_slot[slot].saved_handle[reg],
4212 (uint64_t *)(schpc_p->schpc_slot[slot].
4221 schpc_p->schpc_slot[slot].
4227 schpc_p->schpc_slot[slot].saved_regs[save_entry] =
4229 schpc_p->schpc_slot[slot].saved_handle[reg],
4230 (uint32_t *)(schpc_p->schpc_slot[slot].
4240 schpc_p->schpc_slot[slot].
4246 schpc_p->schpc_slot[slot].saved_regs[save_entry] =
4248 schpc_p->schpc_slot[slot].saved_handle[reg],
4249 (uint16_t *)(schpc_p->schpc_slot[slot].
4259 schpc_p->schpc_slot[slot].
4265 schpc_p->schpc_slot[slot].saved_regs[save_entry] =
4267 schpc_p->schpc_slot[slot].saved_handle[reg],
4268 (uint8_t *)(schpc_p->schpc_slot[slot].
4278 schpc_p->schpc_slot[slot].
4307 schpc_p->schpc_slot[slot].
4311 ddi_put64(schpc_p->schpc_slot[slot].saved_handle[reg],
4312 (uint64_t *)(schpc_p->schpc_slot[slot].
4316 schpc_p->schpc_slot[slot].saved_regs[save_entry]);
4325 schpc_p->schpc_slot[slot].
4329 ddi_put32(schpc_p->schpc_slot[slot].saved_handle[reg],
4330 (uint32_t *)(schpc_p->schpc_slot[slot].
4334 schpc_p->schpc_slot[slot].saved_regs[save_entry]);
4343 schpc_p->schpc_slot[slot].
4347 ddi_put16(schpc_p->schpc_slot[slot].saved_handle[reg],
4348 (uint16_t *)(schpc_p->schpc_slot[slot].
4352 schpc_p->schpc_slot[slot].saved_regs[save_entry]);
4361 schpc_p->schpc_slot[slot].
4365 ddi_put8(schpc_p->schpc_slot[slot].saved_handle[reg],
4366 (uint8_t *)(schpc_p->schpc_slot[slot].
4370 schpc_p->schpc_slot[slot].saved_regs[save_entry]);
4395 name = ddi_binding_name(schpc_p->schpc_slot[slot].devi);
4399 schpc_p->schpc_slot[slot].devi,
4441 name = ddi_binding_name(schpc_p->schpc_slot[slot].devi);
4445 schpc_p->schpc_slot[slot].devi,