/linux/drivers/usb/host/ |
H A D | xhci.c | 89 int xhci_handshake_check_state(struct xhci_hcd *xhci, void __iomem *ptr, in xhci_handshake_check_state() argument 98 xhci->xhc_state & exit_state, in xhci_handshake_check_state() 101 if (result == U32_MAX || xhci->xhc_state & exit_state) in xhci_handshake_check_state() 110 void xhci_quiesce(struct xhci_hcd *xhci) in xhci_quiesce() argument 117 halted = readl(&xhci->op_regs->status) & STS_HALT; in xhci_quiesce() 121 cmd = readl(&xhci->op_regs->command); in xhci_quiesce() 123 writel(cmd, &xhci->op_regs->command); in xhci_quiesce() 134 int xhci_halt(struct xhci_hcd *xhci) in xhci_halt() argument 138 xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Halt the HC"); in xhci_halt() 139 xhci_quiesce(xhci); 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 38 struct device *dev = xhci_to_hcd(xhci)->self.sysdev; in xhci_segment_alloc() 44 seg->trbs = dma_pool_zalloc(xhci->segment_pool, flags, &dma); in xhci_segment_alloc() 54 dma_pool_free(xhci->segment_pool, seg->trbs, dma); in xhci_segment_alloc() 71 static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg) in xhci_segment_free() argument 74 dma_pool_free(xhci->segment_pool, seg->trbs, seg->dma); in xhci_segment_free() 81 static void xhci_free_segments_for_ring(struct xhci_hcd *xhci, in xhci_free_segments_for_ring() argument 89 xhci_segment_free(xhci, seg); in xhci_free_segments_for_ring() 92 xhci_segment_free(xhci, first); in xhci_free_segments_for_ring() 129 static void xhci_link_rings(struct xhci_hcd *xhci, struct xhci_ring *ring, in xhci_link_rings() argument [all …]
|
H A D | xhci-ring.c | 61 static int queue_command(struct xhci_hcd *xhci, struct xhci_command *cmd, 148 static void next_trb(struct xhci_hcd *xhci, in next_trb() argument 164 void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) in inc_deq() argument 184 xhci_warn(xhci, "Missing link TRB at end of segment\n"); in inc_deq() 194 xhci_warn(xhci, "Ring is an endless link TRB loop\n"); in inc_deq() 220 static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, in inc_enq() argument 230 xhci_err(xhci, "Tried to move enqueue past ring segment\n"); in inc_enq() 253 if (!xhci_link_chain_quirk(xhci, ring->type)) { in inc_enq() 270 xhci_warn(xhci, "%s: Ring link TRB loop\n", __func__); in inc_enq() 320 static unsigned int xhci_ring_expansion_needed(struct xhci_hcd *xhci, struct xhci_ring *ring, in xhci_ring_expansion_needed() argument [all …]
|
H A D | xhci-pci.c | 107 static void xhci_msix_sync_irqs(struct xhci_hcd *xhci) in xhci_msix_sync_irqs() argument 109 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_msix_sync_irqs() 120 static void xhci_cleanup_msix(struct xhci_hcd *xhci) in xhci_cleanup_msix() argument 122 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_cleanup_msix() 128 free_irq(pci_irq_vector(pdev, 0), xhci_to_hcd(xhci)); in xhci_cleanup_msix() 137 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_try_enable_msi() local 144 if (xhci->quirks & XHCI_BROKEN_MSI) in xhci_try_enable_msi() 159 xhci->nvecs = min(num_online_cpus() + 1, in xhci_try_enable_msi() 160 HCS_MAX_INTRS(xhci->hcs_params1)); in xhci_try_enable_msi() 163 xhci->nvecs = pci_alloc_irq_vectors(pdev, 1, xhci->nvecs, in xhci_try_enable_msi() [all …]
|
H A D | xhci-hub.c | 35 static int xhci_create_usb3x_bos_desc(struct xhci_hcd *xhci, char *buf, in xhci_create_usb3x_bos_desc() argument 60 for (i = 0; i < xhci->num_port_caps; i++) { in xhci_create_usb3x_bos_desc() 61 u8 major = xhci->port_caps[i].maj_rev; in xhci_create_usb3x_bos_desc() 62 u8 minor = xhci->port_caps[i].min_rev; in xhci_create_usb3x_bos_desc() 67 port_cap = &xhci->port_caps[i]; in xhci_create_usb3x_bos_desc() 111 reg = readl(&xhci->cap_regs->hcc_params); in xhci_create_usb3x_bos_desc() 115 if ((xhci->quirks & XHCI_LPM_SUPPORT)) { in xhci_create_usb3x_bos_desc() 116 reg = readl(&xhci->cap_regs->hcs_params3); in xhci_create_usb3x_bos_desc() 255 static void xhci_common_hub_descriptor(struct xhci_hcd *xhci, in xhci_common_hub_descriptor() argument 265 if (HCC_PPC(xhci->hcc_params)) in xhci_common_hub_descriptor() [all …]
|
H A D | xhci-plat.c | 77 static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci) in xhci_plat_quirks() argument 79 struct xhci_plat_priv *priv = xhci_to_priv(xhci); in xhci_plat_quirks() 81 xhci->quirks |= priv->quirks; in xhci_plat_quirks() 149 struct xhci_hcd *xhci; in xhci_plat_probe() local 193 xhci = hcd_to_xhci(hcd); in xhci_plat_probe() 195 xhci->allow_single_roothub = 1; in xhci_plat_probe() 201 xhci->reg_clk = devm_clk_get_optional(&pdev->dev, "reg"); in xhci_plat_probe() 202 if (IS_ERR(xhci->reg_clk)) { in xhci_plat_probe() 203 ret = PTR_ERR(xhci->reg_clk); in xhci_plat_probe() 207 xhci->clk = devm_clk_get_optional(&pdev->dev, NULL); in xhci_plat_probe() [all …]
|
H A D | Makefile | 14 xhci-hcd-y := xhci.o xhci-mem.o xhci-ext-caps.o 15 xhci-hcd-y += xhci-ring.o xhci-hub.o xhci-dbg.o 16 xhci-hcd-y += xhci-trace.o 19 xhci-hcd-y += xhci-dbgcap.o xhci-dbgtty.o 22 xhci-mtk-hcd-y := xhci-mtk.o xhci-mtk-sch.o 24 xhci-plat-hcd-y := xhci-plat.o 26 xhci-plat-hcd-y += xhci-mvebu.o 29 xhci-hcd-y += xhci-debugfs.o 32 xhci-rcar-hcd-y += xhci-rcar.o 33 xhci-rcar-hcd-$(CONFIG_USB_XHCI_RZV2M) += xhci-rzv2m.o [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() 261 struct xhci_hcd *xhci; in xhci_slot_context_show() local [all …]
|
H A D | xhci.h | 675 struct xhci_hcd *xhci; member 1690 static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) in xhci_to_hcd() argument 1692 return xhci->main_hcd; in xhci_to_hcd() 1695 static inline struct usb_hcd *xhci_get_usb3_hcd(struct xhci_hcd *xhci) in xhci_get_usb3_hcd() argument 1697 if (xhci->shared_hcd) in xhci_get_usb3_hcd() 1698 return xhci->shared_hcd; in xhci_get_usb3_hcd() 1700 if (!xhci->usb2_rhub.num_ports) in xhci_get_usb3_hcd() 1701 return xhci->main_hcd; in xhci_get_usb3_hcd() 1708 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_hcd_is_usb3() local 1710 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-histb.c | 193 struct xhci_hcd *xhci; in xhci_histb_probe() local 252 xhci = hcd_to_xhci(hcd); in xhci_histb_probe() 256 xhci->main_hcd = hcd; in xhci_histb_probe() 257 xhci->shared_hcd = usb_create_shared_hcd(driver, dev, dev_name(dev), in xhci_histb_probe() 259 if (!xhci->shared_hcd) { in xhci_histb_probe() 265 xhci->quirks |= XHCI_HW_LPM_DISABLE; in xhci_histb_probe() 268 xhci->quirks |= XHCI_LPM_SUPPORT; in xhci_histb_probe() 271 xhci->imod_interval = 40000; in xhci_histb_probe() 273 &xhci->imod_interval); in xhci_histb_probe() 279 if (HCC_MAX_PSA(xhci->hcc_params) >= 4) in xhci_histb_probe() [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-dbgcap.c | 981 struct xhci_hcd *xhci; in dbc_show() local 983 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_show() 984 dbc = xhci->dbc; in dbc_show() 996 struct xhci_hcd *xhci; in dbc_store() local 999 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_store() 1000 dbc = xhci->dbc; in dbc_store() 1017 struct xhci_hcd *xhci; in dbc_idVendor_show() local 1019 xhci = hcd_to_xhci(dev_get_drvdata(dev)); in dbc_idVendor_show() 1020 dbc = xhci->dbc; in dbc_idVendor_show() 1030 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-dbgcap.h | 126 struct xhci_hcd *xhci; member 205 int xhci_create_dbc_dev(struct xhci_hcd *xhci); 206 void xhci_remove_dbc_dev(struct xhci_hcd *xhci); 211 int xhci_dbc_tty_probe(struct device *dev, void __iomem *res, struct xhci_hcd *xhci); 222 int xhci_dbc_suspend(struct xhci_hcd *xhci); 223 int xhci_dbc_resume(struct xhci_hcd *xhci); 226 static inline int xhci_create_dbc_dev(struct xhci_hcd *xhci) in xhci_create_dbc_dev() argument 231 static inline void xhci_remove_dbc_dev(struct xhci_hcd *xhci) in xhci_remove_dbc_dev() argument 241 static inline int xhci_dbc_suspend(struct xhci_hcd *xhci) in xhci_dbc_suspend() argument 246 static inline int xhci_dbc_resume(struct xhci_hcd *xhci) in xhci_dbc_resume() argument
|
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() 887 struct xhci_hcd *xhci = hcd_to_xhci(mtk->hcd); in xhci_mtk_sch_init() local 892 num_usb_bus = xhci->usb3_rhub.num_ports * 2 + xhci->usb2_rhub.num_ports; in xhci_mtk_sch_init() 915 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in add_ep_quirk() local 921 virt_dev = xhci->devs[udev->slot_id]; in add_ep_quirk() 923 ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); in add_ep_quirk() 937 xhci_dbg(xhci, "%s %s\n", __func__, decode_ep(ep, udev->speed)); in add_ep_quirk() 955 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in drop_ep_quirk() local [all …]
|
H A D | xhci-tegra.c | 1292 struct xhci_hcd *xhci = hcd_to_xhci(tegra->hcd); in tegra_xhci_set_port_power() local 1293 struct usb_hcd *hcd = main ? xhci->main_hcd : xhci->shared_hcd; in tegra_xhci_set_port_power() 1345 struct xhci_hcd *xhci = hcd_to_xhci(tegra->hcd); in tegra_xhci_id_work() local 1372 xhci->shared_hcd, GetPortStatus, in tegra_xhci_id_work() 1541 struct xhci_hcd *xhci; in tegra_xusb_probe() local 1819 xhci = hcd_to_xhci(tegra->hcd); in tegra_xusb_probe() 1821 xhci->shared_hcd = usb_create_shared_hcd(&tegra_xhci_hc_driver, in tegra_xusb_probe() 1825 if (!xhci->shared_hcd) { in tegra_xusb_probe() 1831 if (HCC_MAX_PSA(xhci->hcc_params) >= 4) in tegra_xusb_probe() 1832 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, 76 TP_ARGS(xhci, ctx, ep_num), 84 ((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 8) * 89 __entry->ctx_64 = HCC_64BYTE_CONTEXT(xhci->hcc_params); 95 ((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 32) * 105 TP_PROTO(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx, 107 TP_ARGS(xhci, ctx, ep_num) 624 #define TRACE_INCLUDE_FILE xhci-trace
|
H A D | xhci-mvebu.c | 79 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_mvebu_a3700_init_quirk() local 82 xhci->quirks |= XHCI_RESET_ON_RESUME; in xhci_mvebu_a3700_init_quirk()
|
/linux/drivers/usb/cdns3/ |
H A D | host.c | 34 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_cdns3_plat_start() local 38 value = readl(&xhci->op_regs->command); in xhci_cdns3_plat_start() 40 writel(value, &xhci->op_regs->command); in xhci_cdns3_plat_start() 71 struct platform_device *xhci; in __cdns_host_init() local 77 xhci = platform_device_alloc("xhci-hcd", PLATFORM_DEVID_AUTO); in __cdns_host_init() 78 if (!xhci) { in __cdns_host_init() 83 xhci->dev.parent = cdns->dev; in __cdns_host_init() 84 cdns->host_dev = xhci; in __cdns_host_init() 86 ret = platform_device_add_resources(xhci, cdns->xhci_res, in __cdns_host_init() 108 ret = platform_device_add_data(xhci, cdns->xhci_plat_data, in __cdns_host_init() [all …]
|
/linux/drivers/usb/dwc3/ |
H A D | host.c | 130 struct platform_device *xhci; in dwc3_host_init() local 144 xhci = platform_device_alloc("xhci-hcd", PLATFORM_DEVID_AUTO); in dwc3_host_init() 145 if (!xhci) { in dwc3_host_init() 150 xhci->dev.parent = dwc->dev; in dwc3_host_init() 152 dwc->xhci = xhci; in dwc3_host_init() 154 ret = platform_device_add_resources(xhci, dwc->xhci_resources, in dwc3_host_init() 186 ret = device_create_managed_software_node(&xhci->dev, props, NULL); in dwc3_host_init() 193 ret = platform_device_add_data(xhci, &dwc3_xhci_plat_quirk, in dwc3_host_init() 198 ret = platform_device_add(xhci); in dwc3_host_init() 209 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";
|
/linux/arch/arm64/boot/dts/mediatek/ |
H A D | mt7988a.dtsi | 167 compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci"; 181 compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci";
|
/linux/Documentation/ABI/testing/ |
H A D | sysfs-bus-pci-drivers-xhci_hcd | 32 presented in the USB device descriptor by this xhci debug 45 presented in the USB device descriptor by this xhci debug 57 presented in the USB device descriptor by this xhci debug 70 presented in the USB Interface descriptor by the xhci debug
|