Linux mainlining effort

(Redirected from Mainlining Effort)
Jump to: navigation, 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.

It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!



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 Free Electrons.[1][2]

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


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

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

Work In Progress

Core Stuff

  • Suspend / Resume / CPUIdle (WiP: Antoine Tenart)
  • Allwinner A83T SoC support (WiP: Vishnu Patekar (vishnup)) patch-v2
  • Allwinner H3 SoC support (WiP: Jens Kuske (jemk)) patch-v4
  • A80 PRCM driver (WiP: Chen-Yu Tsai (wens)) patch-v3
  • A80 SMP support (WiP: Chen-Yu Tsai (wens)) patch-RFC

Major drivers

  • Display Engine driver (WiP: Maxime Ripard (mripard)) patch-v1
  • NAND support
    • Per-partition ECC support (WiP: Boris Brezillon (bbrezillon)) patch-v1
    • DMA RX support (WiP: Roy Spliet (RSpliet)) patch-rfc
  • Audio support
    • I2S driver (WiP: Marcus Cooper, Maxime Ripard (mripard), Andrea Venturi) WiP cleanup
    • SPDIF driver (WiP: Marcus Cooper) patch-v2
  • Camera support
    • CSI (camera sensor interface) driver (WiP: Yassin Jaffer (ddc))
  • AXP223 PMIC support (WiP: Chen-Yu Tsai (wens)) patch-v4
  • H3 USB PHY clocks (WiP: Reinder de Haan / Hans de Goede) patch

