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.
Contents
- 1 Overview
- 2 Status
- 2.1 Status Matrix
- 2.2 Work In Progress
- 2.3 Merged into 5.11
- 2.4 Merged into 5.10
- 2.5 Merged into 5.9
- 2.6 Merged into 5.8
- 2.7 Merged into 5.7
- 2.8 Merged into 5.6
- 2.9 Merged into 5.5
- 2.10 Merged into 5.4 (LTS)
- 2.11 Merged into 5.3
- 2.12 Merged into 5.2
- 2.13 Merged into 5.1
- 2.14 Merged into 5.0
- 2.15 Merged into 4.20
- 2.16 Merged into 4.19 (LTS)
- 2.17 Changes merged up to 4.18
- 3 References
- 4 See also
- 5 External Links
- 6 Notes
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.[1][2]
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.
Model | F1C- 100s |
A10 | A10s | A13 R8 |
A20 T2 |
A23 | A31 | A33 R16 |
A64 | A80 | A83T | A100 | GR8 | H3 | H5 | H6 | R40 T3 |
V3|V3s S3|S3L | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AC97 | N/A | NO | N/A | N/A | NO | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | N/A | NO | N/A | |
Audio Codec | NO | 4.4 | 4.4 | 4.4 | 4.4 | 4.10 | 4.10 | 4.11 | 5.0 | N/A | N/A | ? | 4.9 | 4.10 | 4.12 | NO | NO | 4.13 | |
ADC | GPADC | NO | 4.12 | 4.12 | 4.12 | 4.12 | N/A | WIP | N/A | N/A | NO | N/A | ? | 4.12 | N/A | N/A | N/A | NO | N/A |
Thermal | NO | 3.16 | 3.14 | 3.14 | 3.16 | ? | WIP | 4.12 | 5.6 | WIP | 5.6 | 5.10 | 4.9 | 5.6 | 5.6 | 5.6 | 5.7 | N/A | |
Touch | NO | 3.16 | 3.14 | 3.14 | 3.16 | N/A | 4.0 | N/A | N/A | NO | N/A | ? | 4.9 | N/A | N/A | N/A | NO | N/A | |
Camera | BT656 | NO | 5.6 | ? | ? | 5.4 | ? | 5.0 | ? | 5.1 | ? | 5.3 | ? | ? | 5.0 | 5.0 | ? | 5.6 | 5.0 |
ISP | N/A | NO | N/A | N/A | NO | N/A | NO | N/A | N/A | NO | NO | ? | N/A | N/A | N/A | N/A | N/A | NO | |
MIPI CSI-2 | N/A | N/A | N/A | N/A | N/A | N/A | WIP | N/A | N/A | NO | WIP | ? | N/A | N/A | N/A | N/A | N/A | WIP | |
Parallel | NO | 5.6 | ? | ? | 5.4 | ? | 5.0 | ? | 5.1 | ? | 5.3 | ? | ? | 5.0 | 5.0 | ? | 5.6 | 5.0 | |
Clocks | 5.0 | 3.10 | 3.11 | 3.10 | 3.12 | 3.17 | 3.12 | 4.2 | 4.10 | 3.19 | 4.13 | 5.10 | 4.9 | 4.8 | 4.12 | 4.17 | 4.14 | 4.11 | |
CPUFreq (DVFS) | NO | 4.0 | 4.0 | 4.0 | 4.0 | NO | 4.2 | 4.11 | 5.6 | NO | 4.17 | WIP | NO | 4.18 | 5.9 | 5.8 | NO | NO | |
Crypto | N/A | 4.3 | 4.13 | 4.13 | 4.3 | ? | 4.3 | 4.3 | 5.5 | 5.5 | 5.5 | ? | 4.13 | 5.5 | 5.5 | 5.5 | 5.5 | 5.10 | |
Display (SimpleFB) | NO | 3.19 | 3.19 | 4.0 | 3.19 | 3.19 | 3.19 | 3.19 | 4.17 | NO | NO | ? | 4.9 | 4.16 | 4.16 | NO | NO | 5.10 | |
Display
(DRM) |
CVBS | NO | ? | 4.9 ? | 4.7 | ? | N/A | N/A | N/A | N/A | N/A | N/A | ? | 4.9 | NO | NO | NO | NO | N/A |
HDMI Audio | N/A | WIP | NO | N/A | WIP | N/A | WIP | N/A | WIP | NO | NO | ? | N/A | WIP | WIP | WIP | NO | N/A | |
HDMI CEC | N/A | 4.15 | 4.14 | N/A | 4.15 | N/A | 4.15 | N/A | 4.20 | NO | 4.17 | ? | N/A | 4.17 | 4.17 | 5.2 | 4.19 | N/A | |
HDMI Video | N/A | 4.15 | 4.13 | N/A | 4.15 | N/A | 4.15 | N/A | 4.20 | NO | 4.17 | ? | N/A | 4.17 | 4.17 | 5.0 | 4.19 | N/A | |
LVDS | N/A | ? | N/A | N/A | 5.7 | ? | ? | ? | ? | ? | 4.16 | ? | N/A | N/A | N/A | N/A | ? | N/A | |
MIPI DSI | N/A | N/A | N/A | N/A | N/A | ? | NO | 4.18 | 5.6 | NO | NO | ? | N/A | N/A | N/A | N/A | WIP | N/A | |
RGB | NO | 4.15 | ? | 4.7 | 4.15 | 5.1 | 4.10 | 4.9 | 5.3 | 4.17 | 4.16 | ? | 4.9 | N/A | N/A | NO | NO | 4.13 | |
VGA | N/A | NO | N/A | N/A | NO | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | N/A | NO | N/A | |
DMA | NO | 4.3 | 4.3 | 4.3 | 4.3 | 3.18 | 3.17 | 4.2 | 4.15 | ? | 4.9 | WIP | 4.9 | 4.2 | 4.12 | 5.3 | 5.10 | 4.13 | |
Ethernet | EMAC | N/A | 3.11 | 3.11 | N/A | 3.11 | N/A | N/A | N/A | 4.15 | 5.1 | 4.16 | ? | N/A | 4.15 | 4.15 | 5.0 | 4.18 | 4.13 |
GMAC | N/A | N/A | 3.15 | 3.17 | ? | ||||||||||||||
EMCE | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | WIP | N/A | N/A | |
GPU(3D) | Mali | N/A | 5.2 | ? | ? | 5.2 | ? | N/A | ? | 5.2 | N/A | N/A | N/A | ? | 5.2 | 5.2 | 5.5 | 5.10 | N/A |
PowerVR | N/A | N/A | N/A | N/A | N/A | N/A | NO | N/A | N/A | NO | NO | NO | N/A | N/A | N/A | N/A | N/A | N/A | |
HW Spinlocks | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | WIP | NO | WIP | ? | N/A | WIP | NO | NO | N/A | N/A | |
I2C | ? | 3.11 | 3.12 | 3.11 | 3.13 | 3.18 | 3.15 | 4.2 | 4.10 | 3.19 | 4.16 | 5.10 | 4.9 | 4.9 | 4.12 | 4.19 | 4.15 | 4.11 | |
I2S | NO | 4.8 | ? | N/A | 4.8 | ? | 4.13 | 4.11 | 4.17 | NO | 4.16 | ? | 4.9 | 4.14 | NO | WIP | NO | N/A | |
IOMMU | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | 5.8 | N/A | N/A | |
IR | NO | 3.17 | 4.0 | 4.0 | 3.17 | N/A | 4.0 | N/A | 5.4 | 4.5 | 4.20 | ? | 4.9 | 4.6 | 4.12 | 5.4 | 5.10 | N/A | |
Keypad | N/A | WIP | N/A | N/A | WIP | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | N/A | NO | N/A | |
LRADC | ? | 4.0 | 4.0 | 4.0 | 4.0 | 4.0 | 4.0 | 4.2 | 5.3 | ? | 5.2 | ? | 4.9 | ? | ? | N/A | ? | 4.13 | |
MsgBox | N/A | N/A | N/A | N/A | N/A | ? | ? | ? | 5.8 | ? | 5.8 | ? | N/A | 5.8 | 5.8 | 5.8 | N/A | N/A | |
NAND | N/A | ? | ? | 4.12 [3] | ? | 4.9 [3] | ? | 4.9 [3] | ? | ? | ? | ? | 4.9 [3] | ? | ? | NO | ? | N/A | |
PCIe | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | WIP[4] | N/A | N/A | |
Pinctrl | 5.0 | 3.9 | 3.9 | 3.9 | 3.12 | 3.18 | 3.12 | 4.2 | 4.6 | 3.19 | 4.4 | 5.10 | 4.9 | 4.5 | 4.12 | 4.17 | 4.14 | 4.11 | |
PMU | ? | ? | ? | ? | ? | ? | ? | ? | 5.5 | ? | ? | WIP | ? | 5.6 | 5.6 | 5.6 | 5.6 | ? | |
PWM | NO | 4.0 | 4.4 | 4.4 | 4.0 | 4.4 | WIP | 4.4 | 4.19 | NO | 4.16 | ? | 4.9 | 4.9 | 4.12 | 5.6 | WIP | 4.12 | |
RSB | NO | N/A | N/A | N/A | N/A | 4.4 | N/A | 4.4 | 4.13 | 4.3 | 4.14 | ? | N/A | ? | ? | WIP | N/A | N/A | |
RTC | N/A | 3.14 | N/A | N/A | 3.14 | 3.18 | 3.18 | 4.2 | 4.10 | N/A | N/A | ? | N/A | 4.5 | 4.12 | 5.4 | 5.0 | 4.11 | |
SATA | N/A | 3.15 | N/A | N/A | 3.15 | N/A | N/A | N/A | N/A | N/A | N/A | ? | N/A | N/A | N/A | N/A | 4.20 | N/A | |
SD/ MMC | NO | 3.16 | 3.16 | 3.16 | 3.16 | 3.18 | 3.16 | 4.2 | 4.11 | 4.0 | 4.14 | WIP | 4.9 | 4.5 | 4.12 | 4.19 | 4.14 | 4.11 | |
SMP | N/A | N/A | N/A | N/A | PSCI | PSCI | PSCI | PSCI | PSCI | 4.17 | 4.18 | ? | N/A | PSCI | PSCI | PSCI | PSCI | N/A | |
SPDIF | NO | 4.7 | N/A | N/A | 4.7 | N/A | 4.9 | N/A | 4.17 | ? | 4.13 | ? | 4.9 | 4.11 | 4.12 | 5.4 | ? | N/A | |
SPI | NO | 3.16 | 3.15 | 3.15 | 3.15 | ? | 3.15 | ? | 4.15 | ? | ? | ? | 4.9 | 4.10 | 4.12 | 5.7 | 5.6 | 4.13 | |
SRAM | 5.0 | 4.2 | 4.2 | 4.2 | 4.2 | 4.19 | NO | 4.19 | 4.19 | N/A | N/A | ? | 4.2 | 4.19 | 5.0 | 5.1 | 5.10 | 5.10 | |
USB | WIP | 3.15 | 3.15 | 3.15 | 3.15 | 4.3 | 3.16 | 4.3 | 4.11 | 4.2 | 4.14 | WIP | 4.9 | 4.8 | 4.12 | 5.0 | 4.15 | 4.11 | |
USB OTG | WIP | 4.3 | 4.3 | 4.3 | 4.3 | 4.8 | 4.3 | 4.8 | 4.11 | NO | 5.2 | WIP | 4.9 | 4.12 | 4.12 | 5.0 | NO | 4.11 | |
USB3 | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | NO | N/A | ? | N/A | N/A | N/A | 5.5 | N/A | N/A | |
VE | Sunxi-Cedrus | NO | 5.1 | ? | 4.20 | 4.20 | ? | ? | 4.20 | 5.0 | NO | NO | ? | ? | 4.20 | 5.0 | 5.2 | 5.10 | WIP | |
Watchdog | 5.0 | 3.12 | 3.12 | 3.12 | 3.12 | 3.18 | 3.18 | 4.2 | 4.17 | 3.19 | 4.6 | WIP | 4.9 | 4.5 | 4.12 | 5.3 | 4.15 | 4.11 | |
Model | F1C- 100s |
A10 | A10s | A13 | A20 T2 |
A23 | A31 | A33 | A64 | A80 | A83T | A100 | GR8 | H3 | H5 | H6 | R40 | V3|V3s S3|S3L |
Legend |
---|
In Linux mainline since version x |
Nobody works on it, but it should be compatible with already done drivers |
Somebody works on it |
No support, nobody works on it |
support impossible |
Status is unknown/to be completed |
Work In Progress
Core Stuff
- V831 / V833 Clocks & Pinctrl / RTC / MMC / Watchdog / SPI - Icenowy Zheng Support for Allwinner V831 SoC
- H616 Clocks & Pinctrl Andre Przywara arm64: sunxi: Initial Allwinner H616 SoC support
- AR100 firmware (WiP: Samuel Holland) ARISC firmware for sunxi SoCs
Major drivers
- A100 DMA/PMU/Watchdog/USB2/USB OTG/MMC(eMMC, SD) Frank Lee Second step support for A100
- A83T/V3s MIPI CSI-2 Paul Kocialkowski Allwinner MIPI CSI-2 support for A31/V3s/A83T
- H6 Hypervisor for PCIe A try on utilizing H6 PCIe with "Virtualization"
- A64 / H3 / H5 / H6 HDMI Audio - Clément Péron / Marcus Cooper / Jernej Škrabec Add Allwinner H3/H5/A64 HDMI audio
- R40 MIPI-DSI WIP Jagan Teki drm/sun4i: Allwinner R40 MIPI-DSI support v3
- AC100 Audio codec WiP Ondrej Jirman digital part analog part
- F1C100s USB WIP George Hilliard Support the Allwinner F1C100s USB stack
- V3s SRAM & Video Decoding Engine (Cedrus) WiP Martin Cerveny Enable video decoder (testing with attached LCD)
Minor drivers
- H6 RSB Samuel Holland Allwinner H6 RSB support
- A100 CPUFreq (DVFS) Shuosheng Huang cpufreq: sun50i: add a100 cpufreq support
- A64 hwspinlock WIP Nikolay Borisov Add support for hwspinlock on A64 SoC
- A83T / A64 / H3 hwspinlock WIP Corentin Labbe (montjoie) RFC,1/3RFC,2/3RFC,3/3
- A10 / A20 / A31 HDMI Audio WIP Stefan Mavrodiev Add support for sun4i HDMI audio
- A80 Thermal sensor WIP Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all
- R40 PWM (WIP Hao Zhang patch-v2)
- A31/A31s PWM support (WiP: Siarhei Volkau patch-v1)
- A20 Keypad (WiP: Yassin Jaffer (ddc) patch)
- sun8i-ce/sun8i-ss RSA/ECC WIP Corentin LABBE (no public patch yet)
- EMCE WIP Corentin LABBE (no public patch yet)
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 driver has buggy layer support, see [1]
- DE1/DE2/DE3 writeback support
- A64 audiocodec driver components (sun8i-codec and sun50i-codec-analog) lack support for jack detection
Merged into 5.11
New Devices Supported
Merged into 5.10
- R40
- DMA
- GPU Mali
- IR
- SRAM
- Video_Engine | Sunxi-Cedrus
- sun8i-ce/sun8i-ss
- support for PRNG
- support for hashs
- support for TRNG (H6 only)
New Devices Supported
Merged into 5.9
- H5
- DVFS
Merged into 5.8
- H6
- DVFS
- IOMMU
Merged into 5.7
- A20
- LVDS
- R40
- Thermal
New Devices Supported
Merged into 5.6
- A10
- CSI (BT656 and Parallel)
- A64
- MIPI DSI
- DVFS
- H6
- PWM
New Devices Supported
Merged into 5.5
- H3
- Deinterlace driver
- H6
- Crypto
- GPU(3D) Mali
- USB3 PHY (for boards not needing vbus switching)
- multiple SoCs
- Cedrus HEVC/H.265
- Broadcom-based (AMPAK modules) Bluetooth support on
- Emlid Neutis
New Devices Supported
Merged into 5.4 (LTS)
New Devices Supported
Merged into 5.3
Merged into 5.2
- A83T
- LRADC
- USB OTG
- Broadcom-based (AMPAK modules) Bluetooth support on
- Banana-Pi-M2-Zero
New Devices Supported
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 (BT656 and Parallel)
- A80
- GMAC support
- CSI in general
- RGR565 support
- JPEG pass-through support
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 (BT656 and Parallel) Support
- H5
- Cedrus
- R40
- RTC
- T3
- initial T3 support[5]
- V3s
- CSI (BT656 and Parallel) Support
- Broadcom-based (AMPAK modules) Bluetooth support on
New Devices Supported
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 (LTS)
- 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
- ↑ http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf
- ↑ Your New ARM SoC Linux Support Check-List – ELCE 2012
- ↑ 3.0 3.1 3.2 3.3 While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See this page
- ↑ Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU, and accessing the PCIe config space, IO space or memory space needs to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller without using an hypervisor. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work. https://forum.armbian.com/topic/13529-a-try-on-utilizing-h6-pcie-with-virtualization/
- ↑ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1
See also
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)
- How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)
- Linaro resources page from LCA (Linaro Connect Asia) 2014