Linux mainlining effort

From linux-sunxi.org
Jump to navigation Jump to search

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.[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
200s
A10 A10s A13
R8
GR8 A20
T2
R40
V40
T3
A40i
A80 A31 A23 A33
R16
A83T H3
H2+
S3
S3L
V3
V3s
A64
H64
H5 H6 A50 V831
V833
H616
H700
T507
A100
A133
R329 D1
D1s
T113
A523
A527
MR527
T527
ADC GPADC N/A 4.12 4.12 4.12 4.12 4.12 WIP NO WIP N/A N/A N/A N/A N/A N/A N/A N/A ? ? WIP ? WIP 6.6 ?
LRADC 6.2 4.0 4.0 4.0 4.9 4.0 ? ? 4.0 4.0 4.2 5.2 ? 4.13 5.3 ? N/A ? ? ? ? 5.19 5.19 ?
Thermal NO 3.16 3.14 3.14 4.9 3.16 5.7 WIP WIP ? 4.12 5.6 5.6 N/A 5.6 5.6 5.6 ? ? 6.9 5.10 ? 6.8 ?
Touch NO 3.16 3.14 3.14 4.9 3.16 WIP NO 4.0 N/A N/A N/A N/A N/A N/A N/A N/A ? ? N/A ? ? NO ?
Audio AC97 N/A NO N/A N/A N/A NO NO N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A ? ? N/A ? ? N/A ?
Analog Codec NO 4.4 4.4 4.4 4.9 4.4 NO N/A 4.10 4.10 4.11 N/A 4.10 4.13 5.0 4.12 NO ? ? NO ? WIP WIP ?
Audio Hub 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 N/A NO N/A N/A NO N/A N/A N/A ?
DMIC 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 N/A N/A N/A 6.1 ? N/A ? ? ? ? ?
I2S NO 4.8 ? N/A 4.9 4.8 NO NO 4.13 ? 4.11 4.16 4.14 WIP 4.17 NO 5.11 ? ? NO ? 5.18 5.18 ?
SPDIF NO 4.7 N/A N/A 4.9 4.7 ? ? 4.9 N/A N/A 4.13 4.11 N/A 4.17 4.12 5.4 ? ? 6.9 ? ? WIP ?
Camera BT656 NO 5.6 ? ? ? 5.4 5.6 ? 5.0 ? ? 5.3 5.0 5.0 5.1 5.0 ? ? ? ? ? ? ? ?
ISP N/A NO N/A N/A N/A NO N/A NO NO N/A N/A NO N/A WIP N/A N/A N/A ? ? N/A ? ? ? ?
MIPI CSI-2 N/A N/A N/A N/A N/A N/A N/A NO WIP N/A N/A WIP N/A 5.19 N/A N/A N/A ? ? N/A ? ? ? ?
Parallel NO 5.6 ? ? ? 5.4 5.6 ? 5.0 ? ? 5.3 5.0 5.0 5.1 5.0 ? ? ? ? ? ? ? ?
CAN bus ? 4.4 N/A N/A N/A 4.4 5.17 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A ? ? N/A ? ? 6.6 ?
Clocks 5.0 3.10 3.11 3.10 4.9 3.12 4.14 3.19 3.12 3.17 4.2 4.13 4.8 4.11 4.10 4.12 4.17 ? WIP 5.12 5.10 WIP 5.17 ?
CPUFreq (DVFS) NO 4.0 4.0 4.0 NO 4.0 6.0 NO 4.2 NO 4.11 4.17 4.18 NO 5.6 5.9 5.8 ? ? WIP WIP ? WIP ?
CPUIdle NO NO NO NO NO NO NO NO NO NO NO NO Crust NO Crust Crust Crust NO NO NO NO NO SBI ?
Crypto N/A 4.3 4.13 4.13 4.13 4.3 5.5 5.5 4.3 ? 4.3 5.5 5.5 5.10 5.5 5.5 5.5 ? ? WIP ? ? 6.3 ?
Display (DRM) CVBS NO ? 4.9 ? 4.7 4.9 ? NO N/A N/A N/A N/A N/A WIP N/A N/A WIP NO ? ? ? ? ? NO ?
G2D ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NO ?
HDMI Audio N/A WIP NO N/A N/A WIP NO NO WIP N/A N/A NO WIP N/A WIP WIP WIP ? ? ? ? ? NO ?
HDMI CEC N/A 4.15 4.14 N/A N/A 4.15 4.19 NO 4.15 N/A N/A 4.17 4.17 N/A 4.20 4.17 5.2 ? ? ? ? ? NO ?
HDMI Video N/A 4.15 4.13 N/A N/A 4.15 4.19 NO 4.15 N/A N/A 4.17 4.17 N/A 4.20 4.17 5.0 ? ? ? ? ? WIP ?
LVDS N/A ? N/A N/A N/A 5.7 ? ? ? ? ? 4.16 N/A N/A ? N/A N/A ? ? ? ? ? NO ?
MIPI DSI N/A N/A N/A N/A N/A N/A WIP NO NO ? 4.18 NO N/A N/A 5.6 N/A N/A ? ? N/A 6.2 ? 6.2 ?
RGB NO 4.15 ? 4.7 4.9 4.15 NO 4.17 4.10 5.1 4.9 4.16 N/A 4.13 5.3 N/A NO ? ? ? ? ? 6.0 ?
VGA N/A NO N/A N/A N/A NO NO N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A ? ? N/A ? ? N/A ?
Display (SimpleFB) NO 3.19 3.19 4.0 4.9 3.19 NO NO 3.19 3.19 3.19 NO 4.16 5.10 4.17 4.16 NO ? ? ? ? ? NO ?
DMA NO 4.3 4.3 4.3 4.9 4.3 5.10 ? 3.17 3.18 4.2 4.9 4.2 4.13 4.15 4.12 5.3 ? ? 6.9 6.1 ? 5.19 ?
Ethernet EMAC N/A 3.11 3.11 N/A N/A 3.11 WIP 5.1 N/A N/A N/A 4.16 4.15 4.13 4.15 4.15 5.0 ? ? ? ? ? 5.15 ?
GMAC N/A N/A N/A N/A N/A 3.15 4.18 5.1 3.17 N/A N/A 4.16 4.15 4.13 4.15 4.15 5.0 ? ? 6.0 ? ? N/A ?
GPU (3D) Mali N/A 5.2 ? ? ? 5.2 5.10 N/A N/A ? ? N/A 5.2 N/A 5.2 5.2 5.5 ? ? ? N/A ? N/A ?
PowerVR N/A N/A N/A N/A N/A N/A N/A NO NO N/A N/A NO N/A N/A N/A N/A N/A N/A N/A N/A NO N/A N/A N/A
HW Spinlocks N/A N/A N/A N/A N/A N/A N/A NO ? ? ? WIP WIP ? WIP NO NO ? ? N/A ? ? NO ?
I2C 6.2 3.11 3.12 3.11 4.9 3.13 4.15 3.19 3.15 3.18 4.2 4.16 4.9 4.11 4.10 4.12 4.19 ? ? 6.0 5.10 ? 6.0 ?
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 N/A N/A 5.8 ? ? NO ? ? WIP ?
IR IR RX 6.2 3.17 4.0 4.0 4.9 3.17 5.10 4.5 4.0 N/A N/A 4.20 4.6 N/A 5.4 4.12 5.4 ? ? 6.0 ? ? NO ?
IR TX ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? N/A ? ? NO ?
Keypad N/A WIP N/A N/A N/A WIP NO 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 N/A ?
LDOs ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? WIP WIP ?
LEDC 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 N/A N/A N/A N/A N/A 6.8 6.8 6.8 ?
MBUS ? ? ? ? ? ? ? ? NO NO ? ? ? NO 5.17 5.17 NO NO NO NO NO NO NO ?
MsgBox N/A N/A N/A N/A N/A N/A N/A ? ? ? ? 5.8 5.8 N/A 5.8 5.8 5.8 ? ? N/A ? ? WIP ?
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 N/A N/A WIP [3] N/A N/A N/A N/A N/A N/A ?
Pinctrl 5.0 3.9 3.9 3.9 4.9 3.12 4.14 3.19 3.12 3.18 4.2 4.4 4.5 4.11 4.6 4.12 4.17 ? WIP 5.12 5.10 WIP 6.0 ?
PMU (perf, DT only) N/A 5.1 ? ? ? 3.16 5.6 ? 3.16 ? ? ? 5.6 ? 5.5 5.6 5.6 ? ? 6.0 WIP ? WIP ?
PWM 6.2 4.0 4.4 4.4 4.9 4.0 WIP NO NO 4.4 4.4 4.16 4.9 4.12 4.19 4.12 5.6 ? ? WIP WIP WIP WIP ?
Remoteproc AIPU 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 N/A N/A N/A NO N/A ? NO N/A ?
DSP 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 N/A N/A N/A N/A N/A ? WIP WIP ?
RSB NO N/A N/A N/A N/A N/A N/A 4.3 N/A 4.4 4.4 4.14 ? N/A 4.13 ? 5.12 ? ? 6.0 ? ? N/A ?
RTC N/A 3.14 N/A N/A N/A 3.14 5.0 N/A 3.18 3.18 4.2 N/A 4.5 4.11 4.10 4.12 5.4 ? WIP 6.0 ? WIP 6.0 ?
SID (eFuse) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6.7 ? ? 5.18 ?
SMP N/A N/A N/A N/A N/A PSCI PSCI 4.17 PSCI PSCI PSCI 4.18 PSCI N/A PSCI PSCI PSCI ? ? PSCI ? PSCI N/A ?
SPI 5.19 3.16 3.15 3.15 4.9 3.15 5.6 ? 3.15 ? ? ? 4.10 4.13 4.15 4.12 5.7 ? WIP 6.0 ? WIP 6.5 ?
SRAM 5.0 4.2 4.2 4.2 4.2 4.2 5.10 N/A NO 4.19 4.19 N/A 4.19 5.10 4.19 5.0 5.1 ? ? 6.0 ? ? 6.1 ?
Storage 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 N/A WIP ? ? N/A N/A ? N/A ?
NAND N/A ? ? 4.12 [4] 4.9 [4] ? ? ? ? 4.9 [4] 4.9 [4] ? ? N/A ? ? NO ? ? ? ? ? NO ?
SATA N/A 3.15 N/A N/A N/A 3.15 4.20 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 N/A ?
SD/MMC 5.19 3.16 3.16 3.16 4.9 3.16 4.14 4.0 3.16 3.18 4.2 4.14 4.5 4.11 4.11 4.12 4.19 ? WIP 6.0 5.12 WIP 5.18 ?
Timer Arch Timer N/A N/A N/A N/A N/A 3.15 4.15 4.2 4.0 4.2 4.2 4.6 4.5 4.11 WIP 4.12 4.17 ? ? 6.0 5.10 ? WIP ?
HSTIMER ? ? 4.2 4.2 4.2 3.14 ? ? 4.2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
TIMER 5.0 3.15 4.2 4.2 4.2 3.15 5.14 3.19 3.15 5.4 5.4 5.4 5.4 5.4 5.14 5.4 5.14 ? ? ? ? ? 6.0 ?
USB USB 6.3 3.15 3.15 3.15 4.9 3.15 4.15 4.2 3.16 4.3 4.3 4.14 4.8 4.11 4.11 4.12 5.0 ? ? 6.1.3 WIP ? 5.18 ?
USB OTG 6.3 4.3 4.3 4.3 4.9 4.3 WIP NO 4.3 4.8 4.8 5.2 4.12 4.11 4.11 4.12 5.0 ? ? 6.1.3 WIP ? 5.18 ?
USB3 N/A N/A N/A N/A N/A N/A N/A NO N/A N/A N/A N/A N/A N/A N/A N/A 5.5 N/A N/A N/A N/A N/A N/A ?
VE NO 5.1 ? 4.20 ? 4.20 5.10 NO ? ? 4.20 NO 4.20 WIP 5.0 5.0 5.2 ? ? ? ? ? 5.17 ?
Watchdog 5.19 3.12 3.12 3.12 4.9 3.12 4.15 3.19 3.18 3.18 4.2 4.6 4.5 4.11 4.17 4.12 5.3 ? WIP 6.0 WIP 5.16 5.16 ?
Model F1C-
100s
200s
A10 A10s A13
R8
GR8 A20
T2
R40
V40
T3
A40i
A80 A31 A23 A33
R16
A83T H3
H2+
S3
S3L
V3
V3s
A64
H64
H5 H6 A50 V831
V833
H616
H700
T507
A100
A133
R329 D1
D1s
T113
A523
A527
MR527
T527
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

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

Major drivers

Minor drivers

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.

  • A31/A31s PWM support (patch-v4 abandoned by Siarhei Volkau)
  • 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 [2]
  • DE1/DE2/DE3 writeback support
  • H616 (and later) UHS-I SD card support (pinctrl device contains voltage switch for PortF)

Planned for next

Merged into 6.9

  • H616
    • SPDIF
    • DMA
    • Thermal

New Devices supported

Merged into 6.8

New Devices supported

Merged into 6.7

New Devices supported

  • H616: Bigtreetech CB1 Manta
  • H616: Bigtreetech Pi
  • V3s: Anbernic RG-Nano

Merged into 6.6

New Devices supported

Merged into 6.5

Merged into 6.4

New Devices supported

Merged into 6.3

  • D1
    • Base DT and Kconfig
    • Crypto
    • Power Domain
  • F1C100s
    • USB PHY support
    • USB MUSB support

Merged into 6.2

Merged into 6.1 (LTS)

Merged into 6.0

Merged into 5.19

Merged into 5.18

  • D1
    • I2S
    • MMC
    • SID
    • USB

Merged into 5.17

Merged into 5.16

Merged into 5.15 (LTS)

Merged into 5.14

New Devices Supported

Merged into 5.13

New Devices Supported

  • A10
    • Topwise A721 Tablet

Merged into 5.12

Merged into 5.11

New Devices Supported

Merged into 5.10 (LTS)

  • A100
    • Clocks
    • Pinctrl
    • I2C
    • Thermal (THS)
  • sun8i-ce/sun8i-ss
    • support for PRNG
    • support for hashs
    • support for TRNG (H6 only)

New Devices Supported

Merged into 5.9

New Devices Supported

  • A64
    • PinePhone v1.2

Merged into 5.8

  • H6
    • DVFS
    • IOMMU

New Devices Supported

Merged into 5.7

New Devices Supported

Merged into 5.6

  • A10
    • CSI (BT656 and Parallel)
  • A64
    • MIPI DSI
    • DVFS
  • R40
    • CSI (BT656 and Parallel)
    • SPI

New Devices Supported

  • H5
    • ALL-H3-IT H5 board
    • ALL-H5-CC H5 board
  • H6

Merged into 5.5

  • H3
    • Deinterlace driver
  • H6
    • Crypto
    • GPU(3D) Mali
    • USB3 PHY (for boards not needing vbus switching)
  • multiple SoCs

New Devices Supported

Merged into 5.4 (LTS)

  • A20
    • CSI (BT656 and Parallel)
  • A64
    • IR
  • H6
    • IR
    • RTC
    • SPDIF

New Devices Supported

Merged into 5.3

  • A64
    • LRADC
    • RGB LCD
  • A83T
    • CSI (BT656 and Parallel)
  • H6
    • DMA
    • Watchdog
  • multiple SoCs

Merged into 5.2

New Devices Supported

Merged into 5.1

  • A10
    • Cedrus
    • PMU
  • A20
    • Audio Codec improvements
  • A23
    • Display pipeline
    • LCD enabled on Q8 A23 tablets
  • 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

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

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

New Devices

Changes merged up to 4.18

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

References

  1. http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf
  2. Your New ARM SoC Linux Support Check-List – ELCE 2012
  3. 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/
  4. 4.0 4.1 4.2 4.3 While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See this page
  5. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1

See also

External Links

How to upstream

Notes