]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
accel: Add Arm Ethos-U NPU driver
authorRob Herring (Arm) <robh@kernel.org>
Mon, 20 Oct 2025 19:33:28 +0000 (14:33 -0500)
committerRob Herring (Arm) <robh@kernel.org>
Fri, 24 Oct 2025 20:07:39 +0000 (15:07 -0500)
commit5a5e9c0228e613f0ef2a58b9782d7c0ea8f1e58b
tree959da7738056d5bb49f25158ded0be5a0e30b1b7
parentb3e29b6e70a35ab8571043a6ea8aa870e5cf2a98
accel: Add Arm Ethos-U NPU driver

Add a driver for Arm Ethos-U65/U85 NPUs. The Ethos-U NPU has a
relatively simple interface with single command stream to describe
buffers, operation settings, and network operations. It supports up to 8
memory regions (though no h/w bounds on a region). The Ethos NPUs
are designed to use an SRAM for scratch memory. Region 2 is reserved
for SRAM (like the downstream driver stack and compiler). Userspace
doesn't need access to the SRAM.

The h/w has no MMU nor external IOMMU and is a DMA engine which can
read and write anywhere in memory without h/w bounds checks. The user
submitted command streams must be validated against the bounds of the
GEM BOs. This is similar to the VC4 design which validates shaders.

The job submit is based on the rocket driver for the Rockchip NPU
utilizing the GPU scheduler. It is simpler as there's only 1 core rather
than 3.

Tested on i.MX93 platform (U65) and FVP (U85) with Mesa Teflon
support.

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20251020-ethos-v6-2-ecebc383c4b7@kernel.org
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
13 files changed:
MAINTAINERS
drivers/accel/Kconfig
drivers/accel/Makefile
drivers/accel/ethosu/Kconfig [new file with mode: 0644]
drivers/accel/ethosu/Makefile [new file with mode: 0644]
drivers/accel/ethosu/ethosu_device.h [new file with mode: 0644]
drivers/accel/ethosu/ethosu_drv.c [new file with mode: 0644]
drivers/accel/ethosu/ethosu_drv.h [new file with mode: 0644]
drivers/accel/ethosu/ethosu_gem.c [new file with mode: 0644]
drivers/accel/ethosu/ethosu_gem.h [new file with mode: 0644]
drivers/accel/ethosu/ethosu_job.c [new file with mode: 0644]
drivers/accel/ethosu/ethosu_job.h [new file with mode: 0644]
include/uapi/drm/ethosu_accel.h [new file with mode: 0644]