xdbc 29 drivers/usb/early/xhci-dbc.c static struct xdbc_state xdbc; xdbc 86 drivers/usb/early/xhci-dbc.c xdbc.xhci_start = val64; xdbc 87 drivers/usb/early/xhci-dbc.c xdbc.xhci_length = sz64; xdbc 155 drivers/usb/early/xhci-dbc.c offset = xhci_find_next_ext_cap(xdbc.xhci_base, 0, XHCI_EXT_CAPS_LEGACY); xdbc 156 drivers/usb/early/xhci-dbc.c val = readl(xdbc.xhci_base + offset); xdbc 159 drivers/usb/early/xhci-dbc.c writel(val | XHCI_HC_OS_OWNED, xdbc.xhci_base + offset); xdbc 160 drivers/usb/early/xhci-dbc.c timeout = handshake(xdbc.xhci_base + offset, XHCI_HC_BIOS_OWNED, 0, 5000, 10); xdbc 164 drivers/usb/early/xhci-dbc.c writel(val & ~XHCI_HC_BIOS_OWNED, xdbc.xhci_base + offset); xdbc 169 drivers/usb/early/xhci-dbc.c val = readl(xdbc.xhci_base + offset + XHCI_LEGACY_CONTROL_OFFSET); xdbc 172 drivers/usb/early/xhci-dbc.c writel(val, xdbc.xhci_base + offset + XHCI_LEGACY_CONTROL_OFFSET); xdbc 209 drivers/usb/early/xhci-dbc.c if (ring != &xdbc.evt_ring) { xdbc 237 drivers/usb/early/xhci-dbc.c xdbc_reset_ring(&xdbc.evt_ring); xdbc 238 drivers/usb/early/xhci-dbc.c xdbc_reset_ring(&xdbc.in_ring); xdbc 239 drivers/usb/early/xhci-dbc.c xdbc_reset_ring(&xdbc.out_ring); xdbc 240 drivers/usb/early/xhci-dbc.c memset(xdbc.table_base, 0, PAGE_SIZE); xdbc 241 drivers/usb/early/xhci-dbc.c memset(xdbc.out_buf, 0, PAGE_SIZE); xdbc 244 drivers/usb/early/xhci-dbc.c xdbc.erst_size = 16; xdbc 245 drivers/usb/early/xhci-dbc.c xdbc.erst_base = xdbc.table_base + index * XDBC_TABLE_ENTRY_SIZE; xdbc 246 drivers/usb/early/xhci-dbc.c xdbc.erst_dma = xdbc.table_dma + index * XDBC_TABLE_ENTRY_SIZE; xdbc 249 drivers/usb/early/xhci-dbc.c entry = (struct xdbc_erst_entry *)xdbc.erst_base; xdbc 251 drivers/usb/early/xhci-dbc.c entry->seg_addr = cpu_to_le64(xdbc.evt_seg.dma); xdbc 256 drivers/usb/early/xhci-dbc.c writel(1, &xdbc.xdbc_reg->ersts); xdbc 257 drivers/usb/early/xhci-dbc.c xdbc_write64(xdbc.erst_dma, &xdbc.xdbc_reg->erstba); xdbc 258 drivers/usb/early/xhci-dbc.c xdbc_write64(xdbc.evt_seg.dma, &xdbc.xdbc_reg->erdp); xdbc 261 drivers/usb/early/xhci-dbc.c xdbc.dbcc_size = 64 * 3; xdbc 262 drivers/usb/early/xhci-dbc.c xdbc.dbcc_base = xdbc.table_base + index * XDBC_TABLE_ENTRY_SIZE; xdbc 263 drivers/usb/early/xhci-dbc.c xdbc.dbcc_dma = xdbc.table_dma + index * XDBC_TABLE_ENTRY_SIZE; xdbc 268 drivers/usb/early/xhci-dbc.c xdbc.string_size = sizeof(struct xdbc_strings); xdbc 269 drivers/usb/early/xhci-dbc.c xdbc.string_base = xdbc.table_base + index * XDBC_TABLE_ENTRY_SIZE; xdbc 270 drivers/usb/early/xhci-dbc.c xdbc.string_dma = xdbc.table_dma + index * XDBC_TABLE_ENTRY_SIZE; xdbc 271 drivers/usb/early/xhci-dbc.c strings = (struct xdbc_strings *)xdbc.string_base; xdbc 311 drivers/usb/early/xhci-dbc.c ctx = (struct xdbc_context *)xdbc.dbcc_base; xdbc 313 drivers/usb/early/xhci-dbc.c ctx->info.string0 = cpu_to_le64(xdbc.string_dma); xdbc 314 drivers/usb/early/xhci-dbc.c ctx->info.manufacturer = cpu_to_le64(xdbc.string_dma + XDBC_MAX_STRING_LENGTH); xdbc 315 drivers/usb/early/xhci-dbc.c ctx->info.product = cpu_to_le64(xdbc.string_dma + XDBC_MAX_STRING_LENGTH * 2); xdbc 316 drivers/usb/early/xhci-dbc.c ctx->info.serial = cpu_to_le64(xdbc.string_dma + XDBC_MAX_STRING_LENGTH * 3); xdbc 320 drivers/usb/early/xhci-dbc.c max_burst = DEBUG_MAX_BURST(readl(&xdbc.xdbc_reg->control)); xdbc 325 drivers/usb/early/xhci-dbc.c ep_out->deq = cpu_to_le64(xdbc.out_seg.dma | xdbc.out_ring.cycle_state); xdbc 332 drivers/usb/early/xhci-dbc.c ep_in->deq = cpu_to_le64(xdbc.in_seg.dma | xdbc.in_ring.cycle_state); xdbc 335 drivers/usb/early/xhci-dbc.c xdbc_write64(xdbc.dbcc_dma, &xdbc.xdbc_reg->dccp); xdbc 338 drivers/usb/early/xhci-dbc.c writel(dev_info, &xdbc.xdbc_reg->devinfo1); xdbc 341 drivers/usb/early/xhci-dbc.c writel(dev_info, &xdbc.xdbc_reg->devinfo2); xdbc 343 drivers/usb/early/xhci-dbc.c xdbc.in_buf = xdbc.out_buf + XDBC_MAX_PACKET; xdbc 344 drivers/usb/early/xhci-dbc.c xdbc.in_dma = xdbc.out_dma + XDBC_MAX_PACKET; xdbc 354 drivers/usb/early/xhci-dbc.c cap_length = readl(xdbc.xhci_base) & 0xff; xdbc 355 drivers/usb/early/xhci-dbc.c ops_reg = xdbc.xhci_base + cap_length; xdbc 372 drivers/usb/early/xhci-dbc.c offset = xhci_find_next_ext_cap(xdbc.xhci_base, offset, XHCI_EXT_CAPS_PROTOCOL); xdbc 376 drivers/usb/early/xhci-dbc.c val = readl(xdbc.xhci_base + offset); xdbc 380 drivers/usb/early/xhci-dbc.c val = readl(xdbc.xhci_base + offset + 8); xdbc 414 drivers/usb/early/xhci-dbc.c writel(DOOR_BELL_TARGET(target), &xdbc.xdbc_reg->doorbell); xdbc 422 drivers/usb/early/xhci-dbc.c ctrl = readl(&xdbc.xdbc_reg->control); xdbc 423 drivers/usb/early/xhci-dbc.c writel(ctrl | CTRL_DBC_ENABLE | CTRL_PORT_ENABLE, &xdbc.xdbc_reg->control); xdbc 424 drivers/usb/early/xhci-dbc.c ret = handshake(&xdbc.xdbc_reg->control, CTRL_DBC_ENABLE, CTRL_DBC_ENABLE, 100000, 100); xdbc 431 drivers/usb/early/xhci-dbc.c if (xdbc.vendor == PCI_VENDOR_ID_INTEL) xdbc 435 drivers/usb/early/xhci-dbc.c ret = handshake(&xdbc.xdbc_reg->portsc, PORTSC_CONN_STATUS, PORTSC_CONN_STATUS, 5000000, 100); xdbc 442 drivers/usb/early/xhci-dbc.c ret = handshake(&xdbc.xdbc_reg->control, CTRL_DBC_RUN, CTRL_DBC_RUN, 5000000, 100); xdbc 449 drivers/usb/early/xhci-dbc.c status = readl(&xdbc.xdbc_reg->status); xdbc 455 drivers/usb/early/xhci-dbc.c xdbc.port_number = DCST_DEBUG_PORT(status); xdbc 458 drivers/usb/early/xhci-dbc.c readl(&xdbc.xdbc_reg->control), xdbc.port_number); xdbc 476 drivers/usb/early/xhci-dbc.c if (!(xdbc.flags & XDBC_FLAGS_INITIALIZED) || xdbc 477 drivers/usb/early/xhci-dbc.c !(xdbc.flags & XDBC_FLAGS_CONFIGURED) || xdbc 478 drivers/usb/early/xhci-dbc.c (!read && (xdbc.flags & XDBC_FLAGS_OUT_STALL)) || xdbc 479 drivers/usb/early/xhci-dbc.c (read && (xdbc.flags & XDBC_FLAGS_IN_STALL))) { xdbc 481 drivers/usb/early/xhci-dbc.c xdbc_trace("connection not ready, flags %08x\n", xdbc.flags); xdbc 485 drivers/usb/early/xhci-dbc.c ring = (read ? &xdbc.in_ring : &xdbc.out_ring); xdbc 497 drivers/usb/early/xhci-dbc.c memset(xdbc.in_buf, 0, XDBC_MAX_PACKET); xdbc 498 drivers/usb/early/xhci-dbc.c addr = xdbc.in_dma; xdbc 499 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_IN_PROCESS; xdbc 501 drivers/usb/early/xhci-dbc.c memset(xdbc.out_buf, 0, XDBC_MAX_PACKET); xdbc 502 drivers/usb/early/xhci-dbc.c memcpy(xdbc.out_buf, data, size); xdbc 503 drivers/usb/early/xhci-dbc.c addr = xdbc.out_dma; xdbc 504 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_OUT_PROCESS; xdbc 528 drivers/usb/early/xhci-dbc.c xdbc.flags = 0; xdbc 529 drivers/usb/early/xhci-dbc.c writel(0, &xdbc.xdbc_reg->control); xdbc 530 drivers/usb/early/xhci-dbc.c ret = handshake(&xdbc.xdbc_reg->control, CTRL_DBC_ENABLE, 0, 100000, 10); xdbc 542 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_INITIALIZED | XDBC_FLAGS_CONFIGURED; xdbc 557 drivers/usb/early/xhci-dbc.c writel(0, &xdbc.xdbc_reg->control); xdbc 558 drivers/usb/early/xhci-dbc.c ret = handshake(&xdbc.xdbc_reg->control, CTRL_DBC_ENABLE, 0, 100000, 100); xdbc 563 drivers/usb/early/xhci-dbc.c xdbc.table_base = xdbc_get_page(&xdbc.table_dma); xdbc 564 drivers/usb/early/xhci-dbc.c if (!xdbc.table_base) xdbc 568 drivers/usb/early/xhci-dbc.c xdbc.out_buf = xdbc_get_page(&xdbc.out_dma); xdbc 569 drivers/usb/early/xhci-dbc.c if (!xdbc.out_buf) xdbc 573 drivers/usb/early/xhci-dbc.c ret = xdbc_alloc_ring(&xdbc.evt_seg, &xdbc.evt_ring); xdbc 578 drivers/usb/early/xhci-dbc.c ret = xdbc_alloc_ring(&xdbc.in_seg, &xdbc.in_ring); xdbc 582 drivers/usb/early/xhci-dbc.c ret = xdbc_alloc_ring(&xdbc.out_seg, &xdbc.out_ring); xdbc 590 drivers/usb/early/xhci-dbc.c writel(0, &xdbc.xdbc_reg->control); xdbc 594 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_INITIALIZED | XDBC_FLAGS_CONFIGURED; xdbc 613 drivers/usb/early/xhci-dbc.c if (xdbc.xdbc_reg) xdbc 628 drivers/usb/early/xhci-dbc.c xdbc.vendor = read_pci_config_16(bus, dev, func, PCI_VENDOR_ID); xdbc 629 drivers/usb/early/xhci-dbc.c xdbc.device = read_pci_config_16(bus, dev, func, PCI_DEVICE_ID); xdbc 630 drivers/usb/early/xhci-dbc.c xdbc.bus = bus; xdbc 631 drivers/usb/early/xhci-dbc.c xdbc.dev = dev; xdbc 632 drivers/usb/early/xhci-dbc.c xdbc.func = func; xdbc 635 drivers/usb/early/xhci-dbc.c xdbc.xhci_base = xdbc_map_pci_mmio(bus, dev, func); xdbc 636 drivers/usb/early/xhci-dbc.c if (!xdbc.xhci_base) xdbc 640 drivers/usb/early/xhci-dbc.c offset = xhci_find_next_ext_cap(xdbc.xhci_base, 0, XHCI_EXT_CAPS_DEBUG); xdbc 643 drivers/usb/early/xhci-dbc.c early_iounmap(xdbc.xhci_base, xdbc.xhci_length); xdbc 644 drivers/usb/early/xhci-dbc.c xdbc.xhci_base = NULL; xdbc 645 drivers/usb/early/xhci-dbc.c xdbc.xhci_length = 0; xdbc 649 drivers/usb/early/xhci-dbc.c xdbc.xdbc_reg = (struct xdbc_regs __iomem *)(xdbc.xhci_base + offset); xdbc 658 drivers/usb/early/xhci-dbc.c if (!xdbc.xdbc_reg) xdbc 663 drivers/usb/early/xhci-dbc.c raw_spin_lock_init(&xdbc.lock); xdbc 669 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.evt_ring); xdbc 670 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.out_ring); xdbc 671 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.in_ring); xdbc 673 drivers/usb/early/xhci-dbc.c if (xdbc.table_dma) xdbc 674 drivers/usb/early/xhci-dbc.c memblock_free(xdbc.table_dma, PAGE_SIZE); xdbc 676 drivers/usb/early/xhci-dbc.c if (xdbc.out_dma) xdbc 677 drivers/usb/early/xhci-dbc.c memblock_free(xdbc.out_dma, PAGE_SIZE); xdbc 679 drivers/usb/early/xhci-dbc.c xdbc.table_base = NULL; xdbc 680 drivers/usb/early/xhci-dbc.c xdbc.out_buf = NULL; xdbc 690 drivers/usb/early/xhci-dbc.c port_reg = readl(&xdbc.xdbc_reg->portsc); xdbc 696 drivers/usb/early/xhci-dbc.c xdbc.flags = 0; xdbc 711 drivers/usb/early/xhci-dbc.c writel(port_reg, &xdbc.xdbc_reg->portsc); xdbc 732 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_OUT_STALL; xdbc 734 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_IN_STALL; xdbc 741 drivers/usb/early/xhci-dbc.c xdbc.flags &= ~XDBC_FLAGS_IN_PROCESS; xdbc 744 drivers/usb/early/xhci-dbc.c xdbc.flags &= ~XDBC_FLAGS_OUT_PROCESS; xdbc 757 drivers/usb/early/xhci-dbc.c cmd = read_pci_config_byte(xdbc.bus, xdbc.dev, xdbc.func, PCI_COMMAND); xdbc 760 drivers/usb/early/xhci-dbc.c write_pci_config_byte(xdbc.bus, xdbc.dev, xdbc.func, PCI_COMMAND, cmd); xdbc 763 drivers/usb/early/xhci-dbc.c if (!(xdbc.flags & XDBC_FLAGS_INITIALIZED)) xdbc 767 drivers/usb/early/xhci-dbc.c reg = readl(&xdbc.xdbc_reg->control); xdbc 776 drivers/usb/early/xhci-dbc.c reg = readl(&xdbc.xdbc_reg->control); xdbc 778 drivers/usb/early/xhci-dbc.c writel(reg, &xdbc.xdbc_reg->control); xdbc 780 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_CONFIGURED; xdbc 782 drivers/usb/early/xhci-dbc.c xdbc.flags &= ~XDBC_FLAGS_CONFIGURED; xdbc 786 drivers/usb/early/xhci-dbc.c reg = readl(&xdbc.xdbc_reg->control); xdbc 788 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_IN_STALL; xdbc 790 drivers/usb/early/xhci-dbc.c xdbc.flags &= ~XDBC_FLAGS_IN_STALL; xdbc 791 drivers/usb/early/xhci-dbc.c if (!(xdbc.flags & XDBC_FLAGS_IN_PROCESS)) xdbc 796 drivers/usb/early/xhci-dbc.c xdbc.flags |= XDBC_FLAGS_OUT_STALL; xdbc 798 drivers/usb/early/xhci-dbc.c xdbc.flags &= ~XDBC_FLAGS_OUT_STALL; xdbc 801 drivers/usb/early/xhci-dbc.c evt_trb = xdbc.evt_ring.dequeue; xdbc 802 drivers/usb/early/xhci-dbc.c while ((le32_to_cpu(evt_trb->field[3]) & TRB_CYCLE) == xdbc.evt_ring.cycle_state) { xdbc 820 drivers/usb/early/xhci-dbc.c ++(xdbc.evt_ring.dequeue); xdbc 821 drivers/usb/early/xhci-dbc.c if (xdbc.evt_ring.dequeue == &xdbc.evt_seg.trbs[TRBS_PER_SEGMENT]) { xdbc 822 drivers/usb/early/xhci-dbc.c xdbc.evt_ring.dequeue = xdbc.evt_seg.trbs; xdbc 823 drivers/usb/early/xhci-dbc.c xdbc.evt_ring.cycle_state ^= 1; xdbc 826 drivers/usb/early/xhci-dbc.c evt_trb = xdbc.evt_ring.dequeue; xdbc 832 drivers/usb/early/xhci-dbc.c xdbc_write64(__pa(xdbc.evt_ring.dequeue), &xdbc.xdbc_reg->erdp); xdbc 842 drivers/usb/early/xhci-dbc.c if (!raw_spin_trylock_irqsave(&xdbc.lock, flags)) xdbc 845 drivers/usb/early/xhci-dbc.c raw_spin_lock_irqsave(&xdbc.lock, flags); xdbc 851 drivers/usb/early/xhci-dbc.c if ((xdbc.flags & XDBC_FLAGS_OUT_PROCESS) && (timeout < 2000000)) { xdbc 852 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 858 drivers/usb/early/xhci-dbc.c if (xdbc.flags & XDBC_FLAGS_OUT_PROCESS) { xdbc 859 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 866 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 877 drivers/usb/early/xhci-dbc.c if (!xdbc.xdbc_reg) xdbc 935 drivers/usb/early/xhci-dbc.c raw_spin_lock_irqsave(&xdbc.lock, flags); xdbc 938 drivers/usb/early/xhci-dbc.c if (!(xdbc.flags & XDBC_FLAGS_INITIALIZED)) { xdbc 939 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 943 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 948 drivers/usb/early/xhci-dbc.c writel(0, &xdbc.xdbc_reg->control); xdbc 961 drivers/usb/early/xhci-dbc.c if (!(xdbc.flags & XDBC_FLAGS_INITIALIZED)) xdbc 974 drivers/usb/early/xhci-dbc.c base = ioremap_nocache(xdbc.xhci_start, xdbc.xhci_length); xdbc 981 drivers/usb/early/xhci-dbc.c raw_spin_lock_irqsave(&xdbc.lock, flags); xdbc 982 drivers/usb/early/xhci-dbc.c early_iounmap(xdbc.xhci_base, xdbc.xhci_length); xdbc 983 drivers/usb/early/xhci-dbc.c xdbc.xhci_base = base; xdbc 984 drivers/usb/early/xhci-dbc.c offset = xhci_find_next_ext_cap(xdbc.xhci_base, 0, XHCI_EXT_CAPS_DEBUG); xdbc 985 drivers/usb/early/xhci-dbc.c xdbc.xdbc_reg = (struct xdbc_regs __iomem *)(xdbc.xhci_base + offset); xdbc 986 drivers/usb/early/xhci-dbc.c raw_spin_unlock_irqrestore(&xdbc.lock, flags); xdbc 993 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.evt_ring); xdbc 994 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.out_ring); xdbc 995 drivers/usb/early/xhci-dbc.c xdbc_free_ring(&xdbc.in_ring); xdbc 996 drivers/usb/early/xhci-dbc.c memblock_free(xdbc.table_dma, PAGE_SIZE); xdbc 997 drivers/usb/early/xhci-dbc.c memblock_free(xdbc.out_dma, PAGE_SIZE); xdbc 998 drivers/usb/early/xhci-dbc.c writel(0, &xdbc.xdbc_reg->control); xdbc 999 drivers/usb/early/xhci-dbc.c early_iounmap(xdbc.xhci_base, xdbc.xhci_length);