Linux mainlining effort

The purpose of this page is to try and define sub-goals and milestones for 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!

=Overview= The idea is to submit break the code needed to run the Linux kernel on Allwinner SoCs upstream to the official Linux kernel, also checkout Linux-tree-diff.

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

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

=Milestones=

Milestone 1 (Merged into 3.8)

 * Core SoC
 * Timer
 * UART
 * Device Tree
 * Interrupt controller

Related merges: ,

Added board support: Cubieboard, A13-OLinuXino

Merged into 3.9

 * PINCTRL driver
 * GPIO-lib based driver

Related merges:

Added Board Support: Hackberry

Merged into 3.10

 * LED support (Patches sent: latest versions, )
 * Clock driver (Patches sent: latest version )

Planned for 3.10

 * Clock Gates
 * Complete UART supports
 * EMAC Driver

Major drivers

 * DMAengine driver (WiP: Matt Porter (mdp))
 * DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND
 * Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that


 * I2C driver (WiP: Maxime Ripard (mripard))
 * SPI driver (WiP: Matt Porter (mdp))
 * PIO mode only to start then DMA support via the dmaengine API


 * USB driver (WiP: Felipe Balbi (felipebalbi))

Minor drivers

 * Security ID driver (WiP: Oliver Schinagl (oliver))

I2C dependent drivers

 * PMU driver

DMA dependent drivers

 * NAND MTD driver
 * Sound driver
 * MMC driver (MMC appears to have its own DMA access to the memory, reported by wingrime)

Needing major rework
These drivers need major rework AND lack documentation other than existing source pile.


 * USB Driver
 * USB Gadget driver
 * Display driver (libv)

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


 * NAND Allwinner block driver
 * Mali driver (will not happen unless libv gets a proper lima driver out)

Related but separate

 * Device-specific drivers

=References=

= See also = Linux-tree-diff - list of kernel files modified or added ('+' sign) for allwinner SOCs.

=External Links=
 * Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons
 * 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
 * Free Electrons LXR (Linux Cross Reference)