Lines Matching defs:cpd

95 usb_loc_fill(struct usb_fs_privdata* pd, struct usb_cdev_privdata *cpd)
97 cpd->bus_index = pd->bus_index;
98 cpd->dev_index = pd->dev_index;
99 cpd->ep_addr = pd->ep_addr;
100 cpd->fifo_index = pd->fifo_index;
115 usb_ref_device(struct usb_cdev_privdata *cpd,
121 DPRINTFN(2, "cpd=%p need uref=%d\n", cpd, need_uref);
127 cpd->bus = devclass_get_softc(usb_devclass_ptr, cpd->bus_index);
128 if (cpd->bus == NULL) {
129 DPRINTFN(2, "no bus at %u\n", cpd->bus_index);
132 cpd->udev = cpd->bus->devices[cpd->dev_index];
133 if (cpd->udev == NULL) {
134 DPRINTFN(2, "no device at %u\n", cpd->dev_index);
138 if (cpd->udev->state == USB_STATE_DETACHED &&
146 if (cpd->udev->refcount == USB_DEV_REF_MAX) {
150 cpd->udev->refcount++;
158 crd->do_unlock = usbd_enum_lock(cpd->udev);
175 if (cpd->fflags == 0) {
179 if ((unsigned int)cpd->fflags & FWRITE) {
180 ppf = cpd->udev->fifo;
181 f = ppf[cpd->fifo_index + USB_FIFO_TX];
186 if (f->curr_cpd != cpd)
196 if ((unsigned int)cpd->fflags & FREAD) {
197 ppf = cpd->udev->fifo;
198 f = ppf[cpd->fifo_index + USB_FIFO_RX];
203 if (f->curr_cpd != cpd)
228 usbd_enum_unlock(cpd->udev);
231 if (cpd->udev && --(cpd->udev->refcount) == 0)
232 cv_broadcast(&cpd->udev->ref_cv);
254 usb_usb_ref_device(struct usb_cdev_privdata *cpd,
267 usb_unref_device(cpd, crd);
269 return (usb_ref_device(cpd, crd, 1 /* need uref */));
279 usb_unref_device(struct usb_cdev_privdata *cpd,
283 DPRINTFN(2, "cpd=%p is_uref=%d\n", cpd, crd->is_uref);
286 usbd_enum_unlock(cpd->udev);
303 if (--(cpd->udev->refcount) == 0)
304 cv_broadcast(&cpd->udev->ref_cv);
329 usb_fifo_create(struct usb_cdev_privdata *cpd,
332 struct usb_device *udev = cpd->udev;
340 int e = cpd->ep_addr;
342 is_tx = ((unsigned int)cpd->fflags & FWRITE) ? 1 : 0;
343 is_rx = ((unsigned int)cpd->fflags & FREAD) ? 1 : 0;
351 f = udev->fifo[cpd->fifo_index + USB_FIFO_TX];
357 f = udev->fifo[cpd->fifo_index + USB_FIFO_RX];
492 cpd->fifo_index = n;
607 usb_fifo_open(struct usb_cdev_privdata *cpd,
664 f->curr_cpd = cpd;
785 struct usb_cdev_privdata *cpd = NULL;
799 cpd = bsd_malloc(sizeof(*cpd), M_USBDEV, M_WAITOK | M_ZERO);
800 if (cpd == NULL) {
804 usb_loc_fill(pd, cpd);
805 err = usb_ref_device(cpd, &refs, 1);
808 bsd_free(cpd, M_USBDEV);
811 cpd->fflags = fflags; /* access mode for open lifetime */
814 err = usb_fifo_create(cpd, &refs);
818 usb_unref_device(cpd, &refs);
819 bsd_free(cpd, M_USBDEV);
823 err = usb_fifo_open(cpd, refs.rxfifo, fflags);
826 usb_unref_device(cpd, &refs);
827 bsd_free(cpd, M_USBDEV);
832 err = usb_fifo_open(cpd, refs.txfifo, fflags);
838 usb_unref_device(cpd, &refs);
839 bsd_free(cpd, M_USBDEV);
844 usb_unref_device(cpd, &refs);
845 filep->f_priv = cpd;
857 struct usb_cdev_privdata *cpd = (struct usb_cdev_privdata *)filep->f_priv;
860 DPRINTFN(2, "cpd=%p\n", cpd);
862 err = usb_ref_device(cpd, &refs,
869 if ((unsigned int)cpd->fflags & FREAD) {
870 usb_fifo_close(refs.rxfifo, cpd->fflags);
872 if ((unsigned int)cpd->fflags & FWRITE) {
873 usb_fifo_close(refs.txfifo, cpd->fflags);
875 usb_unref_device(cpd, &refs);
877 bsd_free(cpd, M_USBDEV);
962 struct usb_cdev_privdata *cpd = (struct usb_cdev_privdata *)filep->f_priv;
975 err = usb_ref_device(cpd, &refs, 0 /* no uref */ );
979 fflags = cpd->fflags;
1003 if (usb_usb_ref_device(cpd, &refs)) {
1021 usb_unref_device(cpd, &refs);
1025 while (usb_ref_device(cpd, &refs, 1 /* need uref */)) {
1026 if (usb_ref_device(cpd, &refs, 0)) {
1030 usb_unref_device(cpd, &refs);
1036 usb_unref_device(cpd, &refs);
1045 struct usb_cdev_privdata *cpd = (struct usb_cdev_privdata *)filep->f_priv;
1051 if (usb_ref_device(cpd, &refs, 0) != 0)
1055 fflags = cpd->fflags;
1140 usb_unref_device(cpd, &refs);
1149 struct usb_cdev_privdata *cpd = (struct usb_cdev_privdata *)filep->f_priv;
1156 err = usb_ref_device(cpd, &refs, 0 /* no uref */ );
1163 usb_unref_device(cpd, &refs);
1247 usb_unref_device(cpd, &refs);
1256 struct usb_cdev_privdata *cpd = (struct usb_cdev_privdata *)filep->f_priv;
1266 err = usb_ref_device(cpd, &refs, 0 /* no uref */ );
1273 usb_unref_device(cpd, &refs);
1370 usb_unref_device(cpd, &refs);