Understanding interrupt controllers and interrupt multiplexing
Having a single interrupt from the CPU is usually not enough. Most systems have tens or hundreds of them. Now comes interrupt controller, which allows them to be multiplexed. Very often, architecture or platform-specific implementations offer specific facilities, such as the following:
- Masking/unmasking individual interrupts
- Setting priorities
- SMP affinity
- Exotic features, such as wake-up interrupts
IRQ management and interrupt controller drivers both rely on the concept of the IRQ domain, which is built on top of the following structures:
struct irq_chip
: This is the interrupt controller data structure. This structure also implements a set of methods that allow to drive the interrupt controller and that are directly called by core IRQ code.struct irqdomain
: This provides the following options:- A pointer to the interrupt controller's firmware node (
fwnode
) - A function for converting...
- A pointer to the interrupt controller's firmware node (