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()
141 static void xhci_debugfs_extcap_regset(struct xhci_hcd *xhci, int cap_id, in xhci_debugfs_extcap_regset() argument
148 void __iomem *base = &xhci->cap_regs->hc_capbase; in xhci_debugfs_extcap_regset()
157 xhci_debugfs_regset(xhci, offset, regs, nregs, in xhci_debugfs_extcap_regset()
158 xhci->debugfs_root, "%s:%02d", in xhci_debugfs_extcap_regset()
261 struct xhci_hcd *xhci; in xhci_slot_context_show() local
267 xhci = hcd_to_xhci(bus_to_hcd(dev->udev->bus)); in xhci_slot_context_show()
268 slot_ctx = xhci_get_slot_ctx(xhci, dev->out_ctx); in xhci_slot_context_show()
283 struct xhci_hcd *xhci; in xhci_endpoint_context_show() local
289 xhci = hcd_to_xhci(bus_to_hcd(dev->udev->bus)); in xhci_endpoint_context_show()
292 ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); in xhci_endpoint_context_show()
293 dma = dev->out_ctx->dma + (ep_index + 1) * CTX_SIZE(xhci->hcc_params); in xhci_endpoint_context_show()
368 struct xhci_hcd *xhci = hcd_to_xhci(port->rhub->hcd); in xhci_port_write() local
378 if (!HCC2_CTC(xhci->hcc_params2)) in xhci_port_write()
380 spin_lock_irqsave(&xhci->lock, flags); in xhci_port_write()
384 spin_unlock_irqrestore(&xhci->lock, flags); in xhci_port_write()
391 spin_unlock_irqrestore(&xhci->lock, flags); in xhci_port_write()
406 static void xhci_debugfs_create_files(struct xhci_hcd *xhci, in xhci_debugfs_create_files() argument
418 static struct dentry *xhci_debugfs_create_ring_dir(struct xhci_hcd *xhci, in xhci_debugfs_create_ring_dir() argument
426 xhci_debugfs_create_files(xhci, ring_files, ARRAY_SIZE(ring_files), in xhci_debugfs_create_ring_dir()
432 static void xhci_debugfs_create_context_files(struct xhci_hcd *xhci, in xhci_debugfs_create_context_files() argument
436 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_create_context_files()
438 xhci_debugfs_create_files(xhci, context_files, in xhci_debugfs_create_context_files()
444 void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, in xhci_debugfs_create_endpoint() argument
464 epriv->root = xhci_debugfs_create_ring_dir(xhci, in xhci_debugfs_create_endpoint()
471 void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, in xhci_debugfs_remove_endpoint() argument
567 void xhci_debugfs_create_stream_files(struct xhci_hcd *xhci, in xhci_debugfs_create_stream_files() argument
592 void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id) in xhci_debugfs_create_slot() argument
595 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_create_slot()
602 priv->root = debugfs_create_dir(priv->name, xhci->debugfs_slots); in xhci_debugfs_create_slot()
606 xhci_debugfs_create_ring_dir(xhci, &dev->eps[0].ring, in xhci_debugfs_create_slot()
609 xhci_debugfs_create_context_files(xhci, priv->root, slot_id); in xhci_debugfs_create_slot()
612 void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id) in xhci_debugfs_remove_slot() argument
616 struct xhci_virt_device *dev = xhci->devs[slot_id]; in xhci_debugfs_remove_slot()
632 static void xhci_debugfs_create_ports(struct xhci_hcd *xhci, in xhci_debugfs_create_ports() argument
640 num_ports = HCS_MAX_PORTS(xhci->hcs_params1); in xhci_debugfs_create_ports()
648 port = &xhci->hw_ports[num_ports]; in xhci_debugfs_create_ports()
653 void xhci_debugfs_init(struct xhci_hcd *xhci) in xhci_debugfs_init() argument
655 struct device *dev = xhci_to_hcd(xhci)->self.controller; in xhci_debugfs_init()
657 xhci->debugfs_root = debugfs_create_dir(dev_name(dev), in xhci_debugfs_init()
660 INIT_LIST_HEAD(&xhci->regset_list); in xhci_debugfs_init()
662 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
665 xhci->debugfs_root, "reg-cap"); in xhci_debugfs_init()
667 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
668 HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)), in xhci_debugfs_init()
670 xhci->debugfs_root, "reg-op"); in xhci_debugfs_init()
672 xhci_debugfs_regset(xhci, in xhci_debugfs_init()
673 readl(&xhci->cap_regs->run_regs_off) & RTSOFF_MASK, in xhci_debugfs_init()
675 xhci->debugfs_root, "reg-runtime"); in xhci_debugfs_init()
677 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_LEGACY, in xhci_debugfs_init()
682 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_PROTOCOL, in xhci_debugfs_init()
687 xhci_debugfs_extcap_regset(xhci, XHCI_EXT_CAPS_DEBUG, in xhci_debugfs_init()
692 xhci_debugfs_create_ring_dir(xhci, &xhci->cmd_ring, in xhci_debugfs_init()
694 xhci->debugfs_root); in xhci_debugfs_init()
696 xhci_debugfs_create_ring_dir(xhci, &xhci->interrupters[0]->event_ring, in xhci_debugfs_init()
698 xhci->debugfs_root); in xhci_debugfs_init()
700 xhci->debugfs_slots = debugfs_create_dir("devices", xhci->debugfs_root); in xhci_debugfs_init()
702 xhci_debugfs_create_ports(xhci, xhci->debugfs_root); in xhci_debugfs_init()
705 void xhci_debugfs_exit(struct xhci_hcd *xhci) in xhci_debugfs_exit() argument
709 debugfs_remove_recursive(xhci->debugfs_root); in xhci_debugfs_exit()
710 xhci->debugfs_root = NULL; in xhci_debugfs_exit()
711 xhci->debugfs_slots = NULL; in xhci_debugfs_exit()
713 list_for_each_entry_safe(rgs, tmp, &xhci->regset_list, list) in xhci_debugfs_exit()
719 xhci_debugfs_root = debugfs_create_dir("xhci", usb_debug_root); in xhci_debugfs_create_root()