| /linux/drivers/usb/host/ |
| H A D | xhci.c | 103 void xhci_quiesce(struct xhci_hcd *xhci) in xhci_quiesce() argument 110 halted = readl(&xhci->op_regs->status) & STS_HALT; in xhci_quiesce() 114 cmd = readl(&xhci->op_regs->command); in xhci_quiesce() 116 writel(cmd, &xhci->op_regs->command); in xhci_quiesce() 127 int xhci_halt(struct xhci_hcd *xhci) in xhci_halt() argument 131 xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Halt the HC"); in xhci_halt() 132 xhci_quiesce(xhci); in xhci_halt() 134 ret = xhci_handshake(&xhci->op_regs->status, in xhci_halt() 137 if (!(xhci->xhc_state & XHCI_STATE_DYING)) in xhci_halt() 138 xhci_warn(xhci, "Host halt failed, %d\n", ret); in xhci_halt() [all …]
|
| H A D | xhci-mem.c | 29 static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci, in xhci_segment_alloc() argument 36 struct device *dev = xhci_to_hcd(xhci)->self.sysdev; in xhci_segment_alloc() 42 seg->trbs = dma_pool_zalloc(xhci->segment_pool, flags, &dma); in xhci_segment_alloc() 52 dma_pool_free(xhci->segment_pool, seg->trbs, dma); in xhci_segment_alloc() 64 static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg) in xhci_segment_free() argument 67 dma_pool_free(xhci->segment_pool, seg->trbs, seg->dma); in xhci_segment_free() 74 static void xhci_ring_segments_free(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_ring_segments_free() argument 83 xhci_segment_free(xhci, seg); in xhci_ring_segments_free() 116 static void xhci_initialize_ring_segments(struct xhci_hcd *xhci, struct xhci_ring *ring) in xhci_initialize_ring_segments() argument 124 chain_links = xhci_link_chain_quirk(xhci, ring->type); in xhci_initialize_ring_segments() [all …]
|
| H A D | xhci-ring.c | 63 static int queue_command(struct xhci_hcd *xhci, struct xhci_command *cmd, 186 void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) in inc_deq() argument 209 xhci_warn(xhci, "Missing link TRB at end of segment\n"); in inc_deq() 221 xhci_warn(xhci, "Ring is an endless link TRB loop\n"); in inc_deq() 232 static void inc_enq_past_link(struct xhci_hcd *xhci, struct xhci_ring *ring, u32 chain) in inc_enq_past_link() argument 247 if (!xhci_link_chain_quirk(xhci, ring->type)) { in inc_enq_past_link() 266 xhci_warn(xhci, "Link TRB loop at enqueue\n"); in inc_enq_past_link() 283 static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, in inc_enq() argument 291 xhci_err(xhci, "Tried to move enqueue past ring segment\n"); in inc_enq() 304 inc_enq_past_link(xhci, ring, chain); in inc_enq() [all …]
|
| H A D | xhci-pci.c | 116 static void xhci_msix_sync_irqs(struct xhci_hcd *xhci) in xhci_msix_sync_irqs() argument 118 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_msix_sync_irqs() 129 static void xhci_cleanup_msix(struct xhci_hcd *xhci) in xhci_cleanup_msix() argument 131 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_cleanup_msix() 137 free_irq(pci_irq_vector(pdev, 0), xhci_to_hcd(xhci)); in xhci_cleanup_msix() 146 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_try_enable_msi() local 153 if (xhci->quirks & XHCI_BROKEN_MSI) in xhci_try_enable_msi() 166 xhci->nvecs = min(num_online_cpus() + 1, xhci->max_interrupters); in xhci_try_enable_msi() 169 xhci->nvecs = pci_alloc_irq_vectors(pdev, 1, xhci->nvecs, in xhci_try_enable_msi() 171 if (xhci->nvecs < 0) { in xhci_try_enable_msi() [all …]
|
| H A D | xhci-hub.c | 36 static int xhci_create_usb3x_bos_desc(struct xhci_hcd *xhci, char *buf, in xhci_create_usb3x_bos_desc() argument 61 for (i = 0; i < xhci->num_port_caps; i++) { in xhci_create_usb3x_bos_desc() 62 u8 major = xhci->port_caps[i].maj_rev; in xhci_create_usb3x_bos_desc() 63 u8 minor = xhci->port_caps[i].min_rev; in xhci_create_usb3x_bos_desc() 68 port_cap = &xhci->port_caps[i]; in xhci_create_usb3x_bos_desc() 112 reg = readl(&xhci->cap_regs->hcc_params); in xhci_create_usb3x_bos_desc() 116 if ((xhci->quirks & XHCI_LPM_SUPPORT)) { in xhci_create_usb3x_bos_desc() 117 reg = readl(&xhci->cap_regs->hcs_params3); in xhci_create_usb3x_bos_desc() 256 static void xhci_common_hub_descriptor(struct xhci_hcd *xhci, in xhci_common_hub_descriptor() argument 266 if (xhci->hcc_params & HCC_PPC) in xhci_common_hub_descriptor() [all …]
|
| H A D | xhci-debugfs.c | 86 static struct xhci_regset *xhci_debugfs_alloc_regset(struct xhci_hcd *xhci) in xhci_debugfs_alloc_regset() argument 99 list_add_tail(®set->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() 249 struct xhci_hcd *xhci; in xhci_slot_context_show() local [all …]
|
| H A D | xhci.h | 678 struct xhci_hcd *xhci; member 1710 static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) in xhci_to_hcd() argument 1712 return xhci->main_hcd; in xhci_to_hcd() 1715 static inline struct usb_hcd *xhci_get_usb3_hcd(struct xhci_hcd *xhci) in xhci_get_usb3_hcd() argument 1717 if (xhci->shared_hcd) in xhci_get_usb3_hcd() 1718 return xhci->shared_hcd; in xhci_get_usb3_hcd() 1720 if (!xhci->usb2_rhub.num_ports) in xhci_get_usb3_hcd() 1721 return xhci->main_hcd; in xhci_get_usb3_hcd() 1728 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_hcd_is_usb3() local 1730 return hcd == xhci_get_usb3_hcd(xhci); in xhci_hcd_is_usb3() [all …]
|
| H A D | xhci-debugfs.h | 107 void xhci_debugfs_init(struct xhci_hcd *xhci); 108 void xhci_debugfs_exit(struct xhci_hcd *xhci); 111 void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id); 112 void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id); 113 void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, 116 void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, 119 void xhci_debugfs_create_stream_files(struct xhci_hcd *xhci, 123 static inline void xhci_debugfs_init(struct xhci_hcd *xhci) { } in xhci_debugfs_init() argument 124 static inline void xhci_debugfs_exit(struct xhci_hcd *xhci) { } in xhci_debugfs_exit() argument 130 xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, in xhci_debugfs_create_endpoint() argument [all …]
|
| H A D | xhci-mtk.c | 451 static void xhci_mtk_quirks(struct device *dev, struct xhci_hcd *xhci) in xhci_mtk_quirks() argument 453 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_mtk_quirks() 456 xhci->quirks |= XHCI_MTK_HOST; in xhci_mtk_quirks() 461 xhci->quirks |= XHCI_SPURIOUS_SUCCESS; in xhci_mtk_quirks() 463 xhci->quirks |= XHCI_LPM_SUPPORT; in xhci_mtk_quirks() 465 xhci->quirks |= XHCI_HW_LPM_DISABLE; in xhci_mtk_quirks() 471 if (xhci->hci_version < 0x100 && HCC_MAX_PSA(xhci->hcc_params) == 4) in xhci_mtk_quirks() 472 xhci->quirks |= XHCI_BROKEN_STREAMS; in xhci_mtk_quirks() 515 struct xhci_hcd *xhci; in xhci_mtk_probe() local 627 xhci = hcd_to_xhci(hcd); in xhci_mtk_probe() [all …]
|
| H A D | xhci-sideband.c | 28 dev = xhci_to_hcd(sb->xhci)->self.sysdev; in xhci_ring_to_sgtable() 86 xhci_stop_endpoint_sync(sb->xhci, ep, 0, GFP_KERNEL); in __xhci_sideband_remove_endpoint() 103 xhci_remove_secondary_interrupter(xhci_to_hcd(sb->xhci), sb->ir); in __xhci_sideband_remove_interrupter() 231 return xhci_stop_endpoint_sync(sb->xhci, ep, 0, GFP_KERNEL); in xhci_sideband_stop_endpoint() 334 if (!sb || !sb->xhci) in xhci_sideband_create_interrupter() 345 sb->ir = xhci_create_secondary_interrupter(xhci_to_hcd(sb->xhci), in xhci_sideband_create_interrupter() 417 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_sideband_register() local 436 spin_lock_irq(&xhci->lock); in xhci_sideband_register() 438 vdev = xhci->devs[udev->slot_id]; in xhci_sideband_register() 441 xhci_warn(xhci, "XHCI sideband for slot %d already in use\n", in xhci_sideband_register() [all …]
|
| H A D | xhci-dbgcap.c | 1057 struct xhci_hcd *xhci; in dbc_show() local 1059 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_show() 1060 dbc = xhci->dbc; in dbc_show() 1072 struct xhci_hcd *xhci; in dbc_store() local 1075 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_store() 1076 dbc = xhci->dbc; in dbc_store() 1093 struct xhci_hcd *xhci; in dbc_idVendor_show() local 1095 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_idVendor_show() 1096 dbc = xhci->dbc; in dbc_idVendor_show() 1106 struct xhci_hcd *xhci; in dbc_idVendor_store() local [all …]
|
| H A D | xhci-ext-caps.c | 28 static int xhci_create_intel_xhci_sw_pdev(struct xhci_hcd *xhci, u32 cap_offset) in xhci_create_intel_xhci_sw_pdev() argument 30 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_create_intel_xhci_sw_pdev() 39 xhci_err(xhci, "couldn't allocate %s platform device\n", in xhci_create_intel_xhci_sw_pdev() 84 int xhci_ext_cap_init(struct xhci_hcd *xhci) in xhci_ext_cap_init() argument 86 void __iomem *base = &xhci->cap_regs->hc_capbase; in xhci_ext_cap_init() 97 if (xhci->quirks & XHCI_INTEL_USB_ROLE_SW) { in xhci_ext_cap_init() 98 ret = xhci_create_intel_xhci_sw_pdev(xhci, in xhci_ext_cap_init()
|
| H A D | xhci-dbg.c | 13 char *xhci_get_slot_state(struct xhci_hcd *xhci, in xhci_get_slot_state() argument 16 struct xhci_slot_ctx *slot_ctx = xhci_get_slot_ctx(xhci, ctx); in xhci_get_slot_state() 22 void xhci_dbg_trace(struct xhci_hcd *xhci, void (*trace)(struct va_format *), in xhci_dbg_trace() argument 31 xhci_dbg(xhci, "%pV\n", &vaf); in xhci_dbg_trace()
|
| H A D | xhci-mtk-sch.c | 130 struct xhci_hcd *xhci = hcd_to_xhci(mtk->hcd); in get_bw_info() local 134 virt_dev = xhci->devs[udev->slot_id]; in get_bw_info() 147 bw_index = virt_dev->rhub_port->hw_portnum + xhci->usb3_rhub.num_ports; in get_bw_info() 886 struct xhci_hcd *xhci = hcd_to_xhci(mtk->hcd); in xhci_mtk_sch_init() local 891 num_usb_bus = xhci->usb3_rhub.num_ports * 2 + xhci->usb2_rhub.num_ports; in xhci_mtk_sch_init() 914 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in add_ep_quirk() local 920 virt_dev = xhci->devs[udev->slot_id]; in add_ep_quirk() 922 ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); in add_ep_quirk() 936 xhci_dbg(xhci, "%s %s\n", __func__, decode_ep(ep, udev->speed)); in add_ep_quirk() 954 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in drop_ep_quirk() local [all …]
|
| H A D | xhci-tegra.c | 1298 struct xhci_hcd *xhci = hcd_to_xhci(tegra->hcd); in tegra_xhci_set_port_power() local 1299 struct usb_hcd *hcd = main ? xhci->main_hcd : xhci->shared_hcd; in tegra_xhci_set_port_power() 1351 struct xhci_hcd *xhci = hcd_to_xhci(tegra->hcd); in tegra_xhci_id_work() local 1379 xhci->shared_hcd, GetPortStatus, in tegra_xhci_id_work() 1590 struct xhci_hcd *xhci; in tegra_xusb_probe() local 1872 xhci = hcd_to_xhci(tegra->hcd); in tegra_xusb_probe() 1874 xhci->shared_hcd = usb_create_shared_hcd(&tegra_xhci_hc_driver, in tegra_xusb_probe() 1878 if (!xhci->shared_hcd) { in tegra_xusb_probe() 1884 if (HCC_MAX_PSA(xhci->hcc_params) >= 4) in tegra_xusb_probe() 1885 xhci->shared_hcd->can_do_streams = 1; in tegra_xusb_probe() [all …]
|
| H A D | xhci-trace.h | 12 #define TRACE_SYSTEM xhci-hcd 74 TP_PROTO(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx), 75 TP_ARGS(xhci, ctx), 84 __entry->ctx_64 = xhci->hcc_params & HCC_64BYTE_CONTEXT; 96 TP_PROTO(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx), 97 TP_ARGS(xhci, ctx) 650 #define TRACE_INCLUDE_FILE xhci-trace
|
| /linux/drivers/usb/dwc3/ |
| H A D | host.c | 133 struct platform_device *xhci; in dwc3_host_init() local 147 xhci = platform_device_alloc("xhci-hcd", PLATFORM_DEVID_AUTO); in dwc3_host_init() 148 if (!xhci) { in dwc3_host_init() 153 xhci->dev.parent = dwc->dev; in dwc3_host_init() 155 dwc->xhci = xhci; in dwc3_host_init() 157 ret = platform_device_add_resources(xhci, dwc->xhci_resources, in dwc3_host_init() 192 ret = device_create_managed_software_node(&xhci->dev, props, NULL); in dwc3_host_init() 199 ret = platform_device_add_data(xhci, &dwc3_xhci_plat_quirk, in dwc3_host_init() 204 ret = platform_device_add(xhci); in dwc3_host_init() 215 device_init_wakeup(&xhci->dev, true); in dwc3_host_init() [all …]
|
| /linux/Documentation/devicetree/bindings/usb/ |
| H A D | dwc3-cavium.txt | 22 xhci@1690000000000 { 23 compatible = "cavium,octeon-7130-xhci", "snps,dwc3";
|
| H A D | hisilicon,histb-xhci.txt | 6 - compatible: should be "hisilicon,hi3798cv200-xhci" 33 compatible = "hisilicon,hi3798cv200-xhci";
|
| /linux/drivers/usb/early/ |
| H A D | Makefile | 7 obj-$(CONFIG_EARLY_PRINTK_USB_XDBC) += xhci-dbc.o
|
| /linux/drivers/usb/roles/ |
| H A D | Makefile | 5 obj-$(CONFIG_USB_ROLES_INTEL_XHCI) += intel-xhci-usb-role-switch.o
|
| H A D | Kconfig | 27 be called intel-xhci-usb-role-switch.
|
| /linux/arch/arm64/boot/dts/broadcom/bcmbca/ |
| H A D | bcm4908-netgear-raxe500.dts | 23 &xhci {
|
| /linux/arch/arm/boot/dts/marvell/ |
| H A D | armada-395.dtsi | 31 compatible = "marvell,armada-380-xhci";
|
| /linux/arch/arm/boot/dts/broadcom/ |
| H A D | bcm-nsp-ax.dtsi | 40 &xhci {
|