ARM Mali Midgard GPU driver packages in Debian (work in progress)
The ARM Mali Midgard GPU series include all the devices from Mali-T604 to Mali-T880.
More general information about the ARM Mali technology can be found on Wikipedia.
First phase: end-to-end support on a single platform
The first phase is to get something that works on one platform. The original Firefly board (rk3288 SoC, ARMv7 Cortex-A17, Mali-T760 MP4) has been chosen for this purpose as user-space binary drivers are available for this GPU with a range of APIs and graphical windowing systems (X11, Wayland/DRM, GLES 3.1, OpenCL). It's also a platform of choice to cover the ARMv7 architecture. Other devices are based on the same RK3288 SoC (ASUS C201P Chromebook); the same drivers should in principle work with them, depending on the status of clock and regulator drivers, device trees...
Step |
Status |
Resources |
1. Merge the device tree patches into mainline kernel |
Done |
cover dt-bindings rk3288 merged in v4.13 |
2. Add backports for patches in step 1. to the Debian 4.9 and 4.11 kernel packages |
Done |
|
3. Create a mali-midgard-dkms r16p0 package for Debian kernel v4.9 |
Done |
|
4. Create a user-space non-free r12p0 package for RK3288 SoC (Mali-T760 armhf) |
In progress |
Mainline kernel branch with Mali Midgard driver, tested on Firefly: linux-4.13-rc6-mali-firefly
Related bug fix, to get the GPU regulator driver module to load automatically during boot on Firefly: regulator driver fix for mainline
Second phase: arm64 platform
Then adding an arm64 platform such as Juno would make sense as a second phase:
- Merge the device tree GPU node for the Juno chip in mainline
- Update the mali-midgard-dkms package if needed so that it builds for arm64
- Add backport from step 1. to the Debian 4.9 kernel package
- Create a user-space non-free package for the Juno SoC (Mali-T624 arm64)
Following that, new platforms and new versions of the kernel and user-space drivers can be added.
placeholder documentation
Linux kernel patches
The only kernel patches required are in the device tree. A patch is needed on each platform type to describe the GPU hardware properties.
Kernel module (dkms)
This will be provided by the mali-midgard-dkms package. This single out-of-tree Linux kernel driver supports all the Midgard GPU device types.
User-space drivers (non-free)
These will depend on the available binary user-space libraries. Each binary targets a specific GPU type, CPU architecture, display sub-system, windowing system (X11, Wayland, ...) and graphics or compute APIs (GLES, Vulkan, OpenCL...).