Lines Matching refs:crd
116 struct usb_cdev_refdata *crd, int need_uref)
124 (void)memset_s(crd, sizeof(*crd), 0, sizeof(*crd));
158 crd->do_unlock = usbd_enum_lock(cpd->udev);
165 crd->is_uref = 1;
168 if (crd->do_unlock > 1) {
169 crd->do_unlock = 0;
182 crd->txfifo = f;
183 crd->is_write = 1; /* ref */
191 crd->is_usbfs = 1;
199 crd->rxfifo = f;
200 crd->is_read = 1; /* ref */
208 crd->is_usbfs = 1;
214 if (crd->is_write) {
216 crd->txfifo->refcount++;
218 if (crd->is_read) {
220 crd->rxfifo->refcount++;
227 if (crd->do_unlock)
230 if (crd->is_uref) {
238 memset(crd, 0, sizeof(*crd));
255 struct usb_cdev_refdata *crd)
260 if (crd->is_uref)
267 usb_unref_device(cpd, crd);
269 return (usb_ref_device(cpd, crd, 1 /* need uref */));
280 struct usb_cdev_refdata *crd)
283 DPRINTFN(2, "cpd=%p is_uref=%d\n", cpd, crd->is_uref);
285 if (crd->do_unlock)
289 if (crd->is_read) {
290 if (--(crd->rxfifo->refcount) == 0) {
291 cv_signal(&crd->rxfifo->cv_drain);
293 crd->is_read = 0;
295 if (crd->is_write) {
296 if (--(crd->txfifo->refcount) == 0) {
297 cv_signal(&crd->txfifo->cv_drain);
299 crd->is_write = 0;
301 if (crd->is_uref) {
302 crd->is_uref = 0;
330 struct usb_cdev_refdata *crd)
354 crd->txfifo = f;
360 crd->rxfifo = f;
485 crd->txfifo = udev->fifo[n + USB_FIFO_TX];
488 crd->rxfifo = udev->fifo[n + USB_FIFO_RX];