Lines Matching refs:hsreq
246 struct s3c_hsudc_req *hsreq, int status) in s3c_hsudc_complete_request() argument
251 list_del_init(&hsreq->queue); in s3c_hsudc_complete_request()
252 hsreq->req.status = status; in s3c_hsudc_complete_request()
261 usb_gadget_giveback_request(&hsep->ep, &hsreq->req); in s3c_hsudc_complete_request()
273 struct s3c_hsudc_req *hsreq; in s3c_hsudc_nuke_ep() local
276 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_nuke_ep()
278 s3c_hsudc_complete_request(hsep, hsreq, status); in s3c_hsudc_nuke_ep()
332 struct s3c_hsudc_req *hsreq) in s3c_hsudc_write_fifo() argument
340 buf = hsreq->req.buf + hsreq->req.actual; in s3c_hsudc_write_fifo()
343 length = hsreq->req.length - hsreq->req.actual; in s3c_hsudc_write_fifo()
345 hsreq->req.actual += length; in s3c_hsudc_write_fifo()
354 if (hsreq->req.length != hsreq->req.actual || hsreq->req.zero) in s3c_hsudc_write_fifo()
361 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_write_fifo()
378 struct s3c_hsudc_req *hsreq) in s3c_hsudc_read_fifo() argument
392 buf = hsreq->req.buf + hsreq->req.actual; in s3c_hsudc_read_fifo()
394 buflen = hsreq->req.length - hsreq->req.actual; in s3c_hsudc_read_fifo()
399 hsreq->req.actual += min(rlen, buflen); in s3c_hsudc_read_fifo()
408 hsreq->req.status = -EOVERFLOW; in s3c_hsudc_read_fifo()
414 if (is_short || hsreq->req.actual == hsreq->req.length) { in s3c_hsudc_read_fifo()
415 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_read_fifo()
433 struct s3c_hsudc_req *hsreq; in s3c_hsudc_epin_intr() local
447 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_epin_intr()
449 if ((s3c_hsudc_write_fifo(hsep, hsreq) == 0) && in s3c_hsudc_epin_intr()
451 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_epin_intr()
466 struct s3c_hsudc_req *hsreq; in s3c_hsudc_epout_intr() local
484 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_epout_intr()
486 if (((s3c_hsudc_read_fifo(hsep, hsreq)) == 0) && in s3c_hsudc_epout_intr()
488 s3c_hsudc_read_fifo(hsep, hsreq); in s3c_hsudc_epout_intr()
504 struct s3c_hsudc_req *hsreq; in s3c_hsudc_set_halt() local
529 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_set_halt()
531 if (hsreq) in s3c_hsudc_set_halt()
532 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_set_halt()
592 struct s3c_hsudc_req hsreq; in s3c_hsudc_process_req_status() local
613 INIT_LIST_HEAD(&hsreq.queue); in s3c_hsudc_process_req_status()
614 hsreq.req.length = 2; in s3c_hsudc_process_req_status()
615 hsreq.req.buf = &reply; in s3c_hsudc_process_req_status()
616 hsreq.req.actual = 0; in s3c_hsudc_process_req_status()
617 hsreq.req.complete = NULL; in s3c_hsudc_process_req_status()
618 s3c_hsudc_write_fifo(hsep0, &hsreq); in s3c_hsudc_process_req_status()
697 struct s3c_hsudc_req *hsreq; in s3c_hsudc_handle_ep0_intr() local
721 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_handle_ep0_intr()
723 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_handle_ep0_intr()
734 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_handle_ep0_intr()
736 s3c_hsudc_read_fifo(hsep, hsreq); in s3c_hsudc_handle_ep0_intr()
832 struct s3c_hsudc_req *hsreq; in s3c_hsudc_alloc_request() local
834 hsreq = kzalloc(sizeof(*hsreq), gfp_flags); in s3c_hsudc_alloc_request()
835 if (!hsreq) in s3c_hsudc_alloc_request()
838 INIT_LIST_HEAD(&hsreq->queue); in s3c_hsudc_alloc_request()
839 return &hsreq->req; in s3c_hsudc_alloc_request()
851 struct s3c_hsudc_req *hsreq; in s3c_hsudc_free_request() local
853 hsreq = our_req(_req); in s3c_hsudc_free_request()
854 WARN_ON(!list_empty(&hsreq->queue)); in s3c_hsudc_free_request()
855 kfree(hsreq); in s3c_hsudc_free_request()
869 struct s3c_hsudc_req *hsreq; in s3c_hsudc_queue() local
876 hsreq = our_req(_req); in s3c_hsudc_queue()
878 !list_empty(&hsreq->queue))) in s3c_hsudc_queue()
894 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_queue()
904 (s3c_hsudc_write_fifo(hsep, hsreq) == 1)) in s3c_hsudc_queue()
905 hsreq = NULL; in s3c_hsudc_queue()
909 && (s3c_hsudc_read_fifo(hsep, hsreq) == 1)) in s3c_hsudc_queue()
910 hsreq = NULL; in s3c_hsudc_queue()
914 if (hsreq) in s3c_hsudc_queue()
915 list_add_tail(&hsreq->queue, &hsep->queue); in s3c_hsudc_queue()
932 struct s3c_hsudc_req *hsreq; in s3c_hsudc_dequeue() local
941 list_for_each_entry(hsreq, &hsep->queue, queue) { in s3c_hsudc_dequeue()
942 if (&hsreq->req == _req) in s3c_hsudc_dequeue()
945 if (&hsreq->req != _req) { in s3c_hsudc_dequeue()
951 s3c_hsudc_complete_request(hsep, hsreq, -ECONNRESET); in s3c_hsudc_dequeue()