Lines Matching refs:hsreq
194 struct s3c_hsudc_req *hsreq, int status) in s3c_hsudc_complete_request() argument
199 list_del_init(&hsreq->queue); in s3c_hsudc_complete_request()
200 hsreq->req.status = status; in s3c_hsudc_complete_request()
209 usb_gadget_giveback_request(&hsep->ep, &hsreq->req); in s3c_hsudc_complete_request()
221 struct s3c_hsudc_req *hsreq; in s3c_hsudc_nuke_ep() local
224 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_nuke_ep()
226 s3c_hsudc_complete_request(hsep, hsreq, status); in s3c_hsudc_nuke_ep()
280 struct s3c_hsudc_req *hsreq) in s3c_hsudc_write_fifo() argument
288 buf = hsreq->req.buf + hsreq->req.actual; in s3c_hsudc_write_fifo()
291 length = hsreq->req.length - hsreq->req.actual; in s3c_hsudc_write_fifo()
293 hsreq->req.actual += length; in s3c_hsudc_write_fifo()
302 if (hsreq->req.length != hsreq->req.actual || hsreq->req.zero) in s3c_hsudc_write_fifo()
309 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_write_fifo()
326 struct s3c_hsudc_req *hsreq) in s3c_hsudc_read_fifo() argument
340 buf = hsreq->req.buf + hsreq->req.actual; in s3c_hsudc_read_fifo()
342 buflen = hsreq->req.length - hsreq->req.actual; in s3c_hsudc_read_fifo()
347 hsreq->req.actual += min(rlen, buflen); in s3c_hsudc_read_fifo()
356 hsreq->req.status = -EOVERFLOW; in s3c_hsudc_read_fifo()
362 if (is_short || hsreq->req.actual == hsreq->req.length) { in s3c_hsudc_read_fifo()
363 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_read_fifo()
381 struct s3c_hsudc_req *hsreq; in s3c_hsudc_epin_intr() local
395 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_epin_intr()
397 if ((s3c_hsudc_write_fifo(hsep, hsreq) == 0) && in s3c_hsudc_epin_intr()
399 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_epin_intr()
414 struct s3c_hsudc_req *hsreq; in s3c_hsudc_epout_intr() local
432 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_epout_intr()
434 if (((s3c_hsudc_read_fifo(hsep, hsreq)) == 0) && in s3c_hsudc_epout_intr()
436 s3c_hsudc_read_fifo(hsep, hsreq); in s3c_hsudc_epout_intr()
452 struct s3c_hsudc_req *hsreq; in s3c_hsudc_set_halt() local
477 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_set_halt()
479 if (hsreq) in s3c_hsudc_set_halt()
480 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_set_halt()
540 struct s3c_hsudc_req hsreq; in s3c_hsudc_process_req_status() local
561 INIT_LIST_HEAD(&hsreq.queue); in s3c_hsudc_process_req_status()
562 hsreq.req.length = 2; in s3c_hsudc_process_req_status()
563 hsreq.req.buf = &reply; in s3c_hsudc_process_req_status()
564 hsreq.req.actual = 0; in s3c_hsudc_process_req_status()
565 hsreq.req.complete = NULL; in s3c_hsudc_process_req_status()
566 s3c_hsudc_write_fifo(hsep0, &hsreq); in s3c_hsudc_process_req_status()
645 struct s3c_hsudc_req *hsreq; in s3c_hsudc_handle_ep0_intr() local
669 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_handle_ep0_intr()
671 s3c_hsudc_write_fifo(hsep, hsreq); in s3c_hsudc_handle_ep0_intr()
682 hsreq = list_entry(hsep->queue.next, in s3c_hsudc_handle_ep0_intr()
684 s3c_hsudc_read_fifo(hsep, hsreq); in s3c_hsudc_handle_ep0_intr()
780 struct s3c_hsudc_req *hsreq; in s3c_hsudc_alloc_request() local
782 hsreq = kzalloc(sizeof(*hsreq), gfp_flags); in s3c_hsudc_alloc_request()
783 if (!hsreq) in s3c_hsudc_alloc_request()
786 INIT_LIST_HEAD(&hsreq->queue); in s3c_hsudc_alloc_request()
787 return &hsreq->req; in s3c_hsudc_alloc_request()
799 struct s3c_hsudc_req *hsreq; in s3c_hsudc_free_request() local
801 hsreq = our_req(_req); in s3c_hsudc_free_request()
802 WARN_ON(!list_empty(&hsreq->queue)); in s3c_hsudc_free_request()
803 kfree(hsreq); in s3c_hsudc_free_request()
817 struct s3c_hsudc_req *hsreq; in s3c_hsudc_queue() local
824 hsreq = our_req(_req); in s3c_hsudc_queue()
826 !list_empty(&hsreq->queue))) in s3c_hsudc_queue()
842 s3c_hsudc_complete_request(hsep, hsreq, 0); in s3c_hsudc_queue()
852 (s3c_hsudc_write_fifo(hsep, hsreq) == 1)) in s3c_hsudc_queue()
853 hsreq = NULL; in s3c_hsudc_queue()
857 && (s3c_hsudc_read_fifo(hsep, hsreq) == 1)) in s3c_hsudc_queue()
858 hsreq = NULL; in s3c_hsudc_queue()
862 if (hsreq) in s3c_hsudc_queue()
863 list_add_tail(&hsreq->queue, &hsep->queue); in s3c_hsudc_queue()
880 struct s3c_hsudc_req *hsreq; in s3c_hsudc_dequeue() local
889 list_for_each_entry(hsreq, &hsep->queue, queue) { in s3c_hsudc_dequeue()
890 if (&hsreq->req == _req) in s3c_hsudc_dequeue()
893 if (&hsreq->req != _req) { in s3c_hsudc_dequeue()
899 s3c_hsudc_complete_request(hsep, hsreq, -ECONNRESET); in s3c_hsudc_dequeue()