Lines Matching refs:qtd

882 static int oxu_buf_alloc(struct oxu_hcd *oxu, struct ehci_qtd *qtd, int len)  in oxu_buf_alloc()  argument
916 qtd->buffer = (void *) &oxu->mem->db_pool[i]; in oxu_buf_alloc()
917 qtd->buffer_dma = virt_to_phys(qtd->buffer); in oxu_buf_alloc()
919 qtd->qtd_buffer_len = BUFFER_SIZE * a_blocks; in oxu_buf_alloc()
934 static void oxu_buf_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) in oxu_buf_free() argument
940 index = (qtd->buffer - (void *) &oxu->mem->db_pool[0]) in oxu_buf_free()
943 qtd->qtd_buffer_len = 0; in oxu_buf_free()
944 qtd->buffer_dma = 0; in oxu_buf_free()
945 qtd->buffer = NULL; in oxu_buf_free()
950 static inline void ehci_qtd_init(struct ehci_qtd *qtd, dma_addr_t dma) in ehci_qtd_init() argument
952 memset(qtd, 0, sizeof *qtd); in ehci_qtd_init()
953 qtd->qtd_dma = dma; in ehci_qtd_init()
954 qtd->hw_token = cpu_to_le32(QTD_STS_HALT); in ehci_qtd_init()
955 qtd->hw_next = EHCI_LIST_END; in ehci_qtd_init()
956 qtd->hw_alt_next = EHCI_LIST_END; in ehci_qtd_init()
957 INIT_LIST_HEAD(&qtd->qtd_list); in ehci_qtd_init()
960 static inline void oxu_qtd_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) in oxu_qtd_free() argument
964 if (qtd->buffer) in oxu_qtd_free()
965 oxu_buf_free(oxu, qtd); in oxu_qtd_free()
969 index = qtd - &oxu->mem->qtd_pool[0]; in oxu_qtd_free()
978 struct ehci_qtd *qtd = NULL; in ehci_qtd_alloc() local
987 qtd = (struct ehci_qtd *) &oxu->mem->qtd_pool[i]; in ehci_qtd_alloc()
988 memset(qtd, 0, sizeof *qtd); in ehci_qtd_alloc()
990 qtd->hw_token = cpu_to_le32(QTD_STS_HALT); in ehci_qtd_alloc()
991 qtd->hw_next = EHCI_LIST_END; in ehci_qtd_alloc()
992 qtd->hw_alt_next = EHCI_LIST_END; in ehci_qtd_alloc()
993 INIT_LIST_HEAD(&qtd->qtd_list); in ehci_qtd_alloc()
995 qtd->qtd_dma = virt_to_phys(qtd); in ehci_qtd_alloc()
1002 return qtd; in ehci_qtd_alloc()
1181 static int qtd_fill(struct ehci_qtd *qtd, dma_addr_t buf, size_t len, in qtd_fill() argument
1188 qtd->hw_buf[0] = cpu_to_le32((u32)addr); in qtd_fill()
1189 qtd->hw_buf_hi[0] = cpu_to_le32((u32)(addr >> 32)); in qtd_fill()
1200 qtd->hw_buf[i] = cpu_to_le32((u32)addr); in qtd_fill()
1201 qtd->hw_buf_hi[i] = cpu_to_le32((u32)(addr >> 32)); in qtd_fill()
1213 qtd->hw_token = cpu_to_le32((count << 16) | token); in qtd_fill()
1214 qtd->length = count; in qtd_fill()
1220 struct ehci_qh *qh, struct ehci_qtd *qtd) in qh_update() argument
1225 qh->hw_qtd_next = QTD_NEXT(qtd->qtd_dma); in qh_update()
1236 is_out = !(qtd->hw_token & cpu_to_le32(1 << 8)); in qh_update()
1255 struct ehci_qtd *qtd; in qh_refresh() local
1258 qtd = qh->dummy; in qh_refresh()
1260 qtd = list_entry(qh->qtd_list.next, in qh_refresh()
1263 if (cpu_to_le32(qtd->qtd_dma) == qh->hw_current) in qh_refresh()
1264 qtd = NULL; in qh_refresh()
1267 if (qtd) in qh_refresh()
1268 qh_update(oxu, qh, qtd); in qh_refresh()
1385 struct ehci_qtd *qtd, *tmp; in qh_completions() local
1410 list_for_each_entry_safe(qtd, tmp, &qh->qtd_list, qtd_list) { in qh_completions()
1414 urb = qtd->urb; in qh_completions()
1437 if (qtd == end) in qh_completions()
1442 token = le32_to_cpu(qtd->hw_token); in qh_completions()
1454 !(qtd->hw_alt_next & EHCI_LIST_END)) { in qh_completions()
1486 && cpu_to_le32(qtd->qtd_dma) in qh_completions()
1504 qtd->length, token); in qh_completions()
1505 if ((usb_pipein(qtd->urb->pipe)) && in qh_completions()
1506 (NULL != qtd->transfer_buffer)) in qh_completions()
1507 memcpy(qtd->transfer_buffer, qtd->buffer, qtd->length); in qh_completions()
1511 if (stopped && qtd->qtd_list.prev != &qh->qtd_list) { in qh_completions()
1512 last = list_entry(qtd->qtd_list.prev, in qh_completions()
1514 last->hw_next = qtd->hw_next; in qh_completions()
1516 list_del(&qtd->qtd_list); in qh_completions()
1517 last = qtd; in qh_completions()
1578 struct ehci_qtd *qtd, *temp; in qtd_list_free() local
1580 list_for_each_entry_safe(qtd, temp, head, qtd_list) { in qtd_list_free()
1581 list_del(&qtd->qtd_list); in qtd_list_free()
1582 oxu_qtd_free(oxu, qtd); in qtd_list_free()
1593 struct ehci_qtd *qtd, *qtd_prev; in qh_urb_transaction() local
1604 qtd = ehci_qtd_alloc(oxu); in qh_urb_transaction()
1605 if (unlikely(!qtd)) in qh_urb_transaction()
1607 list_add_tail(&qtd->qtd_list, head); in qh_urb_transaction()
1608 qtd->urb = urb; in qh_urb_transaction()
1621 ret = oxu_buf_alloc(oxu, qtd, sizeof(struct usb_ctrlrequest)); in qh_urb_transaction()
1625 qtd_fill(qtd, qtd->buffer_dma, sizeof(struct usb_ctrlrequest), in qh_urb_transaction()
1627 memcpy(qtd->buffer, qtd->urb->setup_packet, in qh_urb_transaction()
1632 qtd_prev = qtd; in qh_urb_transaction()
1633 qtd = ehci_qtd_alloc(oxu); in qh_urb_transaction()
1634 if (unlikely(!qtd)) in qh_urb_transaction()
1636 qtd->urb = urb; in qh_urb_transaction()
1637 qtd_prev->hw_next = QTD_NEXT(qtd->qtd_dma); in qh_urb_transaction()
1638 list_add_tail(&qtd->qtd_list, head); in qh_urb_transaction()
1649 ret = oxu_buf_alloc(oxu, qtd, len); in qh_urb_transaction()
1653 buf = qtd->buffer_dma; in qh_urb_transaction()
1657 memcpy(qtd->buffer, qtd->urb->transfer_buffer, len); in qh_urb_transaction()
1673 this_qtd_len = qtd_fill(qtd, buf, len, token, maxpacket); in qh_urb_transaction()
1674 qtd->transfer_buffer = transfer_buf; in qh_urb_transaction()
1679 qtd->hw_alt_next = oxu->async->hw_alt_next; in qh_urb_transaction()
1688 qtd_prev = qtd; in qh_urb_transaction()
1689 qtd = ehci_qtd_alloc(oxu); in qh_urb_transaction()
1690 if (unlikely(!qtd)) in qh_urb_transaction()
1693 ret = oxu_buf_alloc(oxu, qtd, len); in qh_urb_transaction()
1697 qtd->urb = urb; in qh_urb_transaction()
1698 qtd_prev->hw_next = QTD_NEXT(qtd->qtd_dma); in qh_urb_transaction()
1699 list_add_tail(&qtd->qtd_list, head); in qh_urb_transaction()
1707 qtd->hw_alt_next = EHCI_LIST_END; in qh_urb_transaction()
1726 qtd_prev = qtd; in qh_urb_transaction()
1727 qtd = ehci_qtd_alloc(oxu); in qh_urb_transaction()
1728 if (unlikely(!qtd)) in qh_urb_transaction()
1730 qtd->urb = urb; in qh_urb_transaction()
1731 qtd_prev->hw_next = QTD_NEXT(qtd->qtd_dma); in qh_urb_transaction()
1732 list_add_tail(&qtd->qtd_list, head); in qh_urb_transaction()
1735 qtd_fill(qtd, 0, 0, token, 0); in qh_urb_transaction()
1740 qtd->hw_token |= cpu_to_le32(QTD_IOC); in qh_urb_transaction()
1950 struct ehci_qtd *qtd; in qh_append_tds() local
1953 qtd = NULL; in qh_append_tds()
1955 qtd = list_entry(qtd_list->next, struct ehci_qtd, in qh_append_tds()
1969 if (likely(qtd != NULL)) { in qh_append_tds()
1979 token = qtd->hw_token; in qh_append_tds()
1980 qtd->hw_token = HALT_BIT; in qh_append_tds()
1985 *dummy = *qtd; in qh_append_tds()
1988 list_del(&qtd->qtd_list); in qh_append_tds()
1992 ehci_qtd_init(qtd, qtd->qtd_dma); in qh_append_tds()
1993 qh->dummy = qtd; in qh_append_tds()
1996 dma = qtd->qtd_dma; in qh_append_tds()
1997 qtd = list_entry(qh->qtd_list.prev, in qh_append_tds()
1999 qtd->hw_next = QTD_NEXT(dma); in qh_append_tds()
2020 struct ehci_qtd *qtd; in submit_async() local
2022 qtd = list_entry(qtd_list->next, struct ehci_qtd, qtd_list); in submit_async()
2028 qtd, urb->ep->hcpriv); in submit_async()