Linux mainlining effort

The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.

=Overview= The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.

This can be achieved by following the concept outlined in the Your new ARM SoC Linux support check-list! article published by Thomas Petazzoni from Bootlin.

Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.

=Status=

The Mainline Kernel howto contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the Mainline U-Boot howto.

The Mainline Kernel category  gives an overview of currently supported devices.

Status Matrix
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.

Core Stuff

 * AR100 firmware (WiP: Samuel Holland) ARISC firmware for sunxi SoCs


 * Message box (WiP: Samuel Holland) Allwinner sunxi message box support patch-v5


 * A13 PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) patch-v1

Major drivers

 * HDMI Audio A64 / H3 / H5 / H6  WIP Jernej Škrabec (jernej) /  LibreELEC


 * R40 MIPI-DSI WIP Jagan Teki drm/sun4i: Allwinner R40 MIPI-DSI support v3


 * AC100 Audio codec WiP Ondrej Jirman WIP branch

Minor drivers

 * H6
 * SPI WIP Andre Przywara arm64: dts: sun50i: H6: Enable SPI flash
 * Cpufreq (DVFS) WIP Yangtao Li arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)
 * A64 CPUFreq (DVFS) WIP Vasily Khoruzhick arm64: allwinner: a64: Enable DVFS on A64
 * R40 SPI & PMU WIP Andre Przywara ARM: dts: sun8i: R40: DT fixes and updates
 * A10 & R40 CSI Camera WIP Chen-Yu Tsai media: sun4i-csi: A10/A20 CSI1 and R40 CSI0 support
 * A64 / A83T / H3 / H5 / H6 / R40 Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li add thermal sensor driver for A64, A83T, H3, H5, H6, R40
 * A80 included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all
 * H5 Cpufreq (DVFS) WIP Chen-Yu Tsai arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)
 * R40 PWM (WIP Hao Zhang patch-v2)
 * A31/A31s PWM support (WiP: Siarhei Volkau patch-v1)
 * A20 Keypad (WiP: Yassin Jaffer (ddc) patch)

Drivers that can still be improved/added
Nobody works on these features. If you're interested, you can pick one of these add your name to them and move them to one of the sections above, to indicate you're working on the driver/feature.


 * sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)
 * DE2 on some SoCs (A64, A83T) includes rotation egnine that is not yet supported
 * DE2 driver has buggy layer support, see

Planned for 5.6

 * A64
 * MIPI DSI


 * A64 / A83T / H3 / H5 / H6
 * Thermal


 * H6
 * PWM


 * H3 / H5 / H6
 * PMU

New Devices Supported
 * H5
 * ALL-H3-IT H5 board
 * H6
 * PineH64 Model A

Merged into 5.5

 * H3
 * Deinterlace driver


 * H6
 * Crypto
 * GPU(3D) Mali
 * USB3 PHY (for boards not needing vbus switching)


 * A64 / A80 / A83T / H3 / H5 / R40
 * Crypto


 * multiple SoCs
 * Cedrus HEVC/H.265


 * Broadcom-based (AMPAK modules) Bluetooth support on
 * Emlid Neutis

New Devices Supported
 * H3
 * FriendlyARM_NanoPi_Duo2

Merged into 5.4
New Devices Supported
 * A20
 * CSI
 * A64
 * IR
 * H6
 * IR
 * RTC
 * SPDIF
 * A64
 * Olimex A64-OLinuXino eMMC
 * H6
 * Tanix TX6
 * S3
 * Lichee Zero Plus

Merged into 5.3

 * A64
 * LRADC
 * RGB LCD
 * A83T
 * CSI
 * H6
 * DMA
 * Watchdog
 * multiple SoCs
 * Cedrus h264

Merged into 5.2

 * A83T
 * LRADC
 * USB OTG


 * H6
 * Cedrus


 * multiple SoCs
 * Lima
 * Panfrost


 * Broadcom-based (AMPAK modules) Bluetooth support on
 * Banana-Pi-M2-Zero

New Devices Supported
 * H6
 * Beelink GS1
 * Xunlong Orange Pi 3

Merged into 5.1

 * A10
 * Cedrus
 * PMU


 * A20
 * Audio Codec improvements


 * A23
 * Display pipeline
 * LCD enabled on Q8 A23 tablets


 * A64
 * ARM Architectural Timer errata workaround
 * PMU
 * CSI


 * A80
 * GMAC support


 * CSI in general
 * RGR565 support
 * JPEG pass-through support


 * Broadcom-based (AMPAK modules) Bluetooth support on
 * Banana Pi M2+
 * Banana Pi M2 Ultra


 * LCD enabled on A13 Q8 tablets

Merged into 5.0

 * A64
 * Cedrus
 * DTS changes for audio codec


 * F1C100s
 * initial F1C100s support


 * H6
 * Ethernet
 * DE3/HDMI support
 * USB 2.0


 * H3 / H5
 * CSI Support


 * H5
 * Cedrus


 * R40
 * RTC


 * T3
 * initial T3 support


 * V3s
 * CSI Support


 * Broadcom-based (AMPAK modules) Bluetooth support on
 * Banana Pi M2 Magic
 * Banana Pi M3
 * Banana Pi M64
 * Cubietruck
 * Cubietruck Plus

New Devices Supported
 * Xunlong Orange Pi Lite 2

Merged into 4.20

 * A13 / A20 / A33 / H3
 * Cedrus driver


 * A83T
 * IR receiver


 * A64
 * Cleanup for device tree files
 * HDMI support
 * Audio codec support (DTS changes will be merged in 5.0)


 * H3 / H5
 * SID


 * R40
 * SATA

New Devices Supported
 * Pine64 LTS
 * Xunlong Orange Pi One Plus
 * Xunlong Orange Pi Zero Plus 2 (H3 variant)
 * Sinovoip Banana Pi M2+ (H5 variant)

Merged into 4.19

 * A10 / A13 / A20 / A23 / A33
 * SRAM controller / system control


 * A64
 * SRAM controller / system control
 * Display clocks and bus
 * RTC clock output
 * PWM
 * R_I2C


 * H3
 * SRAM controller / system control


 * H6
 * MMC
 * PMIC


 * R40
 * HDMI support

Board Changes
 * SPI flash node for Orange Pi PC 2 and Pine64 SoPINE
 * Use lid switch as wake-up source for A64 based laptops
 * LEDs added for PineH64

New Devices
 * Pine Pinebook
 * Amarula A64-Relic

Changes merged up to 4.18
Changes up to 4.18 can be found on Linux mainlining history page.

=References=

= See also =
 * Mainline Kernel Howto
 * Possible setups for hacking on mainline
 * Linux Kernel
 * Toolchain

=External Links=
 * kernel.org - Official website for the Linux Kernel
 * http://github.com/torvalds/linux - Linus Torvalds' GitHub account with the upstream Linux kernel
 * Linux Kernel documentation index
 * Linux Kernel man pages
 * Kernel Newbies Site - Excellent source of information for people new to kernel
 * Linus' kernel tree for 2.6
 * Kernel bugzilla - Regressions for each of recent versions
 * Linux-libre project - Maintains and distributes fully free kernel
 * LinGrok, Linux kernel source code cross-reference
 * Bootlin LXR (Linux Cross Reference)
 * linux-arm-kernel - Mailing list archive

How to upstream

 * Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin
 * Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)
 * Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)
 * Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)
 * Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)
 * Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)
 * How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)
 * YouTube Video- Write and Submit your first Linux kernel Patch
 * Greg Kroah-­Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch
 * Linaro resources page from LCA (Linaro Connect Asia) 2014

=Notes=