Lines Matching refs:cpd

168 usb_loc_fill(struct usb_fs_privdata* pd, struct usb_cdev_privdata *cpd)  in usb_loc_fill()  argument
170 cpd->bus_index = pd->bus_index; in usb_loc_fill()
171 cpd->dev_index = pd->dev_index; in usb_loc_fill()
172 cpd->ep_addr = pd->ep_addr; in usb_loc_fill()
173 cpd->fifo_index = pd->fifo_index; in usb_loc_fill()
188 usb_ref_device(struct usb_cdev_privdata *cpd, in usb_ref_device() argument
194 DPRINTFN(2, "cpd=%p need uref=%d\n", cpd, need_uref); in usb_ref_device()
200 cpd->bus = devclass_get_softc(usb_devclass_ptr, cpd->bus_index); in usb_ref_device()
201 if (cpd->bus == NULL) { in usb_ref_device()
202 DPRINTFN(2, "no bus at %u\n", cpd->bus_index); in usb_ref_device()
205 cpd->udev = cpd->bus->devices[cpd->dev_index]; in usb_ref_device()
206 if (cpd->udev == NULL) { in usb_ref_device()
207 DPRINTFN(2, "no device at %u\n", cpd->dev_index); in usb_ref_device()
210 if (cpd->udev->state == USB_STATE_DETACHED && in usb_ref_device()
218 if (cpd->udev->refcount == USB_DEV_REF_MAX) { in usb_ref_device()
222 cpd->udev->refcount++; in usb_ref_device()
230 crd->do_unlock = usbd_enum_lock_sig(cpd->udev); in usb_ref_device()
247 if (cpd->fflags == 0) { in usb_ref_device()
251 if (cpd->fflags & FWRITE) { in usb_ref_device()
252 ppf = cpd->udev->fifo; in usb_ref_device()
253 f = ppf[cpd->fifo_index + USB_FIFO_TX]; in usb_ref_device()
258 if (f->curr_cpd != cpd) in usb_ref_device()
267 if (cpd->fflags & FREAD) { in usb_ref_device()
268 ppf = cpd->udev->fifo; in usb_ref_device()
269 f = ppf[cpd->fifo_index + USB_FIFO_RX]; in usb_ref_device()
274 if (f->curr_cpd != cpd) in usb_ref_device()
298 usbd_enum_unlock(cpd->udev); in usb_ref_device()
301 if (--(cpd->udev->refcount) == 0) in usb_ref_device()
302 cv_broadcast(&cpd->udev->ref_cv); in usb_ref_device()
324 usb_usb_ref_device(struct usb_cdev_privdata *cpd, in usb_usb_ref_device() argument
337 usb_unref_device(cpd, crd); in usb_usb_ref_device()
339 return (usb_ref_device(cpd, crd, 1 /* need uref */)); in usb_usb_ref_device()
349 usb_unref_device(struct usb_cdev_privdata *cpd, in usb_unref_device() argument
353 DPRINTFN(2, "cpd=%p is_uref=%d\n", cpd, crd->is_uref); in usb_unref_device()
356 usbd_enum_unlock(cpd->udev); in usb_unref_device()
373 if (--(cpd->udev->refcount) == 0) in usb_unref_device()
374 cv_broadcast(&cpd->udev->ref_cv); in usb_unref_device()
398 usb_fifo_create(struct usb_cdev_privdata *cpd, in usb_fifo_create() argument
401 struct usb_device *udev = cpd->udev; in usb_fifo_create()
409 int e = cpd->ep_addr; in usb_fifo_create()
411 is_tx = (cpd->fflags & FWRITE) ? 1 : 0; in usb_fifo_create()
412 is_rx = (cpd->fflags & FREAD) ? 1 : 0; in usb_fifo_create()
420 f = udev->fifo[cpd->fifo_index + USB_FIFO_TX]; in usb_fifo_create()
426 f = udev->fifo[cpd->fifo_index + USB_FIFO_RX]; in usb_fifo_create()
561 cpd->fifo_index = n; in usb_fifo_create()
681 usb_fifo_open(struct usb_cdev_privdata *cpd, in usb_fifo_open() argument
738 f->curr_cpd = cpd; in usb_fifo_open()
873 struct usb_cdev_privdata *cpd; in usb_open() local
885 cpd = malloc(sizeof(*cpd), M_USBDEV, M_WAITOK | M_ZERO); in usb_open()
887 usb_loc_fill(pd, cpd); in usb_open()
888 err = usb_ref_device(cpd, &refs, 1); in usb_open()
891 free(cpd, M_USBDEV); in usb_open()
894 cpd->fflags = fflags; /* access mode for open lifetime */ in usb_open()
897 err = usb_fifo_create(cpd, &refs); in usb_open()
901 usb_unref_device(cpd, &refs); in usb_open()
902 free(cpd, M_USBDEV); in usb_open()
906 err = usb_fifo_open(cpd, refs.rxfifo, fflags); in usb_open()
909 usb_unref_device(cpd, &refs); in usb_open()
910 free(cpd, M_USBDEV); in usb_open()
915 err = usb_fifo_open(cpd, refs.txfifo, fflags); in usb_open()
921 usb_unref_device(cpd, &refs); in usb_open()
922 free(cpd, M_USBDEV); in usb_open()
926 usb_unref_device(cpd, &refs); in usb_open()
927 devfs_set_cdevpriv(cpd, usb_close); in usb_open()
939 struct usb_cdev_privdata *cpd = arg; in usb_close() local
942 DPRINTFN(2, "cpd=%p\n", cpd); in usb_close()
944 err = usb_ref_device(cpd, &refs, in usb_close()
951 if (cpd->fflags & FREAD) { in usb_close()
952 usb_fifo_close(refs.rxfifo, cpd->fflags); in usb_close()
954 if (cpd->fflags & FWRITE) { in usb_close()
955 usb_fifo_close(refs.txfifo, cpd->fflags); in usb_close()
957 usb_unref_device(cpd, &refs); in usb_close()
959 free(cpd, M_USBDEV); in usb_close()
1056 struct usb_cdev_privdata* cpd; in usb_ioctl() local
1063 err = devfs_get_cdevpriv((void **)&cpd); in usb_ioctl()
1072 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_ioctl()
1076 fflags = cpd->fflags; in usb_ioctl()
1100 if (usb_usb_ref_device(cpd, &refs)) { in usb_ioctl()
1118 usb_unref_device(cpd, &refs); in usb_ioctl()
1122 while (usb_ref_device(cpd, &refs, 1 /* need uref */)) { in usb_ioctl()
1123 if (usb_ref_device(cpd, &refs, 0)) { in usb_ioctl()
1127 usb_unref_device(cpd, &refs); in usb_ioctl()
1133 usb_unref_device(cpd, &refs); in usb_ioctl()
1147 struct usb_cdev_privdata* cpd; in usb_filter_write() local
1157 cpd = f->curr_cpd; in usb_filter_write()
1158 if (cpd == NULL) { in usb_filter_write()
1188 struct usb_cdev_privdata* cpd; in usb_filter_read() local
1198 cpd = f->curr_cpd; in usb_filter_read()
1199 if (cpd == NULL) { in usb_filter_read()
1249 struct usb_cdev_privdata* cpd; in usb_kqfilter() local
1256 if (devfs_get_cdevpriv((void **)&cpd) != 0 || in usb_kqfilter()
1257 usb_ref_device(cpd, &refs, 0) != 0) in usb_kqfilter()
1260 fflags = cpd->fflags; in usb_kqfilter()
1290 usb_unref_device(cpd, &refs); in usb_kqfilter()
1299 struct usb_cdev_privdata* cpd; in usb_poll() local
1304 if (devfs_get_cdevpriv((void **)&cpd) != 0 || in usb_poll()
1305 usb_ref_device(cpd, &refs, 0) != 0) in usb_poll()
1309 fflags = cpd->fflags; in usb_poll()
1394 usb_unref_device(cpd, &refs); in usb_poll()
1402 struct usb_cdev_privdata* cpd; in usb_read() local
1409 err = devfs_get_cdevpriv((void **)&cpd); in usb_read()
1413 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_read()
1420 usb_unref_device(cpd, &refs); in usb_read()
1507 usb_unref_device(cpd, &refs); in usb_read()
1516 struct usb_cdev_privdata* cpd; in usb_write() local
1526 err = devfs_get_cdevpriv((void **)&cpd); in usb_write()
1530 err = usb_ref_device(cpd, &refs, 0 /* no uref */ ); in usb_write()
1537 usb_unref_device(cpd, &refs); in usb_write()
1642 usb_unref_device(cpd, &refs); in usb_write()