Lines Matching refs:hwirq
59 u32 reg_idx = SEI_IRQ_REG_IDX(d->hwirq);
61 writel_relaxed(BIT(SEI_IRQ_REG_BIT(d->hwirq)),
68 u32 reg, reg_idx = SEI_IRQ_REG_IDX(d->hwirq);
74 reg |= BIT(SEI_IRQ_REG_BIT(d->hwirq));
82 u32 reg, reg_idx = SEI_IRQ_REG_IDX(d->hwirq);
88 reg &= ~BIT(SEI_IRQ_REG_BIT(d->hwirq));
144 msg->data = data->hwirq + sei->caps->cp_range.first;
199 unsigned long *hwirq,
202 *hwirq = fwspec->param[0];
213 unsigned long hwirq;
217 mvebu_sei_ap_translate(domain, arg, &hwirq, &type);
221 fwspec.param[0] = hwirq + sei->caps->ap_range.first;
227 irq_domain_set_info(domain, virq, hwirq,
241 static void mvebu_sei_cp_release_irq(struct mvebu_sei *sei, unsigned long hwirq)
244 clear_bit(hwirq, sei->cp_msi_bitmap);
254 unsigned long hwirq;
262 hwirq = find_first_zero_bit(sei->cp_msi_bitmap,
264 if (hwirq < sei->caps->cp_range.size)
265 set_bit(hwirq, sei->cp_msi_bitmap);
268 if (hwirq == sei->caps->cp_range.size)
273 fwspec.param[0] = hwirq + sei->caps->cp_range.first;
279 irq_domain_set_info(domain, virq, hwirq,
286 mvebu_sei_cp_release_irq(sei, hwirq);
296 if (nr_irqs != 1 || d->hwirq >= sei->caps->cp_range.size) {
297 dev_err(sei->dev, "Invalid hwirq %lu\n", d->hwirq);
301 mvebu_sei_cp_release_irq(sei, d->hwirq);
339 unsigned long hwirq;
342 hwirq = idx * SEI_IRQ_COUNT_PER_REG + bit;
343 err = generic_handle_domain_irq(sei->sei_domain, hwirq);
345 dev_warn(sei->dev, "Spurious IRQ detected (hwirq %lu)\n", hwirq);