@@ -222,6 +222,24 @@ Notes:
NOTE: this variable must be set before any include/require in the
machine configuration file
+ Neural Processing Unit (NPU)
+
+ The Aarch64 RK35xx SoCs have a Neural Processing Unit (NPU) available.
+ It is typically named by Rockchip as RKNPU/RKNN but upstream has decided
+ to use Rocket instead. At the time of writing (Linux kernel v6.19), only
+ RK3588's NPU is supported upstream.
+
+ This NPU is an AI hardware-accelerator. You can enable its support by
+ setting:
+
+ ENABLE_UPSTREAM_RKNPU = "1"
+
+ This requires a kernel driver (CONFIG_DRM_ACCEL_ROCKET, v6.18+),
+ RKNN Device Tree nodes
+ (e.g. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=640366d644b1e282771a09c72be37162b6eda438)
+ and a userspace driver (selected by setting teflon delegate meson option
+ and rocket gallium driver).
+
U-Boot Environment:
------------------
In order to configure U-Boot to be able to store its environment into the
@@ -10,5 +10,9 @@ MALI_DRIVER:rk3308 = ""
PACKAGECONFIG:append:rockchip = " ${@bb.utils.filter('MALI_DRIVER', 'lima panfrost', d)}"
PACKAGECONFIG:append:rockchip = "${@bb.utils.contains('MALI_DRIVER', 'panfrost', ' libclc', '', d)}"
+# Enable teflon for upstream RKNPU/rocket support
+# Requires CONFIG_DRM_ACCEL_ROCKET in Linux kernel to actually work
+PACKAGECONFIG:append:rk3588s = "${@' teflon rocket' if bb.utils.to_boolean(d.getVar('ENABLE_UPSTREAM_RKNPU'), False) else ''}"
+
# Mali Gen10 (Valhall, supported by Panthor) requires a firmware blob
RRECOMMENDS:mesa-megadriver:append:rk3588s = " linux-firmware-mali-csffw-arch108"
@@ -36,3 +36,4 @@ SRC_URI:append:nanopi-r4s = " file://realtek-r8169.cfg"
KERNEL_FEATURES:append:rockchip:arm = " bsp/rockchip/remove-non-rockchip-arch-arm.scc"
KERNEL_FEATURES:append:rockchip:aarch64 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
+KERNEL_FEATURES:append:rockchip = "${@' bsp/rockchip/rocket-npu.scc' if bb.utils.to_boolean(d.getVar('ENABLE_UPSTREAM_RKNPU'), False) else ''}"
new file mode 100644
@@ -0,0 +1,2 @@
+CONFIG_DRM_ACCEL=y
+CONFIG_DRM_ACCEL_ROCKET=m
new file mode 100644
@@ -0,0 +1 @@
+kconf hardware rocket-npu.cfg