Lines Matching refs:msir
55 struct ls_scfg_msir *msir;
121 if (msi_data->msir[cpu].gic_irq <= 0) {
195 struct ls_scfg_msir *msir = irq_desc_get_handler_data(desc);
196 struct ls_scfg_msi *msi_data = msir->msi_data;
202 val = ioread32be(msir->reg);
204 pos = msir->bit_start;
205 size = msir->bit_end + 1;
208 hwirq = ((msir->bit_end - pos) << msi_data->cfg->ibs_shift) |
209 msir->srs;
243 struct ls_scfg_msir *msir;
250 msir = &msi_data->msir[index];
251 msir->index = index;
252 msir->msi_data = msi_data;
253 msir->gic_irq = virq;
254 msir->reg = msi_data->regs + msi_data->cfg->msir_base + 4 * index;
257 msir->bit_start = 32 - ((msir->index + 1) *
259 msir->bit_end = msir->bit_start +
262 msir->bit_start = 0;
263 msir->bit_end = msi_data->cfg->msir_irqs - 1;
266 irq_set_chained_handler_and_data(msir->gic_irq,
268 msir);
272 irq_set_affinity(msir->gic_irq, get_cpu_mask(index));
273 msir->srs = 0; /* This value is determined by the CPU */
275 msir->srs = index;
278 if (!msi_affinity_flag || msir->index == 0) {
280 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
288 static int ls_scfg_msi_teardown_hwirq(struct ls_scfg_msir *msir)
290 struct ls_scfg_msi *msi_data = msir->msi_data;
293 if (msir->gic_irq > 0)
294 irq_set_chained_handler_and_data(msir->gic_irq, NULL, NULL);
297 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
383 msi_data->msir = devm_kcalloc(&pdev->dev, msi_data->msir_num,
384 sizeof(*msi_data->msir),
386 if (!msi_data->msir)
407 ls_scfg_msi_teardown_hwirq(&msi_data->msir[i]);