diff options
-rw-r--r-- | sys/powerpc/powermac/macio.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/powerpc/powermac/macio.c b/sys/powerpc/powermac/macio.c index f41a66c..c2b4a8d 100644 --- a/sys/powerpc/powermac/macio.c +++ b/sys/powerpc/powermac/macio.c @@ -444,6 +444,22 @@ macio_alloc_resource(device_t bus, device_t child, int type, int *rid, break; case SYS_RES_IRQ: + rle = resource_list_find(&dinfo->mdi_resources, SYS_RES_IRQ, + *rid); + if (rle == NULL) { + if (dinfo->mdi_ninterrupts >= 5) { + device_printf(bus, + "%s has more than 5 interrupts\n", + device_get_nameunit(child)); + return (NULL); + } + resource_list_add(&dinfo->mdi_resources, SYS_RES_IRQ, + dinfo->mdi_ninterrupts, start, start, 1); + + dinfo->mdi_interrupts[dinfo->mdi_ninterrupts] = start; + dinfo->mdi_ninterrupts++; + } + return (resource_list_alloc(&dinfo->mdi_resources, bus, child, type, rid, start, end, count, flags)); break; |