Home
last modified time | relevance | path

Searched refs:xhci (Results 1 – 25 of 52) 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-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-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-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-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()
101 xhci_remove_secondary_interrupter(xhci_to_hcd(sb->xhci), sb->ir); in __xhci_sideband_remove_interrupter()
225 return xhci_stop_endpoint_sync(sb->xhci, ep, 0, GFP_KERNEL); in xhci_sideband_stop_endpoint()
325 if (!sb || !sb->xhci) in xhci_sideband_create_interrupter()
336 sb->ir = xhci_create_secondary_interrupter(xhci_to_hcd(sb->xhci), in xhci_sideband_create_interrupter()
405 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_sideband_register() local
424 spin_lock_irq(&xhci->lock); in xhci_sideband_register()
426 vdev = xhci->devs[udev->slot_id]; in xhci_sideband_register()
429 xhci_warn(xhci, "XHCI sideband for slot %d already in use\n", in xhci_sideband_register()
[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-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-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 …]
H A Ddwc3-imx8mp.c111 if ((dwc3->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc3->xhci) { in dwc3_imx8mp_wakeup_enable()
153 if ((dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc->xhci) in dwc3_imx8mp_interrupt()
154 pm_runtime_resume(&dwc->xhci->dev); in dwc3_imx8mp_interrupt()
H A Ddwc3-qcom-legacy.c317 return dwc->xhci; in dwc3_qcom_is_host()
329 hcd = platform_get_drvdata(dwc->xhci); in dwc3_qcom_read_usb2_speed()
512 pm_runtime_resume(&dwc->xhci->dev); in qcom_dwc3_resume_irq()
/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 {
/linux/Documentation/leds/
H A Dledtrig-usbport.rst28 port may be handled by ohci-platform, ehci-platform and xhci-hcd. If there is
/linux/arch/arm/boot/dts/mediatek/
H A Dmt2701.dtsi607 compatible = "mediatek,mt2701-xhci", "mediatek,mtk-xhci";
647 compatible = "mediatek,mt2701-xhci", "mediatek,mtk-xhci";

123