Linux mainlining effort

From linux-sunxi.org
(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!

Contents

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 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.

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 A10 A10s A13

R8

GR8 V3s A20 A31 A23 A33

R16

A80 A83T H3 R40 A64 H5
AC97 NO N/A N/A N/A N/A NO N/A N/A N/A N/A N/A N/A NO N/A N/A
Audio Codec 4.4 4.4 4.4 4.9 4.13 4.4 4.10 4.10 4.11 N/A N/A 4.10 NO NO 4.12
ADC GPADC 3.16 3.14 OK 4.9 N/A 3.16 WIP N/A N/A NO  ? N/A NO N/A N/A
Thermal 3.16 3.14 OK 4.9 N/A 3.16 WIP WIP WIP NO NO WIP NO WIP WIP
Touch 3.16 3.14 OK 4.9 N/A 3.16 WIP N/A N/A NO  ? N/A NO N/A N/A
Clocks 3.10 3.11 OK 4.9 4.11 3.12 3.12 3.17 4.2 3.19 4.13 4.8 4.14 4.10 4.12
CPUFreq 4.0 4.0 4.0 4.0 4.2 4.11 NO WIP
Crypto 4.3 4.13 4.13 4.13  ? 4.3 4.3  ? 4.3 WIP WIP WIP  ? WIP WIP
CSI WIP WIP WIP WIP WIP WIP NO NO NO NO  ? WIP NO WIP WIP
Display (SimpleFB) 3.19 3.19 OK OK WIP OK OK OK OK  ?  ? WIP NO  ?  ?
Display (DRM) RGB 4.15  ? 4.7 4.9 4.13 4.15 4.10  ? 4.9 NO WIP N/A NO NO N/A
LVDS WIP N/A N/A N/A N/A WIP WIP WIP WIP NO WIP N/A NO NO N/A
MIPI DSI N/A N/A N/A N/A N/A N/A NO WIP WIP NO NO N/A NO NO N/A
CVBS NO 4.9 ? 4.7 4.9 N/A NO N/A N/A N/A N/A N/A NO NO N/A NO
VGA NO 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
HDMI 4.15 4.13 N/A N/A N/A 4.15 4.15 N/A N/A NO WIP WIP NO WIP WIP
CEC 4.14 4.14 N/A N/A N/A 4.14 4.14 N/A N/A NO NO NO NO NO NO
DMA 4.3 4.3 4.3 4.9 4.13 4.3 3.17 3.18 4.2  ? 4.9 4.2 NO WIP 4.12
Ethernet EMAC 3.11 3.11 N/A N/A 4.13 3.11 N/A N/A N/A WIP 4.13 4.13 WIP 4.13 4.13
GMAC N/A N/A 3.15 3.17
HW Spinlocks N/A N/A N/A N/A N/A N/A N/A N/A N/A NO WIP WIP N/A WIP WIP
I2C 3.11 3.12 OK 4.9 4.11 3.13 3.15 3.18 4.2 3.19  ? 4.9 OK 4.10 4.12
I2S 4.8  ? N/A 4.9 N/A 4.8  ?  ?  ? NO NO 4.14 NO WIP WIP
IR 3.17 4.0 4.0 4.9 N/A 3.17 4.0 N/A N/A 4.5  ? 4.6  ?  ? 4.12
Keypad WIP N/A N/A N/A N/A WIP N/A N/A N/A N/A N/A N/A NO N/A N/A
LRADC 4.0 4.0 OK 4.9 4.13 4.0 4.0 4.0 4.2  ?  ?  ?  ?  ?  ?
MsgBox N/A N/A N/A N/A N/A N/A N/A N/A N/A NO NO NO N/A NO NO
NAND  ?  ? WIP WIP N/A  ?  ?  ?  ? NO  ? WIP  ? WIP WIP
Pinctrl 3.9 3.9 3.9 4.9 4.11 3.12 3.12 3.18 4.2 3.19 4.4 4.5 4.14 4.6 4.12
PWM 4.0 4.4 OK 4.9  ? 4.0 NO 4.4 4.4 NO NO 4.9 NO NO 4.12
RSB N/A N/A N/A N/A N/A N/A N/A 4.4 4.4 4.3 4.14  ? N/A  ?  ?
RTC 3.14 N/A N/A N/A 4.11 3.14 3.18 3.18 4.2 N/A N/A 4.5  ? OK 4.12
SATA 3.15 N/A N/A N/A N/A 3.15 N/A N/A N/A N/A N/A N/A WIP N/A N/A
SD / MMC 3.16 3.16 OK 4.9 4.11 3.16 3.16 3.18 4.2 4.0 4.14 4.5 OK 4.11 4.12
SMP N/A N/A N/A N/A N/A PSCI PSCI PSCI PSCI WIP WIP PSCI PSCI PSCI PSCI
SPDIF 4.7 N/A N/A 4.9 N/A 4.7 4.9 N/A N/A  ? 4.13 4.11  ? WIP 4.12
SPI 3.16 3.15 OK 4.9 4.13 3.15 3.15  ?  ?  ?  ? 4.10  ? WIP 4.12
SRAM 4.2 4.2 4.2 4.2 4.2 4.2 4.14
USB 3.15 3.15 OK 4.9 4.11 3.15 3.16 4.3 4.3 4.2 4.14 4.8 WIP WIP 4.12
USB OTG 4.3 4.3 OK 4.9 4.11 4.3 4.3 4.8 4.8 NO  ? 4.12 NO  ? 4.12
VE NO NO WIP NO NO WIP NO NO WIP NO NO WIP NO NO WIP
Watchdog 3.12 3.11 OK 4.9 4.11 3.12 3.18 3.18 4.2 3.19 4.6 4.5  ?  ? 4.12
Model A10 A10s A13

R8

GR8 V3s A20 A31 A23 A33

R16

A80 A83T H3 R40 A64 H5
Legend
In Linux mainline since version x
Nobody works on it, but it should be compatible with already done drivers
Somebody works on it and the result is mostly stable enough
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
  • Allwinner A80 support
    • SMP support (WiP: Chen-Yu Tsai (wens)) patch-v1
  • Allwinner A83T support
    • PMIC regulator support (WiP: Chen-Yu Tsai (wens)) patch-v1
    • Wifi and Ethernet enablement (WiP: Chen-Yu Tsai (wens))

Major drivers

  • Audio codec support:
    • A20 Audio Codec improvements (WiP: Danny Milosavljevic) patch-v9
  • Display Engine driver
    • LVDS support (WiP: Priit Laes (plaes)) patch-v1 (WiP: Maxime Ripard (mripard)) patch-v1
    • HDMI Controller (H3), (WiP: Jernej Skrabec (jernejsk)) WIP branch
    • MIPI DSI support (A33/R16), (WiP: Maxime Ripard (mripard)) patch-v1
  • A80 related (WiP: Chen-Yu Tsai (wens))
    • GMAC

Minor drivers

  • sun6i (A31/A31s) PWM support (WiP: Siarhei Volkau) patch-v1
  • H3 and A64 SID controller (WiP: Icenowy Zheng) patch-v3
  • H3/sun8i
  • Keypad (WiP: Yassin Jaffer (ddc)) patch
  • 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 and Difficult Tasks

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

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

Troublesome

  • Memory Stick (missing hardware?)
  • TV Decoder (Analog in, no existing driver, no datasheet)
  • Transport Stream (DVB)
  • PATA (old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)
  • GPS backend IP (only present on A10, not much interesting, as all modern GPS receivers have MCU with UART output, no documentation)
  • Ac200: No datasheet, at least the ephy part seems to work in "generic PHY" mode

Unlikely

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

Related but separate

  • Device-specific drivers

Planned for 4.15

Drivers:

  • A10/A20/A31
    • display
    • HDMI controller
  • sunxi-ng clocks
    • audio PLL sigma-delta modulation support for accurate audio playback

Device tree changes:

  • SoC specific
    • A10/A20
      • CCU sunxi-ng style clock conversion
      • Display pipeline
      • HDMI controller
    • A31
      • HDMI controller
      • I2S controllers
    • A64
      • DMA controller
      • SPI
    • R40
      • Basic dtsi
  • Cleanups
    • Removal of GPIO pinmux settings for A10 and A80

New boards supported:

Merged for 4.14

Drivers:

  • A10s
    • HDMI DDC I2C Adapter
    • HDMI CEC support
  • most of Allwinner SoC
    • sun4i-ss SecuritySystem PRNG driver
  • A10/A20
    • CCU Clock-ng support
  • A64
    • SRAM controller driver
  • A83T
    • SD/MMC support
    • AXP813 PMIC
    • USB support
  • H3
  • R40
    • CCU sunxi-ng style clock driver support
    • pinctrl support
  • AXP PMICs
    • PEK time fix for AXP22x

Device tree changes:

  • SoC specific
    • A83T / A64
      • R_INTC interrupt controller
    • A83T
      • RSB support
      • SD/MMC support
      • AXP813 PMIC and codec
      • USB host support

New boards supported:

Merged into 4.13

Drivers:

  • V3s
    • Clock driver for Display Engine 2.0
    • DRM/KMS display driver support for Display Engine 2.0
    • codec support
  • A64 / A83T / H2+ / H3 / H5
    • dwmac-sun8i ethernet driver Unfinished due to unstable DT binding

Device tree changes:

  • SoC Specific
    • LRADC, MMC1, SPI, Display Engine 2.0 for V3s

Added board support: FriendlyARM NanoPi NEO2, Xunlong Orange Pi Prime, LicheePi Zero dock board

Merged into 4.12

  • H3
    • USB OTG support
  • H5
    • New SoC variant, similar to H3, but ARM64 with Cortex-A53 cores.
    • pinctrl driver
    • CCU (sunxi-ng) driver
    • USB OTG support
  • A31/H3 SPI
    • Support transfers larger than 64 bytes
  • AXP PMICs
    • AXP803 basic support
    • ACIN Power Supply driver
    • ADC IIO driver
    • Battery Power Supply driver

Added board support: FriendlyARM NanoPi NEO Air, Xunlong Orange Pi PC 2

Merged into 4.11

  • A23
    • Audio codec device tree changes
  • A31
    • SPDIF output support
  • A33
    • cpufreq support
    • Audio codec support
  • A64
    • MMC Support
    • USB support
  • A80
    • sunxi-ng style clock support
  • H2+
    • New SoC variant, similar to H3
  • H3
    • Audio codec device tree changes
    • SPDIF output support
  • V3s
    • New SoC support
    • USB PHY driver
    • pinctrl driver
    • CCU driver

Added board support: LicheePi One, Xunlong Orange Pi Zero, LicheePi Zero, Sinovoip Banana Pi M64

Merged into 4.10

  • A23
    • Audio Codec driver
  • A31/A31s
    • Display Driver (first pipeline)
    • Audio Codec support
  • A64
    • Clock driver
  • A80
    • External SDIO WiFi
  • H3
    • Audio Codec driver
    • SPI

Added board support: NextThingCo CHIP Pro, Pine64, FriendlyARM NanoPi M1

Merged into 4.9

  • GR8
    • SoC Support
  • A31
    • SPDIF support
  • A33
    • Display Driver
  • A64
    • USB PHY support
  • H3
    • PWM support
    • I2C support
  • AXP806 PMIC
    • regulator support
  • AC100 RTC / codec IC
    • mfd driver
    • RTC driver

Added board support: Orange Pi PC Plus, Olimex A33-OLinuXino, Xunlong Orange Pi Lite, Inet q972, Empire Electronix M712, Xunlong Orange Pi Plus 2, Xunlong Orange Pi Plus 2E, FriendlyARM NanoPi NEO,

Merged into 4.8

  • A10/A20
    • Display engine clocks (TCON, FE, DE)
    • I2S audio interface driver
  • H3
    • Clocks (through sunxi-ng)
    • USB multi-reset lines support
  • AXP2xx driver:
    • External drivebus support
    • AXP223 USB power supply support
    • AXP809 PMIC support

Merged into 4.7

  • A13/R8
    • Display Engine support
  • A31/A23/H3 DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) patch-v6
  • H3
    • USB support (multi-reset line support delayed til 4.8)

Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350

