Back in 2024, we noted that the open-source driver for RK3588’s NPU by Tomeu Vizoso delivered decent performance for object detection. Since then, good progress has been made, and it’s now known as the Rocket driver in mainline Linux.However, the Rockchip RK3576 SoC is not supported by the Rocket driver in mainline yet, despite sharing a similar NPU. The good news is that Ga Hing Woo has been working on mainline Linux support for the Rockchip RK3576 NPU using the Rocket driver stack and has tested it on the Radxa ROCK 4D running Linux 7.1-rc5. This required some serious reverse-engineering work due to hidden registers not documented in the TRM.Ga Hing Woo (also written as Jiaxing Hu) sent us an email explaining some of the challenges:Single int8 convolution now comes out byte-exact against a CPU reference on the open stack. Getting there meant reverse-engineering the compute registers, which the TRM leaves out completely (searching “CNA”, “CMAC” or “convolution” gives zero hits across all 4381 pages).

Chained layers still stall, and I spent the time to work out why rather than guess. The CNA/CORE/DPU executer bit 16 never engages on chained tasks, which traces down to a sub-MMIO sequencer state the driver can’t see. So it’s a clean negative result, not a fix I’m claiming.