Lines Matching refs:qtd
319 static void ehci_trace_qtd(EHCIQueue *q, hwaddr addr, EHCIqtd *qtd) in ehci_trace_qtd() argument
322 trace_usb_ehci_qtd_ptrs(q, addr, qtd->next, qtd->altnext); in ehci_trace_qtd()
324 get_field(qtd->token, QTD_TOKEN_TBYTES), in ehci_trace_qtd()
325 get_field(qtd->token, QTD_TOKEN_CPAGE), in ehci_trace_qtd()
326 get_field(qtd->token, QTD_TOKEN_CERR), in ehci_trace_qtd()
327 get_field(qtd->token, QTD_TOKEN_PID)); in ehci_trace_qtd()
329 (bool)(qtd->token & QTD_TOKEN_IOC), in ehci_trace_qtd()
330 (bool)(qtd->token & QTD_TOKEN_ACTIVE), in ehci_trace_qtd()
331 (bool)(qtd->token & QTD_TOKEN_HALT), in ehci_trace_qtd()
332 (bool)(qtd->token & QTD_TOKEN_BABBLE), in ehci_trace_qtd()
333 (bool)(qtd->token & QTD_TOKEN_XACTERR)); in ehci_trace_qtd()
416 static int ehci_get_pid(EHCIqtd *qtd) in ehci_get_pid() argument
418 switch (get_field(qtd->token, QTD_TOKEN_PID)) { in ehci_get_pid()
448 static bool ehci_verify_qtd(EHCIPacket *p, EHCIqtd *qtd) in ehci_verify_qtd() argument
451 (p->queue->async && !NLPTR_TBIT(p->qtd.next) && in ehci_verify_qtd()
452 (p->qtd.next != qtd->next)) || in ehci_verify_qtd()
453 (!NLPTR_TBIT(p->qtd.altnext) && (p->qtd.altnext != qtd->altnext)) || in ehci_verify_qtd()
454 p->qtd.token != qtd->token || in ehci_verify_qtd()
455 p->qtd.bufptr[0] != qtd->bufptr[0]) { in ehci_verify_qtd()
462 static bool ehci_verify_pid(EHCIQueue *q, EHCIqtd *qtd) in ehci_verify_pid() argument
465 int pid = ehci_get_pid(qtd); in ehci_verify_pid()
480 EHCIqtd qtd; in ehci_writeback_async_complete_packet() local
488 (uint32_t *) &qtd, sizeof(EHCIqtd) >> 2); in ehci_writeback_async_complete_packet()
489 if (!ehci_verify_qh(q, &qh) || !ehci_verify_qtd(p, &qtd)) { in ehci_writeback_async_complete_packet()
1154 q->qh.next_qtd = p->qtd.next; in ehci_qh_do_overlay()
1155 q->qh.altnext_qtd = p->qtd.altnext; in ehci_qh_do_overlay()
1156 q->qh.token = p->qtd.token; in ehci_qh_do_overlay()
1169 q->qh.bufptr[i] = p->qtd.bufptr[i]; in ehci_qh_do_overlay()
1191 cpage = get_field(p->qtd.token, QTD_TOKEN_CPAGE); in ehci_init_transfer()
1192 bytes = get_field(p->qtd.token, QTD_TOKEN_TBYTES); in ehci_init_transfer()
1193 offset = p->qtd.bufptr[0] & ~QTD_BUFPTR_MASK; in ehci_init_transfer()
1203 page = p->qtd.bufptr[cpage] & QTD_BUFPTR_MASK; in ehci_init_transfer()
1351 if (!(p->qtd.token & QTD_TOKEN_ACTIVE)) { in ehci_execute()
1356 if (get_field(p->qtd.token, QTD_TOKEN_TBYTES) > BUFF_SIZE) { in ehci_execute()
1362 if (!ehci_verify_pid(p->queue, &p->qtd)) { in ehci_execute()
1365 p->pid = ehci_get_pid(&p->qtd); in ehci_execute()
1375 spd = (p->pid == USB_TOKEN_IN && NLPTR_TBIT(p->qtd.altnext) == 0); in ehci_execute()
1377 (p->qtd.token & QTD_TOKEN_IOC) != 0); in ehci_execute()
1388 "status %d actual_length %d\n", p->queue->qhaddr, p->qtd.next, in ehci_execute()
1798 EHCIqtd qtd; in ehci_state_fetchqtd() local
1804 if (get_dwords(q->ehci, addr + 8, &qtd.token, 1) < 0) { in ehci_state_fetchqtd()
1808 if (get_dwords(q->ehci, addr + 0, &qtd.next, 1) < 0 || in ehci_state_fetchqtd()
1809 get_dwords(q->ehci, addr + 4, &qtd.altnext, 1) < 0 || in ehci_state_fetchqtd()
1810 get_dwords(q->ehci, addr + 12, qtd.bufptr, in ehci_state_fetchqtd()
1811 ARRAY_SIZE(qtd.bufptr)) < 0) { in ehci_state_fetchqtd()
1814 ehci_trace_qtd(q, NLPTR_GET(q->qtdaddr), &qtd); in ehci_state_fetchqtd()
1818 if (!ehci_verify_qtd(p, &qtd)) { in ehci_state_fetchqtd()
1820 if (qtd.token & QTD_TOKEN_ACTIVE) { in ehci_state_fetchqtd()
1825 p->qtd = qtd; in ehci_state_fetchqtd()
1830 if (!(qtd.token & QTD_TOKEN_ACTIVE)) { in ehci_state_fetchqtd()
1856 p->qtd = qtd; in ehci_state_fetchqtd()
1883 EHCIqtd qtd = p->qtd; in ehci_fill_queue() local
1887 if (NLPTR_TBIT(qtd.next) != 0) { in ehci_fill_queue()
1890 qtdaddr = qtd.next; in ehci_fill_queue()
1901 (uint32_t *) &qtd, sizeof(EHCIqtd) >> 2) < 0) { in ehci_fill_queue()
1904 ehci_trace_qtd(q, NLPTR_GET(qtdaddr), &qtd); in ehci_fill_queue()
1905 if (!(qtd.token & QTD_TOKEN_ACTIVE)) { in ehci_fill_queue()
1908 if (!ehci_verify_pid(q, &qtd)) { in ehci_fill_queue()
1914 p->qtd = qtd; in ehci_fill_queue()
2005 uint32_t *qtd, addr; in ehci_state_writeback() local
2013 qtd = (uint32_t *) &q->qh.next_qtd; in ehci_state_writeback()
2016 put_dwords(q->ehci, addr + 3 * sizeof(uint32_t), qtd + 3, 1); in ehci_state_writeback()
2018 put_dwords(q->ehci, addr + 2 * sizeof(uint32_t), qtd + 2, 1); in ehci_state_writeback()