Merged into 4.6

  • Sticky-note-pin.png Note: For devices that use eMMC, old device trees may no longer work with this version (i.e. you have to rebuild your .dtb files). Expect eMMC I/O errors otherwise.
  • Allwinner A83T support
    • Initial bringup
    • timer, watchdog and reboot
  • H3
    • R_PIO support
  • A64
    • pinctrl driver
    • generic arm64 Allwinner platform (ARCH_SUNXI) support
  • NAND
    • ECC layout definition rework (partially) and randomizer support
  • A10/A20 SPDIF driver
  • AXP223 PMIC support
  • eMMC HS-DDR support for all currently supported SoCs except A80

Added board support: Allwinner A83TDevBoard, Cubietech Cubietruck Plus

Merged into 4.5

  • Allwinner A80 support
    • IR receiver driver
    • NMI controller
    • PRCM driver
    • R_PIO support
    • RSB driver
  • Allwinner H3 SoC support
    • H3 USB PHY clocks
  • A10/A20 Video Engine clocks
  • MIC1 capture for sun4i codec
  • Audio codec enabled on various boards

Added board support: Xunlong Orange Pi Plus

Exclamation.png Known problems:

  • Release tag v4.5 contains a change that broke stmmac networking on quite a few sunxi devices. The symptoms are
