Lines Matching defs:msi
12 #include <linux/msi.h>
76 pr_debug("ppc4xx msi: MSI-X untested, trying anyway.\n");
87 pr_debug("%s: fail allocating msi interrupt\n",
98 /* Setup msi address space */
115 dev_dbg(&dev->dev, "PCIE-MSI: tearing down msi irqs\n");
128 struct resource res, struct ppc4xx_msi *msi)
141 msi_data = of_get_property(dev->dev.of_node, "msi-data", NULL);
145 msi_mask = of_get_property(dev->dev.of_node, "msi-mask", NULL);
149 msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");
150 if (!msi->msi_dev)
153 msi->msi_regs = of_iomap(msi->msi_dev, 0);
154 if (!msi->msi_regs) {
159 dev_dbg(&dev->dev, "PCIE-MSI: msi register mapped 0x%x 0x%x\n",
160 (u32) (msi->msi_regs + PEIH_TERMADH), (u32) (msi->msi_regs));
167 msi->msi_addr_hi = upper_32_bits(msi_phys);
168 msi->msi_addr_lo = lower_32_bits(msi_phys & 0xffffffff);
169 dev_dbg(&dev->dev, "PCIE-MSI: msi address high 0x%x, low 0x%x\n",
170 msi->msi_addr_hi, msi->msi_addr_lo);
176 out_be32(msi->msi_regs + PEIH_TERMADH, msi->msi_addr_hi);
177 out_be32(msi->msi_regs + PEIH_TERMADL, msi->msi_addr_lo);
180 out_be32(msi->msi_regs + PEIH_MSIED, *msi_data);
181 out_be32(msi->msi_regs + PEIH_MSIMK, *msi_mask);
188 iounmap(msi->msi_regs);
190 of_node_put(msi->msi_dev);
196 struct ppc4xx_msi *msi = dev->dev.platform_data;
201 virq = msi->msi_virqs[i];
206 if (msi->bitmap.bitmap)
207 msi_bitmap_free(&msi->bitmap);
208 iounmap(msi->msi_regs);
209 of_node_put(msi->msi_dev);
216 struct ppc4xx_msi *msi;
223 msi = devm_kzalloc(&dev->dev, sizeof(*msi), GFP_KERNEL);
224 if (!msi)
226 dev->dev.platform_data = msi;
239 err = ppc4xx_setup_pcieh_hw(dev, res, msi);
243 err = ppc4xx_msi_init_allocator(dev, msi);
248 ppc4xx_msi = *msi;
262 .compatible = "amcc,ppc4xx-msi",
270 .name = "ppc4xx-msi",