Lines Matching refs:f

113 static int	ugen_get_iface_driver(struct usb_fifo *f, struct usb_gen_descriptor *ugd);
115 static int ugen_get32(u_long cmd, struct usb_fifo *f, struct usb_gen_descriptor32 *ugd32);
120 static int ugen_fs_uninit(struct usb_fifo *f);
149 ugen_transfer_setup(struct usb_fifo *f, in ugen_transfer_setup() argument
152 struct usb_endpoint *ep = usb_fifo_softc(f); in ugen_transfer_setup()
153 struct usb_device *udev = f->udev; in ugen_transfer_setup()
157 mtx_unlock(f->priv_mtx); in ugen_transfer_setup()
163 error = usbd_transfer_setup(udev, &iface_index, f->xfer, in ugen_transfer_setup()
164 setup, n_setup, f, f->priv_mtx); in ugen_transfer_setup()
166 if (f->xfer[0]->nframes == 1) { in ugen_transfer_setup()
167 error = usb_fifo_alloc_buffer(f, in ugen_transfer_setup()
168 f->xfer[0]->max_data_length, 2); in ugen_transfer_setup()
170 error = usb_fifo_alloc_buffer(f, in ugen_transfer_setup()
171 f->xfer[0]->max_frame_size, in ugen_transfer_setup()
172 2 * f->xfer[0]->nframes); in ugen_transfer_setup()
175 usbd_transfer_unsetup(f->xfer, n_setup); in ugen_transfer_setup()
178 mtx_lock(f->priv_mtx); in ugen_transfer_setup()
184 ugen_open(struct usb_fifo *f, int fflags) in ugen_open() argument
186 struct usb_endpoint *ep = usb_fifo_softc(f); in ugen_open()
193 mtx_lock(f->priv_mtx); in ugen_open()
194 switch (usbd_get_speed(f->udev)) { in ugen_open()
197 f->nframes = UGEN_HW_FRAMES; in ugen_open()
198 f->bufsize = UGEN_BULK_FS_BUFFER_SIZE; in ugen_open()
201 f->nframes = UGEN_HW_FRAMES * 8; in ugen_open()
202 f->bufsize = UGEN_BULK_HS_BUFFER_SIZE; in ugen_open()
208 f->bufsize = 0; /* use "wMaxPacketSize" */ in ugen_open()
210 f->timeout = USB_NO_TIMEOUT; in ugen_open()
211 f->flag_short = 0; in ugen_open()
212 f->fifo_zlp = 0; in ugen_open()
213 mtx_unlock(f->priv_mtx); in ugen_open()
219 ugen_close(struct usb_fifo *f, int fflags) in ugen_close() argument
227 mtx_lock(f->priv_mtx); in ugen_close()
228 usbd_transfer_stop(f->xfer[0]); in ugen_close()
229 usbd_transfer_stop(f->xfer[1]); in ugen_close()
230 mtx_unlock(f->priv_mtx); in ugen_close()
232 usbd_transfer_unsetup(f->xfer, 2); in ugen_close()
233 usb_fifo_free_buffer(f); in ugen_close()
235 if (ugen_fs_uninit(f)) { in ugen_close()
242 ugen_open_pipe_write(struct usb_fifo *f) in ugen_open_pipe_write() argument
245 struct usb_endpoint *ep = usb_fifo_softc(f); in ugen_open_pipe_write()
248 USB_MTX_ASSERT(f->priv_mtx, MA_OWNED); in ugen_open_pipe_write()
250 if (f->xfer[0] || f->xfer[1]) { in ugen_open_pipe_write()
276 if (f->flag_short) { in ugen_open_pipe_write()
280 usb_config[0].timeout = f->timeout; in ugen_open_pipe_write()
282 usb_config[0].bufsize = f->bufsize; in ugen_open_pipe_write()
283 if (ugen_transfer_setup(f, usb_config, 2)) { in ugen_open_pipe_write()
287 f->flag_stall = 0; in ugen_open_pipe_write()
293 usb_config[0].frames = f->nframes; in ugen_open_pipe_write()
300 if (ugen_transfer_setup(f, usb_config, 2)) { in ugen_open_pipe_write()
311 ugen_open_pipe_read(struct usb_fifo *f) in ugen_open_pipe_read() argument
314 struct usb_endpoint *ep = usb_fifo_softc(f); in ugen_open_pipe_read()
317 USB_MTX_ASSERT(f->priv_mtx, MA_OWNED); in ugen_open_pipe_read()
319 if (f->xfer[0] || f->xfer[1]) { in ugen_open_pipe_read()
345 if (f->flag_short) { in ugen_open_pipe_read()
348 usb_config[0].timeout = f->timeout; in ugen_open_pipe_read()
351 usb_config[0].bufsize = f->bufsize; in ugen_open_pipe_read()
353 if (ugen_transfer_setup(f, usb_config, 2)) { in ugen_open_pipe_read()
357 f->flag_stall = 0; in ugen_open_pipe_read()
363 usb_config[0].frames = f->nframes; in ugen_open_pipe_read()
370 if (ugen_transfer_setup(f, usb_config, 2)) { in ugen_open_pipe_read()
382 ugen_start_read(struct usb_fifo *f) in ugen_start_read() argument
385 if (ugen_open_pipe_read(f)) { in ugen_start_read()
387 usb_fifo_put_data_error(f); in ugen_start_read()
390 usbd_transfer_start(f->xfer[0]); in ugen_start_read()
391 usbd_transfer_start(f->xfer[1]); in ugen_start_read()
395 ugen_start_write(struct usb_fifo *f) in ugen_start_write() argument
398 if (ugen_open_pipe_write(f)) { in ugen_start_write()
400 usb_fifo_get_data_error(f); in ugen_start_write()
403 usbd_transfer_start(f->xfer[0]); in ugen_start_write()
404 usbd_transfer_start(f->xfer[1]); in ugen_start_write()
408 ugen_stop_io(struct usb_fifo *f) in ugen_stop_io() argument
411 usbd_transfer_stop(f->xfer[0]); in ugen_stop_io()
412 usbd_transfer_stop(f->xfer[1]); in ugen_stop_io()
418 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_ctrl_read_callback() local
426 if (f->fifo_zlp != 4) { in ugen_ctrl_read_callback()
427 f->fifo_zlp++; in ugen_ctrl_read_callback()
438 f->fifo_zlp = 0; in ugen_ctrl_read_callback()
440 usb_fifo_put_data(f, xfer->frbuffers, 0, in ugen_ctrl_read_callback()
444 if (f->flag_stall) { in ugen_ctrl_read_callback()
445 usbd_transfer_start(f->xfer[1]); in ugen_ctrl_read_callback()
448 USB_IF_POLL(&f->free_q, m); in ugen_ctrl_read_callback()
458 usb_fifo_put_data(f, xfer->frbuffers, 0, 0, 1); in ugen_ctrl_read_callback()
459 f->flag_stall = 1; in ugen_ctrl_read_callback()
460 f->fifo_zlp = 0; in ugen_ctrl_read_callback()
461 usbd_transfer_start(f->xfer[1]); in ugen_ctrl_read_callback()
470 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_ctrl_write_callback() local
482 if (f->flag_stall) { in ugen_ctrl_write_callback()
483 usbd_transfer_start(f->xfer[1]); in ugen_ctrl_write_callback()
489 if (usb_fifo_get_data(f, xfer->frbuffers, 0, in ugen_ctrl_write_callback()
498 f->flag_stall = 1; in ugen_ctrl_write_callback()
499 usbd_transfer_start(f->xfer[1]); in ugen_ctrl_write_callback()
508 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_read_clear_stall_callback() local
509 struct usb_xfer *xfer_other = f->xfer[0]; in ugen_read_clear_stall_callback()
511 if (f->flag_stall == 0) { in ugen_read_clear_stall_callback()
516 DPRINTFN(5, "f=%p: stall cleared\n", f); in ugen_read_clear_stall_callback()
517 f->flag_stall = 0; in ugen_read_clear_stall_callback()
525 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_write_clear_stall_callback() local
526 struct usb_xfer *xfer_other = f->xfer[0]; in ugen_write_clear_stall_callback()
528 if (f->flag_stall == 0) { in ugen_write_clear_stall_callback()
533 DPRINTFN(5, "f=%p: stall cleared\n", f); in ugen_write_clear_stall_callback()
534 f->flag_stall = 0; in ugen_write_clear_stall_callback()
542 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_isoc_read_callback() local
556 usb_fifo_put_data(f, xfer->frbuffers, offset, in ugen_isoc_read_callback()
581 struct usb_fifo *f = usbd_xfer_softc(xfer); in ugen_isoc_write_callback() local
594 if (usb_fifo_get_data(f, xfer->frbuffers, offset, in ugen_isoc_write_callback()
619 ugen_set_config(struct usb_fifo *f, uint8_t index) in ugen_set_config() argument
623 if (f->udev->flags.usb_mode != USB_MODE_HOST) { in ugen_set_config()
630 if (ugen_fs_uninit(f)) { in ugen_set_config()
635 if (usbd_start_set_config(f->udev, index) != 0) in ugen_set_config()
642 ugen_set_interface(struct usb_fifo *f, in ugen_set_interface() argument
647 if (f->udev->flags.usb_mode != USB_MODE_HOST) { in ugen_set_interface()
653 if (ugen_fs_uninit(f)) { in ugen_set_interface()
658 if (usbd_set_alt_interface_index(f->udev, iface_index, alt_index)) { in ugen_set_interface()
662 if (usb_probe_and_attach(f->udev, iface_index)) { in ugen_set_interface()
675 ugen_get_cdesc(struct usb_fifo *f, struct usb_gen_descriptor *ugd) in ugen_get_cdesc() argument
678 struct usb_device *udev = f->udev; in ugen_get_cdesc()
727 ugen_get_sdesc(struct usb_fifo *f, struct usb_gen_descriptor *ugd) in ugen_get_sdesc() argument
735 do_unlock = usbd_ctrl_lock(f->udev); in ugen_get_sdesc()
737 ptr = f->udev->scratch.data; in ugen_get_sdesc()
738 size = sizeof(f->udev->scratch.data); in ugen_get_sdesc()
740 if (usbd_req_get_string_desc(f->udev, NULL, ptr, in ugen_get_sdesc()
756 usbd_ctrl_unlock(f->udev); in ugen_get_sdesc()
771 ugen_get_iface_driver(struct usb_fifo *f, struct usb_gen_descriptor *ugd) in ugen_get_iface_driver() argument
773 struct usb_device *udev = f->udev; in ugen_get_iface_driver()
832 ugen_fill_deviceinfo(struct usb_fifo *f, struct usb_device_info *di) in ugen_fill_deviceinfo() argument
837 udev = f->udev; in ugen_fill_deviceinfo()
873 ugen_do_request(struct usb_fifo *f, struct usb_ctl_request *ur) in ugen_do_request() argument
879 if (usb_check_request(f->udev, &ur->ucr_request)) { in ugen_do_request()
892 (f->udev, NULL, &ur->ucr_request, ur->ucr_data, in ugen_do_request()
907 ugen_do_request32(struct usb_fifo *f, struct usb_ctl_request32 *ur32) in ugen_do_request32() argument
918 error = ugen_do_request(f, &ur); in ugen_do_request32()
934 ugen_re_enumerate(struct usb_fifo *f) in ugen_re_enumerate() argument
936 struct usb_device *udev = f->udev; in ugen_re_enumerate()
953 if (ugen_fs_uninit(f)) { in ugen_re_enumerate()
963 ugen_fs_init(struct usb_fifo *f, in ugen_fs_init() argument
973 if (f->fs_ep_max != 0) in ugen_fs_init()
976 if (f->dev_ep_index != 0 || ep_index_max == 0) in ugen_fs_init()
979 if (ugen_fifo_in_use(f, fflags)) in ugen_fs_init()
982 error = usb_fifo_alloc_buffer(f, 1, ep_index_max); in ugen_fs_init()
984 mtx_lock(f->priv_mtx); in ugen_fs_init()
985 f->fs_ep_max = ep_index_max; in ugen_fs_init()
986 f->fs_ep_ptr = fs_ep_ptr; in ugen_fs_init()
987 f->fs_ep_sz = fs_ep_sz; in ugen_fs_init()
988 mtx_unlock(f->priv_mtx); in ugen_fs_init()
994 ugen_fs_uninit(struct usb_fifo *f) in ugen_fs_uninit() argument
996 if (f->fs_ep_max == 0) in ugen_fs_uninit()
1003 sx_xlock(&f->fs_fastpath_lock); in ugen_fs_uninit()
1004 mtx_lock(f->priv_mtx); in ugen_fs_uninit()
1005 f->fs_ep_max = 0; in ugen_fs_uninit()
1006 mtx_unlock(f->priv_mtx); in ugen_fs_uninit()
1007 sx_xunlock(&f->fs_fastpath_lock); in ugen_fs_uninit()
1009 usbd_transfer_unsetup(f->fs_xfer, USB_FS_XFER_MAX); in ugen_fs_uninit()
1011 mtx_lock(f->priv_mtx); in ugen_fs_uninit()
1012 f->fs_ep_ptr = NULL; in ugen_fs_uninit()
1013 f->flag_iscomplete = 0; in ugen_fs_uninit()
1014 mtx_unlock(f->priv_mtx); in ugen_fs_uninit()
1016 usb_fifo_free_buffer(f); in ugen_fs_uninit()
1021 usb_fs_open(struct usb_fifo *f, struct usb_fs_open *popen, in usb_fs_open() argument
1032 if (popen->ep_index >= f->fs_ep_max) in usb_fs_open()
1035 if (f->fs_xfer[popen->ep_index] != NULL) in usb_fs_open()
1054 ep = usbd_get_ep_by_addr(f->udev, popen->ep_no); in usb_fs_open()
1080 if (f->udev->flags.usb_mode != USB_MODE_HOST) in usb_fs_open()
1086 if (f->udev->flags.usb_mode != USB_MODE_HOST) in usb_fs_open()
1098 error = usbd_transfer_setup(f->udev, &iface_index, in usb_fs_open()
1099 f->fs_xfer + popen->ep_index, usb_config, 1, in usb_fs_open()
1100 f, f->priv_mtx); in usb_fs_open()
1104 f->fs_xfer[popen->ep_index]->max_frame_size; in usb_fs_open()
1106 f->fs_xfer[popen->ep_index]->max_data_length; in usb_fs_open()
1109 f->fs_xfer[popen->ep_index]->nframes; in usb_fs_open()
1111 f->fs_xfer[popen->ep_index]->priv_fifo = in usb_fs_open()
1120 usb_fs_close(struct usb_fifo *f, struct usb_fs_close *pclose) in usb_fs_close() argument
1124 if (pclose->ep_index >= f->fs_ep_max) in usb_fs_close()
1131 sx_xlock(&f->fs_fastpath_lock); in usb_fs_close()
1132 mtx_lock(f->priv_mtx); in usb_fs_close()
1133 xfer = f->fs_xfer[pclose->ep_index]; in usb_fs_close()
1134 f->fs_xfer[pclose->ep_index] = NULL; in usb_fs_close()
1135 mtx_unlock(f->priv_mtx); in usb_fs_close()
1136 sx_xunlock(&f->fs_fastpath_lock); in usb_fs_close()
1146 usb_fs_clear_stall_sync(struct usb_fifo *f, struct usb_fs_clear_stall_sync *pstall) in usb_fs_clear_stall_sync() argument
1152 if (pstall->ep_index >= f->fs_ep_max) in usb_fs_clear_stall_sync()
1155 if (f->fs_xfer[pstall->ep_index] == NULL) in usb_fs_clear_stall_sync()
1158 if (f->udev->flags.usb_mode != USB_MODE_HOST) in usb_fs_clear_stall_sync()
1161 mtx_lock(f->priv_mtx); in usb_fs_clear_stall_sync()
1162 error = usbd_transfer_pending(f->fs_xfer[pstall->ep_index]); in usb_fs_clear_stall_sync()
1163 mtx_unlock(f->priv_mtx); in usb_fs_clear_stall_sync()
1168 ep = f->fs_xfer[pstall->ep_index]->endpoint; in usb_fs_clear_stall_sync()
1178 error = usbd_do_request(f->udev, NULL, &req, NULL); in usb_fs_clear_stall_sync()
1180 usbd_clear_data_toggle(f->udev, ep); in usb_fs_clear_stall_sync()
1188 ugen_fs_get_complete(struct usb_fifo *f, uint8_t *pindex) in ugen_fs_get_complete() argument
1192 USB_IF_DEQUEUE(&f->used_q, m); in ugen_fs_get_complete()
1197 USB_IF_ENQUEUE(&f->free_q, m); in ugen_fs_get_complete()
1203 f->flag_iscomplete = 0; in ugen_fs_get_complete()
1209 ugen_fs_set_complete(struct usb_fifo *f, uint8_t index) in ugen_fs_set_complete() argument
1213 USB_IF_DEQUEUE(&f->free_q, m); in ugen_fs_set_complete()
1224 USB_IF_ENQUEUE(&f->used_q, m); in ugen_fs_set_complete()
1226 f->flag_iscomplete = 1; in ugen_fs_set_complete()
1228 usb_fifo_wakeup(f); in ugen_fs_set_complete()
1232 ugen_fs_getbuffer(void **uptrp, struct usb_fifo *f, void *buffer, in ugen_fs_getbuffer() argument
1246 switch (f->fs_ep_sz) { in ugen_fs_getbuffer()
1259 panic("%s: unhandled fs_ep_sz %#x", __func__, f->fs_ep_sz); in ugen_fs_getbuffer()
1264 ugen_fs_copy_in(struct usb_fifo *f, uint8_t ep_index) in ugen_fs_copy_in() argument
1278 mtx_lock(f->priv_mtx); in ugen_fs_copy_in()
1279 if (ep_index >= f->fs_ep_max) { in ugen_fs_copy_in()
1280 mtx_unlock(f->priv_mtx); in ugen_fs_copy_in()
1283 xfer = f->fs_xfer[ep_index]; in ugen_fs_copy_in()
1285 mtx_unlock(f->priv_mtx); in ugen_fs_copy_in()
1289 mtx_unlock(f->priv_mtx); in ugen_fs_copy_in()
1292 mtx_unlock(f->priv_mtx); in ugen_fs_copy_in()
1294 error = ugen_fs_copyin(f, ep_index, &fs_ep); in ugen_fs_copy_in()
1308 error = ugen_fs_getbuffer(&uaddr, f, fs_ep.ppBuffer, 0); in ugen_fs_copy_in()
1331 if (usb_check_request(f->udev, req)) { in ugen_fs_copy_in()
1398 error = ugen_fs_getbuffer(&uaddr, f, fs_ep.ppBuffer, n); in ugen_fs_copy_in()
1425 mtx_lock(f->priv_mtx); in ugen_fs_copy_in()
1426 ugen_fs_set_complete(f, ep_index); in ugen_fs_copy_in()
1427 mtx_unlock(f->priv_mtx); in ugen_fs_copy_in()
1432 ugen_fs_ep_uptr(struct usb_fifo *f, uint8_t ep_index) in ugen_fs_ep_uptr() argument
1435 ((char *)f->fs_ep_ptr + (ep_index * f->fs_ep_sz))); in ugen_fs_ep_uptr()
1439 ugen_fs_copyin(struct usb_fifo *f, uint8_t ep_index, in ugen_fs_copyin() argument
1447 switch (f->fs_ep_sz) { in ugen_fs_copyin()
1449 error = copyin(ugen_fs_ep_uptr(f, ep_index), fs_ep, in ugen_fs_copyin()
1450 f->fs_ep_sz); in ugen_fs_copyin()
1457 error = copyin(ugen_fs_ep_uptr(f, ep_index), &fs_ep32, in ugen_fs_copyin()
1458 f->fs_ep_sz); in ugen_fs_copyin()
1472 panic("%s: unhandled fs_ep_sz %#x", __func__, f->fs_ep_sz); in ugen_fs_copyin()
1480 struct usb_fifo *f, uint8_t ep_index) in ugen_fs_update() argument
1492 switch (f->fs_ep_sz) { in ugen_fs_update()
1494 u.fs_ep_uptr = ugen_fs_ep_uptr(f, ep_index); in ugen_fs_update()
1502 ugen_fs_ep_uptr(f, ep_index); in ugen_fs_update()
1509 panic("%s: unhandled fs_ep_sz %#x", __func__, f->fs_ep_sz); in ugen_fs_update()
1528 ugen_fs_copy_out_cancelled(struct usb_fifo *f, uint8_t ep_index) in ugen_fs_copy_out_cancelled() argument
1533 error = ugen_fs_copyin(f, ep_index, &fs_ep); in ugen_fs_copy_out_cancelled()
1541 return (ugen_fs_update(&fs_ep, f, ep_index)); in ugen_fs_copy_out_cancelled()
1545 ugen_fs_copy_out(struct usb_fifo *f, uint8_t ep_index) in ugen_fs_copy_out() argument
1560 mtx_lock(f->priv_mtx); in ugen_fs_copy_out()
1561 if (ep_index >= f->fs_ep_max) { in ugen_fs_copy_out()
1562 mtx_unlock(f->priv_mtx); in ugen_fs_copy_out()
1565 xfer = f->fs_xfer[ep_index]; in ugen_fs_copy_out()
1567 mtx_unlock(f->priv_mtx); in ugen_fs_copy_out()
1572 mtx_unlock(f->priv_mtx); in ugen_fs_copy_out()
1574 return (ugen_fs_copy_out_cancelled(f, ep_index)); in ugen_fs_copy_out()
1576 mtx_unlock(f->priv_mtx); in ugen_fs_copy_out()
1579 mtx_unlock(f->priv_mtx); in ugen_fs_copy_out()
1581 error = ugen_fs_copyin(f, ep_index, &fs_ep); in ugen_fs_copy_out()
1645 error = ugen_fs_getbuffer(&uaddr, f, fs_ep.ppBuffer, n); in ugen_fs_copy_out()
1677 error = ugen_fs_update(&fs_ep, f, ep_index); in ugen_fs_copy_out()
1682 ugen_fifo_in_use(struct usb_fifo *f, int fflags) in ugen_fifo_in_use() argument
1687 f_rx = f->udev->fifo[(f->fifo_index & ~1) + USB_FIFO_RX]; in ugen_fifo_in_use()
1688 f_tx = f->udev->fifo[(f->fifo_index & ~1) + USB_FIFO_TX]; in ugen_fifo_in_use()
1702 ugen_ioctl(struct usb_fifo *f, u_long cmd, void *addr, int fflags) in ugen_ioctl() argument
1720 sx_slock(&f->fs_fastpath_lock); in ugen_ioctl()
1721 mtx_lock(f->priv_mtx); in ugen_ioctl()
1722 error = ugen_fs_get_complete(f, &ep_index); in ugen_ioctl()
1723 mtx_unlock(f->priv_mtx); in ugen_ioctl()
1729 error = ugen_fs_copy_out(f, u.pcomp->ep_index); in ugen_ioctl()
1731 sx_sunlock(&f->fs_fastpath_lock); in ugen_ioctl()
1735 sx_slock(&f->fs_fastpath_lock); in ugen_ioctl()
1736 error = ugen_fs_copy_in(f, u.pstart->ep_index); in ugen_ioctl()
1738 mtx_lock(f->priv_mtx); in ugen_ioctl()
1739 xfer = f->fs_xfer[u.pstart->ep_index]; in ugen_ioctl()
1741 mtx_unlock(f->priv_mtx); in ugen_ioctl()
1743 sx_sunlock(&f->fs_fastpath_lock); in ugen_ioctl()
1747 mtx_lock(f->priv_mtx); in ugen_ioctl()
1748 if (u.pstop->ep_index >= f->fs_ep_max) { in ugen_ioctl()
1752 xfer = f->fs_xfer[u.pstart->ep_index]; in ugen_ioctl()
1769 mtx_unlock(f->priv_mtx); in ugen_ioctl()
1783 ugen_set_short_xfer(struct usb_fifo *f, void *addr) in ugen_set_short_xfer() argument
1792 if (f->flag_short == t) { in ugen_set_short_xfer()
1796 if (f->xfer[0] || f->xfer[1]) { in ugen_set_short_xfer()
1800 f->flag_short = t; in ugen_set_short_xfer()
1805 ugen_set_timeout(struct usb_fifo *f, void *addr) in ugen_set_timeout() argument
1807 f->timeout = *(int *)addr; in ugen_set_timeout()
1808 if (f->timeout > 65535) { in ugen_set_timeout()
1810 f->timeout = 65535; in ugen_set_timeout()
1816 ugen_get_frame_size(struct usb_fifo *f, void *addr) in ugen_get_frame_size() argument
1818 if (f->xfer[0]) { in ugen_get_frame_size()
1819 *(int *)addr = f->xfer[0]->max_frame_size; in ugen_get_frame_size()
1827 ugen_set_buffer_size(struct usb_fifo *f, void *addr) in ugen_set_buffer_size() argument
1838 if (f->bufsize == t) { in ugen_set_buffer_size()
1842 if (f->xfer[0] || f->xfer[1]) { in ugen_set_buffer_size()
1846 f->bufsize = t; in ugen_set_buffer_size()
1851 ugen_get_buffer_size(struct usb_fifo *f, void *addr) in ugen_get_buffer_size() argument
1853 *(int *)addr = f->bufsize; in ugen_get_buffer_size()
1858 ugen_get_iface_desc(struct usb_fifo *f, in ugen_get_iface_desc() argument
1863 iface = usbd_get_iface(f->udev, f->iface_index); in ugen_get_iface_desc()
1873 ugen_get_endpoint_desc(struct usb_fifo *f, in ugen_get_endpoint_desc() argument
1878 ep = usb_fifo_softc(f); in ugen_get_endpoint_desc()
1889 ugen_set_power_mode(struct usb_fifo *f, int mode) in ugen_set_power_mode() argument
1891 struct usb_device *udev = f->udev; in ugen_set_power_mode()
1978 ugen_get_power_mode(struct usb_fifo *f) in ugen_get_power_mode() argument
1980 struct usb_device *udev = f->udev; in ugen_get_power_mode()
1989 ugen_get_port_path(struct usb_fifo *f, struct usb_device_port_path *dpp) in ugen_get_port_path() argument
1991 struct usb_device *udev = f->udev; in ugen_get_port_path()
2028 ugen_get_power_usage(struct usb_fifo *f) in ugen_get_power_usage() argument
2030 struct usb_device *udev = f->udev; in ugen_get_power_usage()
2039 ugen_do_port_feature(struct usb_fifo *f, uint8_t port_no, in ugen_do_port_feature() argument
2042 struct usb_device *udev = f->udev; in ugen_do_port_feature()
2076 ugen_iface_ioctl(struct usb_fifo *f, u_long cmd, void *addr, int fflags) in ugen_iface_ioctl() argument
2082 f_rx = f->udev->fifo[(f->fifo_index & ~1) + USB_FIFO_RX]; in ugen_iface_ioctl()
2083 f_tx = f->udev->fifo[(f->fifo_index & ~1) + USB_FIFO_TX]; in ugen_iface_ioctl()
2218 ugen_ioctl_post(struct usb_fifo *f, u_long cmd, void *addr, int fflags) in ugen_ioctl_post() argument
2264 *(int *)addr = f->udev->curr_config_index; in ugen_ioctl_post()
2272 error = ugen_set_config(f, *(int *)addr); in ugen_ioctl_post()
2276 iface = usbd_get_iface(f->udev, in ugen_ioctl_post()
2290 error = ugen_set_interface(f, in ugen_ioctl_post()
2295 dtemp = usbd_get_device_descriptor(f->udev); in ugen_ioctl_post()
2304 ctemp = usbd_get_config_descriptor(f->udev); in ugen_ioctl_post()
2313 error = ugen_get_cdesc(f, addr); in ugen_ioctl_post()
2317 error = ugen_get_sdesc(f, addr); in ugen_ioctl_post()
2321 error = ugen_get_iface_driver(f, addr); in ugen_ioctl_post()
2328 error = ugen_get32(cmd, f, addr); in ugen_ioctl_post()
2338 error = ugen_do_request(f, addr); in ugen_ioctl_post()
2348 error = ugen_do_request32(f, addr); in ugen_ioctl_post()
2354 error = ugen_fill_deviceinfo(f, addr); in ugen_ioctl_post()
2360 f->udev->stats_err.uds_requests[n]; in ugen_ioctl_post()
2362 f->udev->stats_ok.uds_requests[n]; in ugen_ioctl_post()
2367 error = ugen_re_enumerate(f); in ugen_ioctl_post()
2371 *u.ptime = f->udev->plugtime; in ugen_ioctl_post()
2381 iface = usbd_get_iface(f->udev, n); in ugen_ioctl_post()
2406 usb_detach_device(f->udev, n, 0); in ugen_ioctl_post()
2412 usbd_set_parent_iface(f->udev, n, n); in ugen_ioctl_post()
2416 error = ugen_set_power_mode(f, *u.pint); in ugen_ioctl_post()
2420 *u.pint = ugen_get_power_mode(f); in ugen_ioctl_post()
2424 error = ugen_get_port_path(f, u.dpp); in ugen_ioctl_post()
2428 *u.pint = ugen_get_power_usage(f); in ugen_ioctl_post()
2432 error = ugen_do_port_feature(f, in ugen_ioctl_post()
2437 error = ugen_do_port_feature(f, in ugen_ioctl_post()
2442 error = ugen_fs_init(f, u.pinit->pEndpoints, in ugen_ioctl_post()
2448 error = ugen_fs_init(f, PTRIN(u.pinit32->pEndpoints), in ugen_ioctl_post()
2458 error = ugen_fs_uninit(f); in ugen_ioctl_post()
2463 error = usb_fs_open(f, u.popen, fflags, in ugen_ioctl_post()
2468 error = usb_fs_close(f, u.pclose); in ugen_ioctl_post()
2472 error = usb_fs_clear_stall_sync(f, u.pstall); in ugen_ioctl_post()
2476 mtx_lock(f->priv_mtx); in ugen_ioctl_post()
2477 error = ugen_iface_ioctl(f, cmd, addr, fflags); in ugen_ioctl_post()
2478 mtx_unlock(f->priv_mtx); in ugen_ioctl_post()
2541 ugen_get32(u_long cmd, struct usb_fifo *f, struct usb_gen_descriptor32 *ugd32) in ugen_get32() argument
2549 error = ugen_get_cdesc(f, &ugd); in ugen_get32()
2553 error = ugen_get_sdesc(f, &ugd); in ugen_get32()
2557 error = ugen_get_iface_driver(f, &ugd); in ugen_get32()