[PATCH v3 0/2] drm: Add DRM driver for GlandaGPU (VHDL soft-IP GPU)
From: Leander Kieweg <hidden>
Date: 2026-08-24 19:54:35
Also in:
dri-devel
This is v3 of the GlandaGPU DRM driver series [1][2]. It addresses review feedback from Krzysztof Kozlowski and the automated review bot on v2. GlandaGPU is a small VHDL soft-IP 2D display controller, currently targeting a Terasic DE10-Standard (Cyclone V SoC). This series has been tested against a QEMU digital twin and on real hardware. Hardware/VHDL: https://github.com/stiangglanda/GlandaGPU QEMU fork: https://github.com/stiangglanda/qemu-glandagpu Userspace tests: https://github.com/stiangglanda/GlandaGPU-userspace-tests Changes since v2: dt-bindings: - Switch from the "glanda," vendor prefix to a personal prefix, "kieweg," since this is a personal hobby project, not backed by an organization. Update vendor-prefixes.yaml, the binding file name, and $id accordingly (Krzysztof Kozlowski). driver core: - Fix ignored return value of drm_mode_config_init(). - Fix hardware interrupts being left enabled if drm_dev_register() fails, which could lead to an unhandled interrupt storm. - Add resource size validation before I/O memory mapping, closing an out-of-bounds mapping/write. - Fix userspace atomic commits hanging when the driver falls back to polling mode (no IRQ), because vblank events were armed but never signaled. - Enable only the INT_VSYNC interrupt. INT_DONE had been enabled unnecessarily which could cause an interrupt storm. - Fix pixel readback to treat framebuffer data as little-endian explicitly, which broke color conversion on big-endian hosts. - Add missing Kconfig dependencies for DRM_GLANDA. - Use platform_get_irq_optional() instead of platform_get_irq() for the optional IRQ, avoiding log spam. - Drop drm_info()/drm_warn() messages on success paths, drop redundant "end of table" comments, and fix the of_match_table indentation (Krzysztof Kozlowski). On the question of what this brings to the community beyond myself: I don't have an existing user base, and I want to be upfront about that. I built this to learn how a DRM/KMS driver is put together end to end, from VHDL soft-IP to kernel driver. What it does provide is a small, complete reference for exactly that path, plus a QEMU digital twin that lets anyone poke at a GlandaGPU-compatible device without owning the physical board. I raised this same concern during the RFC review, and Thomas Zimmermann's answer at the time was that we already carry a driver for a hobbyist-built RasPi USB display, so being a hobby project is not a blocker in itself. I'd rather have this maintained in-tree, with review, than as an out-of-tree module nobody ever looks at. [1] v1: https://lore.kernel.org/dri-devel/20260714101146.200416-1-kieweg.leander@gmail.com/T/#t (local) [2] v2: https://lore.kernel.org/dri-devel/20260730173643.256052-1-kieweg.leander@gmail.com/T/#t (local) Leander Kieweg (2): dt-bindings: display: Add GlandaGPU binding drm/glanda: Add initial DRM driver for GlandaGPU .../bindings/display/kieweg,gpu.yaml | 55 ++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 6 + drivers/gpu/drm/tiny/Kconfig | 11 + drivers/gpu/drm/tiny/Makefile | 1 + drivers/gpu/drm/tiny/glandagpu.c | 587 ++++++++++++++++++ 6 files changed, 662 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/kieweg,gpu.yaml create mode 100644 drivers/gpu/drm/tiny/glandagpu.c -- 2.43.0