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 <to...@tomeuvizoso.net> --- Changes in v8: - Kconfig improvements - Removed notion of top core, all cores are equivalent now - Explicitly allocate DMA addresses - Sync BOs always in both directions - UAPI improvements - Simplified job scheduling - Misc. style improvements - Link to v7: https://lore.kernel.org/r/20250606-6-10-rocket-v7-0-dc16cfe6f...@tomeuvizoso.net Changes in v7: - Actually enable process isolation by allocating its own IOMMU domain to each DRM client. - Link to v6: https://lore.kernel.org/r/20250604-6-10-rocket-v6-0-237ac75dd...@tomeuvizoso.net Changes in v6: - Make all cores depend on pclk and npu clocks - Fix BO sync direction logic - Misc. cleanups - Link to v5: https://lore.kernel.org/r/20250520-6-10-rocket-v5-0-18c9ca0fc...@tomeuvizoso.net Changes in v5: - Use bulk clk API - Rename bindings file - Syntax improvement to bindings - Link to v4: https://lore.kernel.org/r/20250519-6-10-rocket-v4-0-d6dff6b4c...@tomeuvizoso.net Changes in v4: - Several fixes to DT bindings. - Link to v3: https://lore.kernel.org/r/20250516-6-10-rocket-v3-0-7051ac922...@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-d4dbcfafc...@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-060e48eea...@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): 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 dt-bindings: npu: rockchip,rknn: Add bindings arm64: dts: rockchip: Add nodes for NPU and its MMU to rk3588-base arm64: dts: rockchip: Enable the NPU on quartzpro64 Documentation/accel/index.rst | 1 + Documentation/accel/rocket/index.rst | 19 + .../bindings/npu/rockchip,rk3588-rknn-core.yaml | 112 + MAINTAINERS | 10 + arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 93 +- .../arm64/boot/dts/rockchip/rk3588-quartzpro64.dts | 30 + arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtsi | 57 + drivers/accel/Kconfig | 1 + drivers/accel/Makefile | 1 + drivers/accel/rocket/Kconfig | 24 + drivers/accel/rocket/Makefile | 10 + drivers/accel/rocket/rocket_core.c | 110 + drivers/accel/rocket/rocket_core.h | 64 + drivers/accel/rocket/rocket_device.c | 60 + drivers/accel/rocket/rocket_device.h | 30 + drivers/accel/rocket/rocket_drv.c | 290 ++ drivers/accel/rocket/rocket_drv.h | 30 + drivers/accel/rocket/rocket_gem.c | 181 + drivers/accel/rocket/rocket_gem.h | 34 + drivers/accel/rocket/rocket_job.c | 636 +++ drivers/accel/rocket/rocket_job.h | 52 + drivers/accel/rocket/rocket_registers.h | 4404 ++++++++++++++++++++ include/uapi/drm/rocket_accel.h | 142 + 23 files changed, 6390 insertions(+), 1 deletion(-) --- base-commit: 156faa3ffe21347203b35a3edb6d2bcb663f429b change-id: 20240612-6-10-rocket-9316defc14c7 Best regards, -- Tomeu Vizoso <to...@tomeuvizoso.net>