Lines Matching full:xhci

3  * xhci-debugfs.c - xHCI debugfs interface
13 #include "xhci.h"
14 #include "xhci-debugfs.h"
86 static struct xhci_regset *xhci_debugfs_alloc_regset(struct xhci_hcd *xhci) in xhci_debugfs_alloc_regset() argument
99 list_add_tail(&regset->list, &xhci->regset_list); in xhci_debugfs_alloc_regset()
114 static void xhci_debugfs_regset(struct xhci_hcd *xhci, u32 base, in xhci_debugfs_regset() argument
122 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_debugfs_regset()
124 rgs = xhci_debugfs_alloc_regset(xhci); in xhci_debugfs_regset()
140 static void xhci_debugfs_extcap_regset(struct xhci_hcd *xhci, int cap_id, in xhci_debugfs_extcap_regset() argument
147 void __iomem *base = &xhci->cap_regs->hc_capbase; in xhci_debugfs_extcap_regset()
156 xhci_debugfs_regset(xhci, offset, regs, nregs, in xhci_debugfs_extcap_regset()
157 xhci->debugfs_root, "%s:%02d", in xhci_debugfs_extcap_regset()
260 struct xhci_hcd *xhci; in xhci_slot_context_show() local
266 xhci = hcd_to_xhci(bus_to_hcd(dev->udev->bus)); in xhci_slot_context_show()
267 slot_ctx = xhci_get_slot_ctx(xhci, dev->out_ctx); in xhci_slot_context_show()
282 struct xhci_hcd *xhci; in xhci_endpoint_context_show() local
288 xhci = hcd_to_xhci(bus_to_hcd(dev->udev->bus)); in xhci_endpoint_context_show()
291 ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); in xhci_endpoint_context_show()
292 dma = dev->out_ctx->dma + (ep_index + 1) * CTX_SIZE(xhci->hcc_params); in xhci_endpoint_context_show()
367 struct xhci_hcd *xhci = hcd_to_xhci(port->rhub->hcd); in xhci_port_write() local
377 if (!HCC2_CTC(xhci->hcc_params2)) in xhci_port_write()
379 spin_lock_irqsave(&xhci->lock, flags); in xhci_port_write()
383 spin_unlock_irqrestore(&xhci->lock, flags); in xhci_port_write()
390 spin_unlock_irqrestore(&xhci->lock, flags); in xhci_port_write()
405 static void xhci_debugfs_create_files(struct xhci_hcd *xhci, in xhci_debugfs_create_files() argument
417 static struct dentry *xhci_debugfs_create_ring_dir(struct xhci_hcd *xhci, in xhci_debugfs_create_ring_dir() argument
425 xhci_debugfs_create_files(xhci, ring_files, ARRAY_SIZE(ring_files), in xhci_debugfs_create_ring_dir()
431 static void xhci_debugfs_create_context_files(struct xhci_hcd *xhci, in xhci_debugfs_create_context_files() argument
435 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_create_context_files()
437 xhci_debugfs_create_files(xhci, context_files, in xhci_debugfs_create_context_files()
443 void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, in xhci_debugfs_create_endpoint() argument
463 epriv->root = xhci_debugfs_create_ring_dir(xhci, in xhci_debugfs_create_endpoint()
470 void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, in xhci_debugfs_remove_endpoint() argument
566 void xhci_debugfs_create_stream_files(struct xhci_hcd *xhci, in xhci_debugfs_create_stream_files() argument
591 void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id) in xhci_debugfs_create_slot() argument
594 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_create_slot()
601 priv->root = debugfs_create_dir(priv->name, xhci->debugfs_slots); in xhci_debugfs_create_slot()
605 xhci_debugfs_create_ring_dir(xhci, &dev->eps[0].ring, in xhci_debugfs_create_slot()
608 xhci_debugfs_create_context_files(xhci, priv->root, slot_id); in xhci_debugfs_create_slot()
611 void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id) in xhci_debugfs_remove_slot() argument
615 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_remove_slot()
631 static void xhci_debugfs_create_ports(struct xhci_hcd *xhci, in xhci_debugfs_create_ports() argument
639 num_ports = HCS_MAX_PORTS(xhci->hcs_params1); in xhci_debugfs_create_ports()
647 port = &xhci->hw_ports[num_ports]; in xhci_debugfs_create_ports()
652 void xhci_debugfs_init(struct xhci_hcd *xhci) in xhci_debugfs_init() argument
654 struct device *dev = xhci_to_hcd(xhci)->self.controller; in xhci_debugfs_init()
656 xhci->debugfs_root = debugfs_create_dir(dev_name(dev), in xhci_debugfs_init()
659 INIT_LIST_HEAD(&xhci->regset_list); in xhci_debugfs_init()
661 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
664 xhci->debugfs_root, "reg-cap"); in xhci_debugfs_init()
666 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
667 HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)), in xhci_debugfs_init()
669 xhci->debugfs_root, "reg-op"); in xhci_debugfs_init()
671 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
672 readl(&xhci->cap_regs->run_regs_off) & RTSOFF_MASK, in xhci_debugfs_init()
674 xhci->debugfs_root, "reg-runtime"); in xhci_debugfs_init()
676 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_LEGACY, in xhci_debugfs_init()
681 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_PROTOCOL, in xhci_debugfs_init()
686 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_DEBUG, in xhci_debugfs_init()
691 xhci_debugfs_create_ring_dir(xhci, &xhci->cmd_ring, in xhci_debugfs_init()
693 xhci->debugfs_root); in xhci_debugfs_init()
695 xhci_debugfs_create_ring_dir(xhci, &xhci->event_ring, in xhci_debugfs_init()
697 xhci->debugfs_root); in xhci_debugfs_init()
699 xhci->debugfs_slots = debugfs_create_dir("devices", xhci->debugfs_root); in xhci_debugfs_init()
701 xhci_debugfs_create_ports(xhci, xhci->debugfs_root); in xhci_debugfs_init()
704 void xhci_debugfs_exit(struct xhci_hcd *xhci) in xhci_debugfs_exit() argument
708 debugfs_remove_recursive(xhci->debugfs_root); in xhci_debugfs_exit()
709 xhci->debugfs_root = NULL; in xhci_debugfs_exit()
710 xhci->debugfs_slots = NULL; in xhci_debugfs_exit()
712 list_for_each_entry_safe(rgs, tmp, &xhci->regset_list, list) in xhci_debugfs_exit()
718 xhci_debugfs_root = debugfs_create_dir("xhci", usb_debug_root); in xhci_debugfs_create_root()