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 Mali technology can be found on Wikipedia.

The first phase is to get something that works on one platform, the original Firefly board (rk3288 SoC, ARMv7 Cortex-A17). Current status:

Step

Status

Resources

1. Merge the device tree patches into mainline kernel

Done

rockchip for v4.13 now merged in v4.13-rc1

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 to load automatically on Firefly: regulator driver fix for mainline

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