Lines Matching defs:uasp

258 	usb_as_state_t	*uasp = NULL;
266 if ((uasp = ddi_get_soft_state(usb_as_statep,
268 *result = uasp->usb_as_dip;
292 usb_as_state_t *uasp;
318 uasp = (usb_as_state_t *)ddi_get_soft_state(usb_as_statep, instance);
319 if (uasp == NULL) {
324 uasp->usb_as_log_handle = usb_alloc_log_hdl(dip, "as",
328 uasp->usb_as_instance = instance;
329 uasp->usb_as_dip = dip;
331 (void) snprintf(uasp->dstr, sizeof (uasp->dstr), "%s#%d",
335 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
338 usb_free_log_hdl(uasp->usb_as_log_handle);
339 ddi_soft_state_free(usb_as_statep, uasp->usb_as_instance);
344 if (usb_get_dev_data(dip, &uasp->usb_as_dev_data,
346 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
349 usb_free_log_hdl(uasp->usb_as_log_handle);
350 ddi_soft_state_free(usb_as_statep, uasp->usb_as_instance);
356 mutex_init(&uasp->usb_as_mutex, NULL, MUTEX_DRIVER,
357 uasp->usb_as_dev_data->dev_iblock_cookie);
359 cv_init(&uasp->usb_as_pipe_cv, NULL, CV_DRIVER, NULL);
361 uasp->usb_as_ser_acc = usb_init_serialization(dip,
364 uasp->usb_as_default_ph = uasp->usb_as_dev_data->dev_default_ph;
365 uasp->usb_as_isoc_pp.pp_max_async_reqs = 1;
368 if (usb_as_handle_descriptors(uasp) != USB_SUCCESS) {
373 usb_free_descr_tree(dip, uasp->usb_as_dev_data);
378 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
385 uasp->usb_as_dev_state = USB_DEV_ONLINE;
388 usb_as_create_pm_components(dip, uasp);
392 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
401 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
407 if (uasp) {
408 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
410 usb_as_cleanup(dip, uasp);
422 usb_as_state_t *uasp;
425 uasp = ddi_get_soft_state(usb_as_statep, instance);
429 usb_as_cleanup(dip, uasp);
444 usb_as_cleanup(dev_info_t *dip, usb_as_state_t *uasp)
448 if (uasp == NULL) {
453 uaspm = uasp->usb_as_pm;
455 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
458 if (uasp->usb_as_isoc_ph) {
459 usb_pipe_close(dip, uasp->usb_as_isoc_ph,
471 mutex_enter(&uasp->usb_as_mutex);
473 if (uaspm && (uasp->usb_as_dev_state != USB_DEV_DISCONNECTED)) {
475 mutex_exit(&uasp->usb_as_mutex);
482 usb_as_pm_busy_component(uasp);
488 uasp->usb_as_log_handle,
491 usb_as_pm_idle_component(uasp);
493 mutex_exit(&uasp->usb_as_mutex);
498 mutex_enter(&uasp->usb_as_mutex);
503 uasp->usb_as_pm = NULL;
506 usb_client_detach(dip, uasp->usb_as_dev_data);
508 usb_as_free_alts(uasp);
510 mutex_exit(&uasp->usb_as_mutex);
511 mutex_destroy(&uasp->usb_as_mutex);
513 usb_fini_serialization(uasp->usb_as_ser_acc);
516 usb_free_log_hdl(uasp->usb_as_log_handle);
517 ddi_soft_state_free(usb_as_statep, uasp->usb_as_instance);
532 usb_as_state_t *uasp = ddi_get_soft_state(usb_as_statep, inst);
534 if (uasp == NULL) {
540 USB_DPRINTF_L4(PRINT_MASK_OPEN, uasp->usb_as_log_handle,
543 mutex_enter(&uasp->usb_as_mutex);
545 if (uasp->usb_as_flag == USB_AS_OPEN || credp != kcred) {
546 USB_DPRINTF_L2(PRINT_MASK_OPEN, uasp->usb_as_log_handle,
550 mutex_exit(&uasp->usb_as_mutex);
556 if (uasp->usb_as_dev_state == USB_DEV_DISCONNECTED) {
557 USB_DPRINTF_L2(PRINT_MASK_OPEN, uasp->usb_as_log_handle,
559 mutex_exit(&uasp->usb_as_mutex);
565 uasp->usb_as_flag = USB_AS_OPEN;
566 mutex_exit(&uasp->usb_as_mutex);
571 usb_as_pm_busy_component(uasp);
572 (void) pm_raise_power(uasp->usb_as_dip, 0, USB_DEV_OS_FULL_PWR);
574 USB_DPRINTF_L4(PRINT_MASK_OPEN, uasp->usb_as_log_handle,
590 usb_as_state_t *uasp = ddi_get_soft_state(usb_as_statep, inst);
592 USB_DPRINTF_L4(PRINT_MASK_CLOSE, uasp->usb_as_log_handle,
595 mutex_enter(&uasp->usb_as_mutex);
596 uasp->usb_as_flag = USB_AS_DISMANTLING;
597 mutex_exit(&uasp->usb_as_mutex);
605 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
607 usb_release_access(uasp->usb_as_ser_acc);
610 usb_as_pm_idle_component(uasp);
612 mutex_enter(&uasp->usb_as_mutex);
613 uasp->usb_as_flag = 0;
614 mutex_exit(&uasp->usb_as_mutex);
629 usb_as_state_t *uasp = ddi_get_soft_state(usb_as_statep, inst);
632 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
637 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
642 mutex_enter(&uasp->usb_as_mutex);
646 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
654 *(usb_as_registration_t *)arg = uasp->usb_as_reg;
658 rv = usb_as_set_format(uasp, (usb_audio_formats_t *)arg);
661 rv = usb_as_set_sample_freq(uasp, *(int *)arg);
664 rv = usb_as_setup(uasp);
667 usb_as_teardown(uasp);
670 rv = usb_as_start_play(uasp, (usb_audio_play_req_t *)arg);
674 usb_as_pause_play(uasp);
677 rv = usb_as_start_record(uasp, (void *)arg);
680 rv = usb_as_stop_record(uasp);
683 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
688 mutex_exit(&uasp->usb_as_mutex);
704 usb_as_set_sample_freq(usb_as_state_t *uasp, int freq)
711 ASSERT(mutex_owned(&uasp->usb_as_mutex));
713 alt = uasp->usb_as_alternate;
715 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
717 ddi_get_instance(uasp->usb_as_dip),
718 uasp->usb_as_alts[alt].alt_continuous_sr, freq);
722 ep = uasp->usb_as_alts[alt].alt_ep->bEndpointAddress;
730 mutex_exit(&uasp->usb_as_mutex);
732 if ((rval = usb_as_send_ctrl_cmd(uasp,
742 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
745 mutex_enter(&uasp->usb_as_mutex);
759 usb_as_set_format(usb_as_state_t *uasp, usb_audio_formats_t *format)
766 ASSERT(mutex_owned(&uasp->usb_as_mutex));
768 if (uasp->usb_as_request_count) {
769 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
771 ddi_get_instance(uasp->usb_as_dip),
772 uasp->usb_as_request_count);
777 reg = &uasp->usb_as_reg;
778 interface = uasp->usb_as_ifno;
780 uasp->usb_as_curr_format = *format;
782 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
784 ddi_get_instance(uasp->usb_as_dip), (void *)reg, (void *)format);
794 uasp->usb_as_alternate = alt =
801 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
808 USB_DPRINTF_L3(PRINT_MASK_ALL, uasp->usb_as_log_handle,
812 mutex_exit(&uasp->usb_as_mutex);
814 rval = usb_as_send_ctrl_cmd(uasp,
823 mutex_enter(&uasp->usb_as_mutex);
826 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
842 usb_as_setup(usb_as_state_t *uasp)
844 int alt = uasp->usb_as_alternate;
845 usb_ep_descr_t *ep = (usb_ep_descr_t *)uasp->usb_as_alts[alt].alt_ep;
849 ASSERT(mutex_owned(&uasp->usb_as_mutex));
851 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
853 ddi_get_instance(uasp->usb_as_dip));
857 if (uasp->usb_as_alts[alt].alt_mode == USB_AUDIO_RECORD) {
858 uasp->usb_as_record_pkt_size = ep->wMaxPacketSize;
860 uasp->usb_as_record_pkt_size = 0;
863 if (uasp->usb_as_isoc_ph != NULL) {
864 while (uasp->usb_as_request_count) {
865 cv_wait(&uasp->usb_as_pipe_cv,
866 &uasp->usb_as_mutex);
870 mutex_exit(&uasp->usb_as_mutex);
871 usb_pipe_close(uasp->usb_as_dip, uasp->usb_as_isoc_ph,
874 mutex_enter(&uasp->usb_as_mutex);
875 uasp->usb_as_isoc_ph = NULL;
878 ASSERT(uasp->usb_as_request_count == 0);
879 mutex_exit(&uasp->usb_as_mutex);
882 rval = usb_pipe_open(uasp->usb_as_dip, ep, &uasp->usb_as_isoc_pp,
883 USB_FLAGS_SLEEP, &uasp->usb_as_isoc_ph);
888 USB_DPRINTF_L0(PRINT_MASK_ALL, uasp->usb_as_log_handle,
892 USB_DPRINTF_L0(PRINT_MASK_ALL, uasp->usb_as_log_handle,
898 uasp->usb_as_log_handle,
903 mutex_enter(&uasp->usb_as_mutex);
908 (void) usb_pipe_set_private(uasp->usb_as_isoc_ph, (usb_opaque_t)uasp);
910 mutex_enter(&uasp->usb_as_mutex);
911 uasp->usb_as_audio_state = USB_AS_IDLE;
912 uasp->usb_as_setup_cnt++;
914 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
926 usb_as_teardown(usb_as_state_t *uasp)
928 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
930 ddi_get_instance(uasp->usb_as_dip));
932 ASSERT(mutex_owned(&uasp->usb_as_mutex));
934 uasp->usb_as_audio_state = USB_AS_IDLE;
936 ASSERT(uasp->usb_as_isoc_ph);
938 uasp->usb_as_setup_cnt--;
941 ASSERT(uasp->usb_as_setup_cnt == 0);
943 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
952 usb_as_start_play(usb_as_state_t *uasp, usb_audio_play_req_t *play_req)
957 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
959 ddi_get_instance(uasp->usb_as_dip), uasp->usb_as_request_count);
961 ASSERT(mutex_owned(&uasp->usb_as_mutex));
963 uasp->usb_as_request_samples = play_req->up_samples;
964 uasp->usb_as_ahdl = play_req->up_handle;
965 uasp->usb_as_audio_state = USB_AS_ACTIVE;
967 if ((uasp->usb_as_request_count >= USB_AS_MAX_REQUEST_COUNT) ||
968 (uasp->usb_as_audio_state == USB_AS_IDLE) ||
969 (uasp->usb_as_audio_state == USB_AS_PLAY_PAUSED)) {
970 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
972 uasp->usb_as_audio_state);
975 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
977 uasp->usb_as_request_samples, uasp->usb_as_request_count);
980 for (n_requests = uasp->usb_as_request_count;
982 if ((rval = usb_as_play_isoc_data(uasp, play_req)) !=
989 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1001 usb_as_continue_play(usb_as_state_t *uasp)
1005 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1007 uasp->usb_as_request_count);
1009 ASSERT(mutex_owned(&uasp->usb_as_mutex));
1011 if (uasp->usb_as_dev_state == USB_DEV_DISCONNECTED) {
1012 usb_as_handle_shutdown(uasp);
1017 if ((uasp->usb_as_request_count >= USB_AS_MAX_REQUEST_COUNT) ||
1018 (uasp->usb_as_audio_state == USB_AS_IDLE) ||
1019 (uasp->usb_as_audio_state == USB_AS_PLAY_PAUSED)) {
1020 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1022 uasp->usb_as_audio_state);
1024 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1026 uasp->usb_as_request_samples, uasp->usb_as_request_count);
1029 for (n_requests = uasp->usb_as_request_count;
1031 if (usb_as_play_isoc_data(uasp, NULL) !=
1039 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1045 usb_as_handle_shutdown(usb_as_state_t *uasp)
1049 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1051 ddi_get_instance(uasp->usb_as_dip));
1053 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1056 uasp->usb_as_audio_state = USB_AS_IDLE;
1057 uasp->usb_as_pkt_count = 0;
1058 ahdl = uasp->usb_as_ahdl;
1060 mutex_exit(&uasp->usb_as_mutex);
1062 mutex_enter(&uasp->usb_as_mutex);
1067 usb_as_play_isoc_data(usb_as_state_t *uasp, usb_audio_play_req_t *play_req)
1072 usb_audio_formats_t *format = &uasp->usb_as_curr_format;
1074 void * ahdl = uasp->usb_as_ahdl;
1080 ASSERT(mutex_owned(&uasp->usb_as_mutex));
1093 frame = uasp->usb_as_pkt_count;
1100 pkt_len[pkt] = usb_as_get_pktsize(uasp, format, frame++);
1104 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1106 ddi_get_instance(uasp->usb_as_dip));
1108 mutex_exit(&uasp->usb_as_mutex);
1111 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1113 mutex_enter(&uasp->usb_as_mutex);
1128 mutex_enter(&uasp->usb_as_mutex);
1129 if (uasp->usb_as_request_count == 0) {
1130 usb_as_handle_shutdown(uasp);
1147 uasp->usb_as_log_handle,
1149 "rcnt=0x%x ", uasp->usb_as_request_count);
1167 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1172 if ((isoc_req = usb_alloc_isoc_req(uasp->usb_as_dip,
1174 mutex_enter(&uasp->usb_as_mutex);
1193 isoc_req->isoc_client_private = (usb_opaque_t)uasp;
1195 mutex_enter(&uasp->usb_as_mutex);
1197 USB_DPRINTF_L3(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1200 (void *)isoc_req->isoc_pkt_descr, uasp->usb_as_request_count);
1204 uasp->usb_as_send_debug_count++;
1205 uasp->usb_as_request_count++;
1206 uasp->usb_as_pkt_count += n_pkts;
1207 mutex_exit(&uasp->usb_as_mutex);
1209 if ((rval = usb_pipe_isoc_xfer(uasp->usb_as_isoc_ph,
1212 mutex_enter(&uasp->usb_as_mutex);
1213 uasp->usb_as_request_count--;
1214 cv_signal(&uasp->usb_as_pipe_cv);
1215 uasp->usb_as_send_debug_count--;
1216 uasp->usb_as_pkt_count -= n_pkts;
1218 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1224 mutex_enter(&uasp->usb_as_mutex);
1239 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1241 uasp->usb_as_send_debug_count, uasp->usb_as_rcv_debug_count);
1248 usb_as_pause_play(usb_as_state_t *uasp)
1250 ASSERT(mutex_owned(&uasp->usb_as_mutex));
1253 uasp->usb_as_audio_state = USB_AS_PLAY_PAUSED;
1261 usb_as_state_t *uasp = (usb_as_state_t *)
1265 USB_DPRINTF_L4(PRINT_MASK_CB, uasp->usb_as_log_handle,
1274 USB_DPRINTF_L2(PRINT_MASK_CB, uasp->usb_as_log_handle,
1282 mutex_enter(&uasp->usb_as_mutex);
1284 USB_DPRINTF_L2(PRINT_MASK_CB, uasp->usb_as_log_handle,
1290 uasp->usb_as_request_count--;
1291 cv_signal(&uasp->usb_as_pipe_cv);
1292 uasp->usb_as_rcv_debug_count++;
1293 usb_as_continue_play(uasp);
1295 USB_DPRINTF_L4(PRINT_MASK_CB, uasp->usb_as_log_handle,
1297 uasp->usb_as_send_debug_count, uasp->usb_as_rcv_debug_count);
1299 USB_DPRINTF_L4(PRINT_MASK_CB, uasp->usb_as_log_handle,
1300 "usb_as_play_cb: End, req_cnt=%d", uasp->usb_as_request_count);
1302 mutex_exit(&uasp->usb_as_mutex);
1310 usb_as_state_t *uasp = (usb_as_state_t *)
1315 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1327 uasp->usb_as_log_handle,
1337 mutex_enter(&uasp->usb_as_mutex);
1338 uasp->usb_as_rcv_debug_count++;
1339 uasp->usb_as_request_count--;
1340 cv_signal(&uasp->usb_as_pipe_cv);
1341 usb_as_handle_shutdown(uasp);
1343 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1345 uasp->usb_as_send_debug_count, uasp->usb_as_rcv_debug_count);
1347 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1349 uasp->usb_as_request_count);
1351 mutex_exit(&uasp->usb_as_mutex);
1359 usb_as_start_record(usb_as_state_t *uasp, void * ahdl)
1363 ushort_t record_pkt_size = uasp->usb_as_record_pkt_size;
1366 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1368 ddi_get_instance(uasp->usb_as_dip));
1370 ASSERT(mutex_owned(&uasp->usb_as_mutex));
1376 ASSERT(uasp->usb_as_audio_state != USB_AS_STOP_POLLING_STARTED);
1378 if (uasp->usb_as_audio_state == USB_AS_IDLE) {
1380 uasp->usb_as_ahdl = ahdl;
1381 uasp->usb_as_audio_state = USB_AS_ACTIVE;
1382 mutex_exit(&uasp->usb_as_mutex);
1384 if ((isoc_req = usb_alloc_isoc_req(uasp->usb_as_dip, n_pkt,
1398 isoc_req->isoc_client_private = (usb_opaque_t)uasp;
1400 rval = usb_pipe_isoc_xfer(uasp->usb_as_isoc_ph,
1404 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1408 mutex_enter(&uasp->usb_as_mutex);
1412 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1419 uasp->usb_as_audio_state = USB_AS_IDLE;
1426 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1434 usb_as_stop_record(usb_as_state_t *uasp)
1436 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1438 ASSERT(mutex_owned(&uasp->usb_as_mutex));
1441 if (uasp->usb_as_dev_state == USB_DEV_DISCONNECTED)
1444 switch (uasp->usb_as_audio_state) {
1446 mutex_exit(&uasp->usb_as_mutex);
1452 usb_pipe_stop_isoc_polling(uasp->usb_as_isoc_ph,
1454 mutex_enter(&uasp->usb_as_mutex);
1471 usb_as_state_t *uasp = (usb_as_state_t *)
1478 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1495 rval = usb_pipe_isoc_xfer(uasp->usb_as_isoc_ph, isoc_req, 0);
1497 USB_DPRINTF_L3(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1503 mutex_enter(&uasp->usb_as_mutex);
1506 if (uasp->usb_as_audio_state != USB_AS_STOP_POLLING_STARTED) {
1507 uasp->usb_as_audio_state = USB_AS_STOP_POLLING_STARTED;
1509 mutex_exit(&uasp->usb_as_mutex);
1515 mutex_exit(&uasp->usb_as_mutex);
1522 mutex_enter(&uasp->usb_as_mutex);
1523 USB_DPRINTF_L3(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1525 uasp->usb_as_audio_state, completion_reason);
1527 uasp->usb_as_audio_state = USB_AS_IDLE;
1528 mutex_exit(&uasp->usb_as_mutex);
1536 usb_as_state_t *uasp = (usb_as_state_t *)isoc_req->isoc_client_private;
1539 usb_audio_formats_t *format = &uasp->usb_as_curr_format;
1542 USB_DPRINTF_L4(PRINT_MASK_CB, uasp->usb_as_log_handle,
1547 USB_DPRINTF_L4(PRINT_MASK_CB, uasp->usb_as_log_handle,
1555 mutex_enter(&uasp->usb_as_mutex);
1556 ahdl = uasp->usb_as_ahdl;
1557 sz = uasp->usb_as_record_pkt_size;
1560 if (uasp->usb_as_audio_state != USB_AS_IDLE) {
1562 USB_DPRINTF_L3(PRINT_MASK_CB, uasp->usb_as_log_handle,
1573 uasp->usb_as_log_handle,
1578 mutex_exit(&uasp->usb_as_mutex);
1585 mutex_enter(&uasp->usb_as_mutex);
1590 mutex_exit(&uasp->usb_as_mutex);
1645 usb_as_get_pktsize(usb_as_state_t *uasp, usb_audio_formats_t *format,
1669 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1681 usb_as_send_ctrl_cmd(usb_as_state_t *uasp,
1690 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1702 if (usb_pipe_ctrl_xfer_wait(uasp->usb_as_default_ph, &setup, &data,
1704 USB_DPRINTF_L2(PRINT_MASK_ALL, uasp->usb_as_log_handle,
1722 usb_as_create_pm_components(dev_info_t *dip, usb_as_state_t *uasp)
1727 USB_DPRINTF_L4(PRINT_MASK_PM, uasp->usb_as_log_handle,
1732 uasp->usb_as_pm = uaspm;
1733 uaspm->aspm_state = uasp;
1737 USB_DPRINTF_L3(PRINT_MASK_PM, uasp->usb_as_log_handle,
1744 uasp->usb_as_log_handle,
1753 USB_DPRINTF_L4(PRINT_MASK_PM, uasp->usb_as_log_handle,
1766 usb_as_state_t *uasp;
1770 uasp = ddi_get_soft_state(usb_as_statep, instance);
1772 USB_DPRINTF_L4(PRINT_MASK_PM, uasp->usb_as_log_handle,
1775 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
1777 mutex_enter(&uasp->usb_as_mutex);
1778 uaspm = uasp->usb_as_pm;
1781 USB_DPRINTF_L2(PRINT_MASK_PM, uasp->usb_as_log_handle,
1790 retval = usb_as_pwrlvl0(uasp);
1793 retval = usb_as_pwrlvl1(uasp);
1796 retval = usb_as_pwrlvl2(uasp);
1799 retval = usb_as_pwrlvl3(uasp);
1808 usb_release_access(uasp->usb_as_ser_acc);
1809 mutex_exit(&uasp->usb_as_mutex);
1826 usb_as_pwrlvl0(usb_as_state_t *uasp)
1831 uaspm = uasp->usb_as_pm;
1833 switch (uasp->usb_as_dev_state) {
1841 if (uasp->usb_as_audio_state != USB_AS_IDLE) {
1847 rval = usb_set_device_pwrlvl3(uasp->usb_as_dip);
1850 uasp->usb_as_dev_state = USB_DEV_PWRED_DOWN;
1861 USB_DPRINTF_L2(PRINT_MASK_PM, uasp->usb_as_log_handle,
1871 usb_as_pwrlvl1(usb_as_state_t *uasp)
1876 rval = usb_set_device_pwrlvl2(uasp->usb_as_dip);
1885 usb_as_pwrlvl2(usb_as_state_t *uasp)
1889 rval = usb_set_device_pwrlvl1(uasp->usb_as_dip);
1897 usb_as_pwrlvl3(usb_as_state_t *uasp)
1902 uaspm = uasp->usb_as_pm;
1904 switch (uasp->usb_as_dev_state) {
1908 rval = usb_set_device_pwrlvl0(uasp->usb_as_dip);
1911 uasp->usb_as_dev_state = USB_DEV_ONLINE;
1925 USB_DPRINTF_L2(PRINT_MASK_PM, uasp->usb_as_log_handle,
1943 usb_as_handle_descriptors(usb_as_state_t *uasp)
1945 usb_client_dev_data_t *dev_data = uasp->usb_as_dev_data;
1960 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
1966 uasp->usb_as_ifno = interface;
1973 uasp->usb_as_n_alternates = n_alternates = if_data->if_n_alt;
1974 uasp->usb_as_alts = kmem_zalloc((n_alternates) *
1983 uasp->usb_as_alts[alternate].alt_if =
1987 USB_DPRINTF_L3(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
1998 *(uasp->usb_as_alts[alternate].alt_if) = *if_descr;
2020 uasp->usb_as_log_handle,
2028 USB_DPRINTF_L3(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2036 uasp->usb_as_alts[alternate].alt_general = general;
2048 uasp->usb_as_alts[alternate].alt_format_len = (uchar_t)len;
2054 uasp->usb_as_log_handle,
2062 uasp->usb_as_alts[alternate].alt_format = format;
2064 USB_DPRINTF_L3(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2081 uasp->usb_as_alts[alternate].alt_continuous_sr++;
2086 uasp->usb_as_alts[alternate].alt_n_sample_rates =
2089 uasp->usb_as_alts[alternate].alt_sample_rates =
2099 uasp->usb_as_log_handle,
2102 uasp->usb_as_alts[alternate].
2106 if ((ep_data = usb_lookup_ep_data(uasp->usb_as_dip,
2109 if ((ep_data = usb_lookup_ep_data(uasp->usb_as_dip,
2114 uasp->usb_as_log_handle,
2122 uasp->usb_as_alts[alternate].alt_ep =
2124 *(uasp->usb_as_alts[alternate].alt_ep) = *ep;
2126 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2135 uasp->usb_as_alts[alternate].alt_mode =
2141 uasp->usb_as_log_handle,
2156 uasp->usb_as_log_handle,
2163 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2173 uasp->usb_as_alts[alternate].alt_cs_ep = cs_ep;
2176 uasp->usb_as_alts[alternate].alt_valid++;
2180 usb_as_prepare_registration_data(uasp);
2191 usb_as_free_alts(usb_as_state_t *uasp)
2196 if (uasp->usb_as_alts) {
2197 for (alt = 0; alt < uasp->usb_as_n_alternates; alt++) {
2198 altp = &uasp->usb_as_alts[alt];
2227 kmem_free(uasp->usb_as_alts, (uasp->usb_as_n_alternates) *
2237 usb_as_prepare_registration_data(usb_as_state_t *uasp)
2239 usb_as_registration_t *reg = &uasp->usb_as_reg;
2241 uchar_t n_alternates = uasp->usb_as_n_alternates;
2245 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2250 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2256 reg->reg_ifno = uasp->usb_as_ifno;
2257 reg->reg_mode = uasp->usb_as_alts[1].alt_mode;
2261 if (!uasp->usb_as_alts[alt].alt_valid) {
2264 if (uasp->usb_as_alts[alt].alt_mode !=
2266 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2284 if (!uasp->usb_as_alts[alt].alt_valid) {
2288 format = uasp->usb_as_alts[alt].alt_format;
2289 if (uasp->usb_as_alts[alt].alt_valid &&
2291 (usb_as_valid_format(uasp, alt,
2296 uasp->usb_as_alts[alt].alt_general->
2314 USB_DPRINTF_L2(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2322 USB_DPRINTF_L3(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2345 USB_DPRINTF_L3(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2359 usb_as_valid_format(usb_as_state_t *uasp, uint_t alternate,
2363 usb_as_alt_descr_t *alt_descr = &uasp->usb_as_alts[alternate];
2366 USB_DPRINTF_L4(PRINT_MASK_PM, uasp->usb_as_log_handle,
2371 USB_DPRINTF_L4(PRINT_MASK_PM, uasp->usb_as_log_handle,
2433 USB_DPRINTF_L3(PRINT_MASK_PM, uasp->usb_as_log_handle,
2455 USB_DPRINTF_L3(PRINT_MASK_PM, uasp->usb_as_log_handle,
2476 USB_DPRINTF_L3(PRINT_MASK_PM, uasp->usb_as_log_handle,
2499 usb_as_state_t *uasp = (usb_as_state_t *)ddi_get_soft_state(
2502 USB_DPRINTF_L4(PRINT_MASK_EVENTS, uasp->usb_as_log_handle,
2505 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
2507 mutex_enter(&uasp->usb_as_mutex);
2508 uasp->usb_as_dev_state = USB_DEV_DISCONNECTED;
2509 mutex_exit(&uasp->usb_as_mutex);
2511 usb_release_access(uasp->usb_as_ser_acc);
2523 usb_as_state_t *uasp = (usb_as_state_t *)ddi_get_soft_state(
2526 USB_DPRINTF_L4(PRINT_MASK_EVENTS, uasp->usb_as_log_handle,
2529 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
2531 mutex_enter(&uasp->usb_as_mutex);
2532 uasp->usb_as_dev_state = USB_DEV_SUSPENDED;
2533 mutex_exit(&uasp->usb_as_mutex);
2535 usb_release_access(uasp->usb_as_ser_acc);
2537 USB_DPRINTF_L4(PRINT_MASK_ALL, uasp->usb_as_log_handle,
2553 usb_as_state_t *uasp = (usb_as_state_t *)ddi_get_soft_state(
2556 USB_DPRINTF_L4(PRINT_MASK_EVENTS, uasp->usb_as_log_handle,
2559 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
2561 mutex_enter(&uasp->usb_as_mutex);
2562 usb_as_restore_device_state(dip, uasp);
2563 mutex_exit(&uasp->usb_as_mutex);
2565 usb_release_access(uasp->usb_as_ser_acc);
2578 usb_as_state_t *uasp = (usb_as_state_t *)ddi_get_soft_state(
2581 USB_DPRINTF_L4(PRINT_MASK_EVENTS, uasp->usb_as_log_handle,
2584 (void) usb_serialize_access(uasp->usb_as_ser_acc, USB_WAIT, 0);
2586 mutex_enter(&uasp->usb_as_mutex);
2587 usb_as_restore_device_state(dip, uasp);
2588 mutex_exit(&uasp->usb_as_mutex);
2590 usb_release_access(uasp->usb_as_ser_acc);
2600 usb_as_restore_device_state(dev_info_t *dip, usb_as_state_t *uasp)
2604 USB_DPRINTF_L4(PRINT_MASK_ATTA, uasp->usb_as_log_handle,
2607 ASSERT(mutex_owned(&uasp->usb_as_mutex));
2609 uaspm = uasp->usb_as_pm;
2612 mutex_exit(&uasp->usb_as_mutex);
2613 usb_as_pm_busy_component(uasp);
2616 if (usb_check_same_device(dip, uasp->usb_as_log_handle, USB_LOG_L0,
2618 usb_as_pm_idle_component(uasp);
2621 mutex_enter(&uasp->usb_as_mutex);
2622 uasp->usb_as_dev_state = USB_DEV_DISCONNECTED;
2626 mutex_enter(&uasp->usb_as_mutex);
2630 mutex_exit(&uasp->usb_as_mutex);
2631 if (usb_handle_remote_wakeup(uasp->usb_as_dip,
2634 uasp->usb_as_log_handle,
2637 mutex_enter(&uasp->usb_as_mutex);
2640 uasp->usb_as_dev_state = USB_DEV_ONLINE;
2642 mutex_exit(&uasp->usb_as_mutex);
2643 usb_as_pm_idle_component(uasp);
2644 mutex_enter(&uasp->usb_as_mutex);