Lines Matching defs:ai

84 	struct acpi_intr *ai;
86 ai = arg;
87 KASSERT(ai != NULL && ai->ai_handler != NULL,
89 if (ai->ai_handler(ai->ai_context) == ACPI_INTERRUPT_HANDLED)
95 acpi_intr_destroy(device_t dev, struct acpi_intr *ai)
98 if (ai->ai_handle != NULL)
99 bus_teardown_intr(dev, ai->ai_irq, ai->ai_handle);
100 if (ai->ai_irq != NULL)
101 bus_release_resource(dev, SYS_RES_IRQ, ai->ai_rid, ai->ai_irq);
102 bus_delete_resource(dev, SYS_RES_IRQ, ai->ai_rid);
103 free(ai, M_ACPIINTR);
111 struct acpi_intr *ai, *ap;
122 ai = malloc(sizeof(*ai), M_ACPIINTR, M_WAITOK | M_ZERO);
129 free(ai, M_ACPIINTR);
132 if (ai->ai_rid <= ap->ai_rid)
133 ai->ai_rid = ap->ai_rid + 1;
135 ai->ai_number = InterruptNumber;
136 ai->ai_handler = ServiceRoutine;
137 ai->ai_context = Context;
138 SLIST_INSERT_HEAD(&acpi_intr_list, ai, ai_link);
154 bus_set_resource(sc->acpi_dev, SYS_RES_IRQ, ai->ai_rid,
156 ai->ai_irq = bus_alloc_resource_any(sc->acpi_dev, SYS_RES_IRQ,
157 &ai->ai_rid, RF_SHAREABLE | RF_ACTIVE);
158 if (ai->ai_irq == NULL) {
162 if (bus_setup_intr(sc->acpi_dev, ai->ai_irq,
163 INTR_TYPE_MISC | INTR_MPSAFE, acpi_intr_handler, NULL, ai,
164 &ai->ai_handle) != 0) {
172 SLIST_REMOVE(&acpi_intr_list, ai, acpi_intr, ai_link);
174 acpi_intr_destroy(sc->acpi_dev, ai);
183 struct acpi_intr *ai;
194 SLIST_FOREACH(ai, &acpi_intr_list, ai_link)
195 if (InterruptNumber == ai->ai_number) {
196 if (ServiceRoutine != ai->ai_handler) {
200 SLIST_REMOVE(&acpi_intr_list, ai, acpi_intr, ai_link);
204 if (ai == NULL)
206 acpi_intr_destroy(sc->acpi_dev, ai);