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,