Lines Matching defs:msir
54 struct ls_scfg_msir *msir;
120 if (msi_data->msir[cpu].gic_irq <= 0) {
194 struct ls_scfg_msir *msir = irq_desc_get_handler_data(desc);
195 struct ls_scfg_msi *msi_data = msir->msi_data;
201 val = ioread32be(msir->reg);
203 pos = msir->bit_start;
204 size = msir->bit_end + 1;
207 hwirq = ((msir->bit_end - pos) << msi_data->cfg->ibs_shift) |
208 msir->srs;
244 struct ls_scfg_msir *msir;
251 msir = &msi_data->msir[index];
252 msir->index = index;
253 msir->msi_data = msi_data;
254 msir->gic_irq = virq;
255 msir->reg = msi_data->regs + msi_data->cfg->msir_base + 4 * index;
258 msir->bit_start = 32 - ((msir->index + 1) *
260 msir->bit_end = msir->bit_start +
263 msir->bit_start = 0;
264 msir->bit_end = msi_data->cfg->msir_irqs - 1;
267 irq_set_chained_handler_and_data(msir->gic_irq,
269 msir);
273 irq_set_affinity(msir->gic_irq, get_cpu_mask(index));
274 msir->srs = 0; /* This value is determined by the CPU */
276 msir->srs = index;
279 if (!msi_affinity_flag || msir->index == 0) {
281 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
289 static int ls_scfg_msi_teardown_hwirq(struct ls_scfg_msir *msir)
291 struct ls_scfg_msi *msi_data = msir->msi_data;
294 if (msir->gic_irq > 0)
295 irq_set_chained_handler_and_data(msir->gic_irq, NULL, NULL);
298 hwirq = i << msi_data->cfg->ibs_shift | msir->index;
391 msi_data->msir = devm_kcalloc(&pdev->dev, msi_data->msir_num,
392 sizeof(*msi_data->msir),
394 if (!msi_data->msir)
415 ls_scfg_msi_teardown_hwirq(&msi_data->msir[i]);