Minor drivers

  • Sunxi THS (H3) (Josef Gajdusek) patch-v2
  • Keypad (WiP: Yassin Jaffer (ddc)) patch
  • AXP152/AXP202/AXP209
    • PowerSupply/Battery driver (WiP: Bruno Prémont (bonbons)) RFC-patch
  • sun8i-ss/sun9i-ss (Security System/Crypto Engine)(WIP: LABBE Corentin more info at
  • hardware spinlock (H3/A83) (WIP: LABBE Corentin)

Left to be done

Easy Tasks

Following drivers should be doable by someone with no or a small kernel development experience:

Medium Tasks

Following drivers require some good knowledge of the kernel internals.

  • A31 GPADC
  • CSI (Camera Input)
  • Audio Related drivers
    • Those items are not related to each other, and can be implemented independently
    • A23 Audio Codec (A23 SDK has an ASoC driver for this)
    • AC97 Audio Interface
    • A23 SDK has an ASoC driver for these already, which would be a good starting point
    • A31 Audio Codec driver (WiP: Maxime Ripard (mripard)
      • A31 PLL2 and module 1 clocks
      • Cyclic DMA transfers
      • ASoC driver
      • Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)

Difficult Tasks

These drivers require some good knowledge of the kernel internals, plus a good experience with such piece of hardware.

  • Video Engine (See VE_Planning)
  • Audio Engine (Only exists in A10)
  • V4L driver for G2D/Mixer is based on samsung g2d and fimc driver. Only initial work started. [1]


  • Memory Stick
    • Has anybody actually got this hardware connected and a memory stick?
  • TV Decoder
    • Analog in, no driver, no datasheet
  • Transport Stream(DVB) in
    • IRC user woprr has started to work on this
  • PATA
    • Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it
  • GPS backend IP
    • Only A10, not much interesting, as all modern GPS receivers have MCU with UART output, no documentation


These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.

  • Mali driver (will not happen unless libv gets a proper lima driver out)

Related but separate

  • Device-specific drivers

Planned for 4.5

Merged into 4.4

  • R8 SoC support
  • A23 / A33
    • RSB (Reduced Serial Bus) driver
  • AXP202/AXP209
    • USB power supply driver
    • Support for OTG vbus detection via AXP pmic
    • DTS nodes for OTG vbus support

Added board support: Olimex A20 EVB (commit), Unified Q8 format tablet, Wits Pro A20 DKT (commit), Yones Toptech bs1078v2 (commit), Wobo i5 (commit), C.H.I.P (commit), Sinlinx SinA31s, MSI Primo81 (commit)

Merged into 4.3

  • A23 / A33
    • Support for USB-controllers

Added board support: Iteaduino Plus A10, Ippo-q8h-a33 v1.2

Merged into 4.2

  • A80
    • Architected timer support
    • USB support

Added board support: LinkSprite pcDuino3 Nano, Cubietech Cubieboard4, Gemei G9, Auxtek T004, Utoo P66, Wexler TAB 7200, MK808C, Jesurun Q5, Xunlong Orange Pi, Xunlong Orange Pi Mini, Sinlinx SinA33

Merged into 4.1

  • A80
    • USB PHY driver

Merged into 4.0

  • A31s
    • bring-up sharing majority of drivers with A31
    • pinctrl driver
  • All SoCs
    • LRADC Input driver
    • CPUFreq
    • PWM Driver
  • AXP209 power button input driver

Added board support: CSQ CS908, LeMaker Banana Pro, Chuwi V7 CW0825, Rikomagic mk802, Rikomagic mk802ii, Rikomagic mk802_a10s, MarsBoard A10, Hyundai A7HD

Merged into 3.19

  • A10 / A10s / A13 / A20 / A31 / A23
    • Simple Framebuffer
      • In order to use that, you'll need a recent mainline u-boot (2015.01+)
    • USB phy driver support for usb0
  • A10 / A20
    • NAND [2]
      • Only works for SLC NAND for now
      • Some additional work is needed for MLC NANDs
  • A23
    • DMAengine driver (shared with A31) [3]
  • A80
    • initial machine support [4]
    • basic clocks and reset [5]
    • pinctrl driver [6]
    • extra UART, I2C, LEDS [7]

Related merges: sunxi-simplefb-for-3.19

Added board support: Mele M3, LeMaker Banana Pi, Merrii A80 Optimus Board, Olimex A20-OLinuXino-Lime2

Merged into 3.18

  • A23
    • MMC
    • pinctrl
    • DMA
    • I2C

Added board support: Olimex A20-OLinuXino-Lime, Merrii Hummingbird A20, HSG H702

Merged into 3.17

  • A10/A20
    • IR driver
  • A31
    • PIO/R_PIO external interrupts
    • DMAengine
    • GMAC
  • A23
    • Timers, UARTs, initial bringup
    • Basic clocks
    • PIO/R_PIO drivers

Related merges: clk-for-linus-3.17, mfd-for-linus-3.17, pinctrl-v3.17-1, soc-for-3.17, dt-for-3.17, slave-dma for-linus, v4l_for_linus,

Added Board Support: Merrii Hummingbird A31, BA10, LinkSprite pcDuino V3, Ippo q8h

Merged into 3.16

  • AXP20x regulator support
  • All
    • MMC support
  • A31
    • USB support
    • PRCM
    • SMBus Regmap
    • Special Pins Muxer
    • P2WI Controller
  • A10
    • Touchscreen controller [10]
    • Touchscreen controller temperature sensor [11]

Related Merges: defconfig-for-3.16, drivers-for-3.16, dt-for-3.16, soc-for-3.16, usb-3.16-rc1, pinctrl-v3.16-1, clk-for-linus-3.16, clk-for-linus-3.16-part2, mmc-updates-for-3.16-rc1, mfd-for-linus-3.16, regulator-v3.16, input-for-linus

Added board support: Mele M9, R7

Merged into 3.15

  • All SoCs
    • SPI
  • A10/A10s/A13/A20
    • OHCI
    • EHCI
  • A10/A20
    • AHCI
  • A20/A31
    • NMI controller
  • A20
    • GMAC
  • A31
    • I2C

Related merges: [12], [13], [14], [15], [16], [17], [18]

Added board support: LinkSprite_pcDuino, Inet 97f, A10-OLinuXino-LIME

Merged into 3.14

  • A31
    • Reset Controller Support
    • SMP
  • A20
    • SMP (via PSCI)
    • External clock outputs
  • High Speed Timers
  • RTC driver (A10/A20) (commit)
  • RTP (DT only)
  • GMAC support in stmmac driver
  • AP6210 WiFi (BCM43362) support in brcmfmac driver

Related merges: [19], [20], [21], [22], [23]

Added board support: Olimex A13-OLinuXino-Micro (commit)

Merged into 3.13

  • SID Driver
  • I2C for A20
  • sunxi_defconfig
  • Bug fixes [24]

Added board support: Cubietruck

Merged into 3.12

  • A31 support
    • Basic SoC + GPIO
    • Clock support
  • A20 support
    • Basic SoC + GPIO
    • Clock support
  • A10s clocks
  • Clock Source and Clock Event rework
  • Watchdog driver

Related merges: [25], [26], [27], [28], [29], [30]

Added board support: A31 EVB, A20-OLinuXino-Micro, Cubieboard2, Mele A1000

Merged into 3.11

  • IRQ support for the PIO
  • I2C Driver
  • EMAC Driver
  • A10s support

Related merges: [31], [32], [33], [34], [35], [36]

Added board support: Olimex A10s-OLinuXino-Micro

Merged into 3.10

  • LED support
  • Clock driver
  • Complete UART support

Related merges: [37], [38], [39]

Added Board Support: Pineriver_H24

Merged into 3.9

  • PINCTRL driver
  • GPIO-lib based driver

Related merges: [40]

Added Board Support: Miniand_Hackberry

Merged into 3.8

Related merges: [41], [42]

Added board support: Cubieboard, A13-OLinuXino


  2. Your New ARM SoC Linux Support Check-List – ELCE 2012

See also

External Links

How to upstream

Personal tools