Lines Matching defs:hsp

192 	hsc_slot_t *hsp = (hsc_slot_t *)ops_arg;
196 DEBUG2("hsc_connect: slot %d, healthy %d", hsp->hs_slot_number,
197 hsp->hs_board_healthy);
199 if (!(hsp->hs_flags & (HSC_ENABLED|HSC_SLOT_ENABLED)))
202 if (hsp->hs_flags & HSC_SCB_HOTSWAPPED)
210 if (hsp->hs_flags & HSC_SLOT_BAD_STATE) {
215 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
222 rc = scsb_get_slot_state(hsp->hs_hpchandle, hsp->hs_slot_number,
227 hsp->hs_slot_state = rstate;
228 if (hsp->hs_slot_state == HPC_SLOT_EMPTY) {
232 hsp->hs_slot_number);
237 if (hsp->hs_slot_state == HPC_SLOT_CONNECTED)
244 if (scsb_connect_slot(hsp->hs_hpchandle, hsp->hs_slot_number,
245 hsp->hs_board_healthy) != DDI_SUCCESS) {
247 hsp->hs_slot_number);
250 if (hsp->hs_slot_state != HPC_SLOT_CONNECTED) {
251 if (hsp->hs_board_healthy == B_FALSE) {
253 " slot %d", hsp->hs_slot_number);
256 hsc = hsp->hsc;
257 hsc->hsp_last = hsp;
258 if (scsb_reset_slot(hsp->hs_hpchandle,
259 hsp->hs_slot_number, SCSB_UNRESET_SLOT) != 0) {
270 if (hsp->hs_flags & HSC_ENUM_FAILED) {
271 hsp->hs_flags &= ~HSC_ENUM_FAILED;
275 hsp->hs_slot_number);
277 hsp->hs_slot_state = HPC_SLOT_CONNECTED;
278 (void) hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
298 hsc_slot_t *hsp = (hsc_slot_t *)ops_arg;
304 DEBUG1("hsc_disconnect: slot %d", hsp->hs_slot_number);
306 if (hsp->hs_board_configured) {
310 func, hsp->hs_slot_number);
315 if (hsp->hs_slot_state == HPC_SLOT_EMPTY) {
318 func, hsp->hs_slot_number);
323 if (hsp->hs_slot_state == HPC_SLOT_DISCONNECTED) {
331 if (hsp->hs_flags & HSC_SCB_HOTSWAPPED)
335 if (scsb_disconnect_slot(hsp->hs_hpchandle, B_TRUE, hsp->hs_slot_number)
338 hsc = hsp->hsc;
339 if (hsc->hsp_last == hsp)
354 hsc_slot_t *hsp = (hsc_slot_t *)ops_arg;
357 (scsb_enable_enum(hsp->hsc) == DDI_SUCCESS)) {
372 hsc_slot_t *hsp = (hsc_slot_t *)ops_arg;
375 (scsb_disable_enum(hsp->hsc, SCSB_HSC_FORCE_REMOVE)
377 hsp->hs_flags &= ~HSC_ENUM_FAILED;
384 hsc_led_op(hsc_slot_t *hsp, int cmd, hpc_led_t led, hpc_led_state_t led_state)
390 (void) hsc_led_state(hsp, cmd, &ledinfo);
394 hsc_led_state(hsc_slot_t *hsp, int cmd, hpc_led_info_t *hlip)
401 hsp->hs_slot_number, hlip->led, hlip->state);
404 sunit.unit_number = hsp->hs_slot_number;
411 hlsp = &hsp->hs_fault_led_state;
415 hlsp = &hsp->hs_active_led_state;
439 res = scsb_led_set(hsp->hs_hpchandle, &sunit, sunit.led_type);
446 res = scsb_led_get(hsp->hs_hpchandle, &sunit, sunit.led_type);
462 hsc_get_slot_state(hsc_slot_t *hsp, hpc_slot_state_t *hssp)
470 DEBUG1("hsc_get_slot_state: slot %d", hsp->hs_slot_number);
471 rc = scsb_get_slot_state(hsp->hs_hpchandle, hsp->hs_slot_number,
476 orstate = hsp->hs_slot_state;
478 hsp->hs_slot_state = rstate;
479 switch (hsp->hs_slot_state) {
491 *hssp = hsp->hs_slot_state;
494 if ((hsp->hs_flags & HSC_SCB_HOTSWAPPED) &&
500 if (hsp->hs_board_configured == B_TRUE) {
501 hsp->hs_slot_state = *hssp;
509 " to SCB hotswap!", hsp->hs_slot_number);
517 hsc_set_config_state(hsc_slot_t *hsp, int cmd)
519 hsc_state_t *hsc = hsp->hsc;
521 DEBUG1("hsc_set_config_state: slot %d", hsp->hs_slot_number);
530 if (hsp->hs_board_configured == B_TRUE) {
531 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
535 hsp->hs_board_configured = B_TRUE;
536 hsp->hs_board_configuring = B_FALSE;
538 hsp->hs_flags & HSC_ALARM_CARD_PRES)
539 (void) scsb_hsc_ac_op(hsp->hs_hpchandle,
540 hsp->hs_slot_number, SCSB_HSC_AC_CONFIGURED);
542 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
544 if (hsp->hs_flags & HSC_AUTOCFG)
545 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
548 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
550 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
552 if (hsc->hsp_last == hsp)
556 hsp->hs_board_configured = B_FALSE;
557 hsp->hs_board_unconfiguring = B_FALSE;
558 hsp->hs_flags &= ~HSC_SLOT_BAD_STATE;
559 if (hsp->hs_flags & HSC_ALARM_CARD_PRES)
560 (void) scsb_hsc_ac_op(hsp->hs_hpchandle,
561 hsp->hs_slot_number, SCSB_HSC_AC_UNCONFIGURED);
562 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
568 ((hsp->hs_flags & HSC_AUTOCFG) !=
570 if (scsb_reset_slot(hsp->hs_hpchandle,
571 hsp->hs_slot_number, SCSB_RESET_SLOT) == 0) {
573 hsp->hs_slot_state = HPC_SLOT_DISCONNECTED;
574 hsp->hs_board_healthy = B_FALSE;
575 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
581 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
583 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
587 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
592 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
594 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
640 hsc_get_board_type(hsc_slot_t *hsp, hpc_board_type_t *hbtp)
642 *hbtp = hsp->hs_board_type;
649 hsc_autoconfig(hsc_slot_t *hsp, int cmd)
655 DEBUG1("hsc_autoconfig: slot %d", hsp->hs_slot_number);
657 hsp->hs_slot_number);
660 hsp->hs_flags |= HSC_AUTOCFG;
661 (void) ddi_prop_update_string(DDI_DEV_T_NONE, hsp->hsc->dip,
663 if ((res = scsb_enable_enum(hsp->hsc)) == DDI_SUCCESS) {
664 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
668 (void) ddi_prop_update_string(DDI_DEV_T_NONE, hsp->hsc->dip,
670 hsp->hs_flags &= ~HSC_AUTOCFG;
671 hsc = hsp->hsc;
673 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
709 hsc_slot_enable(hsc_slot_t *hsp, boolean_t enabled)
714 DEBUG1("hsc_slot_enable: slot %d", hsp->hs_slot_number);
717 sunit.unit_number = hsp->hs_slot_number;
723 res = scsb_reset_unit(hsp->hs_hpchandle, &sunit);
738 hsc_slot_t *hsp = (hsc_slot_t *)ops_arg;
741 DEBUG2("hsc_control: slot %d, op=%x\n", hsp->hs_slot_number, request);
745 return (hsc_led_state(hsp,
749 return (hsc_led_state(hsp,
753 return (hsc_get_slot_state(hsp, (hpc_slot_state_t *)arg));
756 return (hsc_set_config_state(hsp, HPC_CTRL_DEV_CONFIGURED));
759 return (hsc_set_config_state(hsp, HPC_CTRL_DEV_UNCONFIGURED));
762 return (hsc_set_config_state(hsp, HPC_CTRL_DEV_CONFIG_FAILURE));
765 return (hsc_set_config_state(hsp,
770 return (hsc_set_config_state(hsp, request));
773 return (hsc_get_board_type(hsp, (hpc_board_type_t *)arg));
776 return (hsc_autoconfig(hsp, HPC_CTRL_DISABLE_AUTOCFG));
779 return (hsc_autoconfig(hsp, HPC_CTRL_ENABLE_AUTOCFG));
786 if (hsp->hs_board_configured == B_TRUE)
788 if (scsb_hsc_disable_slot(hsp) != DDI_SUCCESS)
793 if (scsb_hsc_enable_slot(hsp) != DDI_SUCCESS)
798 return (scsb_enable_enum(hsp->hsc));
801 return (scsb_disable_enum(hsp->hsc, 0));
809 scsb_hsc_disable_slot(hsc_slot_t *hsp)
814 DEBUG1("hsc_disable_slot: slot %d", hsp->hs_slot_number);
815 (void) sprintf(slot_disable_prop, "slot%d-status", hsp->hs_slot_number);
817 rc = scsb_reset_slot(hsp->hs_hpchandle, hsp->hs_slot_number,
820 (void) hsc_autoconfig(hsp, HPC_CTRL_DISABLE_AUTOCFG);
821 hsp->hs_flags &= ~HSC_SLOT_ENABLED;
822 (void) ddi_prop_update_string(DDI_DEV_T_NONE, hsp->hsc->dip,
830 scsb_hsc_enable_slot(hsc_slot_t *hsp)
835 DEBUG1("hsc_disable_slot: slot %d", hsp->hs_slot_number);
836 (void) sprintf(slot_disable_prop, "slot%d-status", hsp->hs_slot_number);
838 rc = scsb_reset_slot(hsp->hs_hpchandle, hsp->hs_slot_number,
841 (void) hsc_autoconfig(hsp, HPC_CTRL_ENABLE_AUTOCFG);
842 hsp->hs_flags |= HSC_SLOT_ENABLED;
843 (void) ddi_prop_remove(DDI_DEV_T_NONE, hsp->hsc->dip,
859 hsc_slot_t *hsp = NEW(hsc_slot_t);
864 if (hsp == NULL) {
871 hsip = &hsp->hs_info;
890 hsp->hs_active_led_state = HPC_LED_OFF;
891 hsp->hs_fault_led_state = HPC_LED_OFF;
893 hsp->hs_board_configured = B_FALSE;
894 hsp->hs_board_healthy = B_FALSE;
895 hsp->hs_board_type = HPC_BOARD_UNKNOWN;
897 hsp->hs_flags = HSC_ENABLED | HSC_SLOT_ENABLED;
898 hsp->hs_slot_number = slot_number;
905 hsp->hs_slot_state = HPC_SLOT_CONNECTED;
907 hsp->hs_slot_state = HPC_SLOT_EMPTY;
909 return (hsp);
914 hsc_free_slot(hsc_slot_t *hsp)
918 kmem_free(hsp, sizeof (*hsp));
934 hsc_slot_t *hsp;
939 hsp = hsc_alloc_slot(device_number, slot_number,
942 if (hsp == NULL) {
949 hsp->hs_hpchandle = hsc->scsb_handle; /* handle for call backs */
950 hsp->hsc = hsc;
952 rc = scsb_hsc_init_slot_state(hsc, hsp);
958 (void) hsc_autoconfig(hsp, HPC_CTRL_ENABLE_AUTOCFG);
960 (void) hsc_autoconfig(hsp, HPC_CTRL_DISABLE_AUTOCFG);
966 hsp->hs_next = hsc_slot_list;
967 hsc_slot_list = hsp;
972 &hsp->hs_info,
973 &hsp->hs_slot_handle, /* return value */
975 (caddr_t)hsp,
982 hsc_free_slot(hsp);
995 hsc_slot_t *hsp, *prev;
1000 hsp = prev = NULL;
1001 for (hsp = hsc_slot_list; hsp != NULL; hsp = hsp->hs_next) {
1002 if (hsp->hs_slot_number == slot_number) {
1006 prev->hs_next = hsp->hs_next;
1007 hsp->hs_next = NULL;
1010 prev = hsp;
1014 if (hsp != NULL) {
1015 (void) hpc_slot_unregister(&hsp->hs_slot_handle);
1016 if ((hsp->hsc->state & HSC_ATTACHED) != HSC_ATTACHED &&
1017 hsp->hs_slot_state != HPC_SLOT_EMPTY) {
1018 hsp->hsc->n_registered_occupants--;
1020 hsc_free_slot(hsp);
1027 scsb_hsc_init_slot_state(hsc_state_t *hsc, hsc_slot_t *hsp)
1030 int slot_number = hsp->hs_slot_number;
1040 hsp->hs_board_healthy = scsb_read_slot_health(scsb, slot_number);
1041 hsp->hs_slot_state = rstate;
1048 hsp->hs_slot_state = HPC_SLOT_EMPTY;
1052 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
1054 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1062 hsp->hs_slot_state = HPC_SLOT_DISCONNECTED;
1064 if (hsp->hs_board_configured != B_TRUE) {
1075 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1077 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1087 hsp->hs_slot_state = HPC_SLOT_CONNECTED;
1096 if (hsp->hs_board_configured == B_TRUE)
1097 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1100 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1102 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1109 hsp->hs_flags |= HSC_ALARM_CARD_PRES;
1137 hsc_slot_t *hsp;
1140 for (hsp = hsc_slot_list; hsp != NULL; hsp = hsp->hs_next) {
1141 if (hsp->hs_slot_number == slot_number)
1145 return (hsp);
1158 hsc_slot_t *hsp;
1165 hsp = hsc_find_slot(slot_number);
1167 if (hsp == NULL) {
1174 hsp->hs_board_healthy = healthy;
1179 if (hsp->hs_slot_state == HPC_SLOT_EMPTY)
1180 hsp->hs_board_type = HPC_BOARD_CPCI_HS;
1181 hsp->hs_slot_state = HPC_SLOT_DISCONNECTED;
1183 hsp->hs_flags |= HSC_ALARM_CARD_PRES;
1186 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1195 if (hsp->hs_flags & HSC_SLOT_BAD_STATE) {
1196 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
1202 if ((hsp->hs_flags & HSC_SLOT_ENABLED) != HSC_SLOT_ENABLED)
1208 rc = hsc_slot_autoconnect(hsp);
1209 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
1215 hsp->hs_slot_state = HPC_SLOT_EMPTY;
1216 hsp->hs_board_type = HPC_BOARD_UNKNOWN;
1217 hsp->hs_flags &= ~HSC_ENUM_FAILED;
1218 if (hsp->hs_flags & HSC_ALARM_CARD_PRES) {
1219 hsp->hs_flags &= ~HSC_ALARM_CARD_PRES;
1222 if (hsp->hs_board_configured == B_TRUE) {
1223 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
1227 ddi_driver_name(hsp->hsc->dip),
1228 ddi_get_instance(hsp->hsc->dip),
1232 ddi_driver_name(hsp->hsc->dip),
1233 ddi_get_instance(hsp->hsc->dip));
1235 (void) scsb_hsc_disable_slot(hsp);
1236 hsp->hs_flags |= HSC_SLOT_BAD_STATE;
1238 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1240 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
1243 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1245 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_ACTIVE_LED,
1261 hsc_slot_t *hsp;
1266 hsp = hsc_find_slot(slot_number);
1267 if (hsp == NULL) {
1272 hsc = hsp->hsc;
1273 if (hsp->hs_slot_state == HPC_SLOT_EMPTY) {
1282 if (hsp->hs_slot_state == HPC_SLOT_DISCONNECTED) {
1288 hsp->hs_board_healthy = healthy;
1290 return (hsc_slot_autoconnect(hsp));
1298 if (hsp->hs_board_healthy != B_TRUE) {
1299 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE, HPC_FAULT_LED,
1306 hsp->hs_board_configured == B_TRUE ?
1308 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
1312 if (hsp->hs_board_configured == B_TRUE) {
1318 hsp->hs_board_configured == B_TRUE ?
1320 (void) hpc_slot_event_notify(hsp->hs_slot_handle,
1323 if ((hsp->hs_board_configured != B_TRUE) ||
1325 if (scsb_reset_slot(hsp->hs_hpchandle,
1328 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1338 hsp->hs_board_healthy = healthy;
1343 hsc_slot_autoconnect(hsc_slot_t *hsp)
1345 hsc_state_t *hsc = hsp->hsc;
1355 (hsp->hs_flags & HSC_AUTOCFG)) {
1357 hsc->hsp_last = hsp;
1358 if ((rc = scsb_reset_slot(hsp->hs_hpchandle,
1359 hsp->hs_slot_number, SCSB_UNRESET_SLOT)) == 0) {
1361 hsp->hs_slot_state = HPC_SLOT_CONNECTED;
1362 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
1476 hsc_slot_t *hsp;
1480 hsp = hsc_find_slot(hsc->slot_table_prop[i].pslotnum);
1481 if (hsp == NULL)
1483 rc = hpc_slot_event_notify(hsp->hs_slot_handle,
1806 hsc_slot_t *hsp;
1808 hsp = hsc_find_slot(hsc->slot_table_prop[i].pslotnum);
1809 if (hsp == NULL) {
1820 (void) hsc_led_state(hsp, HPC_CTRL_SET_LED_STATE,
1822 (void) hsc_led_state(hsp, HPC_CTRL_SET_LED_STATE,
1826 hsp->hs_slot_number);
1861 hsc_slot_t *hsp;
1874 hsp = hsc_find_slot(hsc->slot_table_prop[i].pslotnum);
1876 if (hsp == NULL) {
1891 if (hsp->hs_slot_state == HPC_SLOT_DISCONNECTED) {
1895 hsp->hs_slot_number);
1897 hsp->hs_flags |= HSC_SCB_HOTSWAPPED;
1913 hsc_slot_t *hsp;
1927 hsp = hsc_find_slot(hsc->slot_table_prop[i].pslotnum);
1929 if (hsp == NULL) {
1937 if ((hsp->hs_slot_state == HPC_SLOT_DISCONNECTED) &&
1938 (hsp->hs_board_configured == B_FALSE)) {
1939 if (scsb_reset_slot(hsp->hs_hpchandle,
1940 hsp->hs_slot_number,
1946 hsp->hs_slot_number);
1950 if (scsb_hsc_init_slot_state(hsc, hsp) != DDI_SUCCESS) {
1956 hsp->hs_slot_number);
1958 hsp->hs_flags &= ~HSC_SCB_HOTSWAPPED;
1988 hsc_slot_t *hsp;
1998 hsp = hsc_find_slot(pslotnum);
1999 if (hsp == NULL) {
2013 hsp->hs_slot_handle,
2017 *(hsc_slot_t **)arg = hsp;
2029 hsc_slot_t *hsp;
2035 hsp = hsc_find_slot(hsc->slot_table_prop[0].pslotnum);
2036 if (hsp == NULL) /* No slots registered */
2043 rc = hpc_slot_event_notify(hsp->hs_slot_handle,
2064 hsp = hsc->hsp_last;
2069 hsp->hs_slot_number);
2075 if (scsb_reset_slot(hsp->hs_hpchandle,
2076 hsp->hs_slot_number,
2079 hsp->hs_flags |= HSC_ENUM_FAILED;
2080 if (hsp->hs_board_configured == B_TRUE)
2086 hsc_led_op(hsp, HPC_CTRL_SET_LED_STATE,
2098 hsp = hsc_get_slot_info(hsc, rc);
2099 if (hsp == NULL) {
2106 if (hsp->hs_flags & HSC_ALARM_CARD_PRES) {
2107 if (scsb_hsc_ac_op(hsp->hs_hpchandle, hsp->hs_slot_number,
2114 (void) scsb_hsc_ac_op(hsp->hs_hpchandle,
2115 hsp->hs_slot_number,
2124 if ((hsp->hs_flags & HSC_SCB_HOTSWAPPED) &&
2125 (hsp->hs_slot_state == HPC_SLOT_DISCONNECTED))
2128 (void) hpc_slot_event_notify(hsp->hs_slot_handle,