Linux for Amlogic Meson

Welcome to the wiki for the growing Linux development community around Amlogic Meson SoCs.

This community is focused around getting Meson SoCs well-supported by mainline Linux and mainline Linux distributions.
Some work has been done to get Meson SoCs well-supported by mainline U-Boot as well, to provide Single-Board-Computers an U-Boot alternative to the heavily patched outdated version maintained by Amlogic.

Finally suitable for experimented end users - but beware of bugs !

As we have a lot of work to do before we reach our goals, this wiki is not really suitable for end users yet - you will need a basic knowledge of Linux cross-compiling for ARM and embedded systems setup to use the information in this wiki towards using the latest linux Mainline kernel for supported Amlogic SoCs.

Instead, we use this wiki as an information archive for those developers who are working collaboratively to bring Amlogic support to the existing Linux/open-source codebases and communities.

You can find mainline Linux for Amlogic SoCs in these (non-exclusive) distributions list :

Debian Testing (https://wiki.debian.org/DebianTesting) Uses a fairly recent Linux release with most of the needed Linux config options to run on Amlogic SoCs, you will be able to use EFI boot or you will need to setup the boot yourself

OpenSUSE Tumbletweed (https://en.opensuse.org/HCL:LibreTech-CC) Uses a fairly recent Linux release with most of the needed Linux config options to run on Amlogic SoCs, you will be able to use EFI boot or you will need to setup the boot yourself as described in the Wiki

Target hardware

Current upstreaming efforts are focused around the S905/S905D/S905X/S805X/S905W/S912 SoCs (GXBB/GXL/GXM from the Meson GX family). Secondarily there are also some efforts around the S805 SoC (Meson8b), and the AML8726-MX (Meson6) since they are widespread in many consumer products.
Effort to support the new Amlogic AXG A113d and G12A S905X2 is currently ongoing.

Stalled WiP

convert existing devices to use the PWM LED driver to allow dimming the LEDs (Martin Blumenstingl / xdarklight) (last patches)

TODO

Support more boards (Amlogic based retail products should have PCB holes to enable Serial console with a simple USB to Serial TTL adapter, i.e. Sparkfun USB to Serial TTL cable)

USB OTG for Meson8/Meson8b/GXBB (dwc2 does not get the OTG interrupts, instead Amlogic's kernel code polls some USB PHY registers to detect the mode. maybe this could be solved by implementing extcon support in the USB2 PHY and dwc2 (based on this RFC))

USB OTG for GXL/GXM (dwc3 is used for host-mode, dwc2 for device-mode and the second USB2 PHY switches the mode depending on what the USB3 PHY OTG detection logic tells it to) experimental code

Find a way to cap the SCPI cpufreq max frequency to re-enable DVFS on Odroid-C2

Meson DRM Features

Cursor Plane

More formats support for Primary Plane

ColorKey as DRM Attribute

CRTC Color correction attributes

CVBS Color optimizations as attributes

LVDS and LCD output support on supported boards

Add Display support for pre-GX SoCs

Add HDMI support for pre-GX SoCs, Unknown HDMI Controller IP

U-Boot Development Status

Amlogic SoCs support is done via full Driver Model support with default boot scheme including EFI boot support.

Mainline U-Boot is limited to be used with Linux 4.16+, where the Power Domain handling has been added.

U-Boot mainlining progress

v2019.01:

Add support for AXG SoC family

Add support for the S400 board

Add support for the SPIFC Controller

v2018.11

Add preliminary support for VPU Power Domain

Support for Khadas VIM2

v2018.09

Support for FriendlyElec Nanopi-k2

Fix P212 Ethernet setup

v2018.07

Support for GXBB, GXL & GXM SAR ADC

Device Tree synchronized with 4.16

Amlogic code cleanup

Add small Amlogic GX Clock driver

Enable of USB support for Libretech-CC Enabled for P212 and Khadas VIM, but Broken

Enable of ADC support for Libretech-CC

v2018.05

Support for GXL & GXM USB Phys and Host Controller

Support for GXBB, GXL & GXM Reset Controller

v2018.03

BROKEN Avoid this version, the MMC driver crashes on a division by zero, please stick to v2018.01, the bug has been fixed in v2018.05