On Tue, Jan 13, 2026 at 11:45 AM Tomeu Vizoso tomeu@tomeuvizoso.net wrote:
Some SoCs from Texas Instruments contain DSPs that can be used for general compute tasks.
This driver provides a drm/accel UABI to userspace for submitting jobs to the DSP cores and managing the input, output and intermediate memory.
Signed-off-by: Tomeu Vizoso tomeu@tomeuvizoso.net
Documentation/accel/thames/index.rst | 28 +++++ MAINTAINERS | 9 ++ drivers/accel/Kconfig | 1 + drivers/accel/Makefile | 3 +- drivers/accel/thames/Kconfig | 26 +++++ drivers/accel/thames/Makefile | 9 ++ drivers/accel/thames/thames_core.c | 155 ++++++++++++++++++++++++++ drivers/accel/thames/thames_core.h | 53 +++++++++ drivers/accel/thames/thames_device.c | 93 ++++++++++++++++ drivers/accel/thames/thames_device.h | 46 ++++++++ drivers/accel/thames/thames_drv.c | 156 +++++++++++++++++++++++++++ drivers/accel/thames/thames_drv.h | 21 ++++ drivers/accel/thames/thames_ipc.h | 204 +++++++++++++++++++++++++++++++++++ drivers/accel/thames/thames_rpmsg.c | 155 ++++++++++++++++++++++++++ drivers/accel/thames/thames_rpmsg.h | 27 +++++ 15 files changed, 985 insertions(+), 1 deletion(-)
diff --git a/Documentation/accel/thames/index.rst b/Documentation/accel/thames/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..ca8391031f226f7ef1dc210a356c86acbe126c6f --- /dev/null +++ b/Documentation/accel/thames/index.rst @@ -0,0 +1,28 @@ +.. SPDX-License-Identifier: GPL-2.0-only
+============================================================
- accel/thames Driver for the C7x DSPs from Texas Instruments
+============================================================
+The accel/thames driver supports the C7x DSPs inside some Texas Instruments SoCs +such as the J722S. These can be used as accelerators for various workloads, +including machine learning inference.
+This driver controls the power state of the hardware via :doc:`remoteproc </staging/remoteproc>` +and communicates with the firmware running on the DSP via :doc:`rpmsg_virtio </staging/rpmsg_virtio>`. +The kernel driver itself allocates buffers, manages contexts, and submits jobs +to the DSP firmware. Buffers are mapped by the DSP itself using its MMU, +providing memory isolation among different clients.
+The source code for the firmware running on the DSP is available at: +https://gitlab.freedesktop.org/tomeu/thames_firmware/.
+Everything else is done in userspace, as a Gallium driver (also called thames) +that is part of the Mesa3D project: https://docs.mesa3d.org/teflon.html
+If there is more than one core that advertises the same rpmsg_virtio service +name, the driver will load balance jobs between them with drm-gpu-scheduler.
+Hardware currently supported:
+* J722S diff --git a/MAINTAINERS b/MAINTAINERS index dc731d37c8feeff25613c59fe9c929927dadaa7e..a3fc809c797269d0792dfe5202cc1b49f6ff57e9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7731,6 +7731,15 @@ F: Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.yaml F: drivers/accel/rocket/ F: include/uapi/drm/rocket_accel.h
+DRM ACCEL DRIVER FOR TI C7x DSPS +M: Tomeu Vizoso tomeu@tomeuvizoso.net +L: dri-devel@lists.freedesktop.org +S: Supported +T: git https://gitlab.freedesktop.org/drm/misc/kernel.git +F: Documentation/accel/thames/ +F: drivers/accel/thames/ +F: include/uapi/drm/thames_accel.h
Oh where is this "thames_accel.h" ? ;)
2026-01-13T18:16:11.881084Z 01E drivers/accel/thames/thames_drv.c:8:10: fatal error: drm/thames_accel.h: No such file or directory 2026-01-13T18:16:11.881086Z 01E 8 | #include <drm/thames_accel.h> 2026-01-13T18:16:11.881087Z 01E | ^~~~~~~~~~~~~~~~~~~~ 2026-01-13T18:16:11.881115Z 01E compilation terminated. 2026-01-13T18:16:11.884552Z 01E make[8]: *** [scripts/Makefile.build:287: drivers/accel/thames/thames_drv.o] Error 1 2026-01-13T18:16:11.884694Z 01E make[7]: *** [scripts/Makefile.build:544: drivers/accel/thames] Error 2 2026-01-13T18:16:11.884926Z 01E make[6]: *** [scripts/Makefile.build:544: drivers/accel] Error 2 2026-01-13T18:16:11.884976Z 01E make[6]: *** Waiting for unfinished jobs....
$ find . | grep thames_accel.h $ grep -R "thames_accel.h" ./* ./drivers/accel/thames/Kconfig: include/uapi/drm/thames_accel.h and is used by the Thames userspace ./drivers/accel/thames/thames_job.c:#include <drm/thames_accel.h> ./drivers/accel/thames/thames_drv.c:#include <drm/thames_accel.h> ./drivers/accel/thames/thames_gem.c:#include <drm/thames_accel.h> ./MAINTAINERS:F: include/uapi/drm/thames_accel.h
Regards,