Home
last modified time | relevance | path

Searched +full:msi +full:- +full:x (Results 1 – 25 of 1025) sorted by relevance

12345678910>>...41

/kernel/linux/linux-6.6/drivers/pci/msi/
Dapi.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCI MSI/MSI-X — Exported APIs for device drivers
5 * Copyright (C) 2003-2004 Intel
14 #include "msi.h"
17 * pci_enable_msi() - Enable MSI interrupt mode on device
20 * Legacy device driver API to enable MSI interrupts mode on device and
22 * Linux IRQ will be saved at @dev->irq. The driver must invoke
40 * pci_disable_msi() - Disable MSI interrupt mode on device
43 * Legacy device driver API to disable MSI interrupt mode on device,
45 * The PCI device Linux IRQ (@dev->irq) is restored to its default
[all …]
Dirqdomain.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCI Message Signaled Interrupt (MSI) - irqdomain support
9 #include "msi.h"
15 domain = dev_get_msi_domain(&dev->dev); in pci_msi_setup_msi_irqs()
17 return msi_domain_alloc_irqs_all_locked(&dev->dev, MSI_DEFAULT_DOMAIN, nvec); in pci_msi_setup_msi_irqs()
26 domain = dev_get_msi_domain(&dev->dev); in pci_msi_teardown_msi_irqs()
28 msi_domain_free_irqs_all_locked(&dev->dev, MSI_DEFAULT_DOMAIN); in pci_msi_teardown_msi_irqs()
31 msi_free_msi_descs(&dev->dev); in pci_msi_teardown_msi_irqs()
36 * pci_msi_domain_write_msg - Helper to write MSI message to PCI config space
37 * @irq_data: Pointer to interrupt data of the MSI interrupt
[all …]
Dmsi.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCI Message Signaled Interrupt (MSI)
5 * Copyright (C) 2003-2004 Intel
14 #include "msi.h"
20 * pci_msi_supported - check whether MSI may be enabled on a device
21 * @dev: pointer to the pci_dev data structure of MSI device function
25 * to determine if MSI/-X are supported for the device. If MSI/-X is
32 /* MSI must be globally enabled and supported by the device */ in pci_msi_supported()
36 if (!dev || dev->no_msi) in pci_msi_supported()
48 * Any bridge which does NOT route MSI transactions from its in pci_msi_supported()
[all …]
/kernel/linux/linux-6.6/Documentation/PCI/
Dmsi-howto.rst1 .. SPDX-License-Identifier: GPL-2.0
5 The MSI Driver Guide HOWTO
16 the advantages of using MSI over traditional interrupt mechanisms, how
17 to change your driver to use MSI or MSI-X and some basic diagnostics to
27 The MSI capability was first specified in PCI 2.2 and was later enhanced
28 in PCI 3.0 to allow each interrupt to be masked individually. The MSI-X
30 per device than MSI and allows interrupts to be independently configured.
32 Devices may support both MSI and MSI-X, but only one can be enabled at
40 traditional pin-based interrupts.
42 Pin-based PCI interrupts are often shared amongst several devices.
[all …]
/kernel/linux/linux-5.10/drivers/pci/controller/
Dpci-xgene-msi.c1 // SPDX-License-Identifier: GPL-2.0+
3 * APM X-Gene MSI Driver
12 #include <linux/msi.h>
27 struct xgene_msi *msi; member
48 .name = "X-Gene1 MSI",
62 * X-Gene v1 has 16 groups of MSI termination registers MSInIRx, where
63 * n is group number (0..F), x is index of registers in each group (0..7)
85 * Each index register supports 16 MSI vectors (0..15) to generate interrupt.
86 * There are total 16 GIC IRQs assigned for these 16 groups of MSI termination
89 * Each MSI termination group has 1 MSIINTn register (n is 0..15) to indicate
[all …]
Dpcie-rcar-host.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCIe driver for Renesas R-Car SoCs
4 * Copyright (C) 2014-2020 Renesas Electronics Europe Ltd
7 * arch/sh/drivers/pci/pcie-sh7786.c
8 * arch/sh/drivers/pci/ops-sh7786.c
9 * Copyright (C) 2009 - 2011 Paul Mundt
22 #include <linux/msi.h>
33 #include "pcie-rcar.h"
57 struct rcar_msi msi; member
74 struct rcar_pcie *pcie = &host->pcie; in rcar_pcie_config_access()
[all …]
/kernel/linux/linux-6.6/drivers/pci/controller/
Dpci-xgene-msi.c1 // SPDX-License-Identifier: GPL-2.0+
3 * APM X-Gene MSI Driver
13 #include <linux/msi.h>
27 struct xgene_msi *msi; member
48 .name = "X-Gene1 MSI",
62 * X-Gene v1 has 16 groups of MSI termination registers MSInIRx, where
63 * n is group number (0..F), x is index of registers in each group (0..7)
85 * Each index register supports 16 MSI vectors (0..15) to generate interrupt.
86 * There are total 16 GIC IRQs assigned for these 16 groups of MSI termination
89 * Each MSI termination group has 1 MSIINTn register (n is 0..15) to indicate
[all …]
Dpcie-microchip-host.c1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (c) 2018 - 2020 Microchip Corporation. All rights reserved.
15 #include <linux/msi.h>
18 #include <linux/pci-ecam.h>
23 /* Number of MSI IRQs */
163 /* PCIe Config space MSI capability structure */
197 #define PCIE_EVENT_CAUSE(x, s) \ argument
198 [EVENT_PCIE_ ## x] = { __stringify(x), s }
200 #define SEC_ERROR_CAUSE(x, s) \ argument
201 [EVENT_SEC_ ## x] = { __stringify(x), s }
[all …]
Dpcie-rcar-host.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCIe driver for Renesas R-Car SoCs
4 * Copyright (C) 2014-2020 Renesas Electronics Europe Ltd
7 * arch/sh/drivers/pci/pcie-sh7786.c
8 * arch/sh/drivers/pci/ops-sh7786.c
9 * Copyright (C) 2009 - 2011 Paul Mundt
16 #include <linux/clk-provider.h>
24 #include <linux/msi.h>
33 #include "pcie-rcar.h"
49 struct rcar_msi msi; member
[all …]
/kernel/linux/linux-5.10/arch/powerpc/platforms/4xx/
Dmsi.c1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Adding PCI-E MSI support for PPC4XX SoCs.
12 #include <linux/msi.h>
19 #include <asm/ppc-pci.h>
21 #include <asm/dcr-regs.h>
51 err = msi_bitmap_alloc(&msi_data->bitmap, msi_irqs, in ppc4xx_msi_init_allocator()
52 dev->dev.of_node); in ppc4xx_msi_init_allocator()
56 err = msi_bitmap_reserve_dt_hwirqs(&msi_data->bitmap); in ppc4xx_msi_init_allocator()
58 msi_bitmap_free(&msi_data->bitmap); in ppc4xx_msi_init_allocator()
67 int int_no = -ENOMEM; in ppc4xx_setup_msi_irqs()
[all …]
/kernel/linux/linux-5.10/Documentation/PCI/
Dmsi-howto.rst1 .. SPDX-License-Identifier: GPL-2.0
5 The MSI Driver Guide HOWTO
16 the advantages of using MSI over traditional interrupt mechanisms, how
17 to change your driver to use MSI or MSI-X and some basic diagnostics to
27 The MSI capability was first specified in PCI 2.2 and was later enhanced
28 in PCI 3.0 to allow each interrupt to be masked individually. The MSI-X
30 per device than MSI and allows interrupts to be independently configured.
32 Devices may support both MSI and MSI-X, but only one can be enabled at
40 traditional pin-based interrupts.
42 Pin-based PCI interrupts are often shared amongst several devices.
[all …]
/kernel/linux/linux-5.10/arch/mips/pci/
Dmsi-xlp.c2 * Copyright (c) 2003-2012 Broadcom Corporation
39 #include <linux/msi.h>
50 #include <asm/netlogic/mips-extns.h>
52 #include <asm/netlogic/xlp-hal/iomap.h>
53 #include <asm/netlogic/xlp-hal/xlp.h>
54 #include <asm/netlogic/xlp-hal/pic.h>
55 #include <asm/netlogic/xlp-hal/pcibus.h>
56 #include <asm/netlogic/xlp-hal/bridge.h>
62 /* 128 MSI irqs per node, mapped starting at NLM_MSI_VEC_BASE */
68 /* get the link MSI vector from irq number */
[all …]
/kernel/linux/linux-5.10/drivers/pci/
Dmsi.c1 // SPDX-License-Identifier: GPL-2.0
3 * PCI Message Signaled Interrupt (MSI)
5 * Copyright (C) 2003-2004 Intel
18 #include <linux/msi.h>
39 domain = dev_get_msi_domain(&dev->dev); in pci_msi_setup_msi_irqs()
41 return msi_domain_alloc_irqs(domain, &dev->dev, nvec); in pci_msi_setup_msi_irqs()
50 domain = dev_get_msi_domain(&dev->dev); in pci_msi_teardown_msi_irqs()
52 msi_domain_free_irqs(domain, &dev->dev); in pci_msi_teardown_msi_irqs()
65 struct msi_controller *chip = dev->bus->msi; in arch_setup_msi_irq()
68 if (!chip || !chip->setup_irq) in arch_setup_msi_irq()
[all …]
/kernel/linux/linux-6.6/include/linux/
Dmsi.h1 /* SPDX-License-Identifier: GPL-2.0 */
6 * This header file contains MSI data structures and functions which are
8 * - Interrupt core code
9 * - PCI/MSI core code
10 * - MSI interrupt domain implementations
11 * - IOMMU, low level VFIO, NTB and other justified exceptions
12 * dealing with low level MSI details.
15 * especially storing MSI descriptor pointers in random code is considered
30 #include <asm/msi.h>
56 * msi_msg - Representation of a MSI message
[all …]
/kernel/linux/linux-5.10/include/linux/
Dmsi.h1 /* SPDX-License-Identifier: GPL-2.0 */
9 u32 address_lo; /* low 32 bits of msi message address */
10 u32 address_hi; /* high 32 bits of msi message address */
11 u32 data; /* 16 bits of msi message data */
33 * platform_msi_desc - Platform device specific msi descriptor data
35 * @msi_index: The index of the MSI descriptor for multi MSI
43 * fsl_mc_msi_desc - FSL-MC device specific msi descriptor data
44 * @msi_index: The index of the MSI descriptor
51 * ti_sci_inta_msi_desc - TISCI based INTA specific msi descriptor data
59 * struct msi_desc - Descriptor structure for MSI based interrupts
[all …]
/kernel/linux/linux-5.10/arch/sparc/kernel/
Dpci_msi.c1 // SPDX-License-Identifier: GPL-2.0
2 /* pci_msi.c: Sparc64 MSI support common layer.
16 struct pci_pbm_info *pbm = msiq_cookie->pbm; in sparc64_msiq_interrupt()
17 unsigned long msiqid = msiq_cookie->msiqid; in sparc64_msiq_interrupt()
22 ops = pbm->msi_ops; in sparc64_msiq_interrupt()
24 err = ops->get_head(pbm, msiqid, &head); in sparc64_msiq_interrupt()
30 unsigned long msi; in sparc64_msiq_interrupt() local
32 err = ops->dequeue_msi(pbm, msiqid, &head, &msi); in sparc64_msiq_interrupt()
36 irq = pbm->msi_irq_table[msi - pbm->msi_first]; in sparc64_msiq_interrupt()
47 err = ops->set_head(pbm, msiqid, head); in sparc64_msiq_interrupt()
[all …]
/kernel/linux/linux-6.6/arch/sparc/kernel/
Dpci_msi.c1 // SPDX-License-Identifier: GPL-2.0
2 /* pci_msi.c: Sparc64 MSI support common layer.
18 struct pci_pbm_info *pbm = msiq_cookie->pbm; in sparc64_msiq_interrupt()
19 unsigned long msiqid = msiq_cookie->msiqid; in sparc64_msiq_interrupt()
24 ops = pbm->msi_ops; in sparc64_msiq_interrupt()
26 err = ops->get_head(pbm, msiqid, &head); in sparc64_msiq_interrupt()
32 unsigned long msi; in sparc64_msiq_interrupt() local
34 err = ops->dequeue_msi(pbm, msiqid, &head, &msi); in sparc64_msiq_interrupt()
38 irq = pbm->msi_irq_table[msi - pbm->msi_first]; in sparc64_msiq_interrupt()
49 err = ops->set_head(pbm, msiqid, head); in sparc64_msiq_interrupt()
[all …]
/kernel/linux/linux-6.6/arch/powerpc/platforms/cell/
Daxon_msi.c1 // SPDX-License-Identifier: GPL-2.0-or-later
11 #include <linux/msi.h>
52 * To configure the FIFO size as (1 << n) bytes, we write (n - 15) into bits
53 * 8-9 of the MSIC control reg.
55 #define MSIC_CTRL_FIFO_SIZE (((MSIC_FIFO_SIZE_SHIFT - 15) << 8) & 0x300)
59 * the bounds of the FIFO. Also they should always be 16-byte aligned.
61 #define MSIC_FIFO_SIZE_MASK ((MSIC_FIFO_SIZE_BYTES - 1) & ~0xFu)
88 pr_devel("axon_msi: dcr_write(0x%x, 0x%x)\n", val, dcr_n); in msic_dcr_write()
90 dcr_write(msic->dcr_host, dcr_n, val); in msic_dcr_write()
97 u32 write_offset, msi; in axon_msi_cascade() local
[all …]
/kernel/linux/linux-5.10/arch/powerpc/platforms/cell/
Daxon_msi.c1 // SPDX-License-Identifier: GPL-2.0-or-later
11 #include <linux/msi.h>
51 * To configure the FIFO size as (1 << n) bytes, we write (n - 15) into bits
52 * 8-9 of the MSIC control reg.
54 #define MSIC_CTRL_FIFO_SIZE (((MSIC_FIFO_SIZE_SHIFT - 15) << 8) & 0x300)
58 * the bounds of the FIFO. Also they should always be 16-byte aligned.
60 #define MSIC_FIFO_SIZE_MASK ((MSIC_FIFO_SIZE_BYTES - 1) & ~0xFu)
87 pr_devel("axon_msi: dcr_write(0x%x, 0x%x)\n", val, dcr_n); in msic_dcr_write()
89 dcr_write(msic->dcr_host, dcr_n, val); in msic_dcr_write()
96 u32 write_offset, msi; in axon_msi_cascade() local
[all …]
/kernel/linux/linux-6.6/Documentation/translations/zh_CN/PCI/
Dmsi-howto.rst1 .. SPDX-License-Identifier: GPL-2.0
3 .. include:: ../disclaimer-zh_CN.rst
5 :Original: Documentation/PCI/msi-howto.rst
26 本指南介绍了消息标记中断(MSI)的基本知识,使用MSI相对于传统中断机制的优势,如何
27 改变你的驱动程序以使用MSI或MSI-X,以及在设备不支持MSI时可以尝试的一些基本诊断方法。
36 MSI-X功能也随着PCI 3.0被引入。它比MSI支持每个设备更多的中断,并允许独立配置中断。
38 设备可以同时支持MSI和MSI-X,但一次只能启用一个。
50 之前,中断就已经到达了(这在PCI-PCI桥后面的设备中变得更有可能)。为了确保所有的数
65 PCI设备被初始化为使用基于引脚的中断。设备驱动程序必须将设备设置为使用MSI或MSI-X
70 -------------------
[all …]
/kernel/linux/linux-5.10/Documentation/devicetree/bindings/pci/
Dxgene-pci-msi.txt1 * AppliedMicro X-Gene v1 PCIe MSI controller
5 - compatible: should be "apm,xgene1-msi" to identify
6 X-Gene v1 PCIe MSI controller block.
7 - msi-controller: indicates that this is an X-Gene v1 PCIe MSI controller node
8 - reg: physical base address (0x79000000) and length (0x900000) for controller
9 registers. These registers include the MSI termination address and data
10 registers as well as the MSI interrupt status registers.
11 - reg-names: not required
12 - interrupts: A list of 16 interrupt outputs of the controller, starting from
14 - interrupt-names: not required
[all …]
/kernel/linux/linux-6.6/Documentation/devicetree/bindings/pci/
Dxgene-pci-msi.txt1 * AppliedMicro X-Gene v1 PCIe MSI controller
5 - compatible: should be "apm,xgene1-msi" to identify
6 X-Gene v1 PCIe MSI controller block.
7 - msi-controller: indicates that this is an X-Gene v1 PCIe MSI controller node
8 - reg: physical base address (0x79000000) and length (0x900000) for controller
9 registers. These registers include the MSI termination address and data
10 registers as well as the MSI interrupt status registers.
11 - reg-names: not required
12 - interrupts: A list of 16 interrupt outputs of the controller, starting from
14 - interrupt-names: not required
[all …]
/kernel/linux/linux-6.6/Documentation/PCI/endpoint/
Dpci-ntb-function.rst1 .. SPDX-License-Identifier: GPL-2.0
9 PCI Non-Transparent Bridges (NTB) allow two host systems to communicate
26 .. code-block:: text
28 +-------------+ +-------------+
32 +------^------+ +------^------+
35 +---------|-------------------------------------------------|---------+
36 | +------v------+ +------v------+ |
40 | | <-----------------------------------> | |
45 | +-------------+ +-------------+ |
46 +---------------------------------------------------------------------+
[all …]
/kernel/linux/linux-5.10/drivers/pci/controller/mobiveil/
Dpcie-mobiveil-host.c1 // SPDX-License-Identifier: GPL-2.0
6 * Copyright 2019-2020 NXP
19 #include <linux/msi.h>
28 #include "pcie-mobiveil.h"
40 if ((bus->primary == to_pci_host_bridge(bus->bridge)->busnr) && (PCI_SLOT(devfn) > 0)) in mobiveil_pcie_valid_device()
47 * mobiveil_pcie_map_bus - routine to get the configuration base of either
53 struct mobiveil_pcie *pcie = bus->sysdata; in mobiveil_pcie_map_bus()
54 struct mobiveil_root_port *rp = &pcie->rp; in mobiveil_pcie_map_bus()
62 return pcie->csr_axi_slave_base + where; in mobiveil_pcie_map_bus()
70 value = bus->number << PAB_BUS_SHIFT | in mobiveil_pcie_map_bus()
[all …]
/kernel/linux/linux-6.6/drivers/pci/controller/mobiveil/
Dpcie-mobiveil-host.c1 // SPDX-License-Identifier: GPL-2.0
6 * Copyright 2019-2020 NXP
19 #include <linux/msi.h>
25 #include "pcie-mobiveil.h"
37 if ((bus->primary == to_pci_host_bridge(bus->bridge)->busnr) && (PCI_SLOT(devfn) > 0)) in mobiveil_pcie_valid_device()
44 * mobiveil_pcie_map_bus - routine to get the configuration base of either
50 struct mobiveil_pcie *pcie = bus->sysdata; in mobiveil_pcie_map_bus()
51 struct mobiveil_root_port *rp = &pcie->rp; in mobiveil_pcie_map_bus()
59 return pcie->csr_axi_slave_base + where; in mobiveil_pcie_map_bus()
67 value = bus->number << PAB_BUS_SHIFT | in mobiveil_pcie_map_bus()
[all …]

12345678910>>...41