Lines Matching refs:qh

301 static void ehci_trace_qh(EHCIQueue *q, hwaddr addr, EHCIqh *qh)  in ehci_trace_qh()  argument
304 trace_usb_ehci_qh_ptrs(q, addr, qh->next, in ehci_trace_qh()
305 qh->current_qtd, qh->next_qtd, qh->altnext_qtd); in ehci_trace_qh()
307 get_field(qh->epchar, QH_EPCHAR_RL), in ehci_trace_qh()
308 get_field(qh->epchar, QH_EPCHAR_MPLEN), in ehci_trace_qh()
309 get_field(qh->epchar, QH_EPCHAR_EPS), in ehci_trace_qh()
310 get_field(qh->epchar, QH_EPCHAR_EP), in ehci_trace_qh()
311 get_field(qh->epchar, QH_EPCHAR_DEVADDR)); in ehci_trace_qh()
313 (bool)(qh->epchar & QH_EPCHAR_C), in ehci_trace_qh()
314 (bool)(qh->epchar & QH_EPCHAR_H), in ehci_trace_qh()
315 (bool)(qh->epchar & QH_EPCHAR_DTC), in ehci_trace_qh()
316 (bool)(qh->epchar & QH_EPCHAR_I)); in ehci_trace_qh()
431 static bool ehci_verify_qh(EHCIQueue *q, EHCIqh *qh) in ehci_verify_qh() argument
433 uint32_t devaddr = get_field(qh->epchar, QH_EPCHAR_DEVADDR); in ehci_verify_qh()
434 uint32_t endp = get_field(qh->epchar, QH_EPCHAR_EP); in ehci_verify_qh()
435 if ((devaddr != get_field(q->qh.epchar, QH_EPCHAR_DEVADDR)) || in ehci_verify_qh()
436 (endp != get_field(q->qh.epchar, QH_EPCHAR_EP)) || in ehci_verify_qh()
437 (qh->current_qtd != q->qh.current_qtd) || in ehci_verify_qh()
438 (q->async && qh->next_qtd != q->qh.next_qtd) || in ehci_verify_qh()
439 (memcmp(&qh->altnext_qtd, &q->qh.altnext_qtd, in ehci_verify_qh()
464 int ep = get_field(q->qh.epchar, QH_EPCHAR_EP); in ehci_verify_pid()
481 EHCIqh qh; in ehci_writeback_async_complete_packet() local
486 (uint32_t *) &qh, sizeof(EHCIqh) >> 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()
498 if (!(q->qh.token & QTD_TOKEN_HALT)) { in ehci_writeback_async_complete_packet()
521 !(p->queue->qh.token & QTD_TOKEN_HALT)) { in ehci_free_packet()
534 get_field(p->queue->qh.epchar, QH_EPCHAR_EP)); in ehci_free_packet()
564 int endp = get_field(q->qh.epchar, QH_EPCHAR_EP); in ehci_queue_stopped()
1127 uint32_t *qh = (uint32_t *) &q->qh; in ehci_flush_qh() local
1131 put_dwords(q->ehci, addr + 3 * sizeof(uint32_t), qh + 3, dwords - 3); in ehci_flush_qh()
1150 dtoggle = q->qh.token & QTD_TOKEN_DTOGGLE; in ehci_qh_do_overlay()
1151 ping = q->qh.token & QTD_TOKEN_PING; in ehci_qh_do_overlay()
1153 q->qh.current_qtd = p->qtdaddr; in ehci_qh_do_overlay()
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()
1159 eps = get_field(q->qh.epchar, QH_EPCHAR_EPS); in ehci_qh_do_overlay()
1161 q->qh.token &= ~QTD_TOKEN_PING; in ehci_qh_do_overlay()
1162 q->qh.token |= ping; in ehci_qh_do_overlay()
1165 reload = get_field(q->qh.epchar, QH_EPCHAR_RL); in ehci_qh_do_overlay()
1166 set_field(&q->qh.altnext_qtd, reload, QH_ALTNEXT_NAKCNT); in ehci_qh_do_overlay()
1169 q->qh.bufptr[i] = p->qtd.bufptr[i]; in ehci_qh_do_overlay()
1172 if (!(q->qh.epchar & QH_EPCHAR_DTC)) { in ehci_qh_do_overlay()
1174 q->qh.token &= ~QTD_TOKEN_DTOGGLE; in ehci_qh_do_overlay()
1175 q->qh.token |= dtoggle; in ehci_qh_do_overlay()
1178 q->qh.bufptr[1] &= ~BUFPTR_CPROGMASK_MASK; in ehci_qh_do_overlay()
1179 q->qh.bufptr[2] &= ~BUFPTR_FRAMETAG_MASK; in ehci_qh_do_overlay()
1224 cpage = get_field(q->qh.token, QTD_TOKEN_CPAGE); in ehci_finish_transfer()
1225 offset = q->qh.bufptr[0] & ~QTD_BUFPTR_MASK; in ehci_finish_transfer()
1231 set_field(&q->qh.token, cpage, QTD_TOKEN_CPAGE); in ehci_finish_transfer()
1232 q->qh.bufptr[0] &= QTD_BUFPTR_MASK; in ehci_finish_transfer()
1233 q->qh.bufptr[0] |= offset; in ehci_finish_transfer()
1279 q->qhaddr, q->qh.next, q->qtdaddr, in ehci_execute_complete()
1287 q->qh.token |= (QTD_TOKEN_HALT | QTD_TOKEN_XACTERR); in ehci_execute_complete()
1288 set_field(&q->qh.token, 0, QTD_TOKEN_CERR); in ehci_execute_complete()
1292 q->qh.token |= QTD_TOKEN_HALT; in ehci_execute_complete()
1296 set_field(&q->qh.altnext_qtd, 0, QH_ALTNEXT_NAKCNT); in ehci_execute_complete()
1299 q->qh.token |= (QTD_TOKEN_HALT | QTD_TOKEN_BABBLE); in ehci_execute_complete()
1309 tbytes = get_field(q->qh.token, QTD_TOKEN_TBYTES); in ehci_execute_complete()
1323 set_field(&q->qh.token, tbytes, QTD_TOKEN_TBYTES); in ehci_execute_complete()
1330 q->qh.token ^= QTD_TOKEN_DTOGGLE; in ehci_execute_complete()
1331 q->qh.token &= ~QTD_TOKEN_ACTIVE; in ehci_execute_complete()
1333 if (q->qh.token & QTD_TOKEN_IOC) { in ehci_execute_complete()
1367 endp = get_field(p->queue->qh.epchar, QH_EPCHAR_EP); in ehci_execute()
1521 EHCIqh qh; in ehci_state_waitlisthead() local
1535 if (get_dwords(ehci, NLPTR_GET(entry), (uint32_t *) &qh, in ehci_state_waitlisthead()
1539 ehci_trace_qh(NULL, NLPTR_GET(entry), &qh); in ehci_state_waitlisthead()
1541 if (qh.epchar & QH_EPCHAR_H) { in ehci_state_waitlisthead()
1552 entry = qh.next; in ehci_state_waitlisthead()
1617 EHCIqh qh; in ehci_state_fetchqh() local
1634 (uint32_t *) &qh, sizeof(EHCIqh) >> 2) < 0) { in ehci_state_fetchqh()
1638 ehci_trace_qh(q, NLPTR_GET(q->qhaddr), &qh); in ehci_state_fetchqh()
1644 if (!ehci_verify_qh(q, &qh)) { in ehci_state_fetchqh()
1649 q->qh = qh; in ehci_state_fetchqh()
1651 q->transact_ctr = get_field(q->qh.epcap, QH_EPCAP_MULT); in ehci_state_fetchqh()
1658 get_field(q->qh.epchar, QH_EPCHAR_DEVADDR)); in ehci_state_fetchqh()
1661 if (async && (q->qh.epchar & QH_EPCHAR_H)) { in ehci_state_fetchqh()
1676 if (q->qhaddr != q->qh.next) { in ehci_state_fetchqh()
1679 q->qh.epchar & QH_EPCHAR_H, in ehci_state_fetchqh()
1680 q->qh.token & QTD_TOKEN_HALT, in ehci_state_fetchqh()
1681 q->qh.token & QTD_TOKEN_ACTIVE, in ehci_state_fetchqh()
1682 q->qh.next); in ehci_state_fetchqh()
1686 if (q->qh.token & QTD_TOKEN_HALT) { in ehci_state_fetchqh()
1689 } else if ((q->qh.token & QTD_TOKEN_ACTIVE) && in ehci_state_fetchqh()
1690 (NLPTR_TBIT(q->qh.current_qtd) == 0) && in ehci_state_fetchqh()
1691 (q->qh.current_qtd != 0)) { in ehci_state_fetchqh()
1692 q->qtdaddr = q->qh.current_qtd; in ehci_state_fetchqh()
1773 if (((q->qh.token & QTD_TOKEN_TBYTES_MASK) != 0) && in ehci_state_advqueue()
1774 (NLPTR_TBIT(q->qh.altnext_qtd) == 0)) { in ehci_state_advqueue()
1775 q->qtdaddr = q->qh.altnext_qtd; in ehci_state_advqueue()
1781 } else if (NLPTR_TBIT(q->qh.next_qtd) == 0) { in ehci_state_advqueue()
1782 q->qtdaddr = q->qh.next_qtd; in ehci_state_advqueue()
1867 if (ehci_get_fetch_addr(q->ehci, q->async) != q->qh.next) { in ehci_state_horizqh()
1868 ehci_set_fetch_addr(q->ehci, q->async, q->qh.next); in ehci_state_horizqh()
2012 ehci_trace_qtd(q, NLPTR_GET(p->qtdaddr), (EHCIqtd *) &q->qh.next_qtd); in ehci_state_writeback()
2013 qtd = (uint32_t *) &q->qh.next_qtd; in ehci_state_writeback()
2029 if (q->qh.token & QTD_TOKEN_HALT) { in ehci_state_writeback()