aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci-dbg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/xhci-dbg.c')
-rw-r--r--drivers/usb/host/xhci-dbg.c101
1 files changed, 63 insertions, 38 deletions
diff --git a/drivers/usb/host/xhci-dbg.c b/drivers/usb/host/xhci-dbg.c
index 6d62e4abe3c6..d77f8de11256 100644
--- a/drivers/usb/host/xhci-dbg.c
+++ b/drivers/usb/host/xhci-dbg.c
@@ -393,78 +393,103 @@ void xhci_dbg_cmd_ptrs(struct xhci_hcd *xhci)
393 upper_32_bits(val)); 393 upper_32_bits(val));
394} 394}
395 395
396void xhci_dbg_ctx(struct xhci_hcd *xhci, struct xhci_device_control *ctx, dma_addr_t dma, unsigned int last_ep) 396dma_addr_t xhci_dbg_slot_ctx(struct xhci_hcd *xhci, struct xhci_slot_ctx *slot, dma_addr_t dma)
397{ 397{
398 int i, j;
399 int last_ep_ctx = 31;
400 /* Fields are 32 bits wide, DMA addresses are in bytes */ 398 /* Fields are 32 bits wide, DMA addresses are in bytes */
401 int field_size = 32 / 8; 399 int field_size = 32 / 8;
402 400 int i;
403 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - drop flags\n",
404 &ctx->drop_flags, (unsigned long long)dma,
405 ctx->drop_flags);
406 dma += field_size;
407 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - add flags\n",
408 &ctx->add_flags, (unsigned long long)dma,
409 ctx->add_flags);
410 dma += field_size;
411 for (i = 0; i < 6; ++i) {
412 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n",
413 &ctx->rsvd[i], (unsigned long long)dma,
414 ctx->rsvd[i], i);
415 dma += field_size;
416 }
417 401
418 xhci_dbg(xhci, "Slot Context:\n"); 402 xhci_dbg(xhci, "Slot Context:\n");
419 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info\n", 403 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info\n",
420 &ctx->slot.dev_info, 404 &slot->dev_info,
421 (unsigned long long)dma, ctx->slot.dev_info); 405 (unsigned long long)dma, slot->dev_info);
422 dma += field_size; 406 dma += field_size;
423 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info2\n", 407 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info2\n",
424 &ctx->slot.dev_info2, 408 &slot->dev_info2,
425 (unsigned long long)dma, ctx->slot.dev_info2); 409 (unsigned long long)dma, slot->dev_info2);
426 dma += field_size; 410 dma += field_size;
427 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tt_info\n", 411 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tt_info\n",
428 &ctx->slot.tt_info, 412 &slot->tt_info,
429 (unsigned long long)dma, ctx->slot.tt_info); 413 (unsigned long long)dma, slot->tt_info);
430 dma += field_size; 414 dma += field_size;
431 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_state\n", 415 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_state\n",
432 &ctx->slot.dev_state, 416 &slot->dev_state,
433 (unsigned long long)dma, ctx->slot.dev_state); 417 (unsigned long long)dma, slot->dev_state);
434 dma += field_size; 418 dma += field_size;
435 for (i = 0; i < 4; ++i) { 419 for (i = 0; i < 4; ++i) {
436 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", 420 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n",
437 &ctx->slot.reserved[i], (unsigned long long)dma, 421 &slot->reserved[i], (unsigned long long)dma,
438 ctx->slot.reserved[i], i); 422 slot->reserved[i], i);
439 dma += field_size; 423 dma += field_size;
440 } 424 }
441 425
426 return dma;
427}
428
429dma_addr_t xhci_dbg_ep_ctx(struct xhci_hcd *xhci, struct xhci_ep_ctx *ep, dma_addr_t dma, unsigned int last_ep)
430{
431 int i, j;
432 int last_ep_ctx = 31;
433 /* Fields are 32 bits wide, DMA addresses are in bytes */
434 int field_size = 32 / 8;
435
442 if (last_ep < 31) 436 if (last_ep < 31)
443 last_ep_ctx = last_ep + 1; 437 last_ep_ctx = last_ep + 1;
444 for (i = 0; i < last_ep_ctx; ++i) { 438 for (i = 0; i < last_ep_ctx; ++i) {
445 xhci_dbg(xhci, "Endpoint %02d Context:\n", i); 439 xhci_dbg(xhci, "Endpoint %02d Context:\n", i);
446 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info\n", 440 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info\n",
447 &ctx->ep[i].ep_info, 441 &ep[i].ep_info,
448 (unsigned long long)dma, ctx->ep[i].ep_info); 442 (unsigned long long)dma, ep[i].ep_info);
449 dma += field_size; 443 dma += field_size;
450 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info2\n", 444 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info2\n",
451 &ctx->ep[i].ep_info2, 445 &ep[i].ep_info2,
452 (unsigned long long)dma, ctx->ep[i].ep_info2); 446 (unsigned long long)dma, ep[i].ep_info2);
453 dma += field_size; 447 dma += field_size;
454 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08llx - deq\n", 448 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08llx - deq\n",
455 &ctx->ep[i].deq, 449 &ep[i].deq,
456 (unsigned long long)dma, ctx->ep[i].deq); 450 (unsigned long long)dma, ep[i].deq);
457 dma += 2*field_size; 451 dma += 2*field_size;
458 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tx_info\n", 452 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tx_info\n",
459 &ctx->ep[i].tx_info, 453 &ep[i].tx_info,
460 (unsigned long long)dma, ctx->ep[i].tx_info); 454 (unsigned long long)dma, ep[i].tx_info);
461 dma += field_size; 455 dma += field_size;
462 for (j = 0; j < 3; ++j) { 456 for (j = 0; j < 3; ++j) {
463 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", 457 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n",
464 &ctx->ep[i].reserved[j], 458 &ep[i].reserved[j],
465 (unsigned long long)dma, 459 (unsigned long long)dma,
466 ctx->ep[i].reserved[j], j); 460 ep[i].reserved[j], j);
467 dma += field_size; 461 dma += field_size;
468 } 462 }
469 } 463 }
464 return dma;
465}
466
467void xhci_dbg_ctx(struct xhci_hcd *xhci, struct xhci_device_control *ctx, dma_addr_t dma, unsigned int last_ep)
468{
469 int i;
470 /* Fields are 32 bits wide, DMA addresses are in bytes */
471 int field_size = 32 / 8;
472
473 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - drop flags\n",
474 &ctx->drop_flags, (unsigned long long)dma,
475 ctx->drop_flags);
476 dma += field_size;
477 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - add flags\n",
478 &ctx->add_flags, (unsigned long long)dma,
479 ctx->add_flags);
480 dma += field_size;
481 for (i = 0; i < 6; ++i) {
482 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n",
483 &ctx->rsvd[i], (unsigned long long)dma,
484 ctx->rsvd[i], i);
485 dma += field_size;
486 }
487 dma = xhci_dbg_slot_ctx(xhci, &ctx->slot, dma);
488 dma = xhci_dbg_ep_ctx(xhci, ctx->ep, dma, last_ep);
489}
490
491void xhci_dbg_device_ctx(struct xhci_hcd *xhci, struct xhci_device_ctx *ctx, dma_addr_t dma, unsigned int last_ep)
492{
493 dma = xhci_dbg_slot_ctx(xhci, &ctx->slot, dma);
494 dma = xhci_dbg_ep_ctx(xhci, ctx->ep, dma, last_ep);
470} 495}