Home | History | Annotate | Download | only in fdt

Lines Matching defs:firq

347 	struct gicv3_fdt_irq *firq;
364 firq = sc->sc_irq[irq];
365 if (firq == NULL) {
366 firq = kmem_alloc(sizeof(*firq), KM_SLEEP);
367 firq->intr_sc = sc;
368 firq->intr_refcnt = 0;
369 firq->intr_arg = arg;
370 firq->intr_ipl = ipl;
371 firq->intr_level = level;
372 firq->intr_mpsafe = mpsafe;
373 TAILQ_INIT(&firq->intr_handlers);
374 firq->intr_irq = irq;
376 firq->intr_ih = intr_establish_xname(irq, ipl,
379 firq->intr_ih = intr_establish_xname(irq, ipl,
380 level | mpsafe, gicv3_fdt_intr, firq, xname);
382 if (firq->intr_ih == NULL) {
383 kmem_free(firq, sizeof(*firq));
386 sc->sc_irq[irq] = firq;
388 if (firq->intr_arg == NULL && arg != NULL) {
392 if (firq->intr_ipl != ipl) {
397 if (firq->intr_level != level) {
402 if (firq->intr_mpsafe != mpsafe) {
409 firq->intr_refcnt++;
413 firqh->ih_irq = firq;
416 TAILQ_INSERT_TAIL(&firq->intr_handlers, firqh, ih_next);
418 return firq->intr_ih;
426 struct gicv3_fdt_irq *firq;
430 firq = sc->sc_irq[n];
431 if (firq == NULL || firq->intr_ih != ih)
434 KASSERT(firq->intr_refcnt > 0);
436 if (firq->intr_refcnt > 1)
439 firqh = TAILQ_FIRST(&firq->intr_handlers);
441 intr_disestablish(firq->intr_ih);
442 kmem_free(firq, sizeof(*firq));
453 struct gicv3_fdt_irq *firq = priv;
457 TAILQ_FOREACH(firqh, &firq->intr_handlers, ih_next)