[PATCH v3 00/10] New DRM accel driver for Rockchip's RKNN NPU

Tomeu Vizoso
2025-05-16T16:54:05Z

This series adds a new driver for the NPU that Rockchip includes in its
newer SoCs, developed by them on the NVDLA base.

In its current form, it supports the specific NPU in the RK3588 SoC.

The userspace driver is part of Mesa and an initial draft can be found at:

https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29698

Signed-off-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
---
Changes in v3:
- Reference in the device tree only the register blocks that are
actually used.
- Several style and robustness fixes suggested in the mailing list.
- Added patches from Nicolas Frattaroli that add support to the NPU for
the Rock 5B board.
- Link to v2: https://lore.kernel.org/r/20250225-6-10-rocket-v2-0-d4dbcfafc141@tomeuvizoso.net

Changes in v2:
- Drop patch adding the rk3588 compatible to rockchip-iommu (Sebastian Reichel)
- Drop patch adding support for multiple power domains to rockchip-iommu (Sebastian Reichel)
- Link to v1: https://lore.kernel.org/r/20240612-6-10-rocket-v1-0-060e48eea250@tomeuvizoso.net

---
Nicolas Frattaroli (2):
arm64: dts: rockchip: add pd_npu label for RK3588 power domains
arm64: dts: rockchip: enable NPU on ROCK 5B

Tomeu Vizoso (8):
dt-bindings: npu: rockchip,rknn: Add bindings
arm64: dts: rockchip: Add nodes for NPU and its MMU to rk3588s
arm64: dts: rockchip: Enable the NPU on quartzpro64
accel/rocket: Add registers header
accel/rocket: Add a new driver for Rockchip's NPU
accel/rocket: Add IOCTL for BO creation
accel/rocket: Add job submission IOCTL
accel/rocket: Add IOCTLs for synchronizing memory accesses

Documentation/accel/index.rst | 1 +
Documentation/accel/rocket/index.rst | 25 +
.../bindings/npu/rockchip,rknn-core.yaml | 162 +
MAINTAINERS | 10 +
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 87 +-
.../arm64/boot/dts/rockchip/rk3588-quartzpro64.dts | 30 +
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 56 +
drivers/accel/Kconfig | 1 +
drivers/accel/Makefile | 1 +
drivers/accel/rocket/Kconfig | 25 +
drivers/accel/rocket/Makefile | 10 +
drivers/accel/rocket/rocket_core.c | 103 +
drivers/accel/rocket/rocket_core.h | 59 +
drivers/accel/rocket/rocket_device.c | 45 +
drivers/accel/rocket/rocket_device.h | 31 +
drivers/accel/rocket/rocket_drv.c | 337 ++
drivers/accel/rocket/rocket_drv.h | 17 +
drivers/accel/rocket/rocket_gem.c | 211 +
drivers/accel/rocket/rocket_gem.h | 31 +
drivers/accel/rocket/rocket_job.c | 723 ++++
drivers/accel/rocket/rocket_job.h | 50 +
drivers/accel/rocket/rocket_registers.h | 4425 ++++++++++++++++++++
include/uapi/drm/rocket_accel.h | 145 +
23 files changed, 6584 insertions(+), 1 deletion(-)
---
base-commit: 46bfbcd135a6df00c49cf043bf2c9c9387bc882d
change-id: 20240612-6-10-rocket-9316defc14c7

Best regards,
--
Tomeu Vizoso <tomeu@tomeuvizoso.net>