|
@@ -31,17 +31,29 @@ struct whc_dbg {
|
|
|
|
|
|
void qset_print(struct seq_file *s, struct whc_qset *qset)
|
|
|
{
|
|
|
+ static const char *qh_type[] = {
|
|
|
+ "ctrl", "isoc", "bulk", "intr", "rsvd", "rsvd", "rsvd", "lpintr", };
|
|
|
struct whc_std *std;
|
|
|
struct urb *urb = NULL;
|
|
|
int i;
|
|
|
|
|
|
- seq_printf(s, "qset %08x\n", (u32)qset->qset_dma);
|
|
|
+ seq_printf(s, "qset %08x", (u32)qset->qset_dma);
|
|
|
+ if (&qset->list_node == qset->whc->async_list.prev) {
|
|
|
+ seq_printf(s, " (dummy)\n");
|
|
|
+ } else {
|
|
|
+ seq_printf(s, " ep%d%s-%s maxpkt: %d\n",
|
|
|
+ qset->qh.info1 & 0x0f,
|
|
|
+ (qset->qh.info1 >> 4) & 0x1 ? "in" : "out",
|
|
|
+ qh_type[(qset->qh.info1 >> 5) & 0x7],
|
|
|
+ (qset->qh.info1 >> 16) & 0xffff);
|
|
|
+ }
|
|
|
seq_printf(s, " -> %08x\n", (u32)qset->qh.link);
|
|
|
seq_printf(s, " info: %08x %08x %08x\n",
|
|
|
- qset->qh.info1, qset->qh.info2, qset->qh.info3);
|
|
|
- seq_printf(s, " sts: %04x errs: %d\n", qset->qh.status, qset->qh.err_count);
|
|
|
+ qset->qh.info1, qset->qh.info2, qset->qh.info3);
|
|
|
+ seq_printf(s, " sts: %04x errs: %d curwin: %08x\n",
|
|
|
+ qset->qh.status, qset->qh.err_count, qset->qh.cur_window);
|
|
|
seq_printf(s, " TD: sts: %08x opts: %08x\n",
|
|
|
- qset->qh.overlay.qtd.status, qset->qh.overlay.qtd.options);
|
|
|
+ qset->qh.overlay.qtd.status, qset->qh.overlay.qtd.options);
|
|
|
|
|
|
for (i = 0; i < WHCI_QSET_TD_MAX; i++) {
|
|
|
seq_printf(s, " %c%c TD[%d]: sts: %08x opts: %08x ptr: %08x\n",
|