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
63 xhci_dbg(xhci, "xHCI capability registers at %p:\n", xhci->cap_regs); in xhci_print_cap_regs()
65 temp = readl(&xhci->cap_regs->hc_capbase); in xhci_print_cap_regs()
67 xhci_dbg(xhci, "CAPLENGTH AND HCIVERSION 0x%x:\n", in xhci_print_cap_regs()
69 xhci_dbg(xhci, "CAPLENGTH: 0x%x\n", in xhci_print_cap_regs()
71 xhci_dbg(xhci, "HCIVERSION: 0x%x\n", hci_version); in xhci_print_cap_regs()
73 temp = readl(&xhci->cap_regs->hcs_params1); in xhci_print_cap_regs()
74 xhci_dbg(xhci, "HCSPARAMS 1: 0x%x\n", in xhci_print_cap_regs()
76 xhci_dbg(xhci, " Max device slots: %u\n", in xhci_print_cap_regs()
78 xhci_dbg(xhci, " Max interrupters: %u\n", in xhci_print_cap_regs()
80 xhci_dbg(xhci, " Max ports: %u\n", in xhci_print_cap_regs()
83 temp = readl(&xhci->cap_regs->hcs_params2); in xhci_print_cap_regs()
84 xhci_dbg(xhci, "HCSPARAMS 2: 0x%x\n", in xhci_print_cap_regs()
86 xhci_dbg(xhci, " Isoc scheduling threshold: %u\n", in xhci_print_cap_regs()
88 xhci_dbg(xhci, " Maximum allowed segments in event ring: %u\n", in xhci_print_cap_regs()
91 temp = readl(&xhci->cap_regs->hcs_params3); in xhci_print_cap_regs()
92 xhci_dbg(xhci, "HCSPARAMS 3 0x%x:\n", in xhci_print_cap_regs()
94 xhci_dbg(xhci, " Worst case U1 device exit latency: %u\n", in xhci_print_cap_regs()
96 xhci_dbg(xhci, " Worst case U2 device exit latency: %u\n", in xhci_print_cap_regs()
99 temp = readl(&xhci->cap_regs->hcc_params); in xhci_print_cap_regs()
100 xhci_dbg(xhci, "HCC PARAMS 0x%x:\n", (unsigned int) temp); in xhci_print_cap_regs()
101 xhci_dbg(xhci, " HC generates %s bit addresses\n", in xhci_print_cap_regs()
103 xhci_dbg(xhci, " HC %s Contiguous Frame ID Capability\n", in xhci_print_cap_regs()
105 xhci_dbg(xhci, " HC %s generate Stopped - Short Package event\n", in xhci_print_cap_regs()
108 xhci_dbg(xhci, " FIXME: more HCCPARAMS debugging\n"); in xhci_print_cap_regs()
110 temp = readl(&xhci->cap_regs->run_regs_off); in xhci_print_cap_regs()
111 xhci_dbg(xhci, "RTSOFF 0x%x:\n", temp & RTSOFF_MASK); in xhci_print_cap_regs()
115 temp = readl(&xhci->cap_regs->hcc_params2); in xhci_print_cap_regs()
116 xhci_dbg(xhci, "HCC PARAMS2 0x%x:\n", (unsigned int) temp); in xhci_print_cap_regs()
117 xhci_dbg(xhci, " HC %s Force save context capability", in xhci_print_cap_regs()
119 xhci_dbg(xhci, " HC %s Large ESIT Payload Capability", in xhci_print_cap_regs()
121 xhci_dbg(xhci, " HC %s Extended TBC capability", in xhci_print_cap_regs()
126 static void xhci_print_command_reg(struct xhci_hcd *xhci) in xhci_print_command_reg() argument
130 temp = readl(&xhci->op_regs->command); in xhci_print_command_reg()
131 xhci_dbg(xhci, "USBCMD 0x%x:\n", temp); in xhci_print_command_reg()
132 xhci_dbg(xhci, " HC is %s\n", in xhci_print_command_reg()
134 xhci_dbg(xhci, " HC has %sfinished hard reset\n", in xhci_print_command_reg()
136 xhci_dbg(xhci, " Event Interrupts %s\n", in xhci_print_command_reg()
138 xhci_dbg(xhci, " Host System Error Interrupts %s\n", in xhci_print_command_reg()
140 xhci_dbg(xhci, " HC has %sfinished light reset\n", in xhci_print_command_reg()
144 static void xhci_print_status(struct xhci_hcd *xhci) in xhci_print_status() argument
148 temp = readl(&xhci->op_regs->status); in xhci_print_status()
149 xhci_dbg(xhci, "USBSTS 0x%x:\n", temp); in xhci_print_status()
150 xhci_dbg(xhci, " Event ring is %sempty\n", in xhci_print_status()
152 xhci_dbg(xhci, " %sHost System Error\n", in xhci_print_status()
154 xhci_dbg(xhci, " HC is %s\n", in xhci_print_status()
158 static void xhci_print_op_regs(struct xhci_hcd *xhci) in xhci_print_op_regs() argument
160 xhci_dbg(xhci, "xHCI operational registers at %p:\n", xhci->op_regs); in xhci_print_op_regs()
161 xhci_print_command_reg(xhci); in xhci_print_op_regs()
162 xhci_print_status(xhci); in xhci_print_op_regs()
165 static void xhci_print_ports(struct xhci_hcd *xhci) in xhci_print_ports() argument
177 ports = HCS_MAX_PORTS(xhci->hcs_params1); in xhci_print_ports()
178 addr = &xhci->op_regs->port_status_base; in xhci_print_ports()
181 xhci_dbg(xhci, "%p port %s reg = 0x%x\n", in xhci_print_ports()
189 void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num) in xhci_print_ir_set() argument
191 struct xhci_intr_reg __iomem *ir_set = &xhci->run_regs->ir_set[set_num]; in xhci_print_ir_set()
201 xhci_dbg(xhci, " %p: ir_set[%i]\n", ir_set, set_num); in xhci_print_ir_set()
203 xhci_dbg(xhci, " %p: ir_set.pending = 0x%x\n", addr, in xhci_print_ir_set()
208 xhci_dbg(xhci, " %p: ir_set.control = 0x%x\n", addr, in xhci_print_ir_set()
213 xhci_dbg(xhci, " %p: ir_set.erst_size = 0x%x\n", addr, in xhci_print_ir_set()
219 xhci_dbg(xhci, " WARN: %p: ir_set.rsvd = 0x%x\n", in xhci_print_ir_set()
223 temp_64 = xhci_read_64(xhci, addr); in xhci_print_ir_set()
224 xhci_dbg(xhci, " %p: ir_set.erst_base = @%08llx\n", in xhci_print_ir_set()
228 temp_64 = xhci_read_64(xhci, addr); in xhci_print_ir_set()
229 xhci_dbg(xhci, " %p: ir_set.erst_dequeue = @%08llx\n", in xhci_print_ir_set()
233 void xhci_print_run_regs(struct xhci_hcd *xhci) in xhci_print_run_regs() argument
238 xhci_dbg(xhci, "xHCI runtime registers at %p:\n", xhci->run_regs); in xhci_print_run_regs()
239 temp = readl(&xhci->run_regs->microframe_index); in xhci_print_run_regs()
240 xhci_dbg(xhci, " %p: Microframe index = 0x%x\n", in xhci_print_run_regs()
241 &xhci->run_regs->microframe_index, in xhci_print_run_regs()
244 temp = readl(&xhci->run_regs->rsvd[i]); in xhci_print_run_regs()
246 xhci_dbg(xhci, " WARN: %p: Rsvd[%i] = 0x%x\n", in xhci_print_run_regs()
247 &xhci->run_regs->rsvd[i], in xhci_print_run_regs()
252 void xhci_print_registers(struct xhci_hcd *xhci) in xhci_print_registers() argument
254 xhci_print_cap_regs(xhci); in xhci_print_registers()
255 xhci_print_op_regs(xhci); in xhci_print_registers()
256 xhci_print_ports(xhci); in xhci_print_registers()
259 void xhci_print_trb_offsets(struct xhci_hcd *xhci, union xhci_trb *trb) in xhci_print_trb_offsets() argument
263 xhci_dbg(xhci, "Offset 0x%x = 0x%x\n", in xhci_print_trb_offsets()
270 void xhci_debug_trb(struct xhci_hcd *xhci, union xhci_trb *trb) in xhci_debug_trb() argument
277 xhci_dbg(xhci, "Link TRB:\n"); in xhci_debug_trb()
278 xhci_print_trb_offsets(xhci, trb); in xhci_debug_trb()
281 xhci_dbg(xhci, "Next ring segment DMA address = 0x%llx\n", address); in xhci_debug_trb()
283 xhci_dbg(xhci, "Interrupter target = 0x%x\n", in xhci_debug_trb()
285 xhci_dbg(xhci, "Cycle bit = %u\n", in xhci_debug_trb()
287 xhci_dbg(xhci, "Toggle cycle bit = %u\n", in xhci_debug_trb()
289 xhci_dbg(xhci, "No Snoop bit = %u\n", in xhci_debug_trb()
298 xhci_dbg(xhci, "DMA address or buffer contents= %llu\n", address); in xhci_debug_trb()
302 xhci_dbg(xhci, "Command TRB pointer = %llu\n", address); in xhci_debug_trb()
303 xhci_dbg(xhci, "Completion status = %u\n", in xhci_debug_trb()
305 xhci_dbg(xhci, "Flags = 0x%x\n", in xhci_debug_trb()
309 xhci_dbg(xhci, "Unknown TRB with TRB type ID %u\n", in xhci_debug_trb()
311 xhci_print_trb_offsets(xhci, trb); in xhci_debug_trb()
329 void xhci_debug_segment(struct xhci_hcd *xhci, struct xhci_segment *seg) in xhci_debug_segment() argument
337 xhci_dbg(xhci, "@%016llx %08x %08x %08x %08x\n", addr, in xhci_debug_segment()
346 void xhci_dbg_ring_ptrs(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_dbg_ring_ptrs() argument
348 xhci_dbg(xhci, "Ring deq = %p (virt), 0x%llx (dma)\n", in xhci_dbg_ring_ptrs()
352 xhci_dbg(xhci, "Ring deq updated %u times\n", in xhci_dbg_ring_ptrs()
354 xhci_dbg(xhci, "Ring enq = %p (virt), 0x%llx (dma)\n", in xhci_dbg_ring_ptrs()
358 xhci_dbg(xhci, "Ring enq updated %u times\n", in xhci_dbg_ring_ptrs()
371 void xhci_debug_ring(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_debug_ring() argument
376 xhci_debug_segment(xhci, first_seg); in xhci_debug_ring()
379 xhci_dbg(xhci, " Ring has not been updated\n"); in xhci_debug_ring()
383 xhci_debug_segment(xhci, seg); in xhci_debug_ring()
386 void xhci_dbg_ep_rings(struct xhci_hcd *xhci, in xhci_dbg_ep_rings() argument
396 xhci_dbg(xhci, "Dev %d endpoint %d stream ID %d:\n", in xhci_dbg_ep_rings()
398 xhci_debug_segment(xhci, ring->deq_seg); in xhci_dbg_ep_rings()
404 xhci_dbg(xhci, "Dev %d endpoint ring %d:\n", in xhci_dbg_ep_rings()
406 xhci_debug_segment(xhci, ring->deq_seg); in xhci_dbg_ep_rings()
410 void xhci_dbg_erst(struct xhci_hcd *xhci, struct xhci_erst *erst) in xhci_dbg_erst() argument
418 xhci_dbg(xhci, "@%016llx %08x %08x %08x %08x\n", in xhci_dbg_erst()
428 void xhci_dbg_cmd_ptrs(struct xhci_hcd *xhci) in xhci_dbg_cmd_ptrs() argument
432 val = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); in xhci_dbg_cmd_ptrs()
433 xhci_dbg(xhci, "// xHC command ring deq ptr low bits + flags = @%08x\n", in xhci_dbg_cmd_ptrs()
435 xhci_dbg(xhci, "// xHC command ring deq ptr high bits = @%08x\n", in xhci_dbg_cmd_ptrs()
440 static void dbg_rsvd64(struct xhci_hcd *xhci, u64 *ctx, dma_addr_t dma) in dbg_rsvd64() argument
444 xhci_dbg(xhci, "@%p (virt) @%08llx " in dbg_rsvd64()
452 char *xhci_get_slot_state(struct xhci_hcd *xhci, in xhci_get_slot_state() argument
455 struct xhci_slot_ctx *slot_ctx = xhci_get_slot_ctx(xhci, ctx); in xhci_get_slot_state()
471 static void xhci_dbg_slot_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx) in xhci_dbg_slot_ctx() argument
477 struct xhci_slot_ctx *slot_ctx = xhci_get_slot_ctx(xhci, ctx); in xhci_dbg_slot_ctx()
480 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_slot_ctx()
482 xhci_dbg(xhci, "Slot Context:\n"); in xhci_dbg_slot_ctx()
483 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info\n", in xhci_dbg_slot_ctx()
487 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_info2\n", in xhci_dbg_slot_ctx()
491 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tt_info\n", in xhci_dbg_slot_ctx()
495 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - dev_state\n", in xhci_dbg_slot_ctx()
500 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", in xhci_dbg_slot_ctx()
507 dbg_rsvd64(xhci, (u64 *)slot_ctx, dma); in xhci_dbg_slot_ctx()
510 static void xhci_dbg_ep_ctx(struct xhci_hcd *xhci, in xhci_dbg_ep_ctx() argument
518 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_ep_ctx()
524 struct xhci_ep_ctx *ep_ctx = xhci_get_ep_ctx(xhci, ctx, i); in xhci_dbg_ep_ctx()
528 xhci_dbg(xhci, "%s Endpoint %02d Context (ep_index %02d):\n", in xhci_dbg_ep_ctx()
531 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info\n", in xhci_dbg_ep_ctx()
535 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - ep_info2\n", in xhci_dbg_ep_ctx()
539 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08llx - deq\n", in xhci_dbg_ep_ctx()
543 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - tx_info\n", in xhci_dbg_ep_ctx()
548 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd[%d]\n", in xhci_dbg_ep_ctx()
556 dbg_rsvd64(xhci, (u64 *)ep_ctx, dma); in xhci_dbg_ep_ctx()
560 void xhci_dbg_ctx(struct xhci_hcd *xhci, in xhci_dbg_ctx() argument
568 int csz = HCC_64BYTE_CONTEXT(xhci->hcc_params); in xhci_dbg_ctx()
574 xhci_warn(xhci, "Could not get input context, bad type.\n"); in xhci_dbg_ctx()
578 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - drop flags\n", in xhci_dbg_ctx()
582 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - add flags\n", in xhci_dbg_ctx()
587 xhci_dbg(xhci, "@%p (virt) @%08llx (dma) %#08x - rsvd2[%d]\n", in xhci_dbg_ctx()
594 dbg_rsvd64(xhci, (u64 *)ctrl_ctx, dma); in xhci_dbg_ctx()
597 xhci_dbg_slot_ctx(xhci, ctx); in xhci_dbg_ctx()
598 xhci_dbg_ep_ctx(xhci, ctx, last_ep); in xhci_dbg_ctx()
601 void xhci_dbg_trace(struct xhci_hcd *xhci, void (*trace)(struct va_format *), in xhci_dbg_trace() argument
610 xhci_dbg(xhci, "%pV\n", &vaf); in xhci_dbg_trace()