[PATCH RFC 0/4] Support multi-channel IRQs in stmmac platform drivers
Andrew Lunn
andrew at lunn.ch
Sun Dec 14 14:33:29 PST 2025
On Sun, Dec 14, 2025 at 11:15:36PM +0100, Jan Petrous via B4 Relay wrote:
> The stmmac core supports two interrupt modes, controlled by the
> flag STMMAC_FLAG_MULTI_MSI_EN.
> - When the flag is set, the driver uses multi-channel IRQ mode (multi-IRQ).
> - Otherwise, a single IRQ line is requested:
>
> static int stmmac_request_irq(struct net_device *dev)
> {
> /* Request the IRQ lines */
> if (priv->plat->flags & STMMAC_FLAG_MULTI_MSI_EN)
> ret = stmmac_request_irq_multi_msi(dev);
> else
> ret = stmmac_request_irq_single(dev);
> }
>
> At present, only PCI drivers (Intel and Loongson) make use of the multi-IRQ
> mode. This concept can be extended to DT-based embedded glue drivers
> (dwmac-xxx.c).
>
> This series adds support for reading per-channel IRQs from the DT node and
> reuses the existing STMMAC_FLAG_MULTI_MSI_EN flag to enable multi-IRQ
> operation in platform drivers.
>
> NXP S32G2/S32G3/S32R SoCs integrate the DWMAC IP with multi-channel
> interrupt support. The dwmac-s32.c driver change is provided as an example of
> enabling multi-IRQ mode for non-PCI drivers.
>
> An open question remains: should platform drivers support both single-IRQ
> and multi-IRQ modes, or should multi-IRQ be required with the DT node
> specifying all channel interrupts? The current RFC implementation follows
> the latter approach — dwmac-s32 requires IRQs to be defined for all
> channels.
You need to consider backwards compatibility. Will an old DT blob
continue to work after this change?
Andrew
More information about the linux-arm-kernel
mailing list