MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ciu_setup_intr

Function ciu_setup_intr

freebsd/mips/cavium/ciu.c:206–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204}
205
206static int
207ciu_setup_intr(device_t bus, device_t child, struct resource *res, int flags,
208 driver_filter_t *filter, driver_intr_t *intr, void *arg,
209 void **cookiep)
210{
211 struct intr_event *event, **eventp;
212 void (*mask_func)(void *);
213 void (*unmask_func)(void *);
214 int (*bind_func)(void *, int);
215 mips_intrcnt_t intrcnt;
216 int error;
217 int irq;
218
219 irq = rman_get_start(res);
220 if (irq <= CIU_IRQ_EN0_END) {
221 eventp = &ciu_en0_intr_events[irq - CIU_IRQ_EN0_BEGIN];
222 intrcnt = ciu_en0_intrcnt[irq - CIU_IRQ_EN0_BEGIN];
223 mask_func = ciu_en0_intr_mask;
224 unmask_func = ciu_en0_intr_unmask;
225#ifdef SMP
226 bind_func = ciu_en0_intr_bind;
227#endif
228 } else {
229 eventp = &ciu_en1_intr_events[irq - CIU_IRQ_EN1_BEGIN];
230 intrcnt = ciu_en1_intrcnt[irq - CIU_IRQ_EN1_BEGIN];
231 mask_func = ciu_en1_intr_mask;
232 unmask_func = ciu_en1_intr_unmask;
233#ifdef SMP
234 bind_func = ciu_en1_intr_bind;
235#endif
236 }
237#if !defined(SMP)
238 bind_func = NULL;
239#endif
240
241 if ((event = *eventp) == NULL) {
242 error = intr_event_create(eventp, (void *)(uintptr_t)irq, 0,
243 irq, mask_func, unmask_func, NULL, bind_func, "int%d", irq);
244 if (error != 0)
245 return (error);
246
247 event = *eventp;
248
249 unmask_func((void *)(uintptr_t)irq);
250 }
251
252 intr_event_add_handler(event, device_get_nameunit(child),
253 filter, intr, arg, intr_priority(flags), flags, cookiep);
254
255 mips_intrcnt_setname(intrcnt, event->ie_fullname);
256
257 return (0);
258}
259
260static int
261ciu_teardown_intr(device_t bus, device_t child, struct resource *res,

Callers

nothing calls this directly

Calls 6

rman_get_startFunction · 0.85
intr_event_createFunction · 0.85
intr_event_add_handlerFunction · 0.85
device_get_nameunitFunction · 0.85
intr_priorityFunction · 0.85
mips_intrcnt_setnameFunction · 0.50

Tested by

no test coverage detected