Lines Matching refs:sp

312 	cs_socket_t *sp;  in cs_deinit()  local
342 if ((sp = cs_get_sp(sn)) != NULL) { in cs_deinit()
344 if (sp->client_list) { in cs_deinit()
398 if ((sp = cs_get_sp(sn)) != NULL) { in cs_deinit()
403 UNTIMEOUT(sp->rdybsy_tmo_id); in cs_deinit()
405 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
406 mutex_enter(&sp->lock); in cs_deinit()
407 sp->flags = SOCKET_UNLOAD_MODULE; in cs_deinit()
408 if (sp->init_state & SOCKET_INIT_STATE_SOFTINTR) in cs_deinit()
409 sp->init_state &= ~SOCKET_INIT_STATE_SOFTINTR; in cs_deinit()
410 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
411 mutex_exit(&sp->lock); in cs_deinit()
413 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
414 mutex_enter(&sp->cis_lock); in cs_deinit()
415 (void) cs_destroy_cis(sp); in cs_deinit()
416 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
417 mutex_exit(&sp->cis_lock); in cs_deinit()
423 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
424 mutex_enter(&sp->client_lock); in cs_deinit()
425 if (sp->init_state & SOCKET_INIT_STATE_THREAD) { in cs_deinit()
426 sp->thread_state = SOCKET_THREAD_EXIT; in cs_deinit()
427 cv_broadcast(&sp->thread_cv); in cs_deinit()
428 cv_wait(&sp->caller_cv, &sp->client_lock); in cs_deinit()
430 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
431 mutex_exit(&sp->client_lock); in cs_deinit()
437 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
438 mutex_enter(&sp->ss_thread_lock); in cs_deinit()
439 if (sp->init_state & SOCKET_INIT_STATE_SS_THREAD) { in cs_deinit()
440 sp->ss_thread_state = SOCKET_THREAD_EXIT; in cs_deinit()
441 cv_broadcast(&sp->ss_thread_cv); in cs_deinit()
442 cv_wait(&sp->ss_caller_cv, &sp->ss_thread_lock); in cs_deinit()
445 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) in cs_deinit()
446 mutex_exit(&sp->ss_thread_lock); in cs_deinit()
451 if (sp->init_state & SOCKET_INIT_STATE_MUTEX) { in cs_deinit()
452 mutex_destroy(&sp->lock); in cs_deinit()
453 mutex_destroy(&sp->client_lock); in cs_deinit()
454 mutex_destroy(&sp->cis_lock); in cs_deinit()
455 mutex_destroy(&sp->ss_thread_lock); in cs_deinit()
458 if (sp->init_state & SOCKET_INIT_STATE_CV) { in cs_deinit()
459 cv_destroy(&sp->thread_cv); in cs_deinit()
460 cv_destroy(&sp->caller_cv); in cs_deinit()
461 cv_destroy(&sp->reset_cv); in cs_deinit()
462 cv_destroy(&sp->ss_thread_cv); in cs_deinit()
463 cv_destroy(&sp->ss_caller_cv); in cs_deinit()
470 if (sp->io_mmap_window) in cs_deinit()
471 kmem_free(sp->io_mmap_window, sizeof (io_mmap_window_t)); in cs_deinit()
478 sp->event_mask = 0; in cs_deinit()
479 set_socket.socket = sp->socket_num; in cs_deinit()
486 (void) cs_convert_powerlevel(sp->socket_num, 0, VCC, in cs_deinit()
488 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP1, in cs_deinit()
490 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP2, in cs_deinit()
501 sp->socket_num, ret); in cs_deinit()
923 cs_socket_t *sp; in cs_parse_tuple() local
929 &fn, &sp, &client)) != CS_SUCCESS) in cs_parse_tuple()
946 mutex_enter(&sp->cis_lock); in cs_parse_tuple()
958 if ((sp->cis_flags & CW_VALID_CIS) && in cs_parse_tuple()
959 (sp->cis[fn].flags & CW_VALID_CIS)) { in cs_parse_tuple()
967 mutex_exit(&sp->cis_lock); in cs_parse_tuple()
974 mutex_exit(&sp->cis_lock); in cs_parse_tuple()
1063 cs_socket_t *sp; in cs_get_firstnext_tuple() local
1069 &sp, &client)) != CS_SUCCESS) in cs_get_firstnext_tuple()
1079 mutex_enter(&sp->cis_lock); in cs_get_firstnext_tuple()
1085 if ((!(sp->cis_flags & CW_VALID_CIS)) || in cs_get_firstnext_tuple()
1086 (!(sp->cis[fn].flags & CW_VALID_CIS))) { in cs_get_firstnext_tuple()
1087 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1122 if (sp->cis_flags & CW_MULTI_FUNCTION_CIS) { in cs_get_firstnext_tuple()
1124 GET_FIRST_LTUPLE(sp->cis[CS_GLOBAL_CIS].cis, in cs_get_firstnext_tuple()
1126 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1130 tuple->CISOffset = sp->cis[0].cis; in cs_get_firstnext_tuple()
1142 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1156 if (sp->cis_flags & CW_MULTI_FUNCTION_CIS) { in cs_get_firstnext_tuple()
1159 tp = GET_FIRST_LTUPLE(sp->cis[fn].cis, flags); in cs_get_firstnext_tuple()
1168 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1186 if (sp->cis_flags & CW_MULTI_FUNCTION_CIS) { in cs_get_firstnext_tuple()
1189 tp = FIND_FIRST_LTUPLE(sp->cis[fn].cis, in cs_get_firstnext_tuple()
1199 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1215 mutex_exit(&sp->cis_lock); in cs_get_firstnext_tuple()
1237 cs_socket_t *sp; in cs_get_tuple_data() local
1246 &sp, &client)) != CS_SUCCESS) in cs_get_tuple_data()
1256 mutex_enter(&sp->cis_lock); in cs_get_tuple_data()
1258 if ((sp->cis_flags & CW_VALID_CIS) && in cs_get_tuple_data()
1259 (sp->cis[fn].flags & CW_VALID_CIS)) { in cs_get_tuple_data()
1266 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1285 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1295 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1339 if (cs_init_cis_window(sp, &newoffset, &cis_handle, in cs_get_tuple_data()
1341 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1344 sp->socket_num); in cs_get_tuple_data()
1354 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1363 mutex_exit(&sp->cis_lock); in cs_get_tuple_data()
1423 cs_socket_t *sp; in cs_validate_cis() local
1429 &sp, &client)) != CS_SUCCESS) in cs_validate_cis()
1439 mutex_enter(&sp->cis_lock); in cs_validate_cis()
1440 if ((sp->cis_flags & CW_VALID_CIS) && in cs_validate_cis()
1441 (sp->cis[fn].flags & CW_VALID_CIS)) { in cs_validate_cis()
1442 cisinfo->Chains = sp->cis[fn].nchains; in cs_validate_cis()
1443 cisinfo->Tuples = sp->cis[fn].ntuples; in cs_validate_cis()
1446 (sp->cis[CS_GLOBAL_CIS].flags & CW_VALID_CIS)) { in cs_validate_cis()
1447 cisinfo->Chains += sp->cis[CS_GLOBAL_CIS].nchains; in cs_validate_cis()
1448 cisinfo->Tuples += sp->cis[CS_GLOBAL_CIS].ntuples; in cs_validate_cis()
1457 mutex_exit(&sp->cis_lock); in cs_validate_cis()
1490 cs_init_cis_window(cs_socket_t *sp, uint32_t *offset, in cs_init_cis_window() argument
1502 if (!SOCKET_HAS_CIS_WINDOW(sp)) { in cs_init_cis_window()
1505 sp->socket_num); in cs_init_cis_window()
1512 if ((cw = cs_get_wp(sp->cis_win_num)) == NULL) in cs_init_cis_window()
1518 sp->socket_num, cw->state); in cs_init_cis_window()
1527 iw.window = sp->cis_win_num; in cs_init_cis_window()
1539 sw.WindowSize = sp->cis_win_size; in cs_init_cis_window()
1540 set_page.offset = ((*offset / sp->cis_win_size) * in cs_init_cis_window()
1541 sp->cis_win_size); in cs_init_cis_window()
1571 sw.window = sp->cis_win_num; in cs_init_cis_window()
1572 sw.socket = sp->socket_num; in cs_init_cis_window()
1592 sp->cis_win_num = PCMCIA_MAX_WINDOWS; in cs_init_cis_window()
1596 set_page.window = sp->cis_win_num; in cs_init_cis_window()
1603 sp->cis_win_num = PCMCIA_MAX_WINDOWS; in cs_init_cis_window()
1612 gw.window = sp->cis_win_num; in cs_init_cis_window()
1613 gw.socket = sp->socket_num; /* XXX - SS_GetWindow should set this */ in cs_init_cis_window()
1832 cs_socket_t *sp; in cs_add_client_to_socket() local
1840 if ((sp = cs_get_sp(sn)) == NULL) in cs_add_client_to_socket()
1843 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_add_client_to_socket()
1856 mutex_enter(&sp->lock); in cs_add_client_to_socket()
1857 client = sp->client_list; in cs_add_client_to_socket()
1861 mutex_exit(&sp->lock); in cs_add_client_to_socket()
1862 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_add_client_to_socket()
1874 mutex_exit(&sp->lock); in cs_add_client_to_socket()
1890 mutex_enter(&sp->lock); in cs_add_client_to_socket()
1892 mutex_exit(&sp->lock); in cs_add_client_to_socket()
1893 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_add_client_to_socket()
1910 mutex_exit(&sp->lock); in cs_add_client_to_socket()
1911 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_add_client_to_socket()
1955 cr->iblk_cookie = sp->iblk; in cs_add_client_to_socket()
1956 cr->idev_cookie = sp->idev; in cs_add_client_to_socket()
2024 get_ss_status.socket = sp->socket_num; in cs_add_client_to_socket()
2027 mutex_exit(&sp->lock); in cs_add_client_to_socket()
2028 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_add_client_to_socket()
2043 sp->num_clients++; in cs_add_client_to_socket()
2044 mutex_exit(&sp->lock); in cs_add_client_to_socket()
2045 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_add_client_to_socket()
2056 cs_socket_t *sp; in cs_deregister_client() local
2071 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_deregister_client()
2074 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_deregister_client()
2080 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_deregister_client()
2096 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_deregister_client()
2101 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_deregister_client()
2122 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_deregister_client()
2183 cs_socket_t *sp; in cs_find_client() local
2206 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) { in cs_find_client()
2212 clp = sp->client_list; in cs_find_client()
2239 cs_socket_t *sp; in cs_destroy_client_handle() local
2250 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_destroy_client_handle()
2260 mutex_enter(&sp->lock); in cs_destroy_client_handle()
2261 sp->next_cl_minor = GET_CLIENT_MINOR(client_handle); in cs_destroy_client_handle()
2278 sp->client_list = clp->next; in cs_destroy_client_handle()
2289 sp->num_clients--; in cs_destroy_client_handle()
2290 mutex_exit(&sp->lock); in cs_destroy_client_handle()
2311 cs_socket_t *sp; in cs_create_client_handle() local
2315 if ((sp = cs_get_sp(socket_num)) == NULL) in cs_create_client_handle()
2329 cs_create_next_client_minor(socket_num, sp->next_cl_minor))) in cs_create_client_handle()
2356 if (!sp->client_list) { in cs_create_client_handle()
2357 sp->client_list = cclp; in cs_create_client_handle()
2358 clp = sp->client_list; in cs_create_client_handle()
2364 clp = sp->client_list; in cs_create_client_handle()
2383 sp->next_cl_minor = in cs_create_client_handle()
2384 cs_create_next_client_minor(socket_num, sp->next_cl_minor); in cs_create_client_handle()
2451 cs_socket_t *sp; in cs_event() local
2483 if ((sp = cs_get_sp(sn)) == NULL) in cs_event()
2490 if (sp->flags & SOCKET_UNLOAD_MODULE) { in cs_event()
2497 mutex_enter(&sp->lock); in cs_event()
2513 sp->events |= ss_to_cs_events(sp, event); in cs_event()
2530 client = sp->client_list; in cs_event()
2543 client->events |= ((sp->events & ~CS_EVENT_CARD_INSERTION) & in cs_event()
2603 if (sp->events) in cs_event()
2604 sp->flags |= SOCKET_NEEDS_THREAD; in cs_event()
2611 if ((sp->init_state & SOCKET_INIT_STATE_SOFTINTR) && in cs_event()
2613 ddi_trigger_softintr(sp->softint_id); in cs_event()
2615 mutex_exit(&sp->lock); in cs_event()
2641 cs_card_insertion(cs_socket_t *sp, event_t event) in cs_card_insertion() argument
2651 UNTIMEOUT(sp->rdybsy_tmo_id); in cs_card_insertion()
2656 (int)event, sp->socket_num); in cs_card_insertion()
2670 if (!SOCKET_HAS_CIS_WINDOW(sp)) { in cs_card_insertion()
2674 sp->socket_num); in cs_card_insertion()
2682 mutex_enter(&sp->lock); in cs_card_insertion()
2683 sp->event_mask = (CS_EVENT_CARD_REMOVAL | in cs_card_insertion()
2685 mutex_exit(&sp->lock); in cs_card_insertion()
2686 set_socket.socket = sp->socket_num; in cs_card_insertion()
2693 (void) cs_convert_powerlevel(sp->socket_num, 50, VCC, in cs_card_insertion()
2695 (void) cs_convert_powerlevel(sp->socket_num, 50, VPP1, in cs_card_insertion()
2697 (void) cs_convert_powerlevel(sp->socket_num, 50, VPP2, in cs_card_insertion()
2703 sp->socket_num, ret); in cs_card_insertion()
2712 mutex_enter(&sp->lock); in cs_card_insertion()
2714 sp->events &= ~(CS_EVENT_CARD_READY | CS_EVENT_READY_TIMEOUT); in cs_card_insertion()
2715 mutex_exit(&sp->lock); in cs_card_insertion()
2717 SocketServices(SS_ResetSocket, sp->socket_num, in cs_card_insertion()
2726 mutex_enter(&sp->lock); in cs_card_insertion()
2727 sp->thread_state |= SOCKET_RESET_TIMER; in cs_card_insertion()
2728 (void) timeout(cs_ready_timeout, sp, in cs_card_insertion()
2730 cv_wait(&sp->reset_cv, &sp->lock); in cs_card_insertion()
2731 sp->thread_state &= ~SOCKET_RESET_TIMER; in cs_card_insertion()
2732 mutex_exit(&sp->lock); in cs_card_insertion()
2738 sp->socket_num, cs_reset_timeout_time, (int)sp->events); in cs_card_insertion()
2747 if (sp->events & CS_EVENT_CARD_REMOVAL) { in cs_card_insertion()
2754 sp->socket_num); in cs_card_insertion()
2767 gs.socket = sp->socket_num; in cs_card_insertion()
2772 sp->socket_num, ret); in cs_card_insertion()
2776 mutex_enter(&sp->lock); in cs_card_insertion()
2777 if ((sp->events & CS_EVENT_CARD_READY) || in cs_card_insertion()
2783 "READY\n", sp->socket_num); in cs_card_insertion()
2791 "READY timer\n", sp->socket_num); in cs_card_insertion()
2795 sp->rdybsy_tmo_id = timeout(cs_ready_timeout, sp, in cs_card_insertion()
2797 sp->thread_state |= SOCKET_WAIT_FOR_READY; in cs_card_insertion()
2801 mutex_exit(&sp->lock); in cs_card_insertion()
2817 mutex_enter(&sp->lock); in cs_card_insertion()
2818 sp->event_mask = CS_EVENT_CARD_REMOVAL; in cs_card_insertion()
2819 mutex_exit(&sp->lock); in cs_card_insertion()
2820 get_socket.socket = sp->socket_num; in cs_card_insertion()
2824 sp->socket_num); in cs_card_insertion()
2828 set_socket.socket = sp->socket_num; in cs_card_insertion()
2842 sp->socket_num); in cs_card_insertion()
2852 mutex_enter(&sp->cis_lock); in cs_card_insertion()
2854 if ((ret = cs_create_cis(sp)) != CS_SUCCESS) { in cs_card_insertion()
2855 mutex_exit(&sp->cis_lock); in cs_card_insertion()
2859 mutex_exit(&sp->cis_lock); in cs_card_insertion()
2868 if (sp->events & CS_EVENT_CARD_REMOVAL) { in cs_card_insertion()
2869 mutex_enter(&sp->cis_lock); in cs_card_insertion()
2870 (void) cs_destroy_cis(sp); in cs_card_insertion()
2871 mutex_exit(&sp->cis_lock); in cs_card_insertion()
2876 mutex_enter(&sp->ss_thread_lock); in cs_card_insertion()
2877 sp->ss_thread_state |= SOCKET_THREAD_CSCISInit; in cs_card_insertion()
2878 cv_broadcast(&sp->ss_thread_cv); in cs_card_insertion()
2879 mutex_exit(&sp->ss_thread_lock); in cs_card_insertion()
2901 mutex_enter(&sp->lock); in cs_card_insertion()
2902 client = sp->client_list; in cs_card_insertion()
2909 mutex_exit(&sp->lock); in cs_card_insertion()
2925 cs_card_removal(cs_socket_t *sp) in cs_card_removal() argument
2932 cmn_err(CE_CONT, "cs_card_removal: socket %d\n", sp->socket_num); in cs_card_removal()
2939 UNTIMEOUT(sp->rdybsy_tmo_id); in cs_card_removal()
2947 mutex_enter(&sp->lock); in cs_card_removal()
2948 sp->thread_state &= ~(SOCKET_WAIT_FOR_READY | SOCKET_RESET_TIMER); in cs_card_removal()
2954 sp->event_mask = CS_EVENT_CARD_INSERTION; in cs_card_removal()
2955 mutex_exit(&sp->lock); in cs_card_removal()
2956 set_socket.socket = sp->socket_num; in cs_card_removal()
2963 (void) cs_convert_powerlevel(sp->socket_num, 0, VCC, in cs_card_removal()
2965 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP1, in cs_card_removal()
2967 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP2, in cs_card_removal()
2973 sp->socket_num, ret); in cs_card_removal()
2981 sp->socket_num); in cs_card_removal()
2989 mutex_enter(&sp->cis_lock); in cs_card_removal()
2990 (void) cs_destroy_cis(sp); in cs_card_removal()
2991 mutex_exit(&sp->cis_lock); in cs_card_removal()
2999 SocketServices(CSCardRemoved, sp->socket_num); in cs_card_removal()
3016 ss_to_cs_events(cs_socket_t *sp, event_t event) in ss_to_cs_events() argument
3025 if (sp->flags & SOCKET_CARD_INSERTED) { in ss_to_cs_events()
3026 sp->flags &= ~(SOCKET_CARD_INSERTED | SOCKET_IS_IO); in ss_to_cs_events()
3034 sp->events &= ~(CS_EVENT_CARD_INSERTION | in ss_to_cs_events()
3048 sp->thread_state &= ~SOCKET_WAIT_FOR_READY; in ss_to_cs_events()
3053 if (!(sp->flags & SOCKET_CARD_INSERTED)) { in ss_to_cs_events()
3054 sp->flags |= SOCKET_CARD_INSERTED; in ss_to_cs_events()
3059 if (sp->flags & SOCKET_CARD_INSERTED) in ss_to_cs_events()
3063 if (sp->flags & SOCKET_CARD_INSERTED) in ss_to_cs_events()
3067 if (sp->flags & SOCKET_CARD_INSERTED) in ss_to_cs_events()
3071 if (sp->flags & SOCKET_CARD_INSERTED) in ss_to_cs_events()
3108 cs_socket_t *sp = arg; in cs_ready_timeout() local
3111 mutex_enter(&sp->lock); in cs_ready_timeout()
3113 if (sp->thread_state & SOCKET_RESET_TIMER) { in cs_ready_timeout()
3117 sp->socket_num); in cs_ready_timeout()
3121 cvp = &sp->reset_cv; in cs_ready_timeout()
3124 if (sp->thread_state & SOCKET_WAIT_FOR_READY) { in cs_ready_timeout()
3125 sp->events |= CS_EVENT_READY_TIMEOUT; in cs_ready_timeout()
3126 cvp = &sp->thread_cv; in cs_ready_timeout()
3131 "socket %d\n", sp->socket_num); in cs_ready_timeout()
3137 mutex_exit(&sp->lock); in cs_ready_timeout()
3179 cs_socket_t *sp; in cs_socket_event_softintr() local
3211 if ((sp = cs_get_sp(sn)) != NULL) { in cs_socket_event_softintr()
3212 if (sp->init_state & SOCKET_INIT_STATE_READY) { in cs_socket_event_softintr()
3217 if (!(sp->flags & SOCKET_UNLOAD_MODULE) && in cs_socket_event_softintr()
3218 (sp->flags & SOCKET_NEEDS_THREAD)) { in cs_socket_event_softintr()
3220 mutex_enter(&sp->client_lock); in cs_socket_event_softintr()
3221 cv_broadcast(&sp->thread_cv); in cs_socket_event_softintr()
3222 mutex_exit(&sp->client_lock); in cs_socket_event_softintr()
3241 cs_socket_t *sp; in cs_event_thread() local
3245 if ((sp = cs_get_sp(sn)) == NULL) in cs_event_thread()
3251 sp->socket_num); in cs_event_thread()
3255 CALLB_CPR_INIT(&sp->cprinfo_cs, &sp->client_lock, in cs_event_thread()
3258 mutex_enter(&sp->client_lock); in cs_event_thread()
3262 CALLB_CPR_SAFE_BEGIN(&sp->cprinfo_cs); in cs_event_thread()
3263 cv_wait(&sp->thread_cv, &sp->client_lock); in cs_event_thread()
3264 CALLB_CPR_SAFE_END(&sp->cprinfo_cs, &sp->client_lock); in cs_event_thread()
3266 mutex_enter(&sp->lock); in cs_event_thread()
3267 sp->flags &= ~SOCKET_NEEDS_THREAD; in cs_event_thread()
3268 mutex_exit(&sp->lock); in cs_event_thread()
3274 if (sp->thread_state & SOCKET_THREAD_EXIT) { in cs_event_thread()
3279 sp->socket_num); in cs_event_thread()
3282 CALLB_CPR_EXIT(&sp->cprinfo_cs); in cs_event_thread()
3283 cv_broadcast(&sp->caller_cv); /* wakes up cs_deinit */ in cs_event_thread()
3284 mutex_exit(&sp->client_lock); in cs_event_thread()
3291 sp->socket_num, in cs_event_thread()
3292 (int)sp->events); in cs_event_thread()
3299 if (sp->events & CS_EVENT_CARD_INSERTION) { in cs_event_thread()
3300 mutex_enter(&sp->lock); in cs_event_thread()
3301 sp->events &= ~CS_EVENT_CARD_INSERTION; in cs_event_thread()
3302 mutex_exit(&sp->lock); in cs_event_thread()
3309 if ((sp->events & CS_EVENT_CARD_REMOVAL) == 0) { in cs_event_thread()
3310 (void) cs_card_insertion(sp, CS_EVENT_CARD_INSERTION); in cs_event_thread()
3318 "processing\n", sp->socket_num); in cs_event_thread()
3326 if (sp->events & (CS_EVENT_CARD_READY | CS_EVENT_READY_TIMEOUT)) { in cs_event_thread()
3327 mutex_enter(&sp->lock); in cs_event_thread()
3328 sp->events &= ~(CS_EVENT_CARD_READY | CS_EVENT_READY_TIMEOUT); in cs_event_thread()
3329 mutex_exit(&sp->lock); in cs_event_thread()
3330 if (sp->thread_state & SOCKET_WAIT_FOR_READY) { in cs_event_thread()
3331 mutex_enter(&sp->lock); in cs_event_thread()
3332 sp->thread_state &= ~SOCKET_WAIT_FOR_READY; in cs_event_thread()
3333 mutex_exit(&sp->lock); in cs_event_thread()
3334 (void) cs_card_insertion(sp, CS_EVENT_CARD_READY); in cs_event_thread()
3341 if (sp->events & CS_EVENT_SS_UPDATED) { in cs_event_thread()
3342 mutex_enter(&sp->lock); in cs_event_thread()
3343 sp->events &= ~CS_EVENT_SS_UPDATED; in cs_event_thread()
3344 mutex_exit(&sp->lock); in cs_event_thread()
3345 (void) cs_card_insertion(sp, CS_EVENT_SS_UPDATED); in cs_event_thread()
3351 if (sp->events & CS_EVENT_STATUS_CHANGE) { in cs_event_thread()
3354 mutex_enter(&sp->cis_lock); in cs_event_thread()
3355 mutex_enter(&sp->lock); in cs_event_thread()
3356 sp->events &= ~CS_EVENT_STATUS_CHANGE; in cs_event_thread()
3370 client = sp->client_list; in cs_event_thread()
3383 (void) cs_read_event_status(sp, client, in cs_event_thread()
3393 mutex_exit(&sp->lock); in cs_event_thread()
3394 mutex_exit(&sp->cis_lock); in cs_event_thread()
3412 client = sp->client_list; in cs_event_thread()
3455 mutex_enter(&sp->lock); in cs_event_thread()
3460 mutex_exit(&sp->lock); in cs_event_thread()
3473 mutex_enter(&sp->lock); in cs_event_thread()
3475 mutex_exit(&sp->lock); in cs_event_thread()
3489 mutex_enter(&sp->lock); in cs_event_thread()
3493 mutex_exit(&sp->lock); in cs_event_thread()
3508 mutex_enter(&sp->cis_lock); in cs_event_thread()
3509 mutex_enter(&sp->lock); in cs_event_thread()
3510 (void) cs_read_event_status(sp, client, in cs_event_thread()
3522 mutex_exit(&sp->lock); in cs_event_thread()
3523 mutex_exit(&sp->cis_lock); in cs_event_thread()
3541 mutex_enter(&sp->lock); in cs_event_thread()
3543 mutex_exit(&sp->lock); in cs_event_thread()
3560 if (sp->events & CS_EVENT_CARD_REMOVAL) { in cs_event_thread()
3561 mutex_enter(&sp->lock); in cs_event_thread()
3562 sp->events &= ~CS_EVENT_CARD_REMOVAL; in cs_event_thread()
3563 mutex_exit(&sp->lock); in cs_event_thread()
3564 (void) cs_card_removal(sp); in cs_event_thread()
3570 if (sp->thread_state & SOCKET_WAIT_SYNC) { in cs_event_thread()
3571 mutex_enter(&sp->lock); in cs_event_thread()
3572 sp->thread_state &= ~SOCKET_WAIT_SYNC; in cs_event_thread()
3573 mutex_exit(&sp->lock); in cs_event_thread()
3574 cv_broadcast(&sp->caller_cv); in cs_event_thread()
3641 cs_socket_t *sp; in cs_ss_thread() local
3643 if ((sp = cs_get_sp(sn)) == NULL) in cs_ss_thread()
3649 CALLB_CPR_INIT(&sp->cprinfo_ss, &sp->ss_thread_lock, in cs_ss_thread()
3652 mutex_enter(&sp->ss_thread_lock); in cs_ss_thread()
3656 CALLB_CPR_SAFE_BEGIN(&sp->cprinfo_ss); in cs_ss_thread()
3657 cv_wait(&sp->ss_thread_cv, &sp->ss_thread_lock); in cs_ss_thread()
3658 CALLB_CPR_SAFE_END(&sp->cprinfo_ss, &sp->ss_thread_lock); in cs_ss_thread()
3664 if (sp->ss_thread_state & SOCKET_THREAD_EXIT) { in cs_ss_thread()
3669 sp->socket_num); in cs_ss_thread()
3672 CALLB_CPR_EXIT(&sp->cprinfo_ss); in cs_ss_thread()
3673 cv_broadcast(&sp->ss_caller_cv); /* wake up cs_deinit */ in cs_ss_thread()
3674 mutex_exit(&sp->ss_thread_lock); in cs_ss_thread()
3682 (int)sp->socket_num, in cs_ss_thread()
3683 (int)sp->ss_thread_state); in cs_ss_thread()
3691 if (sp->ss_thread_state & SOCKET_THREAD_CSCISInit) { in cs_ss_thread()
3693 sp->ss_thread_state &= ~SOCKET_THREAD_CSCISInit; in cs_ss_thread()
3695 if (!(sp->flags & SOCKET_CARD_INSERTED)) { in cs_ss_thread()
3698 sp->socket_num); in cs_ss_thread()
3704 "CSCISInit\n", sp->socket_num); in cs_ss_thread()
3715 SocketServices(CSCISInit, sp->socket_num); in cs_ss_thread()
3722 mutex_enter(&sp->lock); in cs_ss_thread()
3723 sp->events |= CS_EVENT_SS_UPDATED; in cs_ss_thread()
3724 mutex_exit(&sp->lock); in cs_ss_thread()
3731 cv_broadcast(&sp->thread_cv); in cs_ss_thread()
3746 cs_socket_t *sp; in cs_request_socket_mask() local
3761 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_request_socket_mask()
3764 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_request_socket_mask()
3770 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_socket_mask()
3774 mutex_enter(&sp->lock); in cs_request_socket_mask()
3781 mutex_exit(&sp->lock); in cs_request_socket_mask()
3782 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_socket_mask()
3818 (void) cs_set_socket_event_mask(sp, cs_merge_event_masks(sp, client)); in cs_request_socket_mask()
3820 mutex_exit(&sp->lock); in cs_request_socket_mask()
3826 cv_broadcast(&sp->thread_cv); in cs_request_socket_mask()
3839 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_socket_mask()
3855 cs_socket_t *sp; in cs_release_socket_mask() local
3870 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_release_socket_mask()
3873 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_release_socket_mask()
3879 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_release_socket_mask()
3883 mutex_enter(&sp->lock); in cs_release_socket_mask()
3890 mutex_exit(&sp->lock); in cs_release_socket_mask()
3891 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_release_socket_mask()
3910 (void) cs_set_socket_event_mask(sp, cs_merge_event_masks(sp, client)); in cs_release_socket_mask()
3912 mutex_exit(&sp->lock); in cs_release_socket_mask()
3913 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_release_socket_mask()
3924 cs_socket_t *sp; in cs_get_event_mask() local
3939 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_get_event_mask()
3942 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_get_event_mask()
3948 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_event_mask()
3952 mutex_enter(&sp->lock); in cs_get_event_mask()
3962 mutex_exit(&sp->lock); in cs_get_event_mask()
3963 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_event_mask()
3981 mutex_exit(&sp->lock); in cs_get_event_mask()
3982 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_event_mask()
3990 mutex_exit(&sp->lock); in cs_get_event_mask()
3991 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_event_mask()
4002 cs_socket_t *sp; in cs_set_event_mask() local
4017 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_set_event_mask()
4020 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_set_event_mask()
4026 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_set_event_mask()
4030 mutex_enter(&sp->lock); in cs_set_event_mask()
4038 mutex_exit(&sp->lock); in cs_set_event_mask()
4039 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_set_event_mask()
4057 mutex_exit(&sp->lock); in cs_set_event_mask()
4058 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_set_event_mask()
4070 (void) cs_set_socket_event_mask(sp, cs_merge_event_masks(sp, client)); in cs_set_event_mask()
4072 mutex_exit(&sp->lock); in cs_set_event_mask()
4073 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_set_event_mask()
4112 cs_read_event_status(cs_socket_t *sp, client_t *client, event_t *revent, in cs_read_event_status() argument
4124 if ((sp->flags & SOCKET_CARD_INSERTED) || in cs_read_event_status()
4126 if (sp->flags & SOCKET_IS_IO) { in cs_read_event_status()
4134 if (cs_init_cis_window(sp, &newoffset, &cis_handle, in cs_read_event_status()
4138 sp->socket_num); in cs_read_event_status()
4235 get_socket.socket = sp->socket_num; in cs_read_event_status()
4237 set_socket.socket = sp->socket_num; in cs_read_event_status()
4260 gs->socket = sp->socket_num; in cs_read_event_status()
4264 if (sp->flags & SOCKET_IS_IO) { in cs_read_event_status()
4326 cs_socket_t *sp; in cs_get_status() local
4344 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_get_status()
4347 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_get_status()
4353 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_status()
4365 mutex_enter(&sp->cis_lock); in cs_get_status()
4366 if ((error = cs_read_event_status(sp, client, NULL, &get_ss_status, in cs_get_status()
4368 mutex_exit(&sp->cis_lock); in cs_get_status()
4369 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_status()
4373 mutex_exit(&sp->cis_lock); in cs_get_status()
4387 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_get_status()
4389 get_socket.socket = sp->socket_num; in cs_get_status()
4395 set_socket.socket = sp->socket_num; in cs_get_status()
4492 cs_merge_event_masks(cs_socket_t *sp, client_t *client) in cs_merge_event_masks() argument
4503 sp->event_mask; in cs_merge_event_masks()
4505 if (!(sp->flags & SOCKET_IS_IO)) { in cs_merge_event_masks()
4548 cs_set_socket_event_mask(cs_socket_t *sp, unsigned event_mask) in cs_set_socket_event_mask() argument
4553 get_socket.socket = sp->socket_num; in cs_set_socket_event_mask()
4557 set_socket.socket = sp->socket_num; in cs_set_socket_event_mask()
4616 cs_socket_t *sp; in cs_request_window() local
4656 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL) in cs_request_window()
4659 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_request_window()
4665 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4670 mutex_enter(&sp->lock); in cs_request_window()
4677 mutex_exit(&sp->lock); in cs_request_window()
4678 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4683 mutex_exit(&sp->lock); in cs_request_window()
4694 if ((error = cs_find_mem_window(sp->socket_num, rw, &aw)) != in cs_request_window()
4696 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4711 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4718 cw->socket_num = sp->socket_num; in cs_request_window()
4730 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4755 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_request_window()
4773 cs_socket_t *sp; in cs_release_window() local
4798 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(cw->client_handle))) == NULL) in cs_release_window()
4801 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_release_window()
4807 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_release_window()
4824 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_release_window()
4836 cs_socket_t *sp; in cs_modify_window() local
4857 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(cw->client_handle))) == NULL) in cs_modify_window()
4860 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_modify_window()
4863 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_modify_window()
4868 mutex_enter(&sp->lock); in cs_modify_window()
4875 mutex_exit(&sp->lock); in cs_modify_window()
4876 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_modify_window()
4881 mutex_exit(&sp->lock); in cs_modify_window()
4893 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_modify_window()
4898 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_modify_window()
5023 cs_socket_t *sp; in cs_map_mem_page() local
5056 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(cw->client_handle))) == NULL) in cs_map_mem_page()
5059 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp); in cs_map_mem_page()
5062 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_map_mem_page()
5067 mutex_enter(&sp->lock); in cs_map_mem_page()
5074 mutex_exit(&sp->lock); in cs_map_mem_page()
5075 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_map_mem_page()
5080 mutex_exit(&sp->lock); in cs_map_mem_page()
5094 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_map_mem_page()
5108 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_map_mem_page()
5113 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp); in cs_map_mem_page()
5399 cs_socket_t *sp; local
5447 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
5450 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
5456 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5466 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5475 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5480 mutex_enter(&sp->lock);
5487 mutex_exit(&sp->lock);
5488 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5493 mutex_exit(&sp->lock);
5544 if (sp->io_mmap_window) {
5546 io_mmap_window_t *imw = sp->io_mmap_window;
5563 if ((error = cs_find_io_win(sp->socket_num, &iowin_char,
5565 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5586 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5600 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5606 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5653 if ((error = cs_allocate_io_win(sp->socket_num, ior->Attributes1,
5656 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5678 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5698 if ((error = cs_allocate_io_win(sp->socket_num,
5708 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5735 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5769 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5791 cs_socket_t *sp;
5813 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
5816 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
5822 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5832 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5841 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5861 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5874 if (sp->io_mmap_window) {
5875 io_mmap_window_t *imw = sp->io_mmap_window;
5883 sp->socket_num);
5884 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
5929 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6142 cs_socket_t *sp;
6167 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
6170 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
6176 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6185 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6193 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6202 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6224 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6245 sp->socket_num,
6255 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6276 cs_socket_t *sp;
6296 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
6299 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
6305 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6314 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6322 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6343 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6352 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6385 cs_socket_t *sp;
6414 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
6425 inquire_socket.socket = sp->socket_num;
6435 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
6441 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6450 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6459 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6468 mutex_enter(&sp->cis_lock);
6474 get_socket.socket = sp->socket_num;
6477 mutex_exit(&sp->cis_lock);
6478 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6487 sp->socket_num,
6493 set_socket.socket = sp->socket_num;
6499 if (cs_convert_powerlevel(sp->socket_num, cr->Vcc, VCC,
6501 mutex_exit(&sp->cis_lock);
6502 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6506 if (cs_convert_powerlevel(sp->socket_num, cr->Vpp1, VPP1,
6508 mutex_exit(&sp->cis_lock);
6509 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6513 if (cs_convert_powerlevel(sp->socket_num, cr->Vpp2, VPP2,
6515 mutex_exit(&sp->cis_lock);
6516 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6535 sp->flags &= ~SOCKET_IS_IO;
6536 mutex_exit(&sp->cis_lock);
6537 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6549 mutex_enter(&sp->lock);
6552 mutex_exit(&sp->lock);
6553 if (cs_init_cis_window(sp, &newoffset, &cis_handle,
6555 mutex_exit(&sp->cis_lock);
6556 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6558 "CIS window\n", sp->socket_num);
6568 mutex_enter(&sp->lock);
6721 sp->flags |= SOCKET_IS_IO;
6723 mutex_exit(&sp->lock);
6736 set_socket.SCIntMask = cs_merge_event_masks(sp, client);
6751 if (sp->cis_flags & CW_MULTI_FUNCTION_CIS) {
6763 crt->cor, cr->ConfigIndex, cr->Attributes, sp->cis_flags,
6781 sp->flags &= ~SOCKET_IS_IO;
6782 mutex_exit(&sp->cis_lock);
6783 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6796 mutex_exit(&sp->cis_lock);
6797 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6815 cs_socket_t *sp;
6835 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
6838 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
6844 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6853 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6861 sp->cis_flags, CW_MULTI_FUNCTION_CIS);
6864 mutex_enter(&sp->cis_lock);
6876 if (cs_init_cis_window(sp, &newoffset, &cis_handle,
6878 mutex_exit(&sp->cis_lock);
6879 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6881 "CIS window\n", sp->socket_num);
6885 if (sp->cis_flags & CW_MULTI_FUNCTION_CIS) {
6896 mutex_exit(&sp->cis_lock);
6897 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6905 get_socket.socket = sp->socket_num;
6908 mutex_exit(&sp->cis_lock);
6909 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6913 mutex_enter(&sp->lock);
6914 sp->flags &= ~SOCKET_IS_IO;
6915 set_socket.SCIntMask = cs_merge_event_masks(sp, client);
6916 mutex_exit(&sp->lock);
6918 set_socket.socket = sp->socket_num;
6931 mutex_exit(&sp->cis_lock);
6932 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6941 mutex_exit(&sp->cis_lock);
6942 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
6965 cs_socket_t *sp;
6982 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
6985 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
6991 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7000 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7009 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7016 get_socket.socket = sp->socket_num;
7019 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7028 sp->socket_num, (int)client->irq_alloc.irq,
7032 set_socket.socket = sp->socket_num;
7046 if ((sp->cis_flags & CW_MULTI_FUNCTION_CIS) &&
7056 if (cs_init_cis_window(sp, &newoffset, &cis_handle,
7058 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7061 "CIS window\n", sp->socket_num);
7091 if (cs_convert_powerlevel(sp->socket_num, mc->Vpp1, VPP1,
7093 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7101 if (cs_convert_powerlevel(sp->socket_num, mc->Vpp2, VPP2,
7103 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7114 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7118 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7138 cs_socket_t *sp;
7161 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
7164 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7170 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7179 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7188 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7192 mutex_enter(&sp->cis_lock);
7198 if (cs_init_cis_window(sp, &newoffset, &cis_handle,
7200 mutex_exit(&sp->cis_lock);
7201 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7203 sp->socket_num);
7211 mutex_enter(&sp->lock);
7241 mutex_exit(&sp->lock);
7242 mutex_exit(&sp->cis_lock);
7243 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7276 cs_socket_t *sp;
7284 if ((sp = cs_get_sp(CS_GET_SOCKET_NUMBER(gci->Socket))) == NULL)
7287 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7288 mutex_enter(&sp->lock);
7292 client = sp->client_list;
7303 mutex_exit(&sp->lock);
7304 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7308 mutex_exit(&sp->lock);
7309 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7317 mutex_exit(&sp->lock);
7318 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7366 cs_socket_t *sp;
7377 if ((sp = cs_get_sp(CS_GET_SOCKET_NUMBER(gpai->PhySocket))) == NULL)
7380 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7387 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7392 gpai->flags = sp->adapter.flags;
7393 (void) strcpy(gpai->name, sp->adapter.name);
7394 gpai->major = sp->adapter.major;
7395 gpai->minor = sp->adapter.minor;
7396 gpai->instance = sp->adapter.instance;
7397 gpai->number = sp->adapter.number;
7398 gpai->num_sockets = sp->adapter.num_sockets;
7399 gpai->first_socket = sp->adapter.first_socket;
7401 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7435 cs_socket_t *sp;
7446 if ((sp = cs_get_sp(CS_GET_SOCKET_NUMBER(mls->PhySocket))) == NULL)
7449 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7456 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7461 mls->PhyAdapter = sp->adapter.number;
7463 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7619 cs_socket_t *sp;
7635 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
7638 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7644 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7654 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7684 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7722 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7727 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7755 cs_socket_t *sp;
7793 if ((sp = cs_get_sp(cdi->Socket)) == NULL)
7796 EVENT_THREAD_MUTEX_ENTER(client_lock_acquired, sp);
7798 client = sp->client_list;
7825 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7832 EVENT_THREAD_MUTEX_EXIT(client_lock_acquired, sp);
7842 cs_socket_t *sp;
7852 if ((sp = cs_get_sp(sn)) == NULL)
7854 mutex_enter(&sp->client_lock);
7855 mutex_enter(&sp->lock);
7858 sp->events |= csc->Events;
7862 mutex_exit(&sp->lock);
7863 mutex_exit(&sp->client_lock);
7874 sp->thread_state |= SOCKET_WAIT_SYNC;
7875 mutex_exit(&sp->lock);
7876 cv_broadcast(&sp->thread_cv);
7877 cv_wait(&sp->caller_cv, &sp->client_lock);
7879 mutex_exit(&sp->lock);
7880 cv_broadcast(&sp->thread_cv);
7882 mutex_exit(&sp->client_lock);
7902 cs_socket_t *sp = cs_globals.sp;
7907 if ((sp = cs_find_sp(sn)) == NULL)
7910 if (sp->flags & SOCKET_IS_VALID)
7911 return (sp);
7926 cs_socket_t *sp = cs_globals.sp;
7928 while (sp) {
7929 if (sp->socket_num == CS_GET_SOCKET_NUMBER(sn))
7930 return (sp);
7931 sp = sp->next;
7956 cs_socket_t *sp;
7983 if ((sp = cs_find_sp(sn)) == NULL) {
7984 cs_socket_t *spp = cs_globals.sp;
7986 sp = (cs_socket_t *)kmem_zalloc(sizeof (cs_socket_t), KM_SLEEP);
7988 if (cs_globals.sp == NULL)
7989 cs_globals.sp = sp;
7993 spp->next = sp;
8000 if (sp->flags & SOCKET_IS_VALID)
8007 sp->socket_num = sn;
8040 sp->cis_win_num = PCMCIA_MAX_WINDOWS;
8052 if ((ret = cs_find_mem_window(sp->socket_num, &win_req,
8053 &sp->cis_win_num)) != CS_SUCCESS) {
8055 sp->cis_win_num = PCMCIA_MAX_WINDOWS;
8058 sp->socket_num, ret);
8062 if ((cw = cs_get_wp(sp->cis_win_num)) == NULL) {
8067 inquire_window.window = sp->cis_win_num;
8079 sp->cis_win_size = win_req.Size;
8081 sp->cis_win_size = PAGESIZE;
8085 cw->socket_num = sp->socket_num;
8092 "size 0x%x\n", (int)sp->socket_num,
8093 (int)sp->cis_win_num,
8094 (int)sp->cis_win_size);
8104 gcad->socket = sp->socket_num;
8107 "failure\n", sp->socket_num);
8114 sp->iblk = gcad->iblock;
8115 sp->idev = gcad->idevice;
8120 sp->adapter.flags = 0;
8121 (void) strcpy(sp->adapter.name, gcad->adapter_info.name);
8122 sp->adapter.major = gcad->adapter_info.major;
8123 sp->adapter.minor = gcad->adapter_info.minor;
8124 sp->adapter.instance = ddi_get_instance(gcad->dip);
8125 sp->adapter.number = gcad->adapter_info.number;
8126 sp->adapter.num_sockets = gcad->adapter_info.num_sockets;
8127 sp->adapter.first_socket = gcad->adapter_info.first_socket;
8130 mutex_init(&sp->lock, NULL, MUTEX_DRIVER, *(gcad->iblock));
8131 mutex_init(&sp->client_lock, NULL, MUTEX_DRIVER, NULL);
8132 mutex_init(&sp->cis_lock, NULL, MUTEX_DRIVER, NULL);
8135 mutex_init(&sp->ss_thread_lock, NULL, MUTEX_DRIVER, NULL);
8137 sp->init_state |= SOCKET_INIT_STATE_MUTEX;
8140 cv_init(&sp->thread_cv, NULL, CV_DRIVER, NULL);
8141 cv_init(&sp->caller_cv, NULL, CV_DRIVER, NULL);
8142 cv_init(&sp->reset_cv, NULL, CV_DRIVER, NULL);
8145 cv_init(&sp->ss_thread_cv, NULL, CV_DRIVER, NULL);
8146 cv_init(&sp->ss_caller_cv, NULL, CV_DRIVER, NULL);
8148 sp->init_state |= SOCKET_INIT_STATE_CV;
8156 &sp->softint_id,
8161 "softintr\n", sp->socket_num);
8166 cs_globals.softint_id = sp->softint_id;
8177 sp->softint_id = cs_globals.softint_id;
8186 sp->init_state |= SOCKET_INIT_STATE_SOFTINTR;
8195 sp->event_mask = CS_EVENT_CARD_INSERTION;
8196 set_socket.socket = sp->socket_num;
8203 (void) cs_convert_powerlevel(sp->socket_num, 0, VCC,
8205 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP1,
8207 (void) cs_convert_powerlevel(sp->socket_num, 0, VPP2,
8212 "failure %d\n", sp->socket_num, ret);
8226 max(cs_globals.max_socket_num, sp->socket_num + 1);
8228 sp->flags = SOCKET_IS_VALID;
8233 sp->event_thread = CREATE_SOCKET_EVENT_THREAD(cs_event_thread,
8236 mutex_enter(&sp->lock);
8237 sp->init_state |= SOCKET_INIT_STATE_THREAD;
8238 mutex_exit(&sp->lock);
8243 sp->ss_thread = CREATE_SOCKET_EVENT_THREAD(cs_ss_thread,
8246 mutex_enter(&sp->lock);
8247 sp->init_state |= (SOCKET_INIT_STATE_SS_THREAD |
8249 sp->event_mask = CS_EVENT_CARD_INSERTION;
8250 mutex_exit(&sp->lock);
8268 cs_socket_t *sp;
8274 mutex_enter(&sp->client_lock);
8275 sp->thread_state |= SOCKET_THREAD_EXIT;
8276 cv_broadcast(&sp->thread_cv);
8277 cv_wait(&sp->caller_cv, &sp->client_lock);
8278 mutex_exit(&sp->client_lock);
8288 sp->flags &= ~SOCKET_IS_VALID;
8328 cs_socket_t *sp;
8355 if ((sp = cs_get_sp(sn)) == NULL)
8363 *csp = sp;
8368 mutex_enter(&sp->lock);
8370 mutex_exit(&sp->lock);
8381 mutex_exit(&sp->lock);
8574 cs_create_cis(cs_socket_t *sp)
8579 cis_cistpl_std_callout, sp);
8585 sp->socket_num);
8589 sp->socket_num, ret);
8602 if (!(sp->cis_flags & CW_VALID_CIS))
8610 if (!(sp->cis_flags & CW_MULTI_FUNCTION_CIS)) {
8611 bcopy((caddr_t)&sp->cis[CS_GLOBAL_CIS],
8612 (caddr_t)&sp->cis[0], sizeof (cis_info_t));
8613 bzero((caddr_t)&sp->cis[CS_GLOBAL_CIS], sizeof (cis_info_t));
8623 cs_destroy_cis(cs_socket_t *sp)
8625 CIS_PARSER(CISP_CIS_LIST_DESTROY, sp);
8648 cs_socket_t *sp;
8659 if ((sp = cs_get_sp(GET_CLIENT_SOCKET(client_handle))) == NULL)
8662 mutex_enter(&sp->client_lock);
8663 mutex_enter(&sp->lock);
8666 mutex_exit(&sp->lock);
8667 mutex_exit(&sp->client_lock);
8677 mutex_exit(&sp->lock);
8678 mutex_exit(&sp->client_lock);
8689 sp->thread_state |= SOCKET_WAIT_SYNC;
8690 mutex_exit(&sp->lock);
8691 cv_broadcast(&sp->thread_cv);
8692 cv_wait(&sp->caller_cv, &sp->client_lock);
8710 mutex_exit(&sp->client_lock);
8737 cs_socket_t *sp;
8746 if ((sp = cs_get_sp(sn)) != NULL) {
8747 mutex_enter(&sp->client_lock);
8748 if ((client = sp->client_list) != NULL)
8750 mutex_exit(&sp->client_lock);
8759 if ((sp = cs_get_sp(CS_GET_SOCKET_NUMBER(fnc->Socket))) ==
8762 mutex_enter(&sp->client_lock);
8763 if ((client = sp->client_list) == NULL) {
8764 mutex_exit(&sp->client_lock);
8772 fnc->num_clients = sp->num_clients;
8773 mutex_exit(&sp->client_lock);
8779 if ((sp = cs_get_sp(sn)) == NULL)
8782 mutex_enter(&sp->client_lock);
8785 mutex_exit(&sp->client_lock);
8789 mutex_exit(&sp->client_lock);
8792 if ((sp = cs_get_sp(sn)) != NULL) {
8793 mutex_enter(&sp->client_lock);
8794 if ((client = sp->client_list) != NULL)
8796 mutex_exit(&sp->client_lock);
8807 sp = cs_get_sp(GET_CLIENT_SOCKET(fnc->client_handle));
8808 if (sp == NULL)
8810 mutex_enter(&sp->client_lock);
8813 mutex_exit(&sp->client_lock);
8817 mutex_exit(&sp->client_lock);
8825 fnc->num_clients = sp->num_clients;
8826 mutex_exit(&sp->client_lock);