Lines Matching defs:msi

13 #include <linux/msi.h>
27 struct xgene_msi *msi;
94 static u32 xgene_msi_ir_read(struct xgene_msi *msi,
97 return readl_relaxed(msi->msi_regs + MSI_IR0 +
102 static u32 xgene_msi_int_read(struct xgene_msi *msi, u32 msi_grp)
104 return readl_relaxed(msi->msi_regs + MSI_INT0 + (msi_grp << 16));
143 struct xgene_msi *msi = irq_data_get_irq_chip_data(data);
146 u64 target_addr = msi->msi_addr + (((8 * group) + reg_set) << 16);
197 struct xgene_msi *msi = domain->host_data;
200 mutex_lock(&msi->bitmap_lock);
202 msi_irq = bitmap_find_next_zero_area(msi->bitmap, NR_MSI_VEC, 0,
203 msi->num_cpus, 0);
205 bitmap_set(msi->bitmap, msi_irq, msi->num_cpus);
209 mutex_unlock(&msi->bitmap_lock);
225 struct xgene_msi *msi = irq_data_get_irq_chip_data(d);
228 mutex_lock(&msi->bitmap_lock);
231 bitmap_clear(msi->bitmap, hwirq, msi->num_cpus);
233 mutex_unlock(&msi->bitmap_lock);
243 static int xgene_allocate_domains(struct xgene_msi *msi)
245 msi->inner_domain = irq_domain_add_linear(NULL, NR_MSI_VEC,
246 &msi_domain_ops, msi);
247 if (!msi->inner_domain)
250 msi->msi_domain = pci_msi_create_irq_domain(of_node_to_fwnode(msi->node),
252 msi->inner_domain);
254 if (!msi->msi_domain) {
255 irq_domain_remove(msi->inner_domain);
262 static void xgene_free_domains(struct xgene_msi *msi)
264 if (msi->msi_domain)
265 irq_domain_remove(msi->msi_domain);
266 if (msi->inner_domain)
267 irq_domain_remove(msi->inner_domain);
298 xgene_msi = msi_groups->msi;
353 struct xgene_msi *msi = platform_get_drvdata(pdev);
359 kfree(msi->msi_groups);
361 bitmap_free(msi->bitmap);
362 msi->bitmap = NULL;
364 xgene_free_domains(msi);
369 struct xgene_msi *msi = &xgene_msi_ctrl;
375 for (i = cpu; i < NR_HW_IRQS; i += msi->num_cpus) {
376 msi_group = &msi->msi_groups[i];
412 struct xgene_msi *msi = &xgene_msi_ctrl;
416 for (i = cpu; i < NR_HW_IRQS; i += msi->num_cpus) {
417 msi_group = &msi->msi_groups[i];
428 {.compatible = "apm,xgene1-msi"},
473 xgene_msi->msi_groups[irq_index].msi = xgene_msi;
517 .name = "xgene-msi",