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

#865646 Stretch sid

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

Done

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

4. Create a user-space non-free r12p0 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...).