nhi 857 drivers/net/thunderbolt.c ring = tb_ring_alloc_tx(xd->tb->nhi, -1, TBNET_RING_SIZE, nhi 868 drivers/net/thunderbolt.c ring = tb_ring_alloc_rx(xd->tb->nhi, -1, TBNET_RING_SIZE, nhi 3676 drivers/pci/quirks.c struct pci_dev *nhi = NULL; nhi 3692 drivers/pci/quirks.c nhi = pci_get_slot(sibling->subordinate, 0x0); nhi 3693 drivers/pci/quirks.c if (!nhi) nhi 3695 drivers/pci/quirks.c if (nhi->vendor != PCI_VENDOR_ID_INTEL nhi 3696 drivers/pci/quirks.c || (nhi->device != PCI_DEVICE_ID_INTEL_LIGHT_RIDGE && nhi 3697 drivers/pci/quirks.c nhi->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C && nhi 3698 drivers/pci/quirks.c nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI && nhi 3699 drivers/pci/quirks.c nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI) nhi 3700 drivers/pci/quirks.c || nhi->class != PCI_CLASS_SYSTEM_OTHER << 8) nhi 3703 drivers/pci/quirks.c device_pm_wait_for_dev(&dev->dev, &nhi->dev); nhi 3705 drivers/pci/quirks.c pci_dev_put(nhi); nhi 26 drivers/thunderbolt/ctl.c struct tb_nhi *nhi; nhi 42 drivers/thunderbolt/ctl.c dev_WARN(&(ctl)->nhi->pdev->dev, format, ## arg) nhi 45 drivers/thunderbolt/ctl.c dev_err(&(ctl)->nhi->pdev->dev, format, ## arg) nhi 48 drivers/thunderbolt/ctl.c dev_warn(&(ctl)->nhi->pdev->dev, format, ## arg) nhi 51 drivers/thunderbolt/ctl.c dev_info(&(ctl)->nhi->pdev->dev, format, ## arg) nhi 54 drivers/thunderbolt/ctl.c dev_dbg(&(ctl)->nhi->pdev->dev, format, ## arg) nhi 602 drivers/thunderbolt/ctl.c struct tb_ctl *tb_ctl_alloc(struct tb_nhi *nhi, event_cb cb, void *cb_data) nhi 608 drivers/thunderbolt/ctl.c ctl->nhi = nhi; nhi 614 drivers/thunderbolt/ctl.c ctl->frame_pool = dma_pool_create("thunderbolt_ctl", &nhi->pdev->dev, nhi 619 drivers/thunderbolt/ctl.c ctl->tx = tb_ring_alloc_tx(nhi, 0, 10, RING_FLAG_NO_SUSPEND); nhi 623 drivers/thunderbolt/ctl.c ctl->rx = tb_ring_alloc_rx(nhi, 0, 10, RING_FLAG_NO_SUSPEND, 0xffff, nhi 24 drivers/thunderbolt/ctl.h struct tb_ctl *tb_ctl_alloc(struct tb_nhi *nhi, event_cb cb, void *cb_data); nhi 340 drivers/thunderbolt/domain.c struct tb *tb_domain_alloc(struct tb_nhi *nhi, size_t privsize) nhi 356 drivers/thunderbolt/domain.c tb->nhi = nhi; nhi 367 drivers/thunderbolt/domain.c tb->dev.parent = &nhi->pdev->dev; nhi 426 drivers/thunderbolt/domain.c tb->ctl = tb_ctl_alloc(tb->nhi, tb_domain_event_cb, tb); nhi 414 drivers/thunderbolt/eeprom.c struct device *dev = &sw->tb->nhi->pdev->dev; nhi 411 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_SAVE_DEVS, 0); nhi 559 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, cmd, 1); nhi 561 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, cmd, 2); nhi 1360 drivers/thunderbolt/icm.c upstream_port = get_upstream_port(tb->nhi->pdev); nhi 1384 drivers/thunderbolt/icm.c struct tb_nhi *nhi = tb->nhi; nhi 1389 drivers/thunderbolt/icm.c val = ioread32(nhi->iobase + REG_FW_STS); nhi 1396 drivers/thunderbolt/icm.c dev_err(&nhi->pdev->dev, "ICM firmware not authenticated\n"); nhi 1400 drivers/thunderbolt/icm.c return nhi_mailbox_mode(nhi); nhi 1558 drivers/thunderbolt/icm.c struct tb_nhi *nhi = tb->nhi; nhi 1561 drivers/thunderbolt/icm.c pci_read_config_dword(nhi->pdev, VS_CAP_10, &uuid[0]); nhi 1562 drivers/thunderbolt/icm.c pci_read_config_dword(nhi->pdev, VS_CAP_11, &uuid[1]); nhi 1677 drivers/thunderbolt/icm.c static int icm_firmware_reset(struct tb *tb, struct tb_nhi *nhi) nhi 1686 drivers/thunderbolt/icm.c val = ioread32(nhi->iobase + REG_FW_STS); nhi 1688 drivers/thunderbolt/icm.c iowrite32(val, nhi->iobase + REG_FW_STS); nhi 1691 drivers/thunderbolt/icm.c val = ioread32(nhi->iobase + REG_FW_STS); nhi 1694 drivers/thunderbolt/icm.c iowrite32(val, nhi->iobase + REG_FW_STS); nhi 1700 drivers/thunderbolt/icm.c static int icm_firmware_start(struct tb *tb, struct tb_nhi *nhi) nhi 1707 drivers/thunderbolt/icm.c val = ioread32(nhi->iobase + REG_FW_STS); nhi 1711 drivers/thunderbolt/icm.c dev_dbg(&nhi->pdev->dev, "starting ICM firmware\n"); nhi 1713 drivers/thunderbolt/icm.c ret = icm_firmware_reset(tb, nhi); nhi 1720 drivers/thunderbolt/icm.c val = ioread32(nhi->iobase + REG_FW_STS); nhi 1801 drivers/thunderbolt/icm.c struct tb_nhi *nhi = tb->nhi; nhi 1804 drivers/thunderbolt/icm.c ret = icm_firmware_start(tb, nhi); nhi 1806 drivers/thunderbolt/icm.c dev_err(&nhi->pdev->dev, "could not start ICM firmware\n"); nhi 1820 drivers/thunderbolt/icm.c nhi_mailbox_cmd(nhi, NHI_MAILBOX_ALLOW_ALL_DEVS, 0); nhi 1838 drivers/thunderbolt/icm.c dev_warn(&nhi->pdev->dev, "failed to reset links on port0\n"); nhi 1841 drivers/thunderbolt/icm.c dev_warn(&nhi->pdev->dev, "failed to reset links on port1\n"); nhi 1884 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); nhi 1973 drivers/thunderbolt/icm.c if (tb->nhi->going_away) nhi 2001 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); nhi 2067 drivers/thunderbolt/icm.c nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); nhi 2072 drivers/thunderbolt/icm.c return nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DISCONNECT_PCIE_PATHS, 0); nhi 2148 drivers/thunderbolt/icm.c struct tb *icm_probe(struct tb_nhi *nhi) nhi 2153 drivers/thunderbolt/icm.c tb = tb_domain_alloc(nhi, sizeof(struct icm)); nhi 2161 drivers/thunderbolt/icm.c switch (nhi->pdev->device) { nhi 2232 drivers/thunderbolt/icm.c dev_dbg(&nhi->pdev->dev, "ICM not supported on this controller\n"); nhi 47 drivers/thunderbolt/nhi.c bit += ring->nhi->hop_count; nhi 72 drivers/thunderbolt/nhi.c index = ring->hop + ring->nhi->hop_count; nhi 78 drivers/thunderbolt/nhi.c misc = ioread32(ring->nhi->iobase + REG_DMA_MISC); nhi 81 drivers/thunderbolt/nhi.c iowrite32(misc, ring->nhi->iobase + REG_DMA_MISC); nhi 84 drivers/thunderbolt/nhi.c ivr_base = ring->nhi->iobase + REG_INT_VEC_ALLOC_BASE; nhi 94 drivers/thunderbolt/nhi.c old = ioread32(ring->nhi->iobase + reg); nhi 100 drivers/thunderbolt/nhi.c dev_dbg(&ring->nhi->pdev->dev, nhi 105 drivers/thunderbolt/nhi.c dev_WARN(&ring->nhi->pdev->dev, nhi 109 drivers/thunderbolt/nhi.c iowrite32(new, ring->nhi->iobase + reg); nhi 117 drivers/thunderbolt/nhi.c static void nhi_disable_interrupts(struct tb_nhi *nhi) nhi 121 drivers/thunderbolt/nhi.c for (i = 0; i < RING_INTERRUPT_REG_COUNT(nhi); i++) nhi 122 drivers/thunderbolt/nhi.c iowrite32(0, nhi->iobase + REG_RING_INTERRUPT_BASE + 4 * i); nhi 125 drivers/thunderbolt/nhi.c for (i = 0; i < RING_NOTIFY_REG_COUNT(nhi); i++) nhi 126 drivers/thunderbolt/nhi.c ioread32(nhi->iobase + REG_RING_NOTIFY_BASE + 4 * i); nhi 133 drivers/thunderbolt/nhi.c void __iomem *io = ring->nhi->iobase; nhi 141 drivers/thunderbolt/nhi.c void __iomem *io = ring->nhi->iobase; nhi 343 drivers/thunderbolt/nhi.c val = ioread32(ring->nhi->iobase + reg); nhi 348 drivers/thunderbolt/nhi.c iowrite32(val, ring->nhi->iobase + reg); nhi 376 drivers/thunderbolt/nhi.c spin_lock_irqsave(&ring->nhi->lock, flags); nhi 381 drivers/thunderbolt/nhi.c spin_unlock_irqrestore(&ring->nhi->lock, flags); nhi 389 drivers/thunderbolt/nhi.c spin_lock(&ring->nhi->lock); nhi 393 drivers/thunderbolt/nhi.c spin_unlock(&ring->nhi->lock); nhi 400 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = ring->nhi; nhi 404 drivers/thunderbolt/nhi.c if (!nhi->pdev->msix_enabled) nhi 407 drivers/thunderbolt/nhi.c ret = ida_simple_get(&nhi->msix_ida, 0, MSIX_MAX_VECS, GFP_KERNEL); nhi 413 drivers/thunderbolt/nhi.c ring->irq = pci_irq_vector(ring->nhi->pdev, ring->vector); nhi 427 drivers/thunderbolt/nhi.c ida_simple_remove(&ring->nhi->msix_ida, ring->vector); nhi 432 drivers/thunderbolt/nhi.c static int nhi_alloc_hop(struct tb_nhi *nhi, struct tb_ring *ring) nhi 436 drivers/thunderbolt/nhi.c spin_lock_irq(&nhi->lock); nhi 445 drivers/thunderbolt/nhi.c for (i = RING_FIRST_USABLE_HOPID; i < nhi->hop_count; i++) { nhi 447 drivers/thunderbolt/nhi.c if (!nhi->tx_rings[i]) { nhi 452 drivers/thunderbolt/nhi.c if (!nhi->rx_rings[i]) { nhi 460 drivers/thunderbolt/nhi.c if (ring->hop < 0 || ring->hop >= nhi->hop_count) { nhi 461 drivers/thunderbolt/nhi.c dev_warn(&nhi->pdev->dev, "invalid hop: %d\n", ring->hop); nhi 465 drivers/thunderbolt/nhi.c if (ring->is_tx && nhi->tx_rings[ring->hop]) { nhi 466 drivers/thunderbolt/nhi.c dev_warn(&nhi->pdev->dev, "TX hop %d already allocated\n", nhi 470 drivers/thunderbolt/nhi.c } else if (!ring->is_tx && nhi->rx_rings[ring->hop]) { nhi 471 drivers/thunderbolt/nhi.c dev_warn(&nhi->pdev->dev, "RX hop %d already allocated\n", nhi 478 drivers/thunderbolt/nhi.c nhi->tx_rings[ring->hop] = ring; nhi 480 drivers/thunderbolt/nhi.c nhi->rx_rings[ring->hop] = ring; nhi 483 drivers/thunderbolt/nhi.c spin_unlock_irq(&nhi->lock); nhi 488 drivers/thunderbolt/nhi.c static struct tb_ring *tb_ring_alloc(struct tb_nhi *nhi, u32 hop, int size, nhi 496 drivers/thunderbolt/nhi.c dev_dbg(&nhi->pdev->dev, "allocating %s ring %d of size %d\n", nhi 512 drivers/thunderbolt/nhi.c ring->nhi = nhi; nhi 525 drivers/thunderbolt/nhi.c ring->descriptors = dma_alloc_coherent(&ring->nhi->pdev->dev, nhi 534 drivers/thunderbolt/nhi.c if (nhi_alloc_hop(nhi, ring)) nhi 542 drivers/thunderbolt/nhi.c dma_free_coherent(&ring->nhi->pdev->dev, nhi 558 drivers/thunderbolt/nhi.c struct tb_ring *tb_ring_alloc_tx(struct tb_nhi *nhi, int hop, int size, nhi 561 drivers/thunderbolt/nhi.c return tb_ring_alloc(nhi, hop, size, true, flags, 0, 0, NULL, NULL); nhi 578 drivers/thunderbolt/nhi.c struct tb_ring *tb_ring_alloc_rx(struct tb_nhi *nhi, int hop, int size, nhi 582 drivers/thunderbolt/nhi.c return tb_ring_alloc(nhi, hop, size, false, flags, sof_mask, eof_mask, nhi 597 drivers/thunderbolt/nhi.c spin_lock_irq(&ring->nhi->lock); nhi 599 drivers/thunderbolt/nhi.c if (ring->nhi->going_away) nhi 602 drivers/thunderbolt/nhi.c dev_WARN(&ring->nhi->pdev->dev, "ring already started\n"); nhi 605 drivers/thunderbolt/nhi.c dev_dbg(&ring->nhi->pdev->dev, "starting %s %d\n", nhi 646 drivers/thunderbolt/nhi.c spin_unlock_irq(&ring->nhi->lock); nhi 665 drivers/thunderbolt/nhi.c spin_lock_irq(&ring->nhi->lock); nhi 667 drivers/thunderbolt/nhi.c dev_dbg(&ring->nhi->pdev->dev, "stopping %s %d\n", nhi 669 drivers/thunderbolt/nhi.c if (ring->nhi->going_away) nhi 672 drivers/thunderbolt/nhi.c dev_WARN(&ring->nhi->pdev->dev, "%s %d already stopped\n", nhi 688 drivers/thunderbolt/nhi.c spin_unlock_irq(&ring->nhi->lock); nhi 710 drivers/thunderbolt/nhi.c spin_lock_irq(&ring->nhi->lock); nhi 716 drivers/thunderbolt/nhi.c ring->nhi->tx_rings[ring->hop] = NULL; nhi 718 drivers/thunderbolt/nhi.c ring->nhi->rx_rings[ring->hop] = NULL; nhi 721 drivers/thunderbolt/nhi.c dev_WARN(&ring->nhi->pdev->dev, "%s %d still running\n", nhi 724 drivers/thunderbolt/nhi.c spin_unlock_irq(&ring->nhi->lock); nhi 728 drivers/thunderbolt/nhi.c dma_free_coherent(&ring->nhi->pdev->dev, nhi 736 drivers/thunderbolt/nhi.c dev_dbg(&ring->nhi->pdev->dev, "freeing %s %d\n", RING_TYPE(ring), nhi 758 drivers/thunderbolt/nhi.c int nhi_mailbox_cmd(struct tb_nhi *nhi, enum nhi_mailbox_cmd cmd, u32 data) nhi 763 drivers/thunderbolt/nhi.c iowrite32(data, nhi->iobase + REG_INMAIL_DATA); nhi 765 drivers/thunderbolt/nhi.c val = ioread32(nhi->iobase + REG_INMAIL_CMD); nhi 768 drivers/thunderbolt/nhi.c iowrite32(val, nhi->iobase + REG_INMAIL_CMD); nhi 772 drivers/thunderbolt/nhi.c val = ioread32(nhi->iobase + REG_INMAIL_CMD); nhi 793 drivers/thunderbolt/nhi.c enum nhi_fw_mode nhi_mailbox_mode(struct tb_nhi *nhi) nhi 797 drivers/thunderbolt/nhi.c val = ioread32(nhi->iobase + REG_OUTMAIL_CMD); nhi 806 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = container_of(work, typeof(*nhi), interrupt_work); nhi 813 drivers/thunderbolt/nhi.c spin_lock_irq(&nhi->lock); nhi 820 drivers/thunderbolt/nhi.c for (bit = 0; bit < 3 * nhi->hop_count; bit++) { nhi 822 drivers/thunderbolt/nhi.c value = ioread32(nhi->iobase nhi 825 drivers/thunderbolt/nhi.c if (++hop == nhi->hop_count) { nhi 832 drivers/thunderbolt/nhi.c dev_warn(&nhi->pdev->dev, nhi 838 drivers/thunderbolt/nhi.c ring = nhi->tx_rings[hop]; nhi 840 drivers/thunderbolt/nhi.c ring = nhi->rx_rings[hop]; nhi 842 drivers/thunderbolt/nhi.c dev_warn(&nhi->pdev->dev, nhi 853 drivers/thunderbolt/nhi.c spin_unlock_irq(&nhi->lock); nhi 858 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = data; nhi 859 drivers/thunderbolt/nhi.c schedule_work(&nhi->interrupt_work); nhi 867 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = tb->nhi; nhi 874 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->suspend_noirq) { nhi 875 drivers/thunderbolt/nhi.c ret = nhi->ops->suspend_noirq(tb->nhi, wakeup); nhi 911 drivers/thunderbolt/nhi.c static void nhi_enable_int_throttling(struct tb_nhi *nhi) nhi 923 drivers/thunderbolt/nhi.c iowrite32(throttle, nhi->iobase + reg); nhi 931 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = tb->nhi; nhi 940 drivers/thunderbolt/nhi.c nhi->going_away = true; nhi 942 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->resume_noirq) { nhi 943 drivers/thunderbolt/nhi.c ret = nhi->ops->resume_noirq(nhi); nhi 947 drivers/thunderbolt/nhi.c nhi_enable_int_throttling(tb->nhi); nhi 981 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = tb->nhi; nhi 988 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->runtime_suspend) { nhi 989 drivers/thunderbolt/nhi.c ret = nhi->ops->runtime_suspend(tb->nhi); nhi 1000 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = tb->nhi; nhi 1003 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->runtime_resume) { nhi 1004 drivers/thunderbolt/nhi.c ret = nhi->ops->runtime_resume(nhi); nhi 1009 drivers/thunderbolt/nhi.c nhi_enable_int_throttling(nhi); nhi 1013 drivers/thunderbolt/nhi.c static void nhi_shutdown(struct tb_nhi *nhi) nhi 1017 drivers/thunderbolt/nhi.c dev_dbg(&nhi->pdev->dev, "shutdown\n"); nhi 1019 drivers/thunderbolt/nhi.c for (i = 0; i < nhi->hop_count; i++) { nhi 1020 drivers/thunderbolt/nhi.c if (nhi->tx_rings[i]) nhi 1021 drivers/thunderbolt/nhi.c dev_WARN(&nhi->pdev->dev, nhi 1023 drivers/thunderbolt/nhi.c if (nhi->rx_rings[i]) nhi 1024 drivers/thunderbolt/nhi.c dev_WARN(&nhi->pdev->dev, nhi 1027 drivers/thunderbolt/nhi.c nhi_disable_interrupts(nhi); nhi 1032 drivers/thunderbolt/nhi.c if (!nhi->pdev->msix_enabled) { nhi 1033 drivers/thunderbolt/nhi.c devm_free_irq(&nhi->pdev->dev, nhi->pdev->irq, nhi); nhi 1034 drivers/thunderbolt/nhi.c flush_work(&nhi->interrupt_work); nhi 1036 drivers/thunderbolt/nhi.c ida_destroy(&nhi->msix_ida); nhi 1038 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->shutdown) nhi 1039 drivers/thunderbolt/nhi.c nhi->ops->shutdown(nhi); nhi 1042 drivers/thunderbolt/nhi.c static int nhi_init_msi(struct tb_nhi *nhi) nhi 1044 drivers/thunderbolt/nhi.c struct pci_dev *pdev = nhi->pdev; nhi 1048 drivers/thunderbolt/nhi.c nhi_disable_interrupts(nhi); nhi 1050 drivers/thunderbolt/nhi.c nhi_enable_int_throttling(nhi); nhi 1052 drivers/thunderbolt/nhi.c ida_init(&nhi->msix_ida); nhi 1067 drivers/thunderbolt/nhi.c INIT_WORK(&nhi->interrupt_work, nhi_interrupt_work); nhi 1069 drivers/thunderbolt/nhi.c irq = pci_irq_vector(nhi->pdev, 0); nhi 1074 drivers/thunderbolt/nhi.c IRQF_NO_SUSPEND, "thunderbolt", nhi); nhi 1096 drivers/thunderbolt/nhi.c struct tb_nhi *nhi; nhi 1117 drivers/thunderbolt/nhi.c nhi = devm_kzalloc(&pdev->dev, sizeof(*nhi), GFP_KERNEL); nhi 1118 drivers/thunderbolt/nhi.c if (!nhi) nhi 1121 drivers/thunderbolt/nhi.c nhi->pdev = pdev; nhi 1122 drivers/thunderbolt/nhi.c nhi->ops = (const struct tb_nhi_ops *)id->driver_data; nhi 1124 drivers/thunderbolt/nhi.c nhi->iobase = pcim_iomap_table(pdev)[0]; nhi 1125 drivers/thunderbolt/nhi.c nhi->hop_count = ioread32(nhi->iobase + REG_HOP_COUNT) & 0x3ff; nhi 1126 drivers/thunderbolt/nhi.c if (nhi->hop_count != 12 && nhi->hop_count != 32) nhi 1128 drivers/thunderbolt/nhi.c nhi->hop_count); nhi 1130 drivers/thunderbolt/nhi.c nhi->tx_rings = devm_kcalloc(&pdev->dev, nhi->hop_count, nhi 1131 drivers/thunderbolt/nhi.c sizeof(*nhi->tx_rings), GFP_KERNEL); nhi 1132 drivers/thunderbolt/nhi.c nhi->rx_rings = devm_kcalloc(&pdev->dev, nhi->hop_count, nhi 1133 drivers/thunderbolt/nhi.c sizeof(*nhi->rx_rings), GFP_KERNEL); nhi 1134 drivers/thunderbolt/nhi.c if (!nhi->tx_rings || !nhi->rx_rings) nhi 1137 drivers/thunderbolt/nhi.c res = nhi_init_msi(nhi); nhi 1143 drivers/thunderbolt/nhi.c spin_lock_init(&nhi->lock); nhi 1155 drivers/thunderbolt/nhi.c if (nhi->ops && nhi->ops->init) { nhi 1156 drivers/thunderbolt/nhi.c res = nhi->ops->init(nhi); nhi 1161 drivers/thunderbolt/nhi.c tb = icm_probe(nhi); nhi 1163 drivers/thunderbolt/nhi.c tb = tb_probe(nhi); nhi 1165 drivers/thunderbolt/nhi.c dev_err(&nhi->pdev->dev, nhi 1170 drivers/thunderbolt/nhi.c dev_dbg(&nhi->pdev->dev, "NHI initialized, starting thunderbolt\n"); nhi 1179 drivers/thunderbolt/nhi.c nhi_shutdown(nhi); nhi 1195 drivers/thunderbolt/nhi.c struct tb_nhi *nhi = tb->nhi; nhi 1202 drivers/thunderbolt/nhi.c nhi_shutdown(nhi); nhi 30 drivers/thunderbolt/nhi.h int nhi_mailbox_cmd(struct tb_nhi *nhi, enum nhi_mailbox_cmd cmd, u32 data); nhi 31 drivers/thunderbolt/nhi.h enum nhi_fw_mode nhi_mailbox_mode(struct tb_nhi *nhi); nhi 43 drivers/thunderbolt/nhi.h int (*init)(struct tb_nhi *nhi); nhi 44 drivers/thunderbolt/nhi.h int (*suspend_noirq)(struct tb_nhi *nhi, bool wakeup); nhi 45 drivers/thunderbolt/nhi.h int (*resume_noirq)(struct tb_nhi *nhi); nhi 46 drivers/thunderbolt/nhi.h int (*runtime_suspend)(struct tb_nhi *nhi); nhi 47 drivers/thunderbolt/nhi.h int (*runtime_resume)(struct tb_nhi *nhi); nhi 48 drivers/thunderbolt/nhi.h void (*shutdown)(struct tb_nhi *nhi); nhi 25 drivers/thunderbolt/nhi_ops.c static bool icl_nhi_is_device_connected(struct tb_nhi *nhi) nhi 27 drivers/thunderbolt/nhi_ops.c struct tb *tb = pci_get_drvdata(nhi->pdev); nhi 35 drivers/thunderbolt/nhi_ops.c static int icl_nhi_force_power(struct tb_nhi *nhi, bool power) nhi 51 drivers/thunderbolt/nhi_ops.c pci_read_config_dword(nhi->pdev, VS_CAP_22, &vs_cap); nhi 59 drivers/thunderbolt/nhi_ops.c pci_write_config_dword(nhi->pdev, VS_CAP_22, vs_cap); nhi 67 drivers/thunderbolt/nhi_ops.c pci_read_config_dword(nhi->pdev, VS_CAP_9, &val); nhi 79 drivers/thunderbolt/nhi_ops.c static void icl_nhi_lc_mailbox_cmd(struct tb_nhi *nhi, enum icl_lc_mailbox_cmd cmd) nhi 84 drivers/thunderbolt/nhi_ops.c pci_write_config_dword(nhi->pdev, VS_CAP_19, data | VS_CAP_19_VALID); nhi 87 drivers/thunderbolt/nhi_ops.c static int icl_nhi_lc_mailbox_cmd_complete(struct tb_nhi *nhi, int timeout) nhi 97 drivers/thunderbolt/nhi_ops.c pci_read_config_dword(nhi->pdev, VS_CAP_18, &data); nhi 107 drivers/thunderbolt/nhi_ops.c pci_write_config_dword(nhi->pdev, VS_CAP_19, 0); nhi 111 drivers/thunderbolt/nhi_ops.c static void icl_nhi_set_ltr(struct tb_nhi *nhi) nhi 115 drivers/thunderbolt/nhi_ops.c pci_read_config_dword(nhi->pdev, VS_CAP_16, &max_ltr); nhi 119 drivers/thunderbolt/nhi_ops.c pci_write_config_dword(nhi->pdev, VS_CAP_15, ltr); nhi 122 drivers/thunderbolt/nhi_ops.c static int icl_nhi_suspend(struct tb_nhi *nhi) nhi 126 drivers/thunderbolt/nhi_ops.c if (icl_nhi_is_device_connected(nhi)) nhi 134 drivers/thunderbolt/nhi_ops.c icl_nhi_lc_mailbox_cmd(nhi, ICL_LC_PREPARE_FOR_RESET); nhi 135 drivers/thunderbolt/nhi_ops.c ret = icl_nhi_lc_mailbox_cmd_complete(nhi, ICL_LC_MAILBOX_TIMEOUT); nhi 139 drivers/thunderbolt/nhi_ops.c return icl_nhi_force_power(nhi, false); nhi 142 drivers/thunderbolt/nhi_ops.c static int icl_nhi_suspend_noirq(struct tb_nhi *nhi, bool wakeup) nhi 147 drivers/thunderbolt/nhi_ops.c return icl_nhi_suspend(nhi); nhi 150 drivers/thunderbolt/nhi_ops.c icl_nhi_lc_mailbox_cmd(nhi, cmd); nhi 151 drivers/thunderbolt/nhi_ops.c return icl_nhi_lc_mailbox_cmd_complete(nhi, ICL_LC_MAILBOX_TIMEOUT); nhi 154 drivers/thunderbolt/nhi_ops.c static int icl_nhi_resume(struct tb_nhi *nhi) nhi 158 drivers/thunderbolt/nhi_ops.c ret = icl_nhi_force_power(nhi, true); nhi 162 drivers/thunderbolt/nhi_ops.c icl_nhi_set_ltr(nhi); nhi 166 drivers/thunderbolt/nhi_ops.c static void icl_nhi_shutdown(struct tb_nhi *nhi) nhi 168 drivers/thunderbolt/nhi_ops.c icl_nhi_force_power(nhi, false); nhi 85 drivers/thunderbolt/nhi_regs.h #define RING_NOTIFY_REG_COUNT(nhi) ((31 + 3 * nhi->hop_count) / 32) nhi 93 drivers/thunderbolt/nhi_regs.h #define RING_INTERRUPT_REG_COUNT(nhi) ((31 + 2 * nhi->hop_count) / 32) nhi 1205 drivers/thunderbolt/switch.c root_port = pci_find_pcie_root_port(sw->tb->nhi->pdev); nhi 1214 drivers/thunderbolt/switch.c root_port = pci_find_pcie_root_port(sw->tb->nhi->pdev); nhi 781 drivers/thunderbolt/tb.c struct tb *tb_probe(struct tb_nhi *nhi) nhi 789 drivers/thunderbolt/tb.c tb = tb_domain_alloc(nhi, sizeof(*tcm)); nhi 444 drivers/thunderbolt/tb.h #define tb_err(tb, fmt, arg...) dev_err(&(tb)->nhi->pdev->dev, fmt, ## arg) nhi 445 drivers/thunderbolt/tb.h #define tb_WARN(tb, fmt, arg...) dev_WARN(&(tb)->nhi->pdev->dev, fmt, ## arg) nhi 446 drivers/thunderbolt/tb.h #define tb_warn(tb, fmt, arg...) dev_warn(&(tb)->nhi->pdev->dev, fmt, ## arg) nhi 447 drivers/thunderbolt/tb.h #define tb_info(tb, fmt, arg...) dev_info(&(tb)->nhi->pdev->dev, fmt, ## arg) nhi 448 drivers/thunderbolt/tb.h #define tb_dbg(tb, fmt, arg...) dev_dbg(&(tb)->nhi->pdev->dev, fmt, ## arg) nhi 476 drivers/thunderbolt/tb.h struct tb *icm_probe(struct tb_nhi *nhi); nhi 477 drivers/thunderbolt/tb.h struct tb *tb_probe(struct tb_nhi *nhi); nhi 488 drivers/thunderbolt/tb.h struct tb *tb_domain_alloc(struct tb_nhi *nhi, size_t privsize); nhi 477 drivers/thunderbolt/tunnel.c static u32 tb_dma_credits(struct tb_port *nhi) nhi 481 drivers/thunderbolt/tunnel.c max_credits = (nhi->config.nfc_credits & TB_PORT_MAX_CREDITS_MASK) >> nhi 488 drivers/thunderbolt/tunnel.c struct tb_port *nhi = tunnel->src_port; nhi 491 drivers/thunderbolt/tunnel.c credits = active ? tb_dma_credits(nhi) : 0; nhi 492 drivers/thunderbolt/tunnel.c return tb_port_set_initial_credits(nhi, credits); nhi 526 drivers/thunderbolt/tunnel.c struct tb_tunnel *tb_tunnel_alloc_dma(struct tb *tb, struct tb_port *nhi, nhi 540 drivers/thunderbolt/tunnel.c tunnel->src_port = nhi; nhi 543 drivers/thunderbolt/tunnel.c credits = tb_dma_credits(nhi); nhi 545 drivers/thunderbolt/tunnel.c path = tb_path_alloc(tb, dst, receive_path, nhi, receive_ring, 0, "DMA RX"); nhi 554 drivers/thunderbolt/tunnel.c path = tb_path_alloc(tb, nhi, transmit_ring, dst, transmit_path, 0, "DMA TX"); nhi 51 drivers/thunderbolt/tunnel.h struct tb_tunnel *tb_tunnel_alloc_dma(struct tb *tb, struct tb_port *nhi, nhi 75 include/linux/thunderbolt.h struct tb_nhi *nhi; nhi 482 include/linux/thunderbolt.h struct tb_nhi *nhi; nhi 554 include/linux/thunderbolt.h struct tb_ring *tb_ring_alloc_tx(struct tb_nhi *nhi, int hop, int size, nhi 556 include/linux/thunderbolt.h struct tb_ring *tb_ring_alloc_rx(struct tb_nhi *nhi, int hop, int size, nhi 621 include/linux/thunderbolt.h return &ring->nhi->pdev->dev; nhi 172 include/net/nexthop.h struct nh_info *nhi = rcu_dereference_rtnl(nhe->nh_info); nhi 173 include/net/nexthop.h struct fib_nh_common *nhc = &nhi->fib_nhc; nhi 186 include/net/nexthop.h const struct nh_info *nhi; nhi 198 include/net/nexthop.h nhi = rcu_dereference_rtnl(nh->nh_info); nhi 199 include/net/nexthop.h return nhi->reject_nh; nhi 204 include/net/nexthop.h struct nh_info *nhi; nhi 208 include/net/nexthop.h nhi = rcu_dereference(nh->nh_info); nhi 209 include/net/nexthop.h res->nhc = &nhi->fib_nhc; nhi 216 include/net/nexthop.h struct nh_info *nhi; nhi 232 include/net/nexthop.h nhi = rcu_dereference_rtnl(nh->nh_info); nhi 233 include/net/nexthop.h return &nhi->fib_nhc; nhi 239 include/net/nexthop.h struct nh_info *nhi; nhi 248 include/net/nexthop.h nhi = rcu_dereference(nhe->nh_info); nhi 249 include/net/nexthop.h if (nhc_l3mdev_matches_dev(&nhi->fib_nhc, dev)) nhi 253 include/net/nexthop.h nhi = rcu_dereference(nh->nh_info); nhi 254 include/net/nexthop.h if (nhc_l3mdev_matches_dev(&nhi->fib_nhc, dev)) nhi 296 include/net/nexthop.h struct nh_info *nhi; nhi 307 include/net/nexthop.h nhi = rcu_dereference_rtnl(nh->nh_info); nhi 308 include/net/nexthop.h if (nhi->family == AF_INET6) nhi 309 include/net/nexthop.h return &nhi->fib6_nh; nhi 325 include/net/nexthop.h struct nh_info *nhi; nhi 329 include/net/nexthop.h nhi = rcu_dereference_rtnl(nh->nh_info); nhi 330 include/net/nexthop.h if (nhi->reject_nh) { nhi 335 include/net/nexthop.h res->nh = &nhi->fib6_nh; nhi 48 net/ipv4/nexthop.c static void nexthop_devhash_add(struct net *net, struct nh_info *nhi) nhi 50 net/ipv4/nexthop.c struct net_device *dev = nhi->fib_nhc.nhc_dev; nhi 58 net/ipv4/nexthop.c hlist_add_head(&nhi->dev_hash, head); nhi 82 net/ipv4/nexthop.c struct nh_info *nhi; nhi 84 net/ipv4/nexthop.c nhi = rcu_dereference_raw(nh->nh_info); nhi 85 net/ipv4/nexthop.c switch (nhi->family) { nhi 87 net/ipv4/nexthop.c fib_nh_release(nh->net, &nhi->fib_nh); nhi 90 net/ipv4/nexthop.c ipv6_stub->fib6_nh_release(&nhi->fib6_nh); nhi 93 net/ipv4/nexthop.c kfree(nhi); nhi 221 net/ipv4/nexthop.c struct nh_info *nhi; nhi 246 net/ipv4/nexthop.c nhi = rtnl_dereference(nh->nh_info); nhi 247 net/ipv4/nexthop.c nhm->nh_family = nhi->family; nhi 248 net/ipv4/nexthop.c if (nhi->reject_nh) { nhi 255 net/ipv4/nexthop.c dev = nhi->fib_nhc.nhc_dev; nhi 260 net/ipv4/nexthop.c nhm->nh_scope = nhi->fib_nhc.nhc_scope; nhi 261 net/ipv4/nexthop.c switch (nhi->family) { nhi 263 net/ipv4/nexthop.c fib_nh = &nhi->fib_nh; nhi 270 net/ipv4/nexthop.c fib6_nh = &nhi->fib6_nh; nhi 277 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_lwtstate && nhi 278 net/ipv4/nexthop.c lwtunnel_fill_encap(skb, nhi->fib_nhc.nhc_lwtstate, nhi 302 net/ipv4/nexthop.c struct nh_info *nhi = rtnl_dereference(nh->nh_info); nhi 310 net/ipv4/nexthop.c switch (nhi->family) { nhi 312 net/ipv4/nexthop.c if (nhi->fib_nh.fib_nh_gw_family) nhi 318 net/ipv4/nexthop.c if (nhi->fib6_nh.fib_nh_gw_family) nhi 323 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_lwtstate) { nhi 324 net/ipv4/nexthop.c sz += lwtunnel_get_encap_size(nhi->fib_nhc.nhc_lwtstate); nhi 387 net/ipv4/nexthop.c struct nh_info *nhi = rtnl_dereference(nh->nh_info); nhi 389 net/ipv4/nexthop.c if (nhi->reject_nh && npaths > 1) { nhi 502 net/ipv4/nexthop.c struct nh_info *nhi; nhi 510 net/ipv4/nexthop.c nhi = rcu_dereference(nhge->nh->nh_info); nhi 511 net/ipv4/nexthop.c switch (nhi->family) { nhi 513 net/ipv4/nexthop.c if (ipv4_good_nh(&nhi->fib_nh)) nhi 517 net/ipv4/nexthop.c if (ipv6_good_nh(&nhi->fib6_nh)) nhi 534 net/ipv4/nexthop.c struct nh_info *nhi; nhi 545 net/ipv4/nexthop.c nhi = rcu_dereference_rtnl(nhge->nh->nh_info); nhi 546 net/ipv4/nexthop.c err = cb(&nhi->fib6_nh, arg); nhi 551 net/ipv4/nexthop.c nhi = rcu_dereference_rtnl(nh->nh_info); nhi 552 net/ipv4/nexthop.c err = cb(&nhi->fib6_nh, arg); nhi 574 net/ipv4/nexthop.c struct nh_info *nhi; nhi 592 net/ipv4/nexthop.c nhi = rtnl_dereference(nh->nh_info); nhi 593 net/ipv4/nexthop.c if (nhi->family == AF_INET) nhi 626 net/ipv4/nexthop.c struct nh_info *nhi; nhi 628 net/ipv4/nexthop.c nhi = rtnl_dereference(nh->nh_info); nhi 629 net/ipv4/nexthop.c if (scope == RT_SCOPE_HOST && nhi->fib_nhc.nhc_gw_family) { nhi 635 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_flags & RTNH_F_ONLINK && scope >= RT_SCOPE_LINK) { nhi 814 net/ipv4/nexthop.c struct nh_info *nhi; nhi 816 net/ipv4/nexthop.c nhi = rtnl_dereference(nh->nh_info); nhi 817 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_dev) nhi 818 net/ipv4/nexthop.c hlist_del(&nhi->dev_hash); nhi 967 net/ipv4/nexthop.c struct nh_info *nhi = rtnl_dereference(new->nh_info); nhi 969 net/ipv4/nexthop.c new_is_reject = nhi->reject_nh; nhi 1074 net/ipv4/nexthop.c struct nh_info *nhi; nhi 1076 net/ipv4/nexthop.c hlist_for_each_entry_safe(nhi, n, head, dev_hash) { nhi 1077 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_dev != dev) nhi 1080 net/ipv4/nexthop.c remove_nexthop(net, nhi->nh_parent, NULL); nhi 1131 net/ipv4/nexthop.c struct nh_info *nhi; nhi 1137 net/ipv4/nexthop.c nhi = rtnl_dereference(nhe->nh_info); nhi 1138 net/ipv4/nexthop.c if (nhi->family == AF_INET) nhi 1168 net/ipv4/nexthop.c struct nh_info *nhi, struct nh_config *cfg, nhi 1171 net/ipv4/nexthop.c struct fib_nh *fib_nh = &nhi->fib_nh; nhi 1203 net/ipv4/nexthop.c struct nh_info *nhi, struct nh_config *cfg, nhi 1206 net/ipv4/nexthop.c struct fib6_nh *fib6_nh = &nhi->fib6_nh; nhi 1234 net/ipv4/nexthop.c struct nh_info *nhi; nhi 1242 net/ipv4/nexthop.c nhi = kzalloc(sizeof(*nhi), GFP_KERNEL); nhi 1243 net/ipv4/nexthop.c if (!nhi) { nhi 1251 net/ipv4/nexthop.c nhi->nh_parent = nh; nhi 1252 net/ipv4/nexthop.c nhi->family = cfg->nh_family; nhi 1253 net/ipv4/nexthop.c nhi->fib_nhc.nhc_scope = RT_SCOPE_LINK; nhi 1256 net/ipv4/nexthop.c nhi->reject_nh = 1; nhi 1262 net/ipv4/nexthop.c err = nh_create_ipv4(net, nh, nhi, cfg, extack); nhi 1265 net/ipv4/nexthop.c err = nh_create_ipv6(net, nh, nhi, cfg, extack); nhi 1270 net/ipv4/nexthop.c kfree(nhi); nhi 1276 net/ipv4/nexthop.c nexthop_devhash_add(net, nhi); nhi 1278 net/ipv4/nexthop.c rcu_assign_pointer(nh->nh_info, nhi); nhi 1626 net/ipv4/nexthop.c const struct nh_info *nhi; nhi 1637 net/ipv4/nexthop.c nhi = rtnl_dereference(nh->nh_info); nhi 1638 net/ipv4/nexthop.c if (family && nhi->family != family) nhi 1641 net/ipv4/nexthop.c dev = nhi->fib_nhc.nhc_dev; nhi 1771 net/ipv4/nexthop.c struct nh_info *nhi; nhi 1773 net/ipv4/nexthop.c hlist_for_each_entry_safe(nhi, n, head, dev_hash) { nhi 1774 net/ipv4/nexthop.c if (nhi->fib_nhc.nhc_dev == dev) { nhi 1775 net/ipv4/nexthop.c if (nhi->family == AF_INET) nhi 1776 net/ipv4/nexthop.c fib_nhc_update_mtu(&nhi->fib_nhc, dev->mtu,