/Linux-v4.19/drivers/pci/controller/ |
D | pcie-iproc-msi.c | 62 struct iproc_msi *msi; member 128 static inline u32 iproc_msi_read_reg(struct iproc_msi *msi, in iproc_msi_read_reg() argument 132 struct iproc_pcie *pcie = msi->pcie; in iproc_msi_read_reg() 134 return readl_relaxed(pcie->base + msi->reg_offsets[eq][reg]); in iproc_msi_read_reg() 137 static inline void iproc_msi_write_reg(struct iproc_msi *msi, in iproc_msi_write_reg() argument 141 struct iproc_pcie *pcie = msi->pcie; in iproc_msi_write_reg() 143 writel_relaxed(val, pcie->base + msi->reg_offsets[eq][reg]); in iproc_msi_write_reg() 146 static inline u32 hwirq_to_group(struct iproc_msi *msi, unsigned long hwirq) in hwirq_to_group() argument 148 return (hwirq % msi->nr_irqs); in hwirq_to_group() 151 static inline unsigned int iproc_msi_addr_offset(struct iproc_msi *msi, in iproc_msi_addr_offset() argument [all …]
|
D | pcie-altera-msi.c | 40 static inline void msi_writel(struct altera_msi *msi, const u32 value, in msi_writel() argument 43 writel_relaxed(value, msi->csr_base + reg); in msi_writel() 46 static inline u32 msi_readl(struct altera_msi *msi, const u32 reg) in msi_readl() argument 48 return readl_relaxed(msi->csr_base + reg); in msi_readl() 54 struct altera_msi *msi; in altera_msi_isr() local 60 msi = irq_desc_get_handler_data(desc); in altera_msi_isr() 62 while ((status = msi_readl(msi, MSI_STATUS)) != 0) { in altera_msi_isr() 63 for_each_set_bit(bit, &status, msi->num_of_vectors) { in altera_msi_isr() 65 readl_relaxed(msi->vector_base + (bit * sizeof(u32))); in altera_msi_isr() 67 virq = irq_find_mapping(msi->inner_domain, bit); in altera_msi_isr() [all …]
|
D | pci-xgene-msi.c | 27 struct xgene_msi *msi; member 94 static u32 xgene_msi_ir_read(struct xgene_msi *msi, in xgene_msi_ir_read() argument 97 return readl_relaxed(msi->msi_regs + MSI_IR0 + in xgene_msi_ir_read() 102 static u32 xgene_msi_int_read(struct xgene_msi *msi, u32 msi_grp) in xgene_msi_int_read() argument 104 return readl_relaxed(msi->msi_regs + MSI_INT0 + (msi_grp << 16)); in xgene_msi_int_read() 143 struct xgene_msi *msi = irq_data_get_irq_chip_data(data); in xgene_compose_msi_msg() local 146 u64 target_addr = msi->msi_addr + (((8 * group) + reg_set) << 16); in xgene_compose_msi_msg() 197 struct xgene_msi *msi = domain->host_data; in xgene_irq_domain_alloc() local 200 mutex_lock(&msi->bitmap_lock); in xgene_irq_domain_alloc() 202 msi_irq = bitmap_find_next_zero_area(msi->bitmap, NR_MSI_VEC, 0, in xgene_irq_domain_alloc() [all …]
|
D | pcie-rcar.c | 152 struct rcar_msi msi; member 473 bridge->msi = &pcie->msi.chip; in rcar_pcie_enable() 692 int msi; in rcar_msi_alloc() local 696 msi = find_first_zero_bit(chip->used, INT_PCI_MSI_NR); in rcar_msi_alloc() 697 if (msi < INT_PCI_MSI_NR) in rcar_msi_alloc() 698 set_bit(msi, chip->used); in rcar_msi_alloc() 700 msi = -ENOSPC; in rcar_msi_alloc() 704 return msi; in rcar_msi_alloc() 709 int msi; in rcar_msi_alloc_region() local 712 msi = bitmap_find_free_region(chip->used, INT_PCI_MSI_NR, in rcar_msi_alloc_region() [all …]
|
D | pcie-xilinx-nwl.c | 170 struct nwl_msi msi; member 346 struct nwl_msi *msi; in nwl_pcie_handle_msi_irq() local 351 msi = &pcie->msi; in nwl_pcie_handle_msi_irq() 356 virq = irq_find_mapping(msi->dev_domain, bit); in nwl_pcie_handle_msi_irq() 481 struct nwl_msi *msi = &pcie->msi; in nwl_irq_domain_alloc() local 485 mutex_lock(&msi->lock); in nwl_irq_domain_alloc() 486 bit = bitmap_find_next_zero_area(msi->bitmap, INT_PCI_MSI_NR, 0, in nwl_irq_domain_alloc() 489 mutex_unlock(&msi->lock); in nwl_irq_domain_alloc() 493 bitmap_set(msi->bitmap, bit, nr_irqs); in nwl_irq_domain_alloc() 500 mutex_unlock(&msi->lock); in nwl_irq_domain_alloc() [all …]
|
D | pcie-mobiveil.c | 145 struct mobiveil_msi msi; member 224 struct mobiveil_msi *msi = &pcie->msi; in mobiveil_pcie_isr() local 285 virq = irq_find_mapping(msi->dev_domain, msi_data); in mobiveil_pcie_isr() 486 struct mobiveil_msi *msi = &pcie->msi; in mobiveil_pcie_enable_msi() local 488 pcie->msi.num_of_vectors = PCI_NUM_MSI; in mobiveil_pcie_enable_msi() 489 msi->msi_pages_phys = (phys_addr_t)msg_addr; in mobiveil_pcie_enable_msi() 666 struct mobiveil_msi *msi = &pcie->msi; in mobiveil_irq_msi_domain_alloc() local 670 mutex_lock(&msi->lock); in mobiveil_irq_msi_domain_alloc() 672 bit = find_first_zero_bit(msi->msi_irq_in_use, msi->num_of_vectors); in mobiveil_irq_msi_domain_alloc() 673 if (bit >= msi->num_of_vectors) { in mobiveil_irq_msi_domain_alloc() [all …]
|
/Linux-v4.19/Documentation/devicetree/bindings/pci/ |
D | pci-msi.txt | 23 Documentation/devicetree/bindings/interrupt-controller/msi.txt. 32 - msi-map: Maps a Requester ID to an MSI controller and associated 33 msi-specifier data. The property is an arbitrary number of tuples of 34 (rid-base,msi-controller,msi-base,length), where: 38 * msi-controller is a single phandle to an MSI controller 40 * msi-base is an msi-specifier describing the msi-specifier produced for the 47 the listed msi-controller, with the msi-specifier (r - rid-base + msi-base). 49 - msi-map-mask: A mask to be applied to each Requester ID prior to being mapped 50 to an msi-specifier per the msi-map property. 52 - msi-parent: Describes the MSI parent of the root complex itself. Where [all …]
|
D | xgene-pci-msi.txt | 5 - compatible: should be "apm,xgene1-msi" to identify 7 - msi-controller: indicates that this is an X-Gene v1 PCIe MSI controller node 16 Each PCIe node needs to have property msi-parent that points to an MSI 24 msi@79000000 { 25 compatible = "apm,xgene1-msi"; 26 msi-controller; 46 + PCIe controller node with msi-parent property pointing to MSI node: 67 msi-parent= <&msi>;
|
D | brcm,iproc-pcie.txt | 52 - msi-map: Maps a Requester ID to an MSI controller and associated MSI 55 - msi-parent: Link to the device node of the MSI controller, used when no MSI 60 the use of 'msi-map' and 'msi-parent': 61 Documentation/devicetree/bindings/pci/pci-msi.txt 62 Documentation/devicetree/bindings/interrupt-controller/msi.txt 66 - compatible: Must be "brcm,iproc-msi" 67 - msi-controller: claims itself as an MSI controller 71 - brcm,pcie-msi-inten: Needs to be present for some older iProc platforms that 99 msi-parent = <&msi0>; 102 msi0: msi@18012000 { [all …]
|
D | altera-pcie-msi.txt | 4 - compatible: should contain "altr,msi-1.0" 14 - msi-controller: indicates that this is MSI controller node 18 msi0: msi@0xFF200000 { 19 compatible = "altr,msi-1.0"; 25 msi-controller;
|
/Linux-v4.19/arch/powerpc/platforms/4xx/ |
D | msi.c | 142 struct resource res, struct ppc4xx_msi *msi) in ppc4xx_setup_pcieh_hw() argument 163 msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi"); in ppc4xx_setup_pcieh_hw() 164 if (!msi->msi_dev) in ppc4xx_setup_pcieh_hw() 167 msi->msi_regs = of_iomap(msi->msi_dev, 0); in ppc4xx_setup_pcieh_hw() 168 if (!msi->msi_regs) { in ppc4xx_setup_pcieh_hw() 174 (u32) (msi->msi_regs + PEIH_TERMADH), (u32) (msi->msi_regs)); in ppc4xx_setup_pcieh_hw() 181 msi->msi_addr_hi = upper_32_bits(msi_phys); in ppc4xx_setup_pcieh_hw() 182 msi->msi_addr_lo = lower_32_bits(msi_phys & 0xffffffff); in ppc4xx_setup_pcieh_hw() 184 msi->msi_addr_hi, msi->msi_addr_lo); in ppc4xx_setup_pcieh_hw() 190 out_be32(msi->msi_regs + PEIH_TERMADH, msi->msi_addr_hi); in ppc4xx_setup_pcieh_hw() [all …]
|
/Linux-v4.19/virt/kvm/arm/vgic/ |
D | vgic-irqfd.c | 66 e->msi.address_lo = ue->u.msi.address_lo; in kvm_set_routing_entry() 67 e->msi.address_hi = ue->u.msi.address_hi; in kvm_set_routing_entry() 68 e->msi.data = ue->u.msi.data; in kvm_set_routing_entry() 69 e->msi.flags = ue->flags; in kvm_set_routing_entry() 70 e->msi.devid = ue->u.msi.devid; in kvm_set_routing_entry() 91 struct kvm_msi msi; in kvm_set_msi() local 93 msi.address_lo = e->msi.address_lo; in kvm_set_msi() 94 msi.address_hi = e->msi.address_hi; in kvm_set_msi() 95 msi.data = e->msi.data; in kvm_set_msi() 96 msi.flags = e->msi.flags; in kvm_set_msi() [all …]
|
D | vgic-v4.c | 248 struct kvm_msi msi = (struct kvm_msi) { in vgic_get_its() local 249 .address_lo = irq_entry->msi.address_lo, in vgic_get_its() 250 .address_hi = irq_entry->msi.address_hi, in vgic_get_its() 251 .data = irq_entry->msi.data, in vgic_get_its() 252 .flags = irq_entry->msi.flags, in vgic_get_its() 253 .devid = irq_entry->msi.devid, in vgic_get_its() 256 return vgic_msi_to_its(kvm, &msi); in vgic_get_its() 281 ret = vgic_its_resolve_lpi(kvm, its, irq_entry->msi.devid, in kvm_vgic_v4_set_forwarding() 282 irq_entry->msi.data, &irq); in kvm_vgic_v4_set_forwarding() 334 ret = vgic_its_resolve_lpi(kvm, its, irq_entry->msi.devid, in kvm_vgic_v4_unset_forwarding() [all …]
|
/Linux-v4.19/arch/powerpc/sysdev/ |
D | fsl_msi.c | 40 #define msi_hwirq(msi, msir_index, intr_index) \ argument 41 ((msir_index) << (msi)->srs_shift | \ 42 ((intr_index) << (msi)->ibs_shift)) 331 struct fsl_msi *msi = platform_get_drvdata(ofdev); in fsl_of_msi_remove() local 334 if (msi->list.prev != NULL) in fsl_of_msi_remove() 335 list_del(&msi->list); in fsl_of_msi_remove() 337 if (msi->cascade_array[i]) { in fsl_of_msi_remove() 338 virq = msi->cascade_array[i]->virq; in fsl_of_msi_remove() 342 free_irq(virq, msi->cascade_array[i]); in fsl_of_msi_remove() 343 kfree(msi->cascade_array[i]); in fsl_of_msi_remove() [all …]
|
/Linux-v4.19/Documentation/devicetree/bindings/interrupt-controller/ |
D | fsl,ls-scfg-msi.txt | 5 - compatible: should be "fsl,<soc-name>-msi" to identify 7 "fsl,ls1021a-msi" 8 "fsl,ls1043a-msi" 9 "fsl,ls1046a-msi" 10 "fsl,ls1043a-v1.1-msi" 11 "fsl,ls1012a-msi" 12 - msi-controller: indicates that this is a PCIe MSI controller node 20 Each PCIe node needs to have property msi-parent that points to 25 msi1: msi-controller@1571000 { 26 compatible = "fsl,ls1043a-msi"; [all …]
|
D | msi.txt | 40 - msi-controller: Identifies the node as an MSI controller. 45 - #msi-cells: The number of cells in an msi-specifier, required if not zero. 50 The meaning of the msi-specifier is defined by the device tree binding of 64 - msi-parent: A list of phandle + msi-specifier pairs, one for each MSI 68 MSI controllers listed in the msi-parent property. 73 When #msi-cells is non-zero, busses with an msi-parent will require 85 msi_a: msi-controller@a { 88 msi-controller; 89 /* No sideband data, so #msi-cells omitted */ 92 msi_b: msi-controller@b { [all …]
|
D | al,alpine-msix.txt | 10 - msi-controller: identifies the node as an PCI Message Signaled Interrupt 12 - al,msi-base-spi: SPI base of the MSI frame 13 - al,msi-num-spis: number of SPIs assigned to the MSI frame, relative to SPI0 22 msi-controller; 23 al,msi-base-spi = <160>; 24 al,msi-num-spis = <160>;
|
/Linux-v4.19/arch/arm64/boot/dts/marvell/ |
D | armada-ap806.dtsi | 58 msi-controller; 60 arm,msi-base-spi = <160>; 61 arm,msi-num-spis = <32>; 65 msi-controller; 67 arm,msi-base-spi = <192>; 68 arm,msi-num-spis = <32>; 72 msi-controller; 74 arm,msi-base-spi = <224>; 75 arm,msi-num-spis = <32>; 79 msi-controller; [all …]
|
/Linux-v4.19/drivers/gpu/drm/nouveau/nvkm/subdev/pci/ |
D | base.c | 79 if (pci->msi) in nvkm_pci_intr() 147 if (pci->msi) in nvkm_pci_init() 169 if (pci->msi) in nvkm_pci_dtor() 213 pci->msi = true; in nvkm_pci_new_() 219 pci->msi = false; in nvkm_pci_new_() 222 pci->msi = nvkm_boolopt(device->cfgopt, "NvMSI", pci->msi); in nvkm_pci_new_() 223 if (pci->msi && func->msi_rearm) { in nvkm_pci_new_() 224 pci->msi = pci_enable_msi(pci->pdev) == 0; in nvkm_pci_new_() 225 if (pci->msi) in nvkm_pci_new_() 228 pci->msi = false; in nvkm_pci_new_()
|
/Linux-v4.19/Documentation/devicetree/bindings/powerpc/fsl/ |
D | msi-pic.txt | 5 The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, 6 etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or 7 "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic 9 provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3" 21 be set as edge sensitive. If msi-available-ranges is present, only 25 - msi-available-ranges: use <start count> style section to define which 26 msi interrupt can be used in the 256 msi interrupts. This property is 33 - msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register 43 msi@41600 { 44 compatible = "fsl,mpc8610-msi", "fsl,mpic-msi"; [all …]
|
/Linux-v4.19/virt/kvm/ |
D | irqchip.c | 61 int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi) in kvm_send_userspace_msi() argument 65 if (!irqchip_in_kernel(kvm) || (msi->flags & ~KVM_MSI_VALID_DEVID)) in kvm_send_userspace_msi() 68 route.msi.address_lo = msi->address_lo; in kvm_send_userspace_msi() 69 route.msi.address_hi = msi->address_hi; in kvm_send_userspace_msi() 70 route.msi.data = msi->data; in kvm_send_userspace_msi() 71 route.msi.flags = msi->flags; in kvm_send_userspace_msi() 72 route.msi.devid = msi->devid; in kvm_send_userspace_msi()
|
/Linux-v4.19/tools/pci/ |
D | pcitest.sh | 23 msi=1 25 while [ $msi -lt 33 ] 27 pcitest -m $msi 28 msi=`expr $msi + 1`
|
/Linux-v4.19/drivers/media/pci/ddbridge/ |
D | ddbridge-main.c | 46 static int msi = 1; variable 48 static int msi; variable 50 module_param(msi, int, 0444); 52 MODULE_PARM_DESC(msi, "Control MSI interrupts: 0-disable, 1-enable (default)"); 54 MODULE_PARM_DESC(msi, "Control MSI interrupts: 0-disable (default), 1-enable"); 71 if (dev->msi) in ddb_msi_exit() 79 if (dev->msi == 2) in ddb_irq_exit() 107 if (msi && pci_msi_enabled()) { in ddb_irq_msi() 111 dev->msi = stat; in ddb_irq_msi() 113 dev->msi); in ddb_irq_msi() [all …]
|
/Linux-v4.19/arch/x86/kvm/ |
D | irq_comm.c | 118 trace_kvm_msi_set_irq(e->msi.address_lo | (kvm->arch.x2apic_format ? in kvm_set_msi_irq() 119 (u64)e->msi.address_hi << 32 : 0), in kvm_set_msi_irq() 120 e->msi.data); in kvm_set_msi_irq() 122 irq->dest_id = (e->msi.address_lo & in kvm_set_msi_irq() 125 irq->dest_id |= MSI_ADDR_EXT_DEST_ID(e->msi.address_hi); in kvm_set_msi_irq() 126 irq->vector = (e->msi.data & in kvm_set_msi_irq() 128 irq->dest_mode = (1 << MSI_ADDR_DEST_MODE_SHIFT) & e->msi.address_lo; in kvm_set_msi_irq() 129 irq->trig_mode = (1 << MSI_DATA_TRIGGER_SHIFT) & e->msi.data; in kvm_set_msi_irq() 130 irq->delivery_mode = e->msi.data & 0x700; in kvm_set_msi_irq() 131 irq->msi_redir_hint = ((e->msi.address_lo in kvm_set_msi_irq() [all …]
|
/Linux-v4.19/arch/powerpc/boot/dts/fsl/ |
D | qoriq-mpic.dtsi | 54 msi0: msi@41600 { 55 compatible = "fsl,mpic-msi"; 57 msi-available-ranges = <0 0x100>; 69 msi1: msi@41800 { 70 compatible = "fsl,mpic-msi"; 72 msi-available-ranges = <0 0x100>; 84 msi2: msi@41a00 { 85 compatible = "fsl,mpic-msi"; 87 msi-available-ranges = <0 0x100>;
|