Lines Matching defs:firq
248 struct gic_fdt_irq *firq;
264 firq = sc->sc_irq[irq];
265 if (firq == NULL) {
266 firq = kmem_alloc(sizeof(*firq), KM_SLEEP);
267 firq->intr_sc = sc;
268 firq->intr_refcnt = 0;
269 firq->intr_arg = arg;
270 firq->intr_ipl = ipl;
271 firq->intr_level = level;
272 firq->intr_mpsafe = mpsafe;
273 TAILQ_INIT(&firq->intr_handlers);
274 firq->intr_irq = irq;
276 firq->intr_ih = intr_establish_xname(irq, ipl,
279 firq->intr_ih = intr_establish_xname(irq, ipl,
280 level | mpsafe, gic_fdt_intr, firq, xname);
282 if (firq->intr_ih == NULL) {
283 kmem_free(firq, sizeof(*firq));
286 sc->sc_irq[irq] = firq;
288 if (firq->intr_arg == NULL && arg != NULL) {
292 if (firq->intr_ipl != ipl) {
297 if (firq->intr_level != level) {
302 if (firq->intr_mpsafe != mpsafe) {
309 firq->intr_refcnt++;
313 firqh->ih_irq = firq;
316 TAILQ_INSERT_TAIL(&firq->intr_handlers, firqh, ih_next);
318 return firq->intr_ih;
326 struct gic_fdt_irq *firq;
330 firq = sc->sc_irq[n];
331 if (firq == NULL || firq->intr_ih != ih)
334 KASSERT(firq->intr_refcnt > 0);
336 if (firq->intr_refcnt > 1)
339 firqh = TAILQ_FIRST(&firq->intr_handlers);
341 intr_disestablish(firq->intr_ih);
342 kmem_free(firq, sizeof(*firq));
353 struct gic_fdt_irq *firq = priv;
357 TAILQ_FOREACH(firqh, &firq->intr_handlers, ih_next)