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...

Current status:

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

#865646 Stretch sid

3. Create a mali-midgard-dkms package for Debian kernel v4.9

Done

mali-midgard.git mali-midgard-dkms in sid package tracker

4. Create a user-space non-free package for RK3288 SoC (Mali-T760 armhf)

In progress

http://git.linaro.org/people/wookey/mali/mali-drivers.git/

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:

  1. Merge the device tree GPU node for the Juno chip in mainline
  2. Update the mali-midgard-dkms package if needed so that it builds for arm64
  3. Add backport from step 1. to the Debian 4.9 kernel package
  4. 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...).