[ 13.196778] libphy: PHY stmmac-0:ffffffff not found
[ 13.204800] eth0: Could not attach to PHY
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)

A quick fix is to revert commit 88f8b1b which introduced the regression. See http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/415939.html, https://www.mail-archive.com/[email protected]/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.
Version v4.5-rc7 is known to be still okay, v4.6-rc2 fixes stmmac again.

Merged into 4.4

  • R8 SoC support
  • A23 / A33
    • RSB (Reduced Serial Bus) driver
    • PWM enabled
  • 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 [3]
      • Only works for SLC NAND for now
      • Some additional work is needed for MLC NANDs
  • A23
    • DMAengine driver (shared with A31) [4]
  • A80
    • initial machine support [5]
    • basic clocks and reset [6]
    • pinctrl driver [7]
    • extra UART, I2C, LEDS [8]

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 [11]
    • Touchscreen controller temperature sensor [12]

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: [13], [14], [15], [16], [17], [18], [19]

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: [20], [21], [22], [23], [24]

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

Merged into 3.13

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

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: [26], [27], [28], [29], [30], [31]

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: [32], [33], [34], [35], [36], [37]

Added board support: Olimex A10s-OLinuXino-Micro

Merged into 3.10

  • LED support
  • Clock driver
  • Complete UART support

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

Added Board Support: Pineriver_H24

Merged into 3.9

  • PINCTRL driver
  • GPIO-lib based driver

Related merges: [41]

Added Board Support: Miniand_Hackberry

Merged into 3.8

Related merges: [42], [43]

Added board support: Cubieboard, A13-OLinuXino

References

  1. http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf
  2. Your New ARM SoC Linux Support Check-List – ELCE 2012

See also

External Links

How to upstream

Notes

Personal tools
Namespaces

Variants
Actions
Navigation
Tools