NXP/Freescale FlexCAN controller for i.MX and S32 SoCs
FlexCAN is the CAN and CAN FD bus controller built into many NXP and former Freescale microcontrollers and application processors, including the i.MX, Vybrid, LayerScape, and S32 automotive families. It connects Linux systems to vehicle networks, factory floor equipment, and other embedded controllers that speak CAN, and it is still appearing in NXP silicon shipping in 2025.
recommendation
It should stay because FlexCAN is the only in-tree driver for an NXP IP block that ships in current automotive and industrial SoCs like the i.MX95 and S32G2/S32G3, and upstream work in 2024 added wakeup support and new SoC enablement. There is no replacement to migrate to and the hardware is still sold new in 2025.
repository signals
sources
- spinics.net
July 23, 2024 patch series adds i.MX95 wakeup support to flexcan, showing active upstream enablement for a new NXP SoC generation.
- lkml.org
November 25, 2024 patch series adds FlexCAN support for NXP S32G2/S32G3 SoCs, indicating ongoing upstream expansion rather than retirement.
- nxp.com
NXP lists the i.MX95 family as active/current and its product details include 5x CAN FD, matching ongoing FlexCAN-backed new-platform deployment.
- nxp.com
NXP lists S32G2 as active/current, with Linux BSP support and vehicle-networking positioning, supporting continued real-world FlexCAN deployments.
codex reasoning notes (technical)
Real driver directory confirmed by local code inspection with exec_command: platform driver entry, OF match table, and multiple SoC compatibles in flexcan-core.c. Upstream activity checked via exec_command git log on the directory: multiple substantive 2024-2025 fixes/features, including PM work and new SoC support; no removal-oriented history surfaced. URLs were obtained by web search: spinics/LKML patch threads show active feature work for i.MX95 and S32G2/S32G3, and NXP product pages show the IP remains present in active i.MX95 and S32G2 products sold for industrial/automotive use. No natural in-tree replacement exists because this is the vendor-specific driver for the FlexCAN IP block.