Lines Matching refs:rpipe

140 static void rpipe_init(struct wa_rpipe *rpipe)  in rpipe_init()  argument
142 kref_init(&rpipe->refcnt); in rpipe_init()
143 spin_lock_init(&rpipe->seg_lock); in rpipe_init()
144 INIT_LIST_HEAD(&rpipe->seg_list); in rpipe_init()
145 INIT_LIST_HEAD(&rpipe->list_node); in rpipe_init()
172 struct wa_rpipe *rpipe = container_of(_rpipe, struct wa_rpipe, refcnt); in rpipe_destroy() local
173 u8 index = le16_to_cpu(rpipe->descr.wRPipeIndex); in rpipe_destroy()
175 if (rpipe->ep) in rpipe_destroy()
176 rpipe->ep->hcpriv = NULL; in rpipe_destroy()
177 rpipe_put_idx(rpipe->wa, index); in rpipe_destroy()
178 wa_put(rpipe->wa); in rpipe_destroy()
179 kfree(rpipe); in rpipe_destroy()
198 struct wa_rpipe *rpipe; in rpipe_get_idle() local
201 rpipe = kzalloc(sizeof(*rpipe), gfp); in rpipe_get_idle()
202 if (rpipe == NULL) in rpipe_get_idle()
204 rpipe_init(rpipe); in rpipe_get_idle()
211 result = __rpipe_get_descr(wa, &rpipe->descr, rpipe_idx); in rpipe_get_idle()
215 else if ((rpipe->descr.bmCharacteristics & crs) != 0) in rpipe_get_idle()
220 kfree(rpipe); in rpipe_get_idle()
225 rpipe->wa = wa_get(wa); in rpipe_get_idle()
226 *prpipe = rpipe; in rpipe_get_idle()
313 static int rpipe_aim(struct wa_rpipe *rpipe, struct wahc *wa, in rpipe_aim() argument
330 __rpipe_reset(wa, le16_to_cpu(rpipe->descr.wRPipeIndex)); in rpipe_aim()
331 atomic_set(&rpipe->segs_available, in rpipe_aim()
332 le16_to_cpu(rpipe->descr.wRequests)); in rpipe_aim()
335 rpipe->descr.wBlocks = cpu_to_le16(16); /* given */ in rpipe_aim()
338 rpipe->descr.wMaxPacketSize = epcd->wOverTheAirPacketSize; in rpipe_aim()
340 rpipe->descr.wMaxPacketSize = ep->desc.wMaxPacketSize; in rpipe_aim()
342 rpipe->descr.hwa_bMaxBurst = max(min_t(unsigned int, in rpipe_aim()
344 rpipe->descr.hwa_bDeviceInfoIndex = in rpipe_aim()
347 rpipe->descr.bSpeed = usb_pipeendpoint(urb->pipe) == 0 ? in rpipe_aim()
352 le16_to_cpu(rpipe->descr.wRPipeIndex), in rpipe_aim()
353 usb_pipeendpoint(urb->pipe), rpipe->descr.bSpeed); in rpipe_aim()
355 rpipe->descr.hwa_reserved = 0; in rpipe_aim()
357 rpipe->descr.bEndpointAddress = ep->desc.bEndpointAddress; in rpipe_aim()
359 rpipe->descr.bDataSequence = 0; in rpipe_aim()
362 ack_window = 0xFFFFFFFF >> (32 - rpipe->descr.hwa_bMaxBurst); in rpipe_aim()
363 rpipe->descr.dwCurrentWindow = cpu_to_le32(ack_window); in rpipe_aim()
366 rpipe->descr.bMaxDataSequence = epcd_max_sequence - 1; in rpipe_aim()
367 rpipe->descr.bInterval = ep->desc.bInterval; in rpipe_aim()
369 rpipe->descr.bOverTheAirInterval = epcd->bOverTheAirInterval; in rpipe_aim()
371 rpipe->descr.bOverTheAirInterval = 0; /* 0 if not isoc */ in rpipe_aim()
373 rpipe->descr.bmAttribute = (ep->desc.bmAttributes & in rpipe_aim()
376 rpipe->descr.bmRetryOptions = (wa->wusb->retry_count & 0xF); in rpipe_aim()
378 rpipe->descr.wNumTransactionErrors = 0; in rpipe_aim()
379 result = __rpipe_set_descr(wa, &rpipe->descr, in rpipe_aim()
380 le16_to_cpu(rpipe->descr.wRPipeIndex)); in rpipe_aim()
396 static int rpipe_check_aim(const struct wa_rpipe *rpipe, const struct wahc *wa, in rpipe_check_aim() argument
406 if (rpipe->descr.rdf != (val)) { \ in rpipe_check_aim()
409 rpipe->descr.rdf, (val)); \ in rpipe_check_aim()
442 struct wa_rpipe *rpipe; in rpipe_get_by_ep() local
446 rpipe = ep->hcpriv; in rpipe_get_by_ep()
447 if (rpipe != NULL) { in rpipe_get_by_ep()
449 result = rpipe_check_aim(rpipe, wa, ep, urb, gfp); in rpipe_get_by_ep()
453 __rpipe_get(rpipe); in rpipe_get_by_ep()
456 le16_to_cpu(rpipe->descr.wRPipeIndex)); in rpipe_get_by_ep()
461 result = rpipe_get_idle(&rpipe, wa, 1 << eptype, gfp); in rpipe_get_by_ep()
464 result = rpipe_aim(rpipe, wa, ep, urb, gfp); in rpipe_get_by_ep()
466 rpipe_put(rpipe); in rpipe_get_by_ep()
469 ep->hcpriv = rpipe; in rpipe_get_by_ep()
470 rpipe->ep = ep; in rpipe_get_by_ep()
471 __rpipe_get(rpipe); /* for caching into ep->hcpriv */ in rpipe_get_by_ep()
474 le16_to_cpu(rpipe->descr.wRPipeIndex)); in rpipe_get_by_ep()
518 struct wa_rpipe *rpipe; in rpipe_ep_disable() local
521 rpipe = ep->hcpriv; in rpipe_ep_disable()
522 if (rpipe != NULL) { in rpipe_ep_disable()
523 u16 index = le16_to_cpu(rpipe->descr.wRPipeIndex); in rpipe_ep_disable()
530 rpipe_put(rpipe); in rpipe_ep_disable()
539 struct wa_rpipe *rpipe; in rpipe_clear_feature_stalled() local
542 rpipe = ep->hcpriv; in rpipe_clear_feature_stalled()
543 if (rpipe != NULL) { in rpipe_clear_feature_stalled()
544 u16 index = le16_to_cpu(rpipe->descr.wRPipeIndex); in rpipe_clear_feature_stalled()