Lines Matching refs:usb_ia

219 	rval = ddi_soft_state_init(&usb_ia_statep, sizeof (struct usb_ia),  in _init()
262 usb_ia_t *usb_ia; in usb_ia_info() local
268 if ((usb_ia = ddi_get_soft_state(usb_ia_statep, in usb_ia_info()
270 *result = (void *)usb_ia->ia_dip; in usb_ia_info()
295 usb_ia_post_attach(usb_ia_t *usb_ia, uint8_t ifno, struct attachspec *as) in usb_ia_post_attach() argument
297 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_post_attach()
304 usb_ia_post_detach(usb_ia_t *usb_ia, uint8_t ifno, struct detachspec *ds) in usb_ia_post_detach() argument
306 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_post_detach()
326 usb_ia_t *usb_ia; in usb_ia_bus_ctl() local
330 usb_ia = usb_ia_obtain_state(dip); in usb_ia_bus_ctl()
332 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_bus_ctl()
344 USB_DPRINTF_L2(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_bus_ctl()
348 usb_ia_post_attach(usb_ia, usba_get_ifno(rdip), in usb_ia_bus_ctl()
360 USB_DPRINTF_L2(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_bus_ctl()
364 usb_ia_post_detach(usb_ia, usba_get_ifno(rdip), in usb_ia_bus_ctl()
387 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_bus_config() local
389 USB_DPRINTF_L4(DPRINT_MASK_ALL, usb_ia->ia_log_handle, in usb_ia_bus_config()
399 mutex_enter(&usb_ia->ia_mutex); in usb_ia_bus_config()
400 usb_ia_create_children(usb_ia); in usb_ia_bus_config()
401 mutex_exit(&usb_ia->ia_mutex); in usb_ia_bus_config()
414 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_bus_unconfig() local
420 USB_DPRINTF_L4(DPRINT_MASK_ALL, usb_ia->ia_log_handle, in usb_ia_bus_unconfig()
445 mutex_enter(&usb_ia->ia_mutex); in usb_ia_bus_unconfig()
446 for (interface = 0; usb_ia->ia_children_dips && in usb_ia_bus_unconfig()
447 (interface < usb_ia->ia_n_ifs); interface++) { in usb_ia_bus_unconfig()
448 mdip = usb_ia->ia_children_dips[interface]; in usb_ia_bus_unconfig()
456 usb_ia->ia_children_dips[interface] = NULL; in usb_ia_bus_unconfig()
465 mutex_exit(&usb_ia->ia_mutex); in usb_ia_bus_unconfig()
469 USB_DPRINTF_L4(DPRINT_MASK_ALL, usb_ia->ia_log_handle, in usb_ia_bus_unconfig()
481 usb_ia_t *usb_ia; in usb_ia_power() local
485 usb_ia = usb_ia_obtain_state(dip); in usb_ia_power()
487 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_power()
489 (void *)usb_ia, level); in usb_ia_power()
491 mutex_enter(&usb_ia->ia_mutex); in usb_ia_power()
492 pm = usb_ia->ia_pm; in usb_ia_power()
496 USB_DPRINTF_L2(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_power()
500 mutex_exit(&usb_ia->ia_mutex); in usb_ia_power()
506 &(usb_ia->ia_dev_state), level); in usb_ia_power()
508 mutex_exit(&usb_ia->ia_mutex); in usb_ia_power()
520 usb_ia_t *usb_ia = NULL; in usb_ia_attach() local
529 usb_ia = ddi_get_soft_state(usb_ia_statep, instance); in usb_ia_attach()
530 (void) usb_ia_restore_device_state(dip, usb_ia); in usb_ia_attach()
547 usb_ia = ddi_get_soft_state(usb_ia_statep, instance); in usb_ia_attach()
548 if (usb_ia == NULL) { in usb_ia_attach()
554 usb_ia->ia_log_handle = usb_alloc_log_hdl(dip, "ia", in usb_ia_attach()
559 usb_ia->ia_dip = dip; in usb_ia_attach()
560 usb_ia->ia_instance = instance; in usb_ia_attach()
561 usb_ia->ia_first_if = ddi_prop_get_int(DDI_DEV_T_ANY, dip, in usb_ia_attach()
563 usb_ia->ia_n_ifs = ddi_prop_get_int(DDI_DEV_T_ANY, dip, in usb_ia_attach()
566 if (usb_ia->ia_first_if < 0 || usb_ia->ia_n_ifs < 0) { in usb_ia_attach()
567 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_attach()
575 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_attach()
579 if (usb_get_dev_data(dip, &usb_ia->ia_dev_data, USB_PARSE_LVL_NONE, in usb_ia_attach()
581 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_attach()
586 mutex_init(&usb_ia->ia_mutex, NULL, MUTEX_DRIVER, in usb_ia_attach()
587 usb_ia->ia_dev_data->dev_iblock_cookie); in usb_ia_attach()
589 usb_free_dev_data(dip, usb_ia->ia_dev_data); in usb_ia_attach()
590 usb_ia->ia_dev_data = NULL; in usb_ia_attach()
592 usb_ia->ia_init_state |= USB_IA_LOCK_INIT; in usb_ia_attach()
596 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_attach()
601 usb_ia->ia_init_state |= USB_IA_MINOR_NODE_CREATED; in usb_ia_attach()
606 n_ifs = usb_ia->ia_n_ifs; in usb_ia_attach()
607 usb_ia->ia_cd_list_length = size = (sizeof (dev_info_t *)) * n_ifs; in usb_ia_attach()
609 usb_ia->ia_children_dips = kmem_zalloc(size, KM_SLEEP); in usb_ia_attach()
610 usb_ia->ia_child_events = kmem_zalloc(sizeof (uint8_t) * n_ifs, in usb_ia_attach()
616 (void) ndi_event_alloc_hdl(dip, 0, &usb_ia->ia_ndi_event_hdl, in usb_ia_attach()
620 if (ndi_event_bind_set(usb_ia->ia_ndi_event_hdl, &usb_ia_ndi_events, in usb_ia_attach()
622 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_attach()
628 usb_ia->ia_dev_state = USB_DEV_ONLINE; in usb_ia_attach()
634 usb_ia_create_pm_components(dip, usb_ia); in usb_ia_attach()
639 usb_ia->ia_init_state |= USB_IA_EVENTS_REGISTERED; in usb_ia_attach()
649 if (usb_ia) { in usb_ia_attach()
650 (void) usb_ia_cleanup(usb_ia); in usb_ia_attach()
661 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_detach() local
663 USB_DPRINTF_L4(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_detach()
669 return (usb_ia_cleanup(usb_ia)); in usb_ia_detach()
672 mutex_enter(&usb_ia->ia_mutex); in usb_ia_detach()
673 usb_ia->ia_dev_state = USB_DEV_SUSPENDED; in usb_ia_detach()
674 mutex_exit(&usb_ia->ia_mutex); in usb_ia_detach()
695 usb_ia_cleanup(usb_ia_t *usb_ia) in usb_ia_cleanup() argument
699 dev_info_t *dip = usb_ia->ia_dip; in usb_ia_cleanup()
701 USB_DPRINTF_L4(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_cleanup()
704 if ((usb_ia->ia_init_state & USB_IA_LOCK_INIT) == 0) { in usb_ia_cleanup()
713 if (usb_ia->ia_ndi_event_hdl && in usb_ia_cleanup()
714 (ndi_event_free_hdl(usb_ia->ia_ndi_event_hdl) != NDI_SUCCESS)) { in usb_ia_cleanup()
716 USB_DPRINTF_L2(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_cleanup()
730 if (usb_ia->ia_init_state & USB_IA_EVENTS_REGISTERED) { in usb_ia_cleanup()
732 usba_common_unregister_events(usb_ia->ia_dip, usb_ia->ia_n_ifs); in usb_ia_cleanup()
735 iapm = usb_ia->ia_pm; in usb_ia_cleanup()
737 mutex_enter(&usb_ia->ia_mutex); in usb_ia_cleanup()
739 if ((iapm) && (usb_ia->ia_dev_state != USB_DEV_DISCONNECTED)) { in usb_ia_cleanup()
741 mutex_exit(&usb_ia->ia_mutex); in usb_ia_cleanup()
754 usb_ia->ia_log_handle, in usb_ia_cleanup()
760 (void) pm_lower_power(usb_ia->ia_dip, 0, USB_DEV_OS_PWR_OFF); in usb_ia_cleanup()
763 mutex_exit(&usb_ia->ia_mutex); in usb_ia_cleanup()
771 if (usb_ia->ia_children_dips) { in usb_ia_cleanup()
772 kmem_free(usb_ia->ia_children_dips, in usb_ia_cleanup()
773 usb_ia->ia_cd_list_length); in usb_ia_cleanup()
776 if (usb_ia->ia_child_events) { in usb_ia_cleanup()
777 kmem_free(usb_ia->ia_child_events, sizeof (uint8_t) * in usb_ia_cleanup()
778 usb_ia->ia_n_ifs); in usb_ia_cleanup()
781 if (usb_ia->ia_init_state & USB_IA_MINOR_NODE_CREATED) { in usb_ia_cleanup()
785 mutex_destroy(&usb_ia->ia_mutex); in usb_ia_cleanup()
788 usb_client_detach(dip, usb_ia->ia_dev_data); in usb_ia_cleanup()
790 usb_free_log_hdl(usb_ia->ia_log_handle); in usb_ia_cleanup()
802 usb_ia_create_children(usb_ia_t *usb_ia) in usb_ia_create_children() argument
809 usba_device = usba_get_usba_device(usb_ia->ia_dip); in usb_ia_create_children()
811 USB_DPRINTF_L4(DPRINT_MASK_ATTA, usb_ia->ia_log_handle, in usb_ia_create_children()
815 n_ifs = usb_ia->ia_n_ifs; in usb_ia_create_children()
816 first_if = usb_ia->ia_first_if; in usb_ia_create_children()
822 if (usb_ia->ia_children_dips[i] != NULL) { in usb_ia_create_children()
827 mutex_exit(&usb_ia->ia_mutex); in usb_ia_create_children()
828 cdip = usba_ready_interface_node(usb_ia->ia_dip, first_if + i); in usb_ia_create_children()
829 mutex_enter(&usb_ia->ia_mutex); in usb_ia_create_children()
833 usb_ia->ia_children_dips[i] = cdip; in usb_ia_create_children()
847 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_busop_get_eventcookie() local
849 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_get_eventcookie()
852 USB_DPRINTF_L3(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_get_eventcookie()
858 return (ndi_event_retrieve_cookie(usb_ia->ia_ndi_event_hdl, in usb_ia_busop_get_eventcookie()
871 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_busop_add_eventcall() local
873 mutex_enter(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
874 ifno = usba_get_ifno(rdip)- usb_ia->ia_first_if; in usb_ia_busop_add_eventcall()
875 mutex_exit(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
881 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_add_eventcall()
885 USB_DPRINTF_L3(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_add_eventcall()
889 ndi_event_cookie_to_name(usb_ia->ia_ndi_event_hdl, cookie)); in usb_ia_busop_add_eventcall()
892 switch (ndi_event_cookie_to_tag(usb_ia->ia_ndi_event_hdl, cookie)) { in usb_ia_busop_add_eventcall()
894 mutex_enter(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
895 usb_ia->ia_child_events[ifno] |= in usb_ia_busop_add_eventcall()
897 mutex_exit(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
901 mutex_enter(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
902 usb_ia->ia_child_events[ifno] |= in usb_ia_busop_add_eventcall()
904 mutex_exit(&usb_ia->ia_mutex); in usb_ia_busop_add_eventcall()
912 return (ndi_event_add_callback(usb_ia->ia_ndi_event_hdl, in usb_ia_busop_add_eventcall()
920 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_busop_remove_eventcall() local
925 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_remove_eventcall()
929 USB_DPRINTF_L3(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_remove_eventcall()
934 ndi_event_cookie_to_name(usb_ia->ia_ndi_event_hdl, in usb_ia_busop_remove_eventcall()
938 return (ndi_event_remove_callback(usb_ia->ia_ndi_event_hdl, cb_id)); in usb_ia_busop_remove_eventcall()
948 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_busop_post_event() local
950 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_post_event()
954 USB_DPRINTF_L3(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_busop_post_event()
958 ndi_event_cookie_to_name(usb_ia->ia_ndi_event_hdl, cookie)); in usb_ia_busop_post_event()
961 return (ndi_event_run_callbacks(usb_ia->ia_ndi_event_hdl, rdip, in usb_ia_busop_post_event()
971 usb_ia_restore_device_state(dev_info_t *dip, usb_ia_t *usb_ia) in usb_ia_restore_device_state() argument
975 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_restore_device_state()
976 "usb_ia_restore_device_state: usb_ia = %p", (void *)usb_ia); in usb_ia_restore_device_state()
978 mutex_enter(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
979 iapm = usb_ia->ia_pm; in usb_ia_restore_device_state()
980 mutex_exit(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
986 if (usb_check_same_device(dip, usb_ia->ia_log_handle, USB_LOG_L0, in usb_ia_restore_device_state()
990 mutex_enter(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
991 usb_ia->ia_dev_state = USB_DEV_DISCONNECTED; in usb_ia_restore_device_state()
992 mutex_exit(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
1003 (void) usb_handle_remote_wakeup(usb_ia->ia_dip, in usb_ia_restore_device_state()
1007 mutex_enter(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
1008 usb_ia->ia_dev_state = USB_DEV_ONLINE; in usb_ia_restore_device_state()
1009 mutex_exit(&usb_ia->ia_mutex); in usb_ia_restore_device_state()
1026 usb_ia_t *usb_ia = usb_ia_obtain_state(dip); in usb_ia_event_cb() local
1030 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_event_cb()
1034 USB_DPRINTF_L4(DPRINT_MASK_EVENTS, usb_ia->ia_log_handle, in usb_ia_event_cb()
1037 ndi_event_cookie_to_name(usb_ia->ia_ndi_event_hdl, cookie)); in usb_ia_event_cb()
1041 usb_ia->ia_ndi_event_hdl, USBA_EVENT_TAG_HOT_REMOVAL); in usb_ia_event_cb()
1043 usb_ia->ia_ndi_event_hdl, USBA_EVENT_TAG_PRE_SUSPEND); in usb_ia_event_cb()
1045 usb_ia->ia_ndi_event_hdl, USBA_EVENT_TAG_HOT_INSERTION); in usb_ia_event_cb()
1047 usb_ia->ia_ndi_event_hdl, USBA_EVENT_TAG_POST_RESUME); in usb_ia_event_cb()
1049 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1052 if (usb_ia->ia_dev_state == USB_DEV_DISCONNECTED) { in usb_ia_event_cb()
1054 usb_ia->ia_log_handle, in usb_ia_event_cb()
1058 usb_ia->ia_dev_state = USB_DEV_DISCONNECTED; in usb_ia_event_cb()
1059 for (i = 0; i < usb_ia->ia_n_ifs; i++) { in usb_ia_event_cb()
1060 usb_ia->ia_child_events[i] &= ~ in usb_ia_event_cb()
1063 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1067 usb_ia->ia_ndi_event_hdl, NULL, in usb_ia_event_cb()
1070 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1075 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1078 (void) ndi_event_run_callbacks(usb_ia->ia_ndi_event_hdl, in usb_ia_event_cb()
1081 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1082 for (i = 0; i < usb_ia->ia_n_ifs; i++) { in usb_ia_event_cb()
1083 usb_ia->ia_child_events[i] &= ~ in usb_ia_event_cb()
1088 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1089 if (usb_ia_restore_device_state(dip, usb_ia) == USB_SUCCESS) { in usb_ia_event_cb()
1095 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1096 for (i = 0; i < usb_ia->ia_n_ifs; i++) { in usb_ia_event_cb()
1097 if (usb_ia->ia_child_events[i] & in usb_ia_event_cb()
1099 usb_ia->ia_child_events[i] &= in usb_ia_event_cb()
1102 usb_ia->ia_children_dips[i]; in usb_ia_event_cb()
1103 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1107 usb_ia->ia_ndi_event_hdl, in usb_ia_event_cb()
1111 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1114 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1118 usb_ia->ia_ndi_event_hdl, NULL, in usb_ia_event_cb()
1122 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1129 for (i = 0; i < usb_ia->ia_n_ifs; i++) { in usb_ia_event_cb()
1130 if (usb_ia->ia_child_events[i] & in usb_ia_event_cb()
1132 usb_ia->ia_child_events[i] &= in usb_ia_event_cb()
1134 child_dip = usb_ia->ia_children_dips[i]; in usb_ia_event_cb()
1135 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1139 usb_ia->ia_ndi_event_hdl, in usb_ia_event_cb()
1142 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1145 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1148 (void) ndi_event_run_callbacks(usb_ia->ia_ndi_event_hdl, in usb_ia_event_cb()
1151 mutex_enter(&usb_ia->ia_mutex); in usb_ia_event_cb()
1154 mutex_exit(&usb_ia->ia_mutex); in usb_ia_event_cb()
1162 usb_ia_create_pm_components(dev_info_t *dip, usb_ia_t *usb_ia) in usb_ia_create_pm_components() argument
1167 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_create_pm_components()
1173 mutex_enter(&usb_ia->ia_mutex); in usb_ia_create_pm_components()
1174 usb_ia->ia_pm = iapm; in usb_ia_create_pm_components()
1175 iapm->uc_usb_statep = usb_ia; in usb_ia_create_pm_components()
1178 mutex_exit(&usb_ia->ia_mutex); in usb_ia_create_pm_components()
1205 USB_DPRINTF_L3(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_create_pm_components()
1217 USB_DPRINTF_L4(DPRINT_MASK_PM, usb_ia->ia_log_handle, in usb_ia_create_pm_components()