Home
last modified time | relevance | path

Searched refs:xhci (Results 1 – 25 of 60) sorted by relevance

123

/linux/drivers/usb/host/
H A Dxhci.c103 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 Dxhci-mem.c29 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 Dxhci-ring.c63 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 Dxhci-pci.c116 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 Dxhci-hub.c36 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 Dxhci-debugfs.c86 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()
249 struct xhci_hcd *xhci; in xhci_slot_context_show() local
[all …]
H A Dxhci.h678 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 Dxhci-debugfs.h107 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 Dxhci-mtk.c451 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 Dxhci-sideband.c28 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 Dxhci-dbgcap.c1057 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 Dxhci-ext-caps.c28 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 Dxhci-dbg.c13 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 Dxhci-mtk-sch.c130 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 Dxhci-tegra.c1298 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 Dxhci-trace.h12 #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 Dhost.c133 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 Ddwc3-cavium.txt22 xhci@1690000000000 {
23 compatible = "cavium,octeon-7130-xhci", "snps,dwc3";
H A Dhisilicon,histb-xhci.txt6 - compatible: should be "hisilicon,hi3798cv200-xhci"
33 compatible = "hisilicon,hi3798cv200-xhci";
/linux/drivers/usb/early/
H A DMakefile7 obj-$(CONFIG_EARLY_PRINTK_USB_XDBC) += xhci-dbc.o
/linux/drivers/usb/roles/
H A DMakefile5 obj-$(CONFIG_USB_ROLES_INTEL_XHCI) += intel-xhci-usb-role-switch.o
H A DKconfig27 be called intel-xhci-usb-role-switch.
/linux/arch/arm64/boot/dts/broadcom/bcmbca/
H A Dbcm4908-netgear-raxe500.dts23 &xhci {
/linux/arch/arm/boot/dts/marvell/
H A Darmada-395.dtsi31 compatible = "marvell,armada-380-xhci";
/linux/arch/arm/boot/dts/broadcom/
H A Dbcm-nsp-ax.dtsi40 &xhci {

123