Lines Matching refs:xhci
29 void xhci_dbg_regs(struct xhci_hcd *xhci) in xhci_dbg_regs() argument
33 xhci_dbg(xhci, "// xHCI capability registers at %p:\n", in xhci_dbg_regs()
34 xhci->cap_regs); in xhci_dbg_regs()
35 temp = readl(&xhci->cap_regs->hc_capbase); in xhci_dbg_regs()
36 xhci_dbg(xhci, "// @%p = 0x%x (CAPLENGTH AND HCIVERSION)\n", in xhci_dbg_regs()
37 &xhci->cap_regs->hc_capbase, temp); in xhci_dbg_regs()
38 xhci_dbg(xhci, "// CAPLENGTH: 0x%x\n", in xhci_dbg_regs()
41 xhci_dbg(xhci, "// HCIVERSION: 0x%x\n", in xhci_dbg_regs()
45 xhci_dbg(xhci, "// xHCI operational registers at %p:\n", xhci->op_regs); in xhci_dbg_regs()
47 temp = readl(&xhci->cap_regs->run_regs_off); in xhci_dbg_regs()
48 xhci_dbg(xhci, "// @%p = 0x%x RTSOFF\n", in xhci_dbg_regs()
49 &xhci->cap_regs->run_regs_off, in xhci_dbg_regs()
51 xhci_dbg(xhci, "// xHCI runtime registers at %p:\n", xhci->run_regs); in xhci_dbg_regs()
53 temp = readl(&xhci->cap_regs->db_off); in xhci_dbg_regs()
54 xhci_dbg(xhci, "// @%p = 0x%x DBOFF\n", &xhci->cap_regs->db_off, temp); in xhci_dbg_regs()
55 xhci_dbg(xhci, "// Doorbell array at %p:\n", xhci->dba); in xhci_dbg_regs()
58 static void xhci_print_cap_regs(struct xhci_hcd *xhci) in xhci_print_cap_regs() argument
62 xhci_dbg(xhci, "xHCI capability registers at %p:\n", xhci->cap_regs); in xhci_print_cap_regs()
64 temp = readl(&xhci->cap_regs->hc_capbase); in xhci_print_cap_regs()
65 xhci_dbg(xhci, "CAPLENGTH AND HCIVERSION 0x%x:\n", in xhci_print_cap_regs()
67 xhci_dbg(xhci, "CAPLENGTH: 0x%x\n", in xhci_print_cap_regs()
69 xhci_dbg(xhci, "HCIVERSION: 0x%x\n", in xhci_print_cap_regs()
72 temp = readl(&xhci->cap_regs->hcs_params1); in xhci_print_cap_regs()
73 xhci_dbg(xhci, "HCSPARAMS 1: 0x%x\n", in xhci_print_cap_regs()
75 xhci_dbg(xhci, " Max device slots: %u\n", in xhci_print_cap_regs()
77 xhci_dbg(xhci, " Max interrupters: %u\n", in xhci_print_cap_regs()
79 xhci_dbg(xhci, " Max ports: %u\n", in xhci_print_cap_regs()
82 temp = readl(&xhci->cap_regs->hcs_params2); in xhci_print_cap_regs()
83 xhci_dbg(xhci, "HCSPARAMS 2: 0x%x\n", in xhci_print_cap_regs()
85 xhci_dbg(xhci, " Isoc scheduling threshold: %u\n", in xhci_print_cap_regs()
87 xhci_dbg(xhci, " Maximum allowed segments in event ring: %u\n", in xhci_print_cap_regs()
90 temp = readl(&xhci->cap_regs->hcs_params3); in xhci_print_cap_regs()
91 xhci_dbg(xhci, "HCSPARAMS 3 0x%x:\n", in xhci_print_cap_regs()
93 xhci_dbg(xhci, " Worst case U1 device exit latency: %u\n", in xhci_print_cap_regs()
95 xhci_dbg(xhci, " Worst case U2 device exit latency: %u\n", in xhci_print_cap_regs()
98 temp = readl(&xhci->cap_regs->hcc_params); in xhci_print_cap_regs()
99 xhci_dbg(xhci, "HCC PARAMS 0x%x:\n", (unsigned int) temp); in xhci_print_cap_regs()
100 xhci_dbg(xhci, " HC generates %s bit addresses\n", in xhci_print_cap_regs()
103 xhci_dbg(xhci, " FIXME: more HCCPARAMS debugging\n"); in xhci_print_cap_regs()
105 temp = readl(&xhci->cap_regs->run_regs_off); in xhci_print_cap_regs()
106 xhci_dbg(xhci, "RTSOFF 0x%x:\n", temp & RTSOFF_MASK); in xhci_print_cap_regs()
109 static void xhci_print_command_reg(struct xhci_hcd *xhci) in xhci_print_command_reg() argument
113 temp = readl(&xhci->op_regs->command); in xhci_print_command_reg()
114 xhci_dbg(xhci, "USBCMD 0x%x:\n", temp); in xhci_print_command_reg()
115 xhci_dbg(xhci, " HC is %s\n", in xhci_print_command_reg()
117 xhci_dbg(xhci, " HC has %sfinished hard reset\n", in xhci_print_command_reg()
119 xhci_dbg(xhci, " Event Interrupts %s\n", in xhci_print_command_reg()
121 xhci_dbg(xhci, " Host System Error Interrupts %s\n", in xhci_print_command_reg()
123 xhci_dbg(xhci, " HC has %sfinished light reset\n", in xhci_print_command_reg()
127 static void xhci_print_status(struct xhci_hcd *xhci) in xhci_print_status() argument
131 temp = readl(&xhci->op_regs->status); in xhci_print_status()
132 xhci_dbg(xhci, "USBSTS 0x%x:\n", temp); in xhci_print_status()
133 xhci_dbg(xhci, " Event ring is %sempty\n", in xhci_print_status()
135 xhci_dbg(xhci, " %sHost System Error\n", in xhci_print_status()
137 xhci_dbg(xhci, " HC is %s\n", in xhci_print_status()
141 static void xhci_print_op_regs(struct xhci_hcd *xhci) in xhci_print_op_regs() argument
143 xhci_dbg(xhci, "xHCI operational registers at %p:\n", xhci->op_regs); in xhci_print_op_regs()
144 xhci_print_command_reg(xhci); in xhci_print_op_regs()
145 xhci_print_status(xhci); in xhci_print_op_regs()
148 static void xhci_print_ports(struct xhci_hcd *xhci) in xhci_print_ports() argument
160 ports = HCS_MAX_PORTS(xhci->hcs_params1); in xhci_print_ports()
161 addr = &xhci->op_regs->port_status_base; in xhci_print_ports()
164 xhci_dbg(xhci, "%p port %s reg = 0x%x\n", in xhci_print_ports()
172 void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num) in xhci_print_ir_set() argument
174 struct xhci_intr_reg __iomem *ir_set = &xhci->run_regs->ir_set[set_num]; in xhci_print_ir_set()
184 xhci_dbg(xhci, " %p: ir_set[%i]\n", ir_set, set_num); in xhci_print_ir_set()
186 xhci_dbg(xhci, " %p: ir_set.pending = 0x%x\n", addr, in xhci_print_ir_set()
191 xhci_dbg(xhci, " %p: ir_set.control = 0x%x\n", addr, in xhci_print_ir_set()
196 xhci_dbg(xhci, " %p: ir_set.erst_size = 0x%x\n", addr, in xhci_print_ir_set()
202 xhci_dbg(xhci, " WARN: %p: ir_set.rsvd = 0x%x\n", in xhci_print_ir_set()
206 temp_64 = xhci_read_64(xhci, addr); in xhci_print_ir_set()
207 xhci_dbg(xhci, " %p: ir_set.erst_base = @%08llx\n", in xhci_print_ir_set()
211 temp_64 = xhci_read_64(xhci, addr); in xhci_print_ir_set()
212 xhci_dbg(xhci, " %p: ir_set.erst_dequeue = @%08llx\n", in xhci_print_ir_set()
216 void xhci_print_run_regs(struct xhci_hcd *xhci) in xhci_print_run_regs() argument
221 xhci_dbg(xhci, "xHCI runtime registers at %p:\n", xhci->run_regs); in xhci_print_run_regs()
222 temp = readl(&xhci->run_regs->microframe_index); in xhci_print_run_regs()
223 xhci_dbg(xhci, " %p: Microframe index = 0x%x\n", in xhci_print_run_regs()
224 &xhci->run_regs->microframe_index, in xhci_print_run_regs()
227 temp = readl(&xhci->run_regs->rsvd[i]); in xhci_print_run_regs()
229 xhci_dbg(xhci, " WARN: %p: Rsvd[%i] = 0x%x\n", in xhci_print_run_regs()
230 &xhci->run_regs->rsvd[i], in xhci_print_run_regs()
235 void xhci_print_registers(struct xhci_hcd *xhci) in xhci_print_registers() argument
237 xhci_print_cap_regs(xhci); in xhci_print_registers()
238 xhci_print_op_regs(xhci); in xhci_print_registers()
239 xhci_print_ports(xhci); in xhci_print_registers()
242 void xhci_print_trb_offsets(struct xhci_hcd *xhci, union xhci_trb *trb) in xhci_print_trb_offsets() argument
246 xhci_dbg(xhci, "Offset 0x%x = 0x%x\n", in xhci_print_trb_offsets()
253 void xhci_debug_trb(struct xhci_hcd *xhci, union xhci_trb *trb) in xhci_debug_trb() argument
260 xhci_dbg(xhci, "Link TRB:\n"); in xhci_debug_trb()
261 xhci_print_trb_offsets(xhci, trb); in xhci_debug_trb()
264 xhci_dbg(xhci, "Next ring segment DMA address = 0x%llx\n", address); in xhci_debug_trb()
266 xhci_dbg(xhci, "Interrupter target = 0x%x\n", in xhci_debug_trb()
268 xhci_dbg(xhci, "Cycle bit = %u\n", in xhci_debug_trb()
270 xhci_dbg(xhci, "Toggle cycle bit = %u\n", in xhci_debug_trb()
272 xhci_dbg(xhci, "No Snoop bit = %u\n", in xhci_debug_trb()
281 xhci_dbg(xhci, "DMA address or buffer contents= %llu\n", address); in xhci_debug_trb()
285 xhci_dbg(xhci, "Command TRB pointer = %llu\n", address); in xhci_debug_trb()
286 xhci_dbg(xhci, "Completion status = %u\n", in xhci_debug_trb()
288 xhci_dbg(xhci, "Flags = 0x%x\n", in xhci_debug_trb()
292 xhci_dbg(xhci, "Unknown TRB with TRB type ID %u\n", in xhci_debug_trb()
294 xhci_print_trb_offsets(xhci, trb); in xhci_debug_trb()
312 void xhci_debug_segment(struct xhci_hcd *xhci, struct xhci_segment *seg) in xhci_debug_segment() argument
320 xhci_dbg(xhci, "@%016llx %08x %08x %08x %08x\n", addr, in xhci_debug_segment()
329 void xhci_dbg_ring_ptrs(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_dbg_ring_ptrs() argument
331 xhci_dbg(xhci, "Ring deq = %p (virt), 0x%llx (dma)\n", in xhci_dbg_ring_ptrs()
335 xhci_dbg(xhci, "Ring deq updated %u times\n", in xhci_dbg_ring_ptrs()
337 xhci_dbg(xhci, "Ring enq = %p (virt), 0x%llx (dma)\n", in xhci_dbg_ring_ptrs()
341 xhci_dbg(xhci, "Ring enq updated %u times\n", in xhci_dbg_ring_ptrs()
354 void xhci_debug_ring(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_debug_ring() argument
359 xhci_debug_segment(xhci, first_seg); in xhci_debug_ring()
362 xhci_dbg(xhci, " Ring has not been updated\n"); in xhci_debug_ring()
366 xhci_debug_segment(xhci, seg); in xhci_debug_ring()
369 void xhci_dbg_ep_rings(struct xhci_hcd *xhci, in xhci_dbg_ep_rings() argument
379 xhci_dbg(xhci, "Dev %d endpoint %d stream ID %d:\n", in xhci_dbg_ep_rings()
381 xhci_debug_segment(xhci, ring->deq_seg); in xhci_dbg_ep_rings()
387 xhci_dbg(xhci, "Dev %d endpoint ring %d:\n", in xhci_dbg_ep_rings()
389 xhci_debug_segment(xhci, ring->deq_seg); in xhci_dbg_ep_rings()
393 void xhci_dbg_erst(struct xhci_hcd *xhci, struct xhci_erst *erst) in xhci_dbg_erst() argument
401 xhci_dbg(xhci, "@%016llx %08x %08x %08x %08x\n", in xhci_dbg_erst()
411 void xhci_dbg_cmd_ptrs(struct xhci_hcd *xhci) in xhci_dbg_cmd_ptrs() argument
415 val = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); in xhci_dbg_cmd_ptrs()
416 xhci_dbg(xhci, "// xHC command ring deq ptr low bits + flags = @%08x\n", in xhci_dbg_cmd_ptrs()
418 xhci_dbg(xhci, "// xHC command ring deq ptr high bits = @%08x\n", in xhci_dbg_cmd_ptrs()
423 static void dbg_rsvd64(struct xhci_hcd *xhci, u64 *ctx, dma_addr_t dma) in dbg_rsvd64() argument
427 xhci_dbg(xhci, "@%p (virt) @%08llx " in dbg_rsvd64()
435 char *xhci_get_slot_state(struct xhci_hcd *xhci, in xhci_get_slot_state() argument
438 struct xhci_slot_ctx *slot_ctx = xhci_get_slot_ctx(xhci, ctx); in xhci_get_slot_state()
454 static void xhci_dbg_slot_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx) in xhci_dbg_slot_ctx() argument
460 struct xhci_slot_ctx *slot_ctx = xhci_get_slot_ctx(xhci, ctx); in xhci_dbg_slot_ctx()
463 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_slot_ctx()
465 xhci_dbg(xhci, "Slot Context:\n"); in xhci_dbg_slot_ctx()
466 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info\n", in xhci_dbg_slot_ctx()
470 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info2\n", in xhci_dbg_slot_ctx()
474 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tt_info\n", in xhci_dbg_slot_ctx()
478 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_state\n", in xhci_dbg_slot_ctx()
483 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", in xhci_dbg_slot_ctx()
490 dbg_rsvd64(xhci, (u64 *)slot_ctx, dma); in xhci_dbg_slot_ctx()
493 static void xhci_dbg_ep_ctx(struct xhci_hcd *xhci, in xhci_dbg_ep_ctx() argument
501 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_ep_ctx()
507 struct xhci_ep_ctx *ep_ctx = xhci_get_ep_ctx(xhci, ctx, i); in xhci_dbg_ep_ctx()
511 xhci_dbg(xhci, "%s Endpoint %02d Context (ep_index %02d):\n", in xhci_dbg_ep_ctx()
514 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info\n", in xhci_dbg_ep_ctx()
518 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info2\n", in xhci_dbg_ep_ctx()
522 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08llx - deq\n", in xhci_dbg_ep_ctx()
526 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tx_info\n", in xhci_dbg_ep_ctx()
531 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", in xhci_dbg_ep_ctx()
539 dbg_rsvd64(xhci, (u64 *)ep_ctx, dma); in xhci_dbg_ep_ctx()
543 void xhci_dbg_ctx(struct xhci_hcd *xhci, in xhci_dbg_ctx() argument
551 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_ctx()
557 xhci_warn(xhci, "Could not get input context, bad type.\n"); in xhci_dbg_ctx()
561 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - drop flags\n", in xhci_dbg_ctx()
565 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - add flags\n", in xhci_dbg_ctx()
570 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd2[%d]\n", in xhci_dbg_ctx()
577 dbg_rsvd64(xhci, (u64 *)ctrl_ctx, dma); in xhci_dbg_ctx()
580 xhci_dbg_slot_ctx(xhci, ctx); in xhci_dbg_ctx()
581 xhci_dbg_ep_ctx(xhci, ctx, last_ep); in xhci_dbg_ctx()
584 void xhci_dbg_trace(struct xhci_hcd *xhci, void (*trace)(struct va_format *), in xhci_dbg_trace() argument
593 xhci_dbg(xhci, "%pV\n", &vaf); in xhci_dbg_trace()