Lines Matching full:msi

13 #include <linux/msi.h>
46 IMR(MSI) | \
75 /* Number of MSI IRQs */
97 * @msi: MSI information
110 struct xilinx_msi msi; member
245 struct xilinx_msi *msi; in xilinx_pl_dma_pcie_msi_handler_high() local
250 msi = &port->msi; in xilinx_pl_dma_pcie_msi_handler_high()
256 virq = irq_find_mapping(msi->dev_domain, bit); in xilinx_pl_dma_pcie_msi_handler_high()
268 struct xilinx_msi *msi; in xilinx_pl_dma_pcie_msi_handler_low() local
272 msi = &port->msi; in xilinx_pl_dma_pcie_msi_handler_low()
277 virq = irq_find_mapping(msi->dev_domain, bit); in xilinx_pl_dma_pcie_msi_handler_low()
350 .name = "pl_dma:PCIe MSI",
380 .name = "pl_dma:MSI",
389 struct xilinx_msi *msi = &pcie->msi; in xilinx_irq_domain_alloc() local
392 mutex_lock(&msi->lock); in xilinx_irq_domain_alloc()
393 bit = bitmap_find_free_region(msi->bitmap, XILINX_NUM_MSI_IRQS, in xilinx_irq_domain_alloc()
396 mutex_unlock(&msi->lock); in xilinx_irq_domain_alloc()
405 mutex_unlock(&msi->lock); in xilinx_irq_domain_alloc()
415 struct xilinx_msi *msi = &pcie->msi; in xilinx_irq_domain_free() local
417 mutex_lock(&msi->lock); in xilinx_irq_domain_free()
418 bitmap_release_region(msi->bitmap, data->hwirq, in xilinx_irq_domain_free()
420 mutex_unlock(&msi->lock); in xilinx_irq_domain_free()
430 struct xilinx_msi *msi = &port->msi; in xilinx_pl_dma_pcie_free_irq_domains() local
437 if (msi->dev_domain) { in xilinx_pl_dma_pcie_free_irq_domains()
438 irq_domain_remove(msi->dev_domain); in xilinx_pl_dma_pcie_free_irq_domains()
439 msi->dev_domain = NULL; in xilinx_pl_dma_pcie_free_irq_domains()
442 if (msi->msi_domain) { in xilinx_pl_dma_pcie_free_irq_domains()
443 irq_domain_remove(msi->msi_domain); in xilinx_pl_dma_pcie_free_irq_domains()
444 msi->msi_domain = NULL; in xilinx_pl_dma_pcie_free_irq_domains()
451 struct xilinx_msi *msi = &port->msi; in xilinx_pl_dma_pcie_init_msi_irq_domain() local
455 msi->dev_domain = irq_domain_add_linear(NULL, XILINX_NUM_MSI_IRQS, in xilinx_pl_dma_pcie_init_msi_irq_domain()
457 if (!msi->dev_domain) in xilinx_pl_dma_pcie_init_msi_irq_domain()
460 msi->msi_domain = pci_msi_create_irq_domain(fwnode, in xilinx_pl_dma_pcie_init_msi_irq_domain()
462 msi->dev_domain); in xilinx_pl_dma_pcie_init_msi_irq_domain()
463 if (!msi->msi_domain) in xilinx_pl_dma_pcie_init_msi_irq_domain()
466 mutex_init(&msi->lock); in xilinx_pl_dma_pcie_init_msi_irq_domain()
467 msi->bitmap = kzalloc(size, GFP_KERNEL); in xilinx_pl_dma_pcie_init_msi_irq_domain()
468 if (!msi->bitmap) in xilinx_pl_dma_pcie_init_msi_irq_domain()
478 dev_err(dev, "Failed to allocate MSI IRQ domains\n"); in xilinx_pl_dma_pcie_init_msi_irq_domain()
668 /* Needed for MSI DECODE MODE */ in xilinx_pl_dma_pcie_init_port()
686 port->msi.irq_msi0 = platform_get_irq_byname(pdev, "msi0"); in xilinx_request_msi_irq()
687 if (port->msi.irq_msi0 <= 0) in xilinx_request_msi_irq()
688 return port->msi.irq_msi0; in xilinx_request_msi_irq()
690 ret = devm_request_irq(dev, port->msi.irq_msi0, xilinx_pl_dma_pcie_msi_handler_low, in xilinx_request_msi_irq()
698 port->msi.irq_msi1 = platform_get_irq_byname(pdev, "msi1"); in xilinx_request_msi_irq()
699 if (port->msi.irq_msi1 <= 0) in xilinx_request_msi_irq()
700 return port->msi.irq_msi1; in xilinx_request_msi_irq()
702 ret = devm_request_irq(dev, port->msi.irq_msi1, xilinx_pl_dma_pcie_msi_handler_high, in xilinx_request_msi_irq()