What is the point of having a level-based interrupts?
Level-based interrupts can safely be shared and cascaded easily and reliably; by contrast, reliably sharing edge-triggered interrupts is often difficult and sometimes impossible.

When using level-based interrupts, an interrupt handler can simply ask each possible interrupt source in turn "Do you need attention", and service it if so.  Once it's done, the handler can return.  If an interrupt source which was polled early in the sequence decides it needs attention while a later source is being serviced, the processor will notice that the IRQ pin is still active and re-trigger the interrupt handler, thus allowing the late-arriving interrupt to be serviced.

When using non-cascaded edge-triggered interrupts, things get more complicated.  After an interrupt handler has gone through and serviced everyone, it must then go through and re-poll everyone to find out if a previously-polled device has decided that it needs service.  Only after every device has consecutively reported that it does not need service would it be safe for the interrupt to return.  Note that if devices that want service keep their "need service" indication active, returning from an interrupt handler at a time when a device needs service may render that interrupt permanently useless.

It may be useful for an I/O pin to have some edge-capture logic which, when an edge arrives, sets a latch and outputs a "need-service" indication until software clears it.  Such a thing might appear on the very front end as an edge-sensitive interrupt.  At any downstream point, however, it's better to have interrupt logic demand that an interrupt be serviced at all times when any upstream point is not satisfied.