Lines Matching refs:whc
28 struct whc_qset *qset_alloc(struct whc *whc, gfp_t mem_flags) in qset_alloc() argument
33 qset = dma_pool_alloc(whc->qset_pool, mem_flags, &dma); in qset_alloc()
39 qset->whc = whc; in qset_alloc()
53 static void qset_fill_qh(struct whc *whc, struct whc_qset *qset, struct urb *urb) in qset_fill_qh() argument
86 if (phy_rate > whc->wusbhc.phy_rate) in qset_fill_qh()
87 phy_rate = whc->wusbhc.phy_rate; in qset_fill_qh()
123 void qset_clear(struct whc *whc, struct whc_qset *qset) in qset_clear() argument
145 void qset_reset(struct whc *whc, struct whc_qset *qset) in qset_reset() argument
158 struct whc_qset *get_qset(struct whc *whc, struct urb *urb, in get_qset() argument
165 qset = qset_alloc(whc, mem_flags); in get_qset()
171 qset_fill_qh(whc, qset, urb); in get_qset()
176 void qset_remove_complete(struct whc *whc, struct whc_qset *qset) in qset_remove_complete() argument
189 enum whc_update qset_add_qtds(struct whc *whc, struct whc_qset *qset) in qset_add_qtds() argument
255 static void qset_remove_qtd(struct whc *whc, struct whc_qset *qset) in qset_remove_qtd() argument
264 static void qset_copy_bounce_to_sg(struct whc *whc, struct whc_std *std) in qset_copy_bounce_to_sg() argument
299 void qset_free_std(struct whc *whc, struct whc_std *std) in qset_free_std() argument
311 dma_unmap_single(whc->wusbhc.dev, dma_addr, in qset_free_std()
314 qset_copy_bounce_to_sg(whc, std); in qset_free_std()
319 dma_unmap_single(whc->wusbhc.dev, std->dma_addr, in qset_free_std()
331 static void qset_remove_qtds(struct whc *whc, struct whc_qset *qset, in qset_remove_qtds() argument
340 qset_remove_qtd(whc, qset); in qset_remove_qtds()
341 qset_free_std(whc, std); in qset_remove_qtds()
354 qset_free_std(qset->whc, std); in qset_free_stds()
358 static int qset_fill_page_list(struct whc *whc, struct whc_std *std, gfp_t mem_flags) in qset_fill_page_list() argument
379 std->dma_addr = dma_map_single(whc->wusbhc.dev, std->pl_virt, pl_len, DMA_TO_DEVICE); in qset_fill_page_list()
380 if (dma_mapping_error(whc->wusbhc.dev, std->dma_addr)) { in qset_fill_page_list()
400 struct whc *whc = qset->whc; in urb_dequeue_work() local
404 asl_update(whc, WUSBCMD_ASYNC_UPDATED in urb_dequeue_work()
408 pzl_update(whc, WUSBCMD_PERIODIC_UPDATED in urb_dequeue_work()
412 spin_lock_irqsave(&whc->lock, flags); in urb_dequeue_work()
413 qset_remove_urb(whc, qset, wurb->urb, wurb->status); in urb_dequeue_work()
414 spin_unlock_irqrestore(&whc->lock, flags); in urb_dequeue_work()
417 static struct whc_std *qset_new_std(struct whc *whc, struct whc_qset *qset, in qset_new_std() argument
435 static int qset_add_urb_sg(struct whc *whc, struct whc_qset *qset, struct urb *urb, in qset_add_urb_sg() argument
484 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb_sg()
540 std->dma_addr = dma_map_single(whc->wusbhc.dev, std->pl_virt, in qset_add_urb_sg()
554 static int qset_add_urb_sg_linearize(struct whc *whc, struct whc_qset *qset, in qset_add_urb_sg_linearize() argument
585 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb_sg_linearize()
620 std->dma_addr = dma_map_single(&whc->umc->dev, std->bounce_buf, std->len, in qset_add_urb_sg_linearize()
623 if (qset_fill_page_list(whc, std, mem_flags) < 0) in qset_add_urb_sg_linearize()
639 int qset_add_urb(struct whc *whc, struct whc_qset *qset, struct urb *urb, in qset_add_urb() argument
657 ret = qset_add_urb_sg(whc, qset, urb, mem_flags); in qset_add_urb()
660 ret = qset_add_urb_sg_linearize(whc, qset, urb, mem_flags); in qset_add_urb()
679 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb()
687 if (qset_fill_page_list(whc, std, mem_flags) < 0) in qset_add_urb()
707 void qset_remove_urb(struct whc *whc, struct whc_qset *qset, in qset_remove_urb() argument
710 struct wusbhc *wusbhc = &whc->wusbhc; in qset_remove_urb()
715 spin_unlock(&whc->lock); in qset_remove_urb()
717 spin_lock(&whc->lock); in qset_remove_urb()
753 void process_inactive_qtd(struct whc *whc, struct whc_qset *qset, in process_inactive_qtd() argument
770 qset_remove_qtd(whc, qset); in process_inactive_qtd()
771 qset_free_std(whc, std); in process_inactive_qtd()
778 qset_remove_qtds(whc, qset, urb); in process_inactive_qtd()
779 qset_remove_urb(whc, qset, urb, get_urb_status_from_qtd(urb, status)); in process_inactive_qtd()
805 void process_halted_qtd(struct whc *whc, struct whc_qset *qset, in process_halted_qtd() argument
814 qset_remove_qtds(whc, qset, urb); in process_halted_qtd()
815 qset_remove_urb(whc, qset, urb, urb_status); in process_halted_qtd()
820 qset_remove_qtd(whc, qset); in process_halted_qtd()
827 void qset_free(struct whc *whc, struct whc_qset *qset) in qset_free() argument
829 dma_pool_free(whc->qset_pool, qset, qset->qset_dma); in qset_free()
835 void qset_delete(struct whc *whc, struct whc_qset *qset) in qset_delete() argument
838 qset_free(whc, qset); in qset_delete()