Lines Matching refs:cpd
169 usb_loc_fill(struct usb_fs_privdata* pd, struct usb_cdev_privdata *cpd) in usb_loc_fill() argument
171 cpd->bus_index = pd->bus_index; in usb_loc_fill()
172 cpd->dev_index = pd->dev_index; in usb_loc_fill()
173 cpd->ep_addr = pd->ep_addr; in usb_loc_fill()
174 cpd->fifo_index = pd->fifo_index; in usb_loc_fill()
189 usb_ref_device(struct usb_cdev_privdata *cpd, in usb_ref_device() argument
195 DPRINTFN(2, "cpd=%p need uref=%d\n", cpd, need_uref); in usb_ref_device()
201 cpd->bus = devclass_get_softc(usb_devclass_ptr, cpd->bus_index); in usb_ref_device()
202 if (cpd->bus == NULL) { in usb_ref_device()
203 DPRINTFN(2, "no bus at %u\n", cpd->bus_index); in usb_ref_device()
206 cpd->udev = cpd->bus->devices[cpd->dev_index]; in usb_ref_device()
207 if (cpd->udev == NULL) { in usb_ref_device()
208 DPRINTFN(2, "no device at %u\n", cpd->dev_index); in usb_ref_device()
211 if (cpd->udev->state == USB_STATE_DETACHED && in usb_ref_device()
219 if (cpd->udev->refcount == USB_DEV_REF_MAX) { in usb_ref_device()
223 cpd->udev->refcount++; in usb_ref_device()
231 crd->do_unlock = usbd_enum_lock_sig(cpd->udev); in usb_ref_device()
248 if (cpd->fflags == 0) { in usb_ref_device()
252 if (cpd->fflags & FWRITE) { in usb_ref_device()
253 ppf = cpd->udev->fifo; in usb_ref_device()
254 f = ppf[cpd->fifo_index + USB_FIFO_TX]; in usb_ref_device()
259 if (f->curr_cpd != cpd) in usb_ref_device()
268 if (cpd->fflags & FREAD) { in usb_ref_device()
269 ppf = cpd->udev->fifo; in usb_ref_device()
270 f = ppf[cpd->fifo_index + USB_FIFO_RX]; in usb_ref_device()
275 if (f->curr_cpd != cpd) in usb_ref_device()
299 usbd_enum_unlock(cpd->udev); in usb_ref_device()
302 if (--(cpd->udev->refcount) == 0) in usb_ref_device()
303 cv_broadcast(&cpd->udev->ref_cv); in usb_ref_device()
325 usb_usb_ref_device(struct usb_cdev_privdata *cpd, in usb_usb_ref_device() argument
338 usb_unref_device(cpd, crd); in usb_usb_ref_device()
340 return (usb_ref_device(cpd, crd, 1 /* need uref */)); in usb_usb_ref_device()
350 usb_unref_device(struct usb_cdev_privdata *cpd, in usb_unref_device() argument
354 DPRINTFN(2, "cpd=%p is_uref=%d\n", cpd, crd->is_uref); in usb_unref_device()
357 usbd_enum_unlock(cpd->udev); in usb_unref_device()
374 if (--(cpd->udev->refcount) == 0) in usb_unref_device()
375 cv_broadcast(&cpd->udev->ref_cv); in usb_unref_device()
399 usb_fifo_create(struct usb_cdev_privdata *cpd, in usb_fifo_create() argument
402 struct usb_device *udev = cpd->udev; in usb_fifo_create()
410 int e = cpd->ep_addr; in usb_fifo_create()
412 is_tx = (cpd->fflags & FWRITE) ? 1 : 0; in usb_fifo_create()
413 is_rx = (cpd->fflags & FREAD) ? 1 : 0; in usb_fifo_create()
421 f = udev->fifo[cpd->fifo_index + USB_FIFO_TX]; in usb_fifo_create()
427 f = udev->fifo[cpd->fifo_index + USB_FIFO_RX]; in usb_fifo_create()
562 cpd->fifo_index = n; in usb_fifo_create()
682 usb_fifo_open(struct usb_cdev_privdata *cpd, in usb_fifo_open() argument
739 f->curr_cpd = cpd; in usb_fifo_open()
874 struct usb_cdev_privdata *cpd; in usb_open() local
886 cpd = malloc(sizeof(*cpd), M_USBDEV, M_WAITOK | M_ZERO); in usb_open()
888 usb_loc_fill(pd, cpd); in usb_open()
889 err = usb_ref_device(cpd, &refs, 1); in usb_open()
892 free(cpd, M_USBDEV); in usb_open()
895 cpd->fflags = fflags; /* access mode for open lifetime */ in usb_open()
898 err = usb_fifo_create(cpd, &refs); in usb_open()
902 usb_unref_device(cpd, &refs); in usb_open()
903 free(cpd, M_USBDEV); in usb_open()
907 err = usb_fifo_open(cpd, refs.rxfifo, fflags); in usb_open()
910 usb_unref_device(cpd, &refs); in usb_open()
911 free(cpd, M_USBDEV); in usb_open()
916 err = usb_fifo_open(cpd, refs.txfifo, fflags); in usb_open()
922 usb_unref_device(cpd, &refs); in usb_open()
923 free(cpd, M_USBDEV); in usb_open()
927 usb_unref_device(cpd, &refs); in usb_open()
928 devfs_set_cdevpriv(cpd, usb_close); in usb_open()
940 struct usb_cdev_privdata *cpd = arg; in usb_close() local
943 DPRINTFN(2, "cpd=%p\n", cpd); in usb_close()
945 err = usb_ref_device(cpd, &refs, in usb_close()
952 if (cpd->fflags & FREAD) { in usb_close()
953 usb_fifo_close(refs.rxfifo, cpd->fflags); in usb_close()
955 if (cpd->fflags & FWRITE) { in usb_close()
956 usb_fifo_close(refs.txfifo, cpd->fflags); in usb_close()
958 usb_unref_device(cpd, &refs); in usb_close()
960 free(cpd, M_USBDEV); in usb_close()
1057 struct usb_cdev_privdata* cpd; in usb_ioctl() local
1064 err = devfs_get_cdevpriv((void **)&cpd); in usb_ioctl()
1073 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_ioctl()
1077 fflags = cpd->fflags; in usb_ioctl()
1101 if (usb_usb_ref_device(cpd, &refs)) { in usb_ioctl()
1119 usb_unref_device(cpd, &refs); in usb_ioctl()
1123 while (usb_ref_device(cpd, &refs, 1 /* need uref */)) { in usb_ioctl()
1124 if (usb_ref_device(cpd, &refs, 0)) { in usb_ioctl()
1128 usb_unref_device(cpd, &refs); in usb_ioctl()
1134 usb_unref_device(cpd, &refs); in usb_ioctl()
1148 struct usb_cdev_privdata* cpd; in usb_filter_write() local
1158 cpd = f->curr_cpd; in usb_filter_write()
1159 if (cpd == NULL) { in usb_filter_write()
1189 struct usb_cdev_privdata* cpd; in usb_filter_read() local
1199 cpd = f->curr_cpd; in usb_filter_read()
1200 if (cpd == NULL) { in usb_filter_read()
1248 struct usb_cdev_privdata* cpd; in usb_kqfilter() local
1255 if (devfs_get_cdevpriv((void **)&cpd) != 0 || in usb_kqfilter()
1256 usb_ref_device(cpd, &refs, 0) != 0) in usb_kqfilter()
1259 fflags = cpd->fflags; in usb_kqfilter()
1289 usb_unref_device(cpd, &refs); in usb_kqfilter()
1298 struct usb_cdev_privdata* cpd; in usb_poll() local
1303 if (devfs_get_cdevpriv((void **)&cpd) != 0 || in usb_poll()
1304 usb_ref_device(cpd, &refs, 0) != 0) in usb_poll()
1308 fflags = cpd->fflags; in usb_poll()
1393 usb_unref_device(cpd, &refs); in usb_poll()
1401 struct usb_cdev_privdata* cpd; in usb_read() local
1408 err = devfs_get_cdevpriv((void **)&cpd); in usb_read()
1412 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_read()
1419 usb_unref_device(cpd, &refs); in usb_read()
1506 usb_unref_device(cpd, &refs); in usb_read()
1515 struct usb_cdev_privdata* cpd; in usb_write() local
1525 err = devfs_get_cdevpriv((void **)&cpd); in usb_write()
1529 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_write()
1536 usb_unref_device(cpd, &refs); in usb_write()
1641 usb_unref_device(cpd, &refs); in usb_write()