Lines Matching defs:msir
55 struct ls_scfg_msir *msir;
121 if (msi_data->msir[cpu].gic_irq <= 0) {
196 struct ls_scfg_msir *msir = irq_desc_get_handler_data(desc);
197 struct ls_scfg_msi *msi_data = msir->msi_data;
203 val = ioread32be(msir->reg);
205 pos = msir->bit_start;
206 size = msir->bit_end + 1;
209 hwirq = ((msir->bit_end - pos) << msi_data->cfg->ibs_shift) |
210 msir->srs;
237 struct ls_scfg_msir *msir;
244 msir = &msi_data->msir[index];
245 msir->index = index;
246 msir->msi_data = msi_data;
247 msir->gic_irq = virq;
248 msir->reg = msi_data->regs + msi_data->cfg->msir_base + 4 * index;
251 msir->bit_start = 32 - ((msir->index + 1) *
253 msir->bit_end = msir->bit_start +
256 msir->bit_start = 0;
257 msir->bit_end = msi_data->cfg->msir_irqs - 1;
260 irq_set_chained_handler_and_data(msir->gic_irq,
262 msir);
266 irq_set_affinity(msir->gic_irq, get_cpu_mask(index));
267 msir->srs = 0; /* This value is determined by the CPU */
269 msir->srs = index;
272 if (!msi_affinity_flag || msir->index == 0) {
274 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
282 static int ls_scfg_msi_teardown_hwirq(struct ls_scfg_msir *msir)
284 struct ls_scfg_msi *msi_data = msir->msi_data;
287 if (msir->gic_irq > 0)
288 irq_set_chained_handler_and_data(msir->gic_irq, NULL, NULL);
291 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
377 msi_data->msir = devm_kcalloc(&pdev->dev, msi_data->msir_num,
378 sizeof(*msi_data->msir),
380 if (!msi_data->msir)
401 ls_scfg_msi_teardown_hwirq(&msi_data->msir[i]);