https://linux-sunxi.org/api.php?action=feedcontributions&user=Jonkerj&feedformat=atom
linux-sunxi.org - User contributions [en]
2024-03-28T18:08:27Z
User contributions
MediaWiki 1.35.8
https://linux-sunxi.org/index.php?title=Template:H3_Support_status&diff=18549
Template:H3 Support status
2016-11-09T08:37:11Z
<p>Jonkerj: /* Mainline kernel */</p>
<hr />
<div>= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
The H3 and {{{board}}} support is progressing nicely. It is possible to find a usable mainline 4.x kernel (plus some patches) and a legacy 3.4 kernel in various work-in-progress git branches. See the [[#Manual_build|Manual build]] section for more details.<br />
<br />
{{{status_extra|}}}<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Use the {{{uboot_defconfig}}} build target.<br />
<br />
The H3 boards can boot from SD, NAND or NOR flash (if available), and via [[FEL/USBBoot|FEL]] using the OTG USB port. In U-Boot, loading the kernel is also supported from USB or ethernet (netboot). {{{hdmi_support|HDMI support in U-Boot is still WIP.}}}<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
The 3.4 kernel from the official [https://github.com/allwinner-zh/linux-3.4-sunxi Allwinner's git repository] [https://github.com/allwinner-zh/linux-3.4-sunxi/issues/14 does not support H3] yet. But it is possible to use one of the kernel forks, based on the [http://www.cnx-software.com/2015/05/12/orange-pi-plus-allwinner-h3-firmware-images-and-linux-sdk-released/ lichee H3 SDK tarball]:<br />
* [https://github.com/ssvb/linux-sunxi/tree/20151207-embedded-lima-memtester-h3 Siarhei Siamashka's branch '20151207-embedded-lima-memtester-h3']<br />
* [https://github.com/O-Computers/linux-sunxi/commits/h3-wip Yann Dirson's fork] added a few more fixes and adopted most of<br />
* [https://github.com/loboris/OrangePI-Kernel Boris Lovosevic' great initial work] on Allwinner's H3 kernel<br />
<br />
Configure this kernel using '''sun8i_h3_defconfig''', the rest is explained in the [[Linux_Kernel#Compilation|kernel compilation guide]].<br />
<br />
Use the .fex file for generating [[Script.bin|script.bin]].<br />
{{{legacy_instructions}}}<br />
<br />
When booting the legacy 3.4 kernel with the mainline U-Boot, add the following line to boot.cmd:<br />
<br />
setenv machid 1029<br />
setenv bootm_boot_mode sec<br />
<br />
Some other legacy kernel repositories:<br />
* [https://github.com/O-Computers/linux-sunxi 3.4-lichee-based kernel], based on work by [https://github.com/ssvb/linux-sunxi ssvb] and [https://github.com/loboris/OrangePI-Kernel/ loboris]<br />
* [https://github.com/O-Computers/meta-sunxi Yocto support here] glues together all the required parts to get this kernel to work with mainline u-boot, as well as accelerated X11/GLES support<br />
* [https://github.com/friendlyarm/h3_lichee A newer H3 BSP variant] appeared with tons of fixes which has been made available by FriendlyARM.<br />
* [https://github.com/igorpecovnik/linux/tree/sun8i A cleaned up fork] has been adopted by Armbian project. On top of that Armbian maintains a bunch of [https://github.com/igorpecovnik/lib/tree/master/patch/kernel/sun8i-default 3.4.x patches for H3 devices]. <br />
<br />
==== Mainline kernel ====<br />
<br />
Pretty decent support for H3 is available in kernel 4.8. The next kernel 4.9 will add support for I2C and PWM. EMAC support is still missing in mainline kernels although the ethernet port is already accessible with recent U-Boot versions.<br />
<br />
The development process, links to patches and links to kernel fork repositories are listed on the [[Linux mainlining effort#Work_In_Progress | Linux mainlining effort]] page. Patches can also be found from the arm-linux mailing list.<br />
<br />
Repositories with H3 patches:<br />
* [https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/log/?h=sunxi/for-next Maxime Ripard's branch 'sunxi/for-next'] (very basic H3 support, without USB)<br />
* [https://github.com/jwrdegoede/linux-sunxi/tree/sunxi-wip Hans de Goede's branch 'sunxi-wip'] (many work-in-progress patches, including H3 and USB support for it)<br />
* [https://github.com/ssvb/linux-sunxi/tree/20151223-h3-mainline-smp-hack Siarhei Siamashka's branch '20151223-h3-mainline-smp-hack'] (minimal set of H3 patches, with USB and SMP)<br />
* [https://github.com/wens/linux/tree/h3-emac Chen-Yu Tsai's branch 'h3-emac'] (working Ethernet and USB)<br />
* [https://github.com/megous/linux/commits/orange-pi-4.9 Ondřej Jirman's branch for H3 based orange Pi] (work-in-progress DVFS and USB-OTG)<br />
<br />
Use the {{{kernel_dtb}}} device-tree binary.</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=18251
Linux mainlining effort
2016-09-20T06:34:15Z
<p>Jonkerj: /* Status Matrix */</p>
<hr />
<div>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.<br />
<br />
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!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
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.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|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|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! SoC Name !! AC97 !! Audio Codec !! Clocks !! Crypto !! CSI !! Display (SimpleFB) !! Display (DRM) !! DMA !! EMAC !! HW Spinlocks !! I2C !! I2S !! IR !! Keypad !! LRADC !! MsgBox !! NAND !! Pinctrl !! PWM !! RSB !! RTC !! SATA !! SD / MMC !! SMP !! SPDIF !! SPI !! Touch / Thermal / GPADC !! USB !! USB OTG !! Watchdog<br />
|-<br />
| [[A10]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | v3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A10s]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
|-<br />
| [[A13]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.3<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[GR8]] || N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
|-<br />
| [[A20]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11 / 3.15 (GMAC)<br />
| N/A<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A31]] || N/A<br />
| style="background: yellow;" | [https://github.com/wens/linux/tree/a31-audio WIP]<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: orange;" | [https://github.com/wens/linux/tree/sun6i-drm WIP]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A23]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;"| ?<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A33]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.2<br />
|-<br />
| [[A80]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" |4.5<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: orange;"| [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
|-<br />
| [[A83T]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;"| ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.6<br />
|-<br />
| [[H3]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: yellow;" | 4.9<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: lightgreen;"| 4.9<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" |?<br />
| style="background: darkgreen;" |?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[A64]] || N/A<br />
| style="background: red;"| NO<br />
| style="background: yellow;" |[[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: yellow;"| WIP<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"|?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: yellow;" | WIP [[#a64_mmc|[1]]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| WIP<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: yellow;" | [https://github.com/Icenowy/linux-sunxi/tree/a64-usb WIP]<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"| ?<br />
|}<br />
<br />
<div id="a64_mmc" />[1] SD cards seem to work OKish (though roughly at half speed only atm: 11 MB/s), eMMC has problems, but patches are floating around.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: yellow;" | Somebody works on it and the result is mostly stable enough<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* [[A13]]<br />
** PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
* Allwinner [[A64]] support<br />
** Clocks support (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455848.html patch-v2]<br />
** MMC controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/447110.html patch-v4]<br />
** USB Host controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/446405.html patch-v2]<br />
<br />
* Allwinner [[A80]] support<br />
** SMP support (WiP: Chen-Yu Tsai (wens)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/343354.html patch-rfc] <br />
<br />
* Allwinner [[A83T]] support<br />
** Modern Clock (clock-ng) support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/435630.html patch-v2]<br />
** Clocks, r_pio, MMC and RSB support (WiP: Vishnu Patekar) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416027.html patch-v4]<br />
** USB support (WiP: Chen-Yu Tsai (wens))<br />
** DMAEngine support (Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457752.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A13]] Cedrus Video Decoder driver (WiP: Florent (kido) Revest) [http://www.mail-archive.com/linux-media@vger.kernel.org/msg101816.html patch-v1] [[Sunxi-cedrus | dedicated wiki page]]<br />
<br />
* [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [http://www.spinics.net/lists/arm-kernel/msg526574.html patch-v9]<br />
<br />
* [[A31]] Audio Codec support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/a31-audio development branch]<br />
* [[A31]] Display Engine support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/sun6i-drm development branch]<br />
<br />
* Display Engine driver<br />
** sun8i (H3) (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-February/404278.html patch-v4]<br />
<br />
* CSI (camera sensor interface) (WiP: Yassin Jaffer (ddc)) (WiP: Maxime Ripard (mripard))<br />
** CSI clock driver (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416152.html patch-RFC]<br />
<br />
* [[Sun8i emac]] (H3/A64/A83T) support (WiP: LABBE Corentin [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455663.html patch-v3])<br />
* Ac200 (At least EPHY) (WiP: LABBE Corentin)<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/)<br />
<br />
* A80 related (WiP: Chen-Yu Tsai (wens))<br />
** AXP806 PMIC [http://www.spinics.net/lists/arm-kernel/msg526875.html patch-v2]<br />
** GMAC<br />
** External SDIO WiFi<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* GPADC for A10, A13 and A31 (WiP: Quentin Schulz) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457233.html patch-v6]<br />
* Enable and fix USB OTG port support on Orange Pi PC/One (wip: Ondřej Jirman) [https://github.com/megous/linux/commits/orange-pi-4.7 wip-patch]<br />
* DVFS support for Orange Pi PC/One (wip: Ondřej Jirman - megi) [https://xff.cz/orange-pi-dvfs/] [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/438794.html patch-v1]<br />
* Sunxi THS (H3) (Josef Gajdusek) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/387312.html patch-v2]<br />
* Keypad (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch]<br />
* [[AXP152]]/[[AXP202]]/[[AXP209]]/[[AXP223]]<br />
** AC driver: (WiP: Michael Haas (laga)) [https://groups.google.com/d/msg/linux-sunxi/nEUg87cV6KI/xH4_8BZMEgAJ patch] [https://groups.google.com/forum/#!topic/linux-sunxi/Ee7i8DVI4F8 patch V2]<br />
** Battery driver (WiP: Bruno Prémont (bonbons)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295547.html RFC-patch]<br />
*** Michael Haas will be re-submitting Brunos battery driver<br />
* hardware spinlock (H3/A83) (WIP: LABBE Corentin)<br />
* Activate pwm on A83T (necessary for PHY)<br />
<br />
== Left to be done ==<br />
<br />
=== Easy Tasks ===<br />
<br />
Following drivers should be doable by someone with no or a small kernel development experience:<br />
* [[1-Wire|One Wire / 1-Wire]] (dedicated HW only present on A31/A80)<br />
* Smart Card Reader<br />
* A23/A33 Thermal Sensor Controller<br />
<br />
=== Medium Tasks ===<br />
<br />
Following drivers require some good knowledge of the kernel internals.<br />
* Audio Related drivers<br />
** A23 Audio codec and AC97 audio interface support (A23 SDK contains drivers for both)<br />
** A33/A64 Audio codec driver (A33 SDK contains driver)<br />
*** According to the register map and the A33 SDK driver, there seems to be a internal I2S bus between the codec and the processor<br />
<br />
=== Difficult Tasks ===<br />
These drivers require some good knowledge of the kernel internals, plus a good experience with such piece of hardware.<br />
<br />
* Audio Engine (Only exists in A10)<br />
* V4L driver for G2D/Mixer is based on samsung g2d and fimc driver. Only initial work started. [https://bitbucket.org/cybrixsystems/linux-next-devel/]<br />
<br />
=== Troublesome ===<br />
* Memory Stick (missing hardware?)<br />
* TV Decoder (Analog in, no existing driver, no datasheet)<br />
* Transport Stream(DVB) in<br />
** IRC user woprr has started to work on this<br />
* PATA (old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (only present on [[A10]], not much interesting, as all modern GPS receivers have MCU with UART output, no documentation)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
== Planned for 4.9 ==<br />
* [[GR8]]<br />
** SoC Support<br />
<br />
* [[AXP209]]<br />
** GPIO support<br />
<br />
* [[A31]]<br />
** SPDIF support<br />
<br />
* [[A23]]/[[A33]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A31]]/[[A31s]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A33]]<br />
** Display Driver<br />
<br />
* [[A64]]<br />
** USB PHY support<br />
<br />
* [[H3]]<br />
** PWM support<br />
** I2C support<br />
<br />
* AC100 RTC / codec IC<br />
** mfd driver<br />
** RTC driver<br />
<br />
Added board support: [[Xunlong Orange Pi PC#Variants | Orange Pi PC Plus]]<br />
<br />
== Merged for 4.8 ==<br />
<br />
* [[A10]]/[[A20]]<br />
** Display engine clocks (TCON, FE, DE)<br />
** I2S audio interface driver<br />
<br />
* [[H3]]<br />
** Clocks (through sunxi-ng)<br />
** USB multi-reset lines support<br />
* AXP2xx driver:<br />
** External drivebus support<br />
** AXP223 USB power supply support<br />
** AXP809 PMIC support<br />
<br />
* [https://www.spinics.net/lists/arm-kernel/msg510602.html BCM53125 support]<br />
** This switch is used in [[Lamobo R1|Lamobo / Banana Pi R1]]<br />
<br />
== Merged into 4.7 ==<br />
<br />
* [[A13]]/[[R8]]<br />
** Display Engine support<br />
<br />
* [[A10]]/[[A20]]<br />
** SPDIF Support<br />
<br />
* [[A31]]/[[A23]]/[[H3]] DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-April/424280.html patch-v6]<br />
<br />
* [[H3]]<br />
** USB support (multi-reset line support delayed til 4.8)<br />
<br />
Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350<br />
<br />
== Merged into 4.6 ==<br />
* {{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.}}<br />
<br />
* Allwinner [[A83T]] support<br />
** Initial bringup<br />
** timer, watchdog and reboot<br />
<br />
* [[H3]]<br />
** R_PIO support<br />
<br />
* [[A64]]<br />
** pinctrl driver<br />
** generic arm64 Allwinner platform (ARCH_SUNXI) support<br />
<br />
* NAND<br />
** ECC layout definition rework (partially) and randomizer support<br />
<br />
* A10/A20 SPDIF driver<br />
<br />
* AXP223 PMIC support<br />
<br />
* eMMC HS-DDR support for all currently supported SoCs except [[A80]]<br />
<br />
Added board support: [[Allwinner A83TDevBoard]], [[Cubietech Cubietruck Plus]]<br />
<br />
== Merged into 4.5 ==<br />
* Allwinner [[A80]] support<br />
** IR receiver driver<br />
** NMI controller<br />
** PRCM driver<br />
** R_PIO support<br />
** RSB driver<br />
<br />
* Allwinner H3 SoC support<br />
** H3 USB PHY clocks<br />
<br />
* A10/A20 Video Engine clocks<br />
<br />
* MIC1 capture for sun4i codec<br />
<br />
* Audio codec enabled on various boards<br />
<br />
Added board support: [[Xunlong Orange Pi Plus]]<br />
<br />
{{knownProblems|<br />
* Release tag v4.5 contains a change that broke ''stmmac'' networking on quite a few sunxi devices. The symptoms are<br />
<pre>[ 13.196778] libphy: PHY stmmac-0:ffffffff not found<br />
[ 13.204800] eth0: Could not attach to PHY<br />
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)</pre>}}<br />
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/netdev@vger.kernel.org/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.<br><br />
Version ''v4.5-rc7'' is known to be still okay, ''v4.6-rc2'' fixes stmmac again.<br />
<br />
== Merged into 4.4 ==<br />
<br />
* [[R8]] SoC support<br />
<br />
* [[A10]] / [[A20]]<br />
** CAN driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0738eff14d817a02ab082c392c96a1613006f158 (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Audio Codec driver<br />
** Audio clocks (PLL2)<br />
** Audio codec related DTS bits<br />
*** Enabled on [[Cubieboard]], [[Cubieboard2]], [[Cubietruck]], C.H.I.P., [[Mele A1000]]<br />
<br />
* [[A23]] / [[A33]]<br />
** RSB (Reduced Serial Bus) driver<br />
** PWM enabled<br />
<br />
* [[A83T]]<br />
** PIO driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** USB power supply driver<br />
** Support for OTG vbus detection via AXP pmic<br />
** DTS nodes for OTG vbus support<br />
<br />
Added board support: Olimex A20 EVB [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=15ada16dc7657c08242d24067a4ddf07a2662062 (commit)], Unified Q8 format tablet, Wits Pro A20 DKT [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5cf0022450d2068e56b60cbbd0b5ff1430b7656 (commit)], Yones Toptech bs1078v2 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=849147cdb540266883cb49f2094a87b3ee6e12ec (commit)], Wobo i5 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=adfa06ce9bd30f8bc5439be49bcfaa7ceb1b6c2a (commit)], C.H.I.P [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=465a225fb2afb3ebf1becbe76d46b084d46f30a5 (commit)], [[Sinlinx SinA31s]], [[MSI Primo81]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a5ea06d0bc123cc7f49d042fab60ddd3964764c8 (commit)]<br />
<br />
== Merged into 4.3 ==<br />
<br />
* [[A10]] / [[A13]] / [[A20]] / [[A23]] / [[A31]] <br />
** Enable OTG controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ff12049d6b6cc79ad8ee092ae226434687062ec (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Support for DMA engine<br />
<br />
* [[A23]] / [[A33]]<br />
** Support for USB-controllers<br />
<br />
* most of Allwinner SoC<br />
** Support for [[Security System]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4c90396ed7ef9b4e4d221e008e54be8bea8307f (commit)]<br />
<br />
* [[AXP152]]<br />
** AXP152 mfd support<br />
<br />
Added board support: Iteaduino Plus A10, Ippo-q8h-a33 v1.2<br />
<br />
== Merged into 4.2 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** SRAM Controller<br />
<br />
* [[A23]]<br />
** SMP support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=73e601ea57020c42d989120061dfc83ce9c85360 (commit)]<br />
** Architected timer support<br />
<br />
* [[A31]]/[[A31s]]<br />
** CPUFreq support<br />
<br />
* [[A33]]<br />
** Machine support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=159870d2413c92622790e9cecbce95099bed539a (commit)]<br />
** Bring-up sharing most drivers with [[A23]]<br />
** pinctl driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=93a4b1b9465d92e8be031b57166afa3d5611e142 (commit)]<br />
** PIO controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7164873e7c69d6bab74726debc3b495a86332b1f (commit)]<br />
<br />
* [[A80]]<br />
** Architected timer support<br />
** USB support<br />
<br />
* [[AXP221]] PMIC driver<br />
<br />
* [[H3]]<br />
** Introduce H3 support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=14a882df14a5ae859b245bc708ce3fce47a91594 (commit)]<br />
** DMA Controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1bc5e157ed2b4f5b206155fc772d860158acd201 (commit)]<br />
<br />
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]]<br />
<br />
== Merged into 4.1 ==<br />
<br />
* [[A80]]<br />
** USB PHY driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** DT bindings<br />
<br />
== Merged into 4.0 ==<br />
<br />
* [[A10]] / [[A20]]<br />
** PS/2 Controller<br />
<br />
* [[A13]] / [[A31]]<br />
** IR receiver<br />
<br />
* [[A31s]]<br />
** bring-up sharing majority of drivers with [[A31]]<br />
** pinctrl driver<br />
<br />
* [[A80]]<br />
** MMC<br />
<br />
* All SoCs<br />
** LRADC Input driver<br />
** CPUFreq<br />
** PWM Driver<br />
<br />
* AXP209 power button input driver<br />
<br />
Added board support: [[CSQ CS908]], [[LeMaker Banana Pro]], [[Chuwi V7 CW0825]], [[Rikomagic mk802]], [[Rikomagic mk802ii]], [[Rikomagic mk802_a10s]], [[MarsBoard A10]], [[Hyundai A7HD]]<br />
<br />
== Merged into 3.19 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** Simple Framebuffer<br />
*** In order to use that, you'll need a recent mainline u-boot (2015.01+)<br />
** USB phy driver support for usb0<br />
<br />
* [[A10]] / [[A20]]<br />
** NAND [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295818.html]<br />
*** Only works for SLC NAND for now<br />
*** Some additional work is needed for MLC NANDs<br />
<br />
* [[A23]]<br />
** DMAengine driver (shared with A31) [http://www.spinics.net/lists/arm-kernel/msg375529.html]<br />
<br />
* [[A80]]<br />
** initial machine support [http://www.spinics.net/lists/arm-kernel/msg368569.html]<br />
** basic clocks and reset [http://www.spinics.net/lists/arm-kernel/msg370495.html]<br />
** pinctrl driver [http://www.spinics.net/lists/arm-kernel/msg372176.html]<br />
** extra UART, I2C, LEDS [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/298729.html]<br />
<br />
Related merges:<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=fe0c888 sunxi-simplefb-for-3.19]<br />
<br />
Added board support: [[Mele M3]], [[LeMaker Banana Pi]], [[Merrii A80 Optimus Board]], [[Olimex A20-OLinuXino-Lime2]]<br />
<br />
== Merged into 3.18 ==<br />
<br />
* [[A31]]/[[A23]]<br />
** RTC [http://www.spinics.net/lists/arm-kernel/msg351626.html]<br />
** Watchdog [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287807.html]<br />
<br />
* [[A23]]<br />
** MMC<br />
** pinctrl<br />
** DMA<br />
** I2C<br />
<br />
Added board support: [[Olimex A20-OLinuXino-Lime]], [[Merrii Hummingbird A20]], [[HSG H702]]<br />
<br />
== Merged into 3.17 ==<br />
* A10/A20<br />
** IR driver<br />
<br />
* A31<br />
** PIO/R_PIO external interrupts<br />
** DMAengine<br />
** GMAC<br />
<br />
* A23<br />
** Timers, UARTs, initial bringup<br />
** Basic clocks<br />
** PIO/R_PIO drivers<br />
<br />
Related merges: <br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e4ca430 clk-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=54c72d5 mfd-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e0b8b78 pinctrl-v3.17-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b3345d7 soc-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4e1f5a dt-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c7a19c7 slave-dma for-linus],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4d3333 v4l_for_linus],<br />
<br />
Added Board Support: [[Merrii Hummingbird A31]], BA10, [[LinkSprite pcDuino V3]], [[Ippo q8h]]<br />
<br />
== Merged into 3.16 ==<br />
* AXP20x regulator support<br />
<br />
* All<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** SMBus Regmap<br />
** Special Pins Muxer<br />
** P2WI Controller<br />
<br />
* A10<br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Related Merges:<br />
<!-- wens: not complete --><br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7477838f2e481256a40e0c44b92f9bccb065bc51 defconfig-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a727eaf64ff084a50b983fc506810c7a576b7ce3 drivers-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=755a9ba7bf24a45b6dbf8bb15a5a56c8ed12461a dt-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=825f4e0271b0de3f7f31d963dcdaa0056fe9b73a soc-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e5c4ecdc55b6d824365ba7964bcd3185223f9688 usb-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd698cf6595b079ce36423e8c7eb4a69a31b1733 pinctrl-v3.16-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1a5700bc2d10cd379a795fd2bb377a190af5acd4 clk-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dd1845af24a47b70cf84c29126698884f740ff9c clk-for-linus-3.16-part2],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=07888238f55056605cd23aa4ea3ca97d5e15938f mmc-updates-for-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1fe9eb184721132c7254d76d9ef31c96edad8870 mfd-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=312c76f1a3989b8d0c0c13fee765bb2c41f2d114 regulator-v3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4f9b8fc73f9aa93744f0e91e18f367d7766f523 input-for-linus]<br />
<br />
Added board support: [[Mele M9]], [[R7]]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[Olimex A10s-OLinuXino-Micro]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=18250
Linux mainlining effort
2016-09-20T06:33:40Z
<p>Jonkerj: /* Status Matrix */</p>
<hr />
<div>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.<br />
<br />
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!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
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.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|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|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! SoC Name !! AC97 !! Audio Codec !! Clocks !! Crypto !! CSI !! Display (SimpleFB) !! Display (DRM) !! DMA !! EMAC !! HW Spinlocks !! I2C !! I2S !! IR !! Keypad !! LRADC !! MsgBox !! NAND !! Pinctrl !! PWM !! RSB !! RTC !! SATA !! SD / MMC !! SMP !! SPDIF !! SPI !! Touch / Thermal / GPADC !! USB !! USB OTG !! Watchdog<br />
|-<br />
| [[A10]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | v3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A10s]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
|-<br />
| [[A13]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.3<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[GR8]] || N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
|-<br />
| [[A20]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11 / 3.15 (GMAC)<br />
| N/A<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A31]] || N/A<br />
| style="background: yellow;" | [https://github.com/wens/linux/tree/a31-audio WIP]<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: orange;" | [https://github.com/wens/linux/tree/sun6i-drm WIP]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A23]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;"| ?<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A33]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.2<br />
|-<br />
| [[A80]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" |4.5<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: orange;"| [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
|-<br />
| [[A83T]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;"| ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.6<br />
|-<br />
| [[H3]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: lightgreen;"| 4.9<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" |?<br />
| style="background: darkgreen;" |?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[A64]] || N/A<br />
| style="background: red;"| NO<br />
| style="background: yellow;" |[[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: yellow;"| WIP<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"|?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: yellow;" | WIP [[#a64_mmc|[1]]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| WIP<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: yellow;" | [https://github.com/Icenowy/linux-sunxi/tree/a64-usb WIP]<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"| ?<br />
|}<br />
<br />
<div id="a64_mmc" />[1] SD cards seem to work OKish (though roughly at half speed only atm: 11 MB/s), eMMC has problems, but patches are floating around.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: yellow;" | Somebody works on it and the result is mostly stable enough<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* [[A13]]<br />
** PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
* Allwinner [[A64]] support<br />
** Clocks support (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455848.html patch-v2]<br />
** MMC controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/447110.html patch-v4]<br />
** USB Host controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/446405.html patch-v2]<br />
<br />
* Allwinner [[A80]] support<br />
** SMP support (WiP: Chen-Yu Tsai (wens)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/343354.html patch-rfc] <br />
<br />
* Allwinner [[A83T]] support<br />
** Modern Clock (clock-ng) support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/435630.html patch-v2]<br />
** Clocks, r_pio, MMC and RSB support (WiP: Vishnu Patekar) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416027.html patch-v4]<br />
** USB support (WiP: Chen-Yu Tsai (wens))<br />
** DMAEngine support (Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457752.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A13]] Cedrus Video Decoder driver (WiP: Florent (kido) Revest) [http://www.mail-archive.com/linux-media@vger.kernel.org/msg101816.html patch-v1] [[Sunxi-cedrus | dedicated wiki page]]<br />
<br />
* [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [http://www.spinics.net/lists/arm-kernel/msg526574.html patch-v9]<br />
<br />
* [[A31]] Audio Codec support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/a31-audio development branch]<br />
* [[A31]] Display Engine support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/sun6i-drm development branch]<br />
<br />
* Display Engine driver<br />
** sun8i (H3) (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-February/404278.html patch-v4]<br />
<br />
* CSI (camera sensor interface) (WiP: Yassin Jaffer (ddc)) (WiP: Maxime Ripard (mripard))<br />
** CSI clock driver (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416152.html patch-RFC]<br />
<br />
* [[Sun8i emac]] (H3/A64/A83T) support (WiP: LABBE Corentin [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455663.html patch-v3])<br />
* Ac200 (At least EPHY) (WiP: LABBE Corentin)<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/)<br />
<br />
* A80 related (WiP: Chen-Yu Tsai (wens))<br />
** AXP806 PMIC [http://www.spinics.net/lists/arm-kernel/msg526875.html patch-v2]<br />
** GMAC<br />
** External SDIO WiFi<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* GPADC for A10, A13 and A31 (WiP: Quentin Schulz) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457233.html patch-v6]<br />
* Enable and fix USB OTG port support on Orange Pi PC/One (wip: Ondřej Jirman) [https://github.com/megous/linux/commits/orange-pi-4.7 wip-patch]<br />
* DVFS support for Orange Pi PC/One (wip: Ondřej Jirman - megi) [https://xff.cz/orange-pi-dvfs/] [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/438794.html patch-v1]<br />
* Sunxi THS (H3) (Josef Gajdusek) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/387312.html patch-v2]<br />
* Keypad (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch]<br />
* [[AXP152]]/[[AXP202]]/[[AXP209]]/[[AXP223]]<br />
** AC driver: (WiP: Michael Haas (laga)) [https://groups.google.com/d/msg/linux-sunxi/nEUg87cV6KI/xH4_8BZMEgAJ patch] [https://groups.google.com/forum/#!topic/linux-sunxi/Ee7i8DVI4F8 patch V2]<br />
** Battery driver (WiP: Bruno Prémont (bonbons)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295547.html RFC-patch]<br />
*** Michael Haas will be re-submitting Brunos battery driver<br />
* hardware spinlock (H3/A83) (WIP: LABBE Corentin)<br />
* Activate pwm on A83T (necessary for PHY)<br />
<br />
== Left to be done ==<br />
<br />
=== Easy Tasks ===<br />
<br />
Following drivers should be doable by someone with no or a small kernel development experience:<br />
* [[1-Wire|One Wire / 1-Wire]] (dedicated HW only present on A31/A80)<br />
* Smart Card Reader<br />
* A23/A33 Thermal Sensor Controller<br />
<br />
=== Medium Tasks ===<br />
<br />
Following drivers require some good knowledge of the kernel internals.<br />
* Audio Related drivers<br />
** A23 Audio codec and AC97 audio interface support (A23 SDK contains drivers for both)<br />
** A33/A64 Audio codec driver (A33 SDK contains driver)<br />
*** According to the register map and the A33 SDK driver, there seems to be a internal I2S bus between the codec and the processor<br />
<br />
=== Difficult Tasks ===<br />
These drivers require some good knowledge of the kernel internals, plus a good experience with such piece of hardware.<br />
<br />
* Audio Engine (Only exists in A10)<br />
* V4L driver for G2D/Mixer is based on samsung g2d and fimc driver. Only initial work started. [https://bitbucket.org/cybrixsystems/linux-next-devel/]<br />
<br />
=== Troublesome ===<br />
* Memory Stick (missing hardware?)<br />
* TV Decoder (Analog in, no existing driver, no datasheet)<br />
* Transport Stream(DVB) in<br />
** IRC user woprr has started to work on this<br />
* PATA (old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (only present on [[A10]], not much interesting, as all modern GPS receivers have MCU with UART output, no documentation)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
== Planned for 4.9 ==<br />
* [[GR8]]<br />
** SoC Support<br />
<br />
* [[AXP209]]<br />
** GPIO support<br />
<br />
* [[A31]]<br />
** SPDIF support<br />
<br />
* [[A23]]/[[A33]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A31]]/[[A31s]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A33]]<br />
** Display Driver<br />
<br />
* [[A64]]<br />
** USB PHY support<br />
<br />
* [[H3]]<br />
** PWM support<br />
** I2C support<br />
<br />
* AC100 RTC / codec IC<br />
** mfd driver<br />
** RTC driver<br />
<br />
Added board support: [[Xunlong Orange Pi PC#Variants | Orange Pi PC Plus]]<br />
<br />
== Merged for 4.8 ==<br />
<br />
* [[A10]]/[[A20]]<br />
** Display engine clocks (TCON, FE, DE)<br />
** I2S audio interface driver<br />
<br />
* [[H3]]<br />
** Clocks (through sunxi-ng)<br />
** USB multi-reset lines support<br />
* AXP2xx driver:<br />
** External drivebus support<br />
** AXP223 USB power supply support<br />
** AXP809 PMIC support<br />
<br />
* [https://www.spinics.net/lists/arm-kernel/msg510602.html BCM53125 support]<br />
** This switch is used in [[Lamobo R1|Lamobo / Banana Pi R1]]<br />
<br />
== Merged into 4.7 ==<br />
<br />
* [[A13]]/[[R8]]<br />
** Display Engine support<br />
<br />
* [[A10]]/[[A20]]<br />
** SPDIF Support<br />
<br />
* [[A31]]/[[A23]]/[[H3]] DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-April/424280.html patch-v6]<br />
<br />
* [[H3]]<br />
** USB support (multi-reset line support delayed til 4.8)<br />
<br />
Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350<br />
<br />
== Merged into 4.6 ==<br />
* {{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.}}<br />
<br />
* Allwinner [[A83T]] support<br />
** Initial bringup<br />
** timer, watchdog and reboot<br />
<br />
* [[H3]]<br />
** R_PIO support<br />
<br />
* [[A64]]<br />
** pinctrl driver<br />
** generic arm64 Allwinner platform (ARCH_SUNXI) support<br />
<br />
* NAND<br />
** ECC layout definition rework (partially) and randomizer support<br />
<br />
* A10/A20 SPDIF driver<br />
<br />
* AXP223 PMIC support<br />
<br />
* eMMC HS-DDR support for all currently supported SoCs except [[A80]]<br />
<br />
Added board support: [[Allwinner A83TDevBoard]], [[Cubietech Cubietruck Plus]]<br />
<br />
== Merged into 4.5 ==<br />
* Allwinner [[A80]] support<br />
** IR receiver driver<br />
** NMI controller<br />
** PRCM driver<br />
** R_PIO support<br />
** RSB driver<br />
<br />
* Allwinner H3 SoC support<br />
** H3 USB PHY clocks<br />
<br />
* A10/A20 Video Engine clocks<br />
<br />
* MIC1 capture for sun4i codec<br />
<br />
* Audio codec enabled on various boards<br />
<br />
Added board support: [[Xunlong Orange Pi Plus]]<br />
<br />
{{knownProblems|<br />
* Release tag v4.5 contains a change that broke ''stmmac'' networking on quite a few sunxi devices. The symptoms are<br />
<pre>[ 13.196778] libphy: PHY stmmac-0:ffffffff not found<br />
[ 13.204800] eth0: Could not attach to PHY<br />
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)</pre>}}<br />
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/netdev@vger.kernel.org/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.<br><br />
Version ''v4.5-rc7'' is known to be still okay, ''v4.6-rc2'' fixes stmmac again.<br />
<br />
== Merged into 4.4 ==<br />
<br />
* [[R8]] SoC support<br />
<br />
* [[A10]] / [[A20]]<br />
** CAN driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0738eff14d817a02ab082c392c96a1613006f158 (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Audio Codec driver<br />
** Audio clocks (PLL2)<br />
** Audio codec related DTS bits<br />
*** Enabled on [[Cubieboard]], [[Cubieboard2]], [[Cubietruck]], C.H.I.P., [[Mele A1000]]<br />
<br />
* [[A23]] / [[A33]]<br />
** RSB (Reduced Serial Bus) driver<br />
** PWM enabled<br />
<br />
* [[A83T]]<br />
** PIO driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** USB power supply driver<br />
** Support for OTG vbus detection via AXP pmic<br />
** DTS nodes for OTG vbus support<br />
<br />
Added board support: Olimex A20 EVB [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=15ada16dc7657c08242d24067a4ddf07a2662062 (commit)], Unified Q8 format tablet, Wits Pro A20 DKT [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5cf0022450d2068e56b60cbbd0b5ff1430b7656 (commit)], Yones Toptech bs1078v2 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=849147cdb540266883cb49f2094a87b3ee6e12ec (commit)], Wobo i5 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=adfa06ce9bd30f8bc5439be49bcfaa7ceb1b6c2a (commit)], C.H.I.P [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=465a225fb2afb3ebf1becbe76d46b084d46f30a5 (commit)], [[Sinlinx SinA31s]], [[MSI Primo81]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a5ea06d0bc123cc7f49d042fab60ddd3964764c8 (commit)]<br />
<br />
== Merged into 4.3 ==<br />
<br />
* [[A10]] / [[A13]] / [[A20]] / [[A23]] / [[A31]] <br />
** Enable OTG controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ff12049d6b6cc79ad8ee092ae226434687062ec (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Support for DMA engine<br />
<br />
* [[A23]] / [[A33]]<br />
** Support for USB-controllers<br />
<br />
* most of Allwinner SoC<br />
** Support for [[Security System]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4c90396ed7ef9b4e4d221e008e54be8bea8307f (commit)]<br />
<br />
* [[AXP152]]<br />
** AXP152 mfd support<br />
<br />
Added board support: Iteaduino Plus A10, Ippo-q8h-a33 v1.2<br />
<br />
== Merged into 4.2 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** SRAM Controller<br />
<br />
* [[A23]]<br />
** SMP support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=73e601ea57020c42d989120061dfc83ce9c85360 (commit)]<br />
** Architected timer support<br />
<br />
* [[A31]]/[[A31s]]<br />
** CPUFreq support<br />
<br />
* [[A33]]<br />
** Machine support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=159870d2413c92622790e9cecbce95099bed539a (commit)]<br />
** Bring-up sharing most drivers with [[A23]]<br />
** pinctl driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=93a4b1b9465d92e8be031b57166afa3d5611e142 (commit)]<br />
** PIO controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7164873e7c69d6bab74726debc3b495a86332b1f (commit)]<br />
<br />
* [[A80]]<br />
** Architected timer support<br />
** USB support<br />
<br />
* [[AXP221]] PMIC driver<br />
<br />
* [[H3]]<br />
** Introduce H3 support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=14a882df14a5ae859b245bc708ce3fce47a91594 (commit)]<br />
** DMA Controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1bc5e157ed2b4f5b206155fc772d860158acd201 (commit)]<br />
<br />
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]]<br />
<br />
== Merged into 4.1 ==<br />
<br />
* [[A80]]<br />
** USB PHY driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** DT bindings<br />
<br />
== Merged into 4.0 ==<br />
<br />
* [[A10]] / [[A20]]<br />
** PS/2 Controller<br />
<br />
* [[A13]] / [[A31]]<br />
** IR receiver<br />
<br />
* [[A31s]]<br />
** bring-up sharing majority of drivers with [[A31]]<br />
** pinctrl driver<br />
<br />
* [[A80]]<br />
** MMC<br />
<br />
* All SoCs<br />
** LRADC Input driver<br />
** CPUFreq<br />
** PWM Driver<br />
<br />
* AXP209 power button input driver<br />
<br />
Added board support: [[CSQ CS908]], [[LeMaker Banana Pro]], [[Chuwi V7 CW0825]], [[Rikomagic mk802]], [[Rikomagic mk802ii]], [[Rikomagic mk802_a10s]], [[MarsBoard A10]], [[Hyundai A7HD]]<br />
<br />
== Merged into 3.19 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** Simple Framebuffer<br />
*** In order to use that, you'll need a recent mainline u-boot (2015.01+)<br />
** USB phy driver support for usb0<br />
<br />
* [[A10]] / [[A20]]<br />
** NAND [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295818.html]<br />
*** Only works for SLC NAND for now<br />
*** Some additional work is needed for MLC NANDs<br />
<br />
* [[A23]]<br />
** DMAengine driver (shared with A31) [http://www.spinics.net/lists/arm-kernel/msg375529.html]<br />
<br />
* [[A80]]<br />
** initial machine support [http://www.spinics.net/lists/arm-kernel/msg368569.html]<br />
** basic clocks and reset [http://www.spinics.net/lists/arm-kernel/msg370495.html]<br />
** pinctrl driver [http://www.spinics.net/lists/arm-kernel/msg372176.html]<br />
** extra UART, I2C, LEDS [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/298729.html]<br />
<br />
Related merges:<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=fe0c888 sunxi-simplefb-for-3.19]<br />
<br />
Added board support: [[Mele M3]], [[LeMaker Banana Pi]], [[Merrii A80 Optimus Board]], [[Olimex A20-OLinuXino-Lime2]]<br />
<br />
== Merged into 3.18 ==<br />
<br />
* [[A31]]/[[A23]]<br />
** RTC [http://www.spinics.net/lists/arm-kernel/msg351626.html]<br />
** Watchdog [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287807.html]<br />
<br />
* [[A23]]<br />
** MMC<br />
** pinctrl<br />
** DMA<br />
** I2C<br />
<br />
Added board support: [[Olimex A20-OLinuXino-Lime]], [[Merrii Hummingbird A20]], [[HSG H702]]<br />
<br />
== Merged into 3.17 ==<br />
* A10/A20<br />
** IR driver<br />
<br />
* A31<br />
** PIO/R_PIO external interrupts<br />
** DMAengine<br />
** GMAC<br />
<br />
* A23<br />
** Timers, UARTs, initial bringup<br />
** Basic clocks<br />
** PIO/R_PIO drivers<br />
<br />
Related merges: <br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e4ca430 clk-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=54c72d5 mfd-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e0b8b78 pinctrl-v3.17-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b3345d7 soc-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4e1f5a dt-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c7a19c7 slave-dma for-linus],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4d3333 v4l_for_linus],<br />
<br />
Added Board Support: [[Merrii Hummingbird A31]], BA10, [[LinkSprite pcDuino V3]], [[Ippo q8h]]<br />
<br />
== Merged into 3.16 ==<br />
* AXP20x regulator support<br />
<br />
* All<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** SMBus Regmap<br />
** Special Pins Muxer<br />
** P2WI Controller<br />
<br />
* A10<br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Related Merges:<br />
<!-- wens: not complete --><br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7477838f2e481256a40e0c44b92f9bccb065bc51 defconfig-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a727eaf64ff084a50b983fc506810c7a576b7ce3 drivers-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=755a9ba7bf24a45b6dbf8bb15a5a56c8ed12461a dt-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=825f4e0271b0de3f7f31d963dcdaa0056fe9b73a soc-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e5c4ecdc55b6d824365ba7964bcd3185223f9688 usb-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd698cf6595b079ce36423e8c7eb4a69a31b1733 pinctrl-v3.16-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1a5700bc2d10cd379a795fd2bb377a190af5acd4 clk-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dd1845af24a47b70cf84c29126698884f740ff9c clk-for-linus-3.16-part2],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=07888238f55056605cd23aa4ea3ca97d5e15938f mmc-updates-for-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1fe9eb184721132c7254d76d9ef31c96edad8870 mfd-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=312c76f1a3989b8d0c0c13fee765bb2c41f2d114 regulator-v3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4f9b8fc73f9aa93744f0e91e18f367d7766f523 input-for-linus]<br />
<br />
Added board support: [[Mele M9]], [[R7]]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[Olimex A10s-OLinuXino-Micro]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=18249
Linux mainlining effort
2016-09-20T06:32:26Z
<p>Jonkerj: /* Planned for 4.9 */</p>
<hr />
<div>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.<br />
<br />
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!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
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.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|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|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! SoC Name !! AC97 !! Audio Codec !! Clocks !! Crypto !! CSI !! Display (SimpleFB) !! Display (DRM) !! DMA !! EMAC !! HW Spinlocks !! I2C !! I2S !! IR !! Keypad !! LRADC !! MsgBox !! NAND !! Pinctrl !! PWM !! RSB !! RTC !! SATA !! SD / MMC !! SMP !! SPDIF !! SPI !! Touch / Thermal / GPADC !! USB !! USB OTG !! Watchdog<br />
|-<br />
| [[A10]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | v3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A10s]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
|-<br />
| [[A13]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.3<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[GR8]] || N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
|-<br />
| [[A20]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11 / 3.15 (GMAC)<br />
| N/A<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A31]] || N/A<br />
| style="background: yellow;" | [https://github.com/wens/linux/tree/a31-audio WIP]<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: orange;" | [https://github.com/wens/linux/tree/sun6i-drm WIP]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A23]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;"| ?<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A33]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.2<br />
|-<br />
| [[A80]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" |4.5<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: orange;"| [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
|-<br />
| [[A83T]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;"| ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.6<br />
|-<br />
| [[H3]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: lightgreen;"| 4.9<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" |?<br />
| style="background: darkgreen;" |?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[A64]] || N/A<br />
| style="background: red;"| NO<br />
| style="background: yellow;" |[[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: yellow;"| WIP<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"|?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: yellow;" | WIP [[#a64_mmc|[1]]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| WIP<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: yellow;" | [https://github.com/Icenowy/linux-sunxi/tree/a64-usb WIP]<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"| ?<br />
|}<br />
<br />
<div id="a64_mmc" />[1] SD cards seem to work OKish (though roughly at half speed only atm: 11 MB/s), eMMC has problems, but patches are floating around.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: yellow;" | Somebody works on it and the result is mostly stable enough<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* [[A13]]<br />
** PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
* Allwinner [[A64]] support<br />
** Clocks support (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455848.html patch-v2]<br />
** MMC controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/447110.html patch-v4]<br />
** USB Host controller support (WiP: Icenowy Zheng) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/446405.html patch-v2]<br />
<br />
* Allwinner [[A80]] support<br />
** SMP support (WiP: Chen-Yu Tsai (wens)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/343354.html patch-rfc] <br />
<br />
* Allwinner [[A83T]] support<br />
** Modern Clock (clock-ng) support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/435630.html patch-v2]<br />
** Clocks, r_pio, MMC and RSB support (WiP: Vishnu Patekar) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416027.html patch-v4]<br />
** USB support (WiP: Chen-Yu Tsai (wens))<br />
** DMAEngine support (Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457752.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A13]] Cedrus Video Decoder driver (WiP: Florent (kido) Revest) [http://www.mail-archive.com/linux-media@vger.kernel.org/msg101816.html patch-v1] [[Sunxi-cedrus | dedicated wiki page]]<br />
<br />
* [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [http://www.spinics.net/lists/arm-kernel/msg526574.html patch-v9]<br />
<br />
* [[A31]] Audio Codec support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/a31-audio development branch]<br />
* [[A31]] Display Engine support (WiP: Chen-Yu Tsai (wens)) [https://github.com/wens/linux/tree/sun6i-drm development branch]<br />
<br />
* Display Engine driver<br />
** sun8i (H3) (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-February/404278.html patch-v4]<br />
<br />
* CSI (camera sensor interface) (WiP: Yassin Jaffer (ddc)) (WiP: Maxime Ripard (mripard))<br />
** CSI clock driver (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416152.html patch-RFC]<br />
<br />
* [[Sun8i emac]] (H3/A64/A83T) support (WiP: LABBE Corentin [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455663.html patch-v3])<br />
* Ac200 (At least EPHY) (WiP: LABBE Corentin)<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/)<br />
<br />
* A80 related (WiP: Chen-Yu Tsai (wens))<br />
** AXP806 PMIC [http://www.spinics.net/lists/arm-kernel/msg526875.html patch-v2]<br />
** GMAC<br />
** External SDIO WiFi<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* GPADC for A10, A13 and A31 (WiP: Quentin Schulz) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/457233.html patch-v6]<br />
* Enable and fix USB OTG port support on Orange Pi PC/One (wip: Ondřej Jirman) [https://github.com/megous/linux/commits/orange-pi-4.7 wip-patch]<br />
* DVFS support for Orange Pi PC/One (wip: Ondřej Jirman - megi) [https://xff.cz/orange-pi-dvfs/] [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/438794.html patch-v1]<br />
* Sunxi THS (H3) (Josef Gajdusek) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/387312.html patch-v2]<br />
* Keypad (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch]<br />
* [[AXP152]]/[[AXP202]]/[[AXP209]]/[[AXP223]]<br />
** AC driver: (WiP: Michael Haas (laga)) [https://groups.google.com/d/msg/linux-sunxi/nEUg87cV6KI/xH4_8BZMEgAJ patch] [https://groups.google.com/forum/#!topic/linux-sunxi/Ee7i8DVI4F8 patch V2]<br />
** Battery driver (WiP: Bruno Prémont (bonbons)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295547.html RFC-patch]<br />
*** Michael Haas will be re-submitting Brunos battery driver<br />
* hardware spinlock (H3/A83) (WIP: LABBE Corentin)<br />
* Activate pwm on A83T (necessary for PHY)<br />
<br />
== Left to be done ==<br />
<br />
=== Easy Tasks ===<br />
<br />
Following drivers should be doable by someone with no or a small kernel development experience:<br />
* [[1-Wire|One Wire / 1-Wire]] (dedicated HW only present on A31/A80)<br />
* Smart Card Reader<br />
* A23/A33 Thermal Sensor Controller<br />
<br />
=== Medium Tasks ===<br />
<br />
Following drivers require some good knowledge of the kernel internals.<br />
* Audio Related drivers<br />
** A23 Audio codec and AC97 audio interface support (A23 SDK contains drivers for both)<br />
** A33/A64 Audio codec driver (A33 SDK contains driver)<br />
*** According to the register map and the A33 SDK driver, there seems to be a internal I2S bus between the codec and the processor<br />
<br />
=== Difficult Tasks ===<br />
These drivers require some good knowledge of the kernel internals, plus a good experience with such piece of hardware.<br />
<br />
* Audio Engine (Only exists in A10)<br />
* V4L driver for G2D/Mixer is based on samsung g2d and fimc driver. Only initial work started. [https://bitbucket.org/cybrixsystems/linux-next-devel/]<br />
<br />
=== Troublesome ===<br />
* Memory Stick (missing hardware?)<br />
* TV Decoder (Analog in, no existing driver, no datasheet)<br />
* Transport Stream(DVB) in<br />
** IRC user woprr has started to work on this<br />
* PATA (old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (only present on [[A10]], not much interesting, as all modern GPS receivers have MCU with UART output, no documentation)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
== Planned for 4.9 ==<br />
* [[GR8]]<br />
** SoC Support<br />
<br />
* [[AXP209]]<br />
** GPIO support<br />
<br />
* [[A31]]<br />
** SPDIF support<br />
<br />
* [[A23]]/[[A33]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A31]]/[[A31s]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A33]]<br />
** Display Driver<br />
<br />
* [[A64]]<br />
** USB PHY support<br />
<br />
* [[H3]]<br />
** PWM support<br />
** I2C support<br />
<br />
* AC100 RTC / codec IC<br />
** mfd driver<br />
** RTC driver<br />
<br />
Added board support: [[Xunlong Orange Pi PC#Variants | Orange Pi PC Plus]]<br />
<br />
== Merged for 4.8 ==<br />
<br />
* [[A10]]/[[A20]]<br />
** Display engine clocks (TCON, FE, DE)<br />
** I2S audio interface driver<br />
<br />
* [[H3]]<br />
** Clocks (through sunxi-ng)<br />
** USB multi-reset lines support<br />
* AXP2xx driver:<br />
** External drivebus support<br />
** AXP223 USB power supply support<br />
** AXP809 PMIC support<br />
<br />
* [https://www.spinics.net/lists/arm-kernel/msg510602.html BCM53125 support]<br />
** This switch is used in [[Lamobo R1|Lamobo / Banana Pi R1]]<br />
<br />
== Merged into 4.7 ==<br />
<br />
* [[A13]]/[[R8]]<br />
** Display Engine support<br />
<br />
* [[A10]]/[[A20]]<br />
** SPDIF Support<br />
<br />
* [[A31]]/[[A23]]/[[H3]] DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-April/424280.html patch-v6]<br />
<br />
* [[H3]]<br />
** USB support (multi-reset line support delayed til 4.8)<br />
<br />
Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350<br />
<br />
== Merged into 4.6 ==<br />
* {{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.}}<br />
<br />
* Allwinner [[A83T]] support<br />
** Initial bringup<br />
** timer, watchdog and reboot<br />
<br />
* [[H3]]<br />
** R_PIO support<br />
<br />
* [[A64]]<br />
** pinctrl driver<br />
** generic arm64 Allwinner platform (ARCH_SUNXI) support<br />
<br />
* NAND<br />
** ECC layout definition rework (partially) and randomizer support<br />
<br />
* A10/A20 SPDIF driver<br />
<br />
* AXP223 PMIC support<br />
<br />
* eMMC HS-DDR support for all currently supported SoCs except [[A80]]<br />
<br />
Added board support: [[Allwinner A83TDevBoard]], [[Cubietech Cubietruck Plus]]<br />
<br />
== Merged into 4.5 ==<br />
* Allwinner [[A80]] support<br />
** IR receiver driver<br />
** NMI controller<br />
** PRCM driver<br />
** R_PIO support<br />
** RSB driver<br />
<br />
* Allwinner H3 SoC support<br />
** H3 USB PHY clocks<br />
<br />
* A10/A20 Video Engine clocks<br />
<br />
* MIC1 capture for sun4i codec<br />
<br />
* Audio codec enabled on various boards<br />
<br />
Added board support: [[Xunlong Orange Pi Plus]]<br />
<br />
{{knownProblems|<br />
* Release tag v4.5 contains a change that broke ''stmmac'' networking on quite a few sunxi devices. The symptoms are<br />
<pre>[ 13.196778] libphy: PHY stmmac-0:ffffffff not found<br />
[ 13.204800] eth0: Could not attach to PHY<br />
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)</pre>}}<br />
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/netdev@vger.kernel.org/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.<br><br />
Version ''v4.5-rc7'' is known to be still okay, ''v4.6-rc2'' fixes stmmac again.<br />
<br />
== Merged into 4.4 ==<br />
<br />
* [[R8]] SoC support<br />
<br />
* [[A10]] / [[A20]]<br />
** CAN driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0738eff14d817a02ab082c392c96a1613006f158 (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Audio Codec driver<br />
** Audio clocks (PLL2)<br />
** Audio codec related DTS bits<br />
*** Enabled on [[Cubieboard]], [[Cubieboard2]], [[Cubietruck]], C.H.I.P., [[Mele A1000]]<br />
<br />
* [[A23]] / [[A33]]<br />
** RSB (Reduced Serial Bus) driver<br />
** PWM enabled<br />
<br />
* [[A83T]]<br />
** PIO driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** USB power supply driver<br />
** Support for OTG vbus detection via AXP pmic<br />
** DTS nodes for OTG vbus support<br />
<br />
Added board support: Olimex A20 EVB [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=15ada16dc7657c08242d24067a4ddf07a2662062 (commit)], Unified Q8 format tablet, Wits Pro A20 DKT [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5cf0022450d2068e56b60cbbd0b5ff1430b7656 (commit)], Yones Toptech bs1078v2 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=849147cdb540266883cb49f2094a87b3ee6e12ec (commit)], Wobo i5 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=adfa06ce9bd30f8bc5439be49bcfaa7ceb1b6c2a (commit)], C.H.I.P [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=465a225fb2afb3ebf1becbe76d46b084d46f30a5 (commit)], [[Sinlinx SinA31s]], [[MSI Primo81]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a5ea06d0bc123cc7f49d042fab60ddd3964764c8 (commit)]<br />
<br />
== Merged into 4.3 ==<br />
<br />
* [[A10]] / [[A13]] / [[A20]] / [[A23]] / [[A31]] <br />
** Enable OTG controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ff12049d6b6cc79ad8ee092ae226434687062ec (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Support for DMA engine<br />
<br />
* [[A23]] / [[A33]]<br />
** Support for USB-controllers<br />
<br />
* most of Allwinner SoC<br />
** Support for [[Security System]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4c90396ed7ef9b4e4d221e008e54be8bea8307f (commit)]<br />
<br />
* [[AXP152]]<br />
** AXP152 mfd support<br />
<br />
Added board support: Iteaduino Plus A10, Ippo-q8h-a33 v1.2<br />
<br />
== Merged into 4.2 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** SRAM Controller<br />
<br />
* [[A23]]<br />
** SMP support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=73e601ea57020c42d989120061dfc83ce9c85360 (commit)]<br />
** Architected timer support<br />
<br />
* [[A31]]/[[A31s]]<br />
** CPUFreq support<br />
<br />
* [[A33]]<br />
** Machine support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=159870d2413c92622790e9cecbce95099bed539a (commit)]<br />
** Bring-up sharing most drivers with [[A23]]<br />
** pinctl driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=93a4b1b9465d92e8be031b57166afa3d5611e142 (commit)]<br />
** PIO controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7164873e7c69d6bab74726debc3b495a86332b1f (commit)]<br />
<br />
* [[A80]]<br />
** Architected timer support<br />
** USB support<br />
<br />
* [[AXP221]] PMIC driver<br />
<br />
* [[H3]]<br />
** Introduce H3 support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=14a882df14a5ae859b245bc708ce3fce47a91594 (commit)]<br />
** DMA Controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1bc5e157ed2b4f5b206155fc772d860158acd201 (commit)]<br />
<br />
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]]<br />
<br />
== Merged into 4.1 ==<br />
<br />
* [[A80]]<br />
** USB PHY driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** DT bindings<br />
<br />
== Merged into 4.0 ==<br />
<br />
* [[A10]] / [[A20]]<br />
** PS/2 Controller<br />
<br />
* [[A13]] / [[A31]]<br />
** IR receiver<br />
<br />
* [[A31s]]<br />
** bring-up sharing majority of drivers with [[A31]]<br />
** pinctrl driver<br />
<br />
* [[A80]]<br />
** MMC<br />
<br />
* All SoCs<br />
** LRADC Input driver<br />
** CPUFreq<br />
** PWM Driver<br />
<br />
* AXP209 power button input driver<br />
<br />
Added board support: [[CSQ CS908]], [[LeMaker Banana Pro]], [[Chuwi V7 CW0825]], [[Rikomagic mk802]], [[Rikomagic mk802ii]], [[Rikomagic mk802_a10s]], [[MarsBoard A10]], [[Hyundai A7HD]]<br />
<br />
== Merged into 3.19 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** Simple Framebuffer<br />
*** In order to use that, you'll need a recent mainline u-boot (2015.01+)<br />
** USB phy driver support for usb0<br />
<br />
* [[A10]] / [[A20]]<br />
** NAND [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295818.html]<br />
*** Only works for SLC NAND for now<br />
*** Some additional work is needed for MLC NANDs<br />
<br />
* [[A23]]<br />
** DMAengine driver (shared with A31) [http://www.spinics.net/lists/arm-kernel/msg375529.html]<br />
<br />
* [[A80]]<br />
** initial machine support [http://www.spinics.net/lists/arm-kernel/msg368569.html]<br />
** basic clocks and reset [http://www.spinics.net/lists/arm-kernel/msg370495.html]<br />
** pinctrl driver [http://www.spinics.net/lists/arm-kernel/msg372176.html]<br />
** extra UART, I2C, LEDS [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/298729.html]<br />
<br />
Related merges:<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=fe0c888 sunxi-simplefb-for-3.19]<br />
<br />
Added board support: [[Mele M3]], [[LeMaker Banana Pi]], [[Merrii A80 Optimus Board]], [[Olimex A20-OLinuXino-Lime2]]<br />
<br />
== Merged into 3.18 ==<br />
<br />
* [[A31]]/[[A23]]<br />
** RTC [http://www.spinics.net/lists/arm-kernel/msg351626.html]<br />
** Watchdog [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287807.html]<br />
<br />
* [[A23]]<br />
** MMC<br />
** pinctrl<br />
** DMA<br />
** I2C<br />
<br />
Added board support: [[Olimex A20-OLinuXino-Lime]], [[Merrii Hummingbird A20]], [[HSG H702]]<br />
<br />
== Merged into 3.17 ==<br />
* A10/A20<br />
** IR driver<br />
<br />
* A31<br />
** PIO/R_PIO external interrupts<br />
** DMAengine<br />
** GMAC<br />
<br />
* A23<br />
** Timers, UARTs, initial bringup<br />
** Basic clocks<br />
** PIO/R_PIO drivers<br />
<br />
Related merges: <br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e4ca430 clk-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=54c72d5 mfd-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e0b8b78 pinctrl-v3.17-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b3345d7 soc-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4e1f5a dt-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c7a19c7 slave-dma for-linus],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4d3333 v4l_for_linus],<br />
<br />
Added Board Support: [[Merrii Hummingbird A31]], BA10, [[LinkSprite pcDuino V3]], [[Ippo q8h]]<br />
<br />
== Merged into 3.16 ==<br />
* AXP20x regulator support<br />
<br />
* All<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** SMBus Regmap<br />
** Special Pins Muxer<br />
** P2WI Controller<br />
<br />
* A10<br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Related Merges:<br />
<!-- wens: not complete --><br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7477838f2e481256a40e0c44b92f9bccb065bc51 defconfig-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a727eaf64ff084a50b983fc506810c7a576b7ce3 drivers-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=755a9ba7bf24a45b6dbf8bb15a5a56c8ed12461a dt-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=825f4e0271b0de3f7f31d963dcdaa0056fe9b73a soc-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e5c4ecdc55b6d824365ba7964bcd3185223f9688 usb-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd698cf6595b079ce36423e8c7eb4a69a31b1733 pinctrl-v3.16-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1a5700bc2d10cd379a795fd2bb377a190af5acd4 clk-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dd1845af24a47b70cf84c29126698884f740ff9c clk-for-linus-3.16-part2],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=07888238f55056605cd23aa4ea3ca97d5e15938f mmc-updates-for-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1fe9eb184721132c7254d76d9ef31c96edad8870 mfd-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=312c76f1a3989b8d0c0c13fee765bb2c41f2d114 regulator-v3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4f9b8fc73f9aa93744f0e91e18f367d7766f523 input-for-linus]<br />
<br />
Added board support: [[Mele M9]], [[R7]]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[Olimex A10s-OLinuXino-Micro]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=User:Jonkerj&diff=18083
User:Jonkerj
2016-08-25T10:48:09Z
<p>Jonkerj: </p>
<hr />
<div>= Personal Hardware =<br />
* 2x [[Xunlong Orange Pi Plus]]<br />
* 1x [[Xunlong Orange Pi PC]]<br />
* the [[Remote_Reboot_Jig]]<br />
<br />
= Mainline on Orange Pi Plus and PC =<br />
I've collected some patches from here and there in order to get my Plus and PC running mainline with as many working peripherals as possible. They are stored on [https://github.com/jonkerj/linux GitHub]. Stuff included:<br />
* [https://github.com/montjoie/linux/tree/sun8i-emac-wip-v3 Montjoie's Emac v3]<br />
* [https://github.com/megous/linux/tree/orange-pi-4.8 Ondrej's OTG and DVFS], with proper voltages for (my?) Opi+<br />
* Additional I2C/UART ports<br />
<br />
== Wifi ==<br />
I found [https://github.com/jwrdegoede/rtl8189ES_linux Hans de Goede's patched RTL8189ES] and it seems to work for me. It took my a while to get it to compile, the makefile does not match my head...<br />
<br />
# Assume kernel is in <code>/media/sunxi/linux</code>, rtl8189 in <code>/media/sunxi/rtl8189es</code><br />
# Compile at least the kernel modules (we need <code>Module.symvers</code>), make sure this config is present:<br />
## <code>CONFIG_CFG80211</code><br />
## <code>CONFIG_MMC_SUNXI</code><br />
# Fire off the rtl8189 build:<br />
jorik@neon:/media/sunxi/rtl8189es$ make -j5 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /media/sunxi/linux/ M=/media/sunxi/rtl8189es CONFIG_RTL8189ES=m modules<br />
<br />
== Hardware accelerated graphics ==<br />
I'll try to document my progress on getting "kodi" working with bells and whistles on mainline. If I get there, it will be documented here.<br />
<br />
=== Graphics on H3 ===<br />
This is yet unresolved, as there seems to be no proper way to get graphics with DRM and HDMI working on H3. Some pointers:<br />
<br />
* [http://moinejf.free.fr/opi2/ Jeff Moine's patches]<br />
<br />
=== Mali on H3 ===<br />
'''WARNING''': this is all quite useless, until:<br />
# there is a working DRM/prime display driver for your board<br />
# either:<br />
#* someone finds a way to make libGLES working with DRM/prime<br />
#* someone creates a UMP/prime, so allwinner's GLES is going to work with prime<br />
<br />
I found it very hard to get Mali to compile for a recent kernel, and I was not very successful in finding documentation on the subject. I did some guesswork, read a lot of source code, and got mali to at least compile for me.<br />
<br />
I assume the presence of a kernel source, a cross-compiler (arm-linux-gnueabihf-gcc), etc.<br />
<br />
==== Kernel ====<br />
First of all, compile a kernel. Make sure the following options are set, these are needed to get TRACEPOINTS, which is needed by ump/mali later on.<br />
CONFIG_PROFILING=y<br />
CONFIG_FTRACE=y<br />
CONFIG_ENABLE_DEFAULT_TRACERS=y<br />
<br />
==== Mali ====<br />
Then, get, patch and compile mali:<br />
export KDIR=/media/scratch/linux-4.7-rc7/<br />
export CROSS_COMPILE=arm-linux-gnueabihf-<br />
wget -P /tmp http://malideveloper.arm.com/downloads/drivers/DX910/r6p2-01rel0/DX910-SW-99002-r6p2-01rel0.tgz<br />
wget -P /tmp https://gist.githubusercontent.com/jonkerj/15bd5a793c0f157b5d7e43b019efccb4/raw/b6c83bb396d3b4e6463b12f52f51e4181ad029ad/fix-mali-sunxi-4.5.patch<br />
tar zxf /tmp/DX910-SW-99002-r6p2-01rel0.tgz<br />
cd DX910-SW-99002-r6p2-01rel0<br />
patch -p1 < /tmp/fix-mali-sunxi-4.5.patch<br />
cd driver/src/devicedrv/ump<br />
CONFIG=ca8-virtex820-m400-1 BUILD=release make<br />
cd ../mali<br />
USING_DT=1 USING_UMP=1 MALI_SHARED_INTERRUPTS=1 MALI_PLATFORM=arm make<br />
<br />
This yields the needed kernel modules</div>
Jonkerj
https://linux-sunxi.org/index.php?title=User:Jonkerj&diff=18079
User:Jonkerj
2016-08-25T09:09:48Z
<p>Jonkerj: </p>
<hr />
<div>= Personal Hardware =<br />
* 2x [[Xunlong Orange Pi Plus]]<br />
* 1x [[Xunlong Orange Pi PC]]<br />
* the [[Remote_Reboot_Jig]]<br />
<br />
= Mainline on Orange Pi Plus and PC =<br />
I've collected some patches from here and there in order to get my Plus and PC running mainline with as many working peripherals as possible. They are stored on [https://github.com/jonkerj/linux GitHub]. Stuff included:<br />
* [https://github.com/montjoie/linux/tree/sun8i-emac-wip-v3 Montjoie's Emac v3]<br />
* [https://github.com/megous/linux/tree/orange-pi-4.8 Ondrej's OTG and DVFS], with proper voltages for (my?) Opi+<br />
* Additional I2C/UART ports<br />
<br />
= Wifi =<br />
I found [https://github.com/jwrdegoede/rtl8189ES_linux Hans de Goede's patched RTL8189ES] and it seems to work for me. It took my a while to get it to compile, the makefile does not match my head...<br />
<br />
# Assume kernel is in <code>/media/sunxi/linux</code>, rtl8189 in <code>/media/sunxi/rtl8189es</code><br />
# Compile at least the kernel modules (we need <code>Module.symvers</code>), make sure this config is present:<br />
## <code>CONFIG_CFG80211</code><br />
## <code>CONFIG_MMC_SUNXI</code><br />
# Fire off the rtl8189 build:<br />
jorik@neon:/media/sunxi/rtl8189es$ make -j5 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /media/sunxi/linux/ M=/media/sunxi/rtl8189es CONFIG_RTL8189ES=m modules<br />
<br />
= Hardware accelerated graphics =<br />
I'll try to document my progress on getting "kodi" working with bells and whistles on mainline. If I get there, it will be documented here.<br />
<br />
== Graphics on H3 ==<br />
This is yet unresolved, as there seems to be no proper way to get graphics with DRM and HDMI working on H3. Some pointers:<br />
<br />
* [http://moinejf.free.fr/opi2/ Jeff Moine's patches]<br />
<br />
== Mali on H3 ==<br />
'''WARNING''': this is all quite useless, until:<br />
# there is a working DRM/prime display driver for your board<br />
# either:<br />
#* someone finds a way to make libGLES working with DRM/prime<br />
#* someone creates a UMP/prime, so allwinner's GLES is going to work with prime<br />
<br />
I found it very hard to get Mali to compile for a recent kernel, and I was not very successful in finding documentation on the subject. I did some guesswork, read a lot of source code, and got mali to at least compile for me.<br />
<br />
I assume the presence of a kernel source, a cross-compiler (arm-linux-gnueabihf-gcc), etc.<br />
<br />
=== Kernel ===<br />
First of all, compile a kernel. Make sure the following options are set, these are needed to get TRACEPOINTS, which is needed by ump/mali later on.<br />
CONFIG_PROFILING=y<br />
CONFIG_FTRACE=y<br />
CONFIG_ENABLE_DEFAULT_TRACERS=y<br />
<br />
=== Mali ===<br />
Then, get, patch and compile mali:<br />
export KDIR=/media/scratch/linux-4.7-rc7/<br />
export CROSS_COMPILE=arm-linux-gnueabihf-<br />
wget -P /tmp http://malideveloper.arm.com/downloads/drivers/DX910/r6p2-01rel0/DX910-SW-99002-r6p2-01rel0.tgz<br />
wget -P /tmp https://gist.githubusercontent.com/jonkerj/15bd5a793c0f157b5d7e43b019efccb4/raw/b6c83bb396d3b4e6463b12f52f51e4181ad029ad/fix-mali-sunxi-4.5.patch<br />
tar zxf /tmp/DX910-SW-99002-r6p2-01rel0.tgz<br />
cd DX910-SW-99002-r6p2-01rel0<br />
patch -p1 < /tmp/fix-mali-sunxi-4.5.patch<br />
cd driver/src/devicedrv/ump<br />
CONFIG=ca8-virtex820-m400-1 BUILD=release make<br />
cd ../mali<br />
USING_DT=1 USING_UMP=1 MALI_SHARED_INTERRUPTS=1 MALI_PLATFORM=arm make<br />
<br />
This yields the needed kernel modules</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_PC&diff=18029
Xunlong Orange Pi PC
2016-08-11T09:42:28Z
<p>Jonkerj: /* Expansion Port */ wrong header level</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Xunlong_Orange_Pi_PC_top.PNG|250px]]<br />
| manufacturer = [http://www.orangepi.org/ OrangePi]<br />
| dimensions = 85''mm'' x 55''mm''<br />
| release_date = August 2015<br />
| website = [http://www.orangepi.org/orangepipc/ Orange Pi PC Product Page]<br />
| soc = [[H3]] @ 1.3 GHz<br />
| dram = 1GiB DDR3L ([[DDR3#K4B4G1646Q-HYK0|K4B4G1646Q-HYK0]])<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br>or via GPIO header pins<br />
| video = HDMI (HDCP, CEC), CVBS<br />
| audio = 3.5 mm Jack, HDMI, Microphone<br />
| network = 10/100 Ethernet<br />
| storage = µSD, 8GB eMMC on PC Plus<br />
| usb = 3 USB 2.0 Host, 1 USB 2.0 OTG<br />
| other = IR<br />
| headers = 3 pin UART, CSI, 40 pin GPIO <br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
Orange Pi PC is [[H3]] based development board produced by [[Xunlong]]. <br />
<br />
= Identification =<br />
The ''PC'' PCB has the following silkscreened on it:<br />
<pre>Orange Pi PC V1.2</pre><br />
<br />
The ''PC Plus'' PCB shows the following:<br />
<pre>Orange Pi PC Plus V1.1</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
The H3 and Orange Pi PC support is progressing nicely. It is possible to find a usable mainline 4.x kernel (plus some patches) and a legacy 3.4 kernel in various work-in-progress git branches. See the [[Orange_Pi_PC#Manual_build|Manual build]] section for more details.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Use the ''orangepi_pc'' build target (supported since v2016.01-rc2).<br />
<br />
It can boot from the SD card or via [[FEL/USBBoot|FEL]]. Only the initial basic functionality is implemented and there are still no USB host and Ethernet drivers for H3 in U-Boot v2016.01 (it affects only u-boot functionality, device would work in linux as long kernel supports it).<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
The [https://github.com/allwinner-zh/linux-3.4-sunxi 3.4 kernel from the official Allwinner's git repository] [https://github.com/allwinner-zh/linux-3.4-sunxi/issues/14 does not support H3 yet]. But it is possible to use one of the kernel forks, based on the [http://www.cnx-software.com/2015/05/12/orange-pi-plus-allwinner-h3-firmware-images-and-linux-sdk-released/ lichee H3 SDK tarball]:<br />
* Siarhei Siamashka's branch '20151207-embedded-lima-memtester-h3' at https://github.com/ssvb/linux-sunxi/tree/20151207-embedded-lima-memtester-h3<br />
<br />
Configure this kernel using '''sun8i_h3_defconfig''', the rest is explained in the [[Linux_Kernel#Compilation|kernel compilation guide]].<br />
<br />
Use the [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/h3/xunlong_orange_pi_pc.fex xunlong_orange_pi_pc.fex] file for generating [[Script.bin|script.bin]].<br />
<br />
When booting the legacy 3.4 kernel with the mainline U-Boot, add the following line to boot.cmd:<br />
<br />
setenv machid 1029<br />
setenv bootm_boot_mode sec<br />
<br />
==== Mainline kernel ====<br />
<br />
Initial H3 patches have been submitted to the [[Mainline_Kernel_Howto|mainline kernel]], but have not landed yet. Currently you can find these patches in the arm-linux mailing list, or alternatively in one of the work-in-progress kernel forks:<br />
* Maxime Ripard's branch 'sunxi/for-next' at https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/log/?h=sunxi/for-next (very basic H3 support, without USB)<br />
* Hans de Goede's branch 'sunxi-wip' at https://github.com/jwrdegoede/linux-sunxi/tree/sunxi-wip (many work-in-progress patches, including H3 and USB support for it)<br />
* Siarhei Siamashka's branch '20151223-h3-mainline-smp-hack' at https://github.com/ssvb/linux-sunxi/tree/20151223-h3-mainline-smp-hack (minimal set of H3 patches, with USB and SMP)<br />
* Chen-Yu Tsai's branch 'h3-emac' at https://github.com/wens/linux/tree/h3-emac (working Ethernet and USB)<br />
<br />
Use the '''sun8i-h3-orangepi-pc.dtb''' device-tree binary.<br />
<br />
= Expansion Port =<br />
<br />
The Orange Pi PC has a 40-pin, 0.1" connector with several low-speed interfaces.<br />
<br />
{| class="wikitable" style="width:600px;"<br />
! colspan=4 | 2x20 Header<br />
|-<br />
| 1 || ''3.3V''<br />
| 2 || ''5V'' <br />
|-<br />
| 3 || PA12 <small>(TWI0_SDA/DI_RX/PA_EINT12)</small><br />
| 4 || ''5V'' <br />
|-<br />
| 5 || PA11 <small>(TWI0_SCK/DI_TX/PA_EINT11)</small><br />
| 6 || ''GND''<br />
|-<br />
| 7 || PA6 <small>(SIM_PWREN/PWM1/PA_EINT6)</small><br />
| 8 || PA13 <small>(SPI1_CS/UART3_TX/PA_EINT13)</small><br />
|-<br />
| 9 || ''GND''<br />
| 10 || PA14 <small>(SPI1_CLK/UART3_RX/PA_EINT14)</small><br />
|-<br />
| 11 || PA1 <small>(UART2_RX/JTAG_CK/PA_EINT1)</small><br />
| 12 || PD14<br />
|-<br />
| 13 || PA0 <small>(UART2_TX/JTAG_MS/PA_EINT0)</small><br />
| 14 || ''GND''<br />
|-<br />
| 15 || PA3 <small>(UART2_CTS/JTAG_DI/PA_EINT3)</small><br />
| 16 || PC4<br />
|-<br />
| 17 || ''3.3V''<br />
| 18 || PC7<br />
|-<br />
| 19 || PC0 <small>(SPI0_MOSI)</small><br />
| 20 || ''GND''<br />
|-<br />
| 21 || PC1 <small>(SPI0_MISO)</small><br />
| 22 || PA2 <small>(UART2_RTS/JTAG_DO/PA_EINT2)</small><br />
|-<br />
| 23 || PC2 <small>(SPI0_CLK)</small><br />
| 24 || PC3 <small>(SPI0_CS)</small><br />
|-<br />
| 25 || ''GND''<br />
| 26 || PA21 <small>(PCM0_DIN/SIM_VPPPP/PA_EINT21)</small><br />
|-<br />
| 27 || PA19 <small>(PCM0_CLK/TWI1_SDA/PA_EINT19)</small><br />
| 28 || PA18 <small>(PCM0_SYNC/TWI1_SCK/PA_EINT18)</small><br />
|-<br />
| 29 || PA7 <small>(SIM_CLK/PA_EINT7)</small><br />
| 30 || ''GND''<br />
|-<br />
| 31 || PA8 <small>(SIM_DATA/PA_EINT8)</small><br />
| 32 || PG8 <small>(UART1_RTS/PG_EINT8)</small><br />
|-<br />
| 33 || PA9 <small>(SIM_RST/PA_EINT9)</small><br />
| 34 || ''GND''<br />
|-<br />
| 35 || PA10 <small>(SIM_DET/PA_EINT10)</small><br />
| 36 || PG9 <small>(UART1_CTS/PG_EINT9)</small><br />
|-<br />
| 37 || PA20 <small>(PCM0_DOUT/SIM_VPPEN/PA_EINT20)</small><br />
| 38 || PG6 <small>(UART1_TX/PG_EINT6)</small><br />
|-<br />
| 39 || ''GND''<br />
| 40 || PG7 <small>(UART1_RX/PG_EINT7)</small><br />
|}<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* Heat issues when using common OS images for the OPi PC. Without a heatsink the Orange Pi PC overheats easily and will drop cores to thwart further temperature increase and unfortunately the heatsink provided by the manufacturer does little to help. The [http://www.cnx-software.com/2015/08/26/orange-pi-pc-allwinner-h3-board-is-now-available-for-15/ low cost $15 variant] does not have any heatsink included at all. This is the result of 'factory settings' overclocking/overvolting the H3 way too much. With adjusted dvfs entries and an upper limit of 1.2 GHz SoC temperature stays below 75°C without heatsink when running cpuburn-a7 on all 4 cores. Using a quality heatsink, some airflow and reasonable cpufreq settings the H3 [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=743&page=3 remains below 60°C even under full load at an ambient temperature of 22°C].<br />
<br />
* It is also possible to power the device via GPIO pin header: connect +5V to either pin 2 or 4 (both are connected to DCIN test point) and GND to pin 6.<br />
<br />
== FEL mode ==<br />
<br />
There is no dedicated FEL button. The Orange Pi ''PC'' will fail over to FEL mode if it doesn't detect a card present in the µSD slot. On the ''PC Plus'' it gets somewhat tricky to use FEL mode in case the eMMC is already populated with an OS (or at least a working boot loader). In this case it helps to grab the ''fel-sdboot.sunxi'' image from [https://github.com/linux-sunxi/sunxi-tools/tree/master/bin/ sunxi-tools github repo] and write it to an SD card of any size as follows:<br />
<pre>sudo dd if=fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8</pre><br />
Then boot afterwards with this SD card inserted and H3 will be in FEL mode afterwards.<br />
<br />
'''Not tested yet'''<br />
You can use "FAKE FEL BUTTON". See photo "H3_FAKE_BUTTON". According to the board's schematic UBOOT pin is connected to R124 (bottom leed, because top leed is connected to R38 which is connected to VCC). You can connect it to GND. The right R108 leed is the nearest GND pin (I've checked it). It is very close so it is not too hard. I draw it as yellow line. Enjoy!<br />
<br />
== LEDs ==<br />
<br />
[[File:Xunlong Orange Pi PC LEDs.jpg|thumb|150px|Two LEDs]]<br />
<br />
The board has two LEDs:<br />
* A red LED, connected to the PA15 pin.<br />
* A green LED, connected to the PL10 pin.<br />
<br />
When using kernel 3.4 with Xunlong's or loboris' settings then the LEDs can only be switched on/off. By changing the definition in the fex file (see [https://groups.google.com/forum/#!msg/linux-sunxi/20Ir4It3GsA/2KDRe_8IAQAJ patch] or [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/h3/xunlong_orange_pi_pc.fex fex with applied fix]) both LEDs can be used the usual way (using different triggers and so on)<br />
<br />
== CPU clock speed limit ==<br />
<br />
The Allwinner H3 manual does not provide the CPU clock speed information. But the following is a common comment in the FEX files from various H3 SDK variants:<br />
<pre><br />
; dvfs voltage-frequency table configuration<br />
;<br />
; pmuic_type:0:none, 1:gpio, 2:i2c<br />
; pmu_gpio0: gpio config.<br />
; pmu_levelx: 0~9999: voltage(mV), 10000~90000:gpio0 state. voltage form high to low.<br />
;<br />
; extremity_freq(Hz): cpu extremity frequency when run benckmark or demo apk<br />
; 1536MHz@1500mV with radiator, 1296MHz@1340mV without radiator<br />
; max_freq: cpu maximum frequency, based on Hz, can not be more than 1200MHz<br />
; min_freq: cpu minimum frequency, based on Hz, can not be less than 60MHz<br />
;<br />
; LV_count: count of LV_freq/LV_volt, must be < 16<br />
;<br />
; LV1: core vdd is 1.50v if cpu frequency is (1296Mhz, 1536Mhz]<br />
; LV2: core vdd is 1.34v if cpu frequency is (1200Mhz, 1296Mhz]<br />
; LV3: core vdd is 1.32v if cpu frequency is (1008Mhz, 1200Mhz]<br />
; LV4: core vdd is 1.20v if cpu frequency is (816Mhz, 1008Mhz]<br />
; LV5: core vdd is 1.10v if cpu frequency is (648Mhz, 816Mhz]<br />
; LV6: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
; LV7: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
; LV8: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
</pre><br />
It means that this comment likely originates from Allwinner, rather than something added by Xunlong or any other H3 device manufacturer.<br />
<br />
The Orange Pi PC board uses the [[SY8106A]] voltage regulator for providing the CPU core voltage (VDD_CPUX). The default CPU voltage is 1.2V after power-on (selected by the resistors on the PCB) and can be changed at runtime by software via I2C interface. According to the table above, this default voltage should be safe for using with the CPU clock frequencies up to 1008MHz. The H3 datasheet specifies 1.5V as the absolute maximum for the VDD_CPUX voltage and 1.4V as the recommended maximum.<br />
<br />
== DRAM clock speed limit ==<br />
<br />
DRAM is clocked at '''672 MHz''' by the hardware vendor. But the reliability still needs to be verified. One of the ways of doing reliability tests may be https://github.com/ssvb/lima-memtester/releases/tag/20151207-orange-pi-pc-fel-test (it checks the Orange Pi PC DRAM setup in the current mainline U-Boot v2016.01-rc2 + [https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg14969.html a bugfix]).<br />
<br />
{| class="wikitable"<br />
! Hardware<br />
! Diagnostic software<br />
! lima-memtester passes (survives until the red LED)<br />
! lima-memtester fails<br />
! Notes<br />
|-<br />
| [[User:Ssvb]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 696 MHz fails after running for just a few seconds, so not much confidence in 672 MHz either<br />
|-<br />
| [[User:Tkaiser]]'s 1st Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Small heatsink'''. 696 MHz fails after running for 2-3 minutes<br />
|-<br />
| Orange Pi PC v1.2 ([[User:Plaes|plaes]])|| fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || '''672 MHz''' || '''No heatsink'''. Multiple reproducible failures.<br> SoC markings: <tt>F7004BA 68D3</tt>, Memory: Samsung <tt>K4B4G1646Q-HYK0</tt><br />
|-<br />
| [[User:Tkaiser]]'s 2nd Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 696 MHz fails after running for ~10 minutes<br />
|-<br />
| [[User:Peko]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''Heatsink'''. 744 MHz fails after running for ~1-2 minutes<br />
|-<br />
| [[User:Patapovich]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 672 MHz was running for ~16 hours without problems<br />
|-<br />
| [[User:Runnerway]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Small heatsink'''.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 1 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 744 MHz || 768 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 768MHz failed < 1 min.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 2 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 720MHz failed after 5 mins.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 3 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 720MHz failed after ~30 mins.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 4 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 696MHz failed in < 30s.<br />
|-<br />
| [http://www.orangepi.org/orangepibbsen/forum.php?mod=redirect&goto=findpost&ptid=847&pid=8002 lymon's Orange Pi PC] || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || fails/hangs after approx. 10 minutes<br />
|-<br />
| [[User:Michal]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''No heatsink'''. At 720 MHz test failed in about 5 minutes.<br />
|-<br />
| [[User:Jvdwaa]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''No heatsink'''.<br />
|-<br />
| [[User:dusthillguy]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Only one 14mm*14mm*5mm heatsink, fitted on the H3 chip.''' Stable at 672 for over 12 hours without a fan, the green led was still flashing when I powered the system off. Fails within 30 to 60 minutes at 696 without a fan. At 696 with a fan, it survives for a few hours, but even with the fan it does eventually fail (the LEDs go off).<br />
<br />
By the way, the fan I used is 70mm, taken from an old intel heatsink, and powered by USB, so it rotates at a low speed. Just in case this is useful to know.<br />
|-<br />
| [[User:kc|kc]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''No heatsink'''. stable for ~35minutes of testing at 648 (to the red led), failing within 1-2 minutes at 672.<br />
<br />
board label: 112169, SOC markings: F7008BA 68E3, ram markings: K4B4G1646Q-HYKO / EKG384K8C<br />
|-<br />
| [[User:fjen]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''14mm*14mm*8mm Heatsink on H3'''. 744 MHz fails after 1 minute<br />
|-<br />
| [[User:dvl36]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''Heatsink (35x35x25mm) covering SoC and RAM'''. 744 MHz fails after ~2 minutes.<br />
|-<br />
| [[User:cosm]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''22mm*22mm*10mm heatsink on the SoC only'''. 672 MHz worked until the red LED lit, but failed after about two hours. 648 MHz was still working after 10 hours.<br />
|-<br />
| [[User:hp197]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (13x14x6.5mm) covering only SoC ([http://www.ebay.com/itm/121799610035 Ebay Link])'''. 720Mhz Failed quick after start (at the bit flip test, 1st pass).<br />
|-<br />
| [[User:emsi88]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''With big heatsink '''. 696 Mhz Failed afrer few minutes, 672 MHz worked stable for over 9 hours.<br />
|-<br />
| [[User:lampra]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''No heatsink'''. 672 Mhz Failed afrer few minutes.<br />
|-<br />
| [[User:Tkaiser]]'s Orange Pi PC ''Plus'' || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Cheap heatsink'''. 696 MHz fails after running for 90 seconds<br />
|}<br />
<br />
<span style="color:red">'''We need still more test results in the table above in order to have more accurate statistics and finally pick a safe default DRAM clock speed for U-Boot. Preferably there should be at least 10 entries in the table (more is always better). And there are no "good" or "bad" test results. Even if your result looks very similar to the already reported results from the other people, please still add yours to the table! Because if people don't feel like reporting their "boring" results, then "interesting" outliers will unfortunately skew the statistics. Thanks!'''</span><br />
<br />
== DRAM clock speed limit (automated statistical analysis) ==<br />
<br />
Below is an intermediate analysis of the currently reported results, using the [https://github.com/ssvb/lima-memtester/blob/master/lima-memtester-genchart lima-memtester-genchart] script (run the script using this page URL as the command line argument). Assuming that the [https://en.wikipedia.org/wiki/Normal_distribution Gaussian distribution] is a good approximation, try to predict what percentage of boards is expected to pass the lima-memetser test at different DRAM clock frequencies. The [[lima-memtester#Results_analysis|lima-memtester]] page provides more information.<br />
<br />
Updating the analysis report:<pre><br />
wget https://raw.githubusercontent.com/ssvb/lima-memtester/master/lima-memtester-genchart<br />
ruby lima-memtester-genchart https://linux-sunxi.org/Xunlong_Orange_Pi_PC<br />
# copy/paste the script output into the linux-sunxi wiki<br />
</pre><br />
<br />
{| class="wikitable"<br />
! rowspan=2 | DRAM clock speed<br />
! colspan=2 | Percentage of boards failing the lima-memtester test<br />
! rowspan=2 | Theoretical pessimistic upper bound of the failure percentage using Chebyshev's inequality for lower semivariance <ref name="chebyshev"><br />
If nothing is known about the distribution of samples, then at least<br />
[https://en.wikipedia.org/wiki/Chebyshev's_inequality Chebyshev's inequality]<br />
can be used to get a rough idea about the probabilities of encountering reliability<br />
problems at different DRAM clock speeds. But this method is <u>very conservative</u><br />
and substantially overestimates probabilities (being too generic has its price).<br />
</ref><br />
! rowspan=2 | Histogram<br />
|-<br />
! Experimental results<br />
! Theoretical prediction (assuming Gaussian distribution) <ref name="gaussian"><br />
We can assume that the [https://en.wikipedia.org/wiki/Normal_distribution Gaussian distribution]<br />
is a good approximation for our experimental data, calculate theoretical probabilities and do an<br />
[http://www.biostathandbook.com/exactgof.html exact test of goodness-of-fit]<br />
to see if the experimental data does not contradict with the theory.<br />
There is a nice [https://cran.r-project.org/web/packages/XNomial/vignettes/XNomial.html XNomial]<br />
library for R, which can do the job:<pre><br />
P value (LLR) = 0.6305<br />
P value (Prob) = 0.6329<br />
P value (Chisq) = 0.6777<br />
</pre><br />
If the [https://en.wikipedia.org/wiki/P-value p-values] listed above happen to be too low<br />
(less than 0.05) and reject our [https://en.wikipedia.org/wiki/Null_hypothesis null hypothesis]<br />
about having the Gaussian distribution, then Chebyshev's inequality estimates still can be used.<br />
</ref><br />
|- <br />
| 528 MHz || 0.00 % (0/23) || 0.00 % || 1.03 % || <br />
|- <br />
| 552 MHz || 0.00 % (0/23) || 0.00 % || 1.40 % || <br />
|- <br />
| 576 MHz || 0.00 % (0/23) || 0.00 % || 2.02 % || <br />
|- <br />
| 600 MHz || 0.00 % (0/23) || 0.02 % || 3.17 % || <br />
|- style="color: orange;"<br />
| 624 MHz || 0.00 % (0/23) || 0.40 % || 5.65 % || <br />
|- style="color: orange;"<br />
| 648 MHz || 0.00 % (0/23) || 3.91 % || 12.81 % || <br />
|- style="color: red;"<br />
| 672 MHz || 17.39 % (4/23) || 19.18 % || 52.38 % || ****<br />
|- style="color: red;"<br />
| 696 MHz || 60.87 % (14/23) || 50.77 % || 100.00 % || **********<br />
|- style="color: red;"<br />
| 720 MHz || 78.26 % (18/23) || 81.86 % || 100.00 % || ****<br />
|- style="color: red;"<br />
| 744 MHz || 95.65 % (22/23) || 96.41 % || 100.00 % || ****<br />
|- style="color: red;"<br />
| 768 MHz || 100.00 % (23/23) || 99.64 % || 100.00 % || *<br />
|}<br />
<references/><br />
<br />
== OpenRISC core ==<br />
<br />
Also named as [[AR100]], CPUS and "arisc" in various Allwinner materials, which may cause a bit of confusion. According to the Orange Pi PC schematics, VDD_CPUS is connected to VDD_RTC. It means that the voltage powering the OpenRISC core is programmable via the hardware register VDD_RTC_REG (at 0x1F00190) and can be configured between 0.7V and 1.4V. The H3 datasheet says that 1.4V is the absolute maximum for VDD_CPUS and 1.1V-1.3V is the recommended range. The reset default for VDD_RTC voltage is 1.1V.<br />
<br />
Below is a quick evaluation of the potential clock speed limit of the OpenRISC core on just a single board ([[User:Ssvb|ssvb]]'s) by running a naive recursive fibonacci function:<br />
<br />
{| class="wikitable"<br />
! rowspan=2 | VDD_RTC voltage<br />
! colspan=2 | OpenRISC core deadlocks at<br />
! colspan=2 | OpenRISC core does not obviously fail at<br />
! rowspan=2 | OpenRISC core is reliable at<br />
|-<br />
! Without I-Cache !! With I-Cache !! Without I-Cache !! With I-Cache<br />
|-<br />
| 1.1V || 552 MHz || 456 MHz || 528 MHz || 432 MHz || ?<br />
|-<br />
| 1.2V || 624 MHz || 504 MHz || 600 MHz || 480 MHz || ?<br />
|-<br />
| 1.3V || 624 MHz || 504 MHz || 600 MHz || 480 MHz || ?<br />
|-<br />
|}<br />
<br />
Without I-Cache, fetching each instruction from SRAM takes 3 cycles instead of just 1.<br />
<br />
Please note that the intended use of the OpenRISC core in Allwinner devices is keeping a watch while the main Cortex-A7 CPU and the rest of the SoC peripherals are powered off in deep power save modes. In this usage scenario it is likely clocked at just the minimum possible clock frequency 32 KHz.<br />
<br />
== USB ==<br />
<br />
It should be noted that unlike some of the more expensive Orange Pi models the 'PC' does not use an internal USB hub therefore the 4 available USB ports don't have to share bandwidth. First tests with kernel 4.4.0-rc4, a fast SSD and an enclosure capable of [[USB/UAS|USB Attached SCSI]] show excellent sequential performance with mainline kernel: 39 MB/s write and 41.5 MB/s read (tests done with iozone using 4 GB test size and averaging the values of 4K/1M record size)<br />
<br />
== Camera module ==<br />
<br />
Xunlong sells also a cheap 2MP camera (an attempt to fix the driver's limited resolutions can be found [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=443&fromuid=29411 here]). Unlike Orange Pi Plus/2 that can directly connect to the camera module for the PC an 'expansion board' is needed (see gallery below). If you order from Xunlong simply say that you need the camera for Orange Pi PC and they ship camera together with the small board.<br />
<br />
== 1-Wire support ==<br />
<br />
After applying a [https://github.com/igorpecovnik/lib/blob/master/patch/kernel/sun8i-default/02-0013-w1_h3.patch] to the lichee kernel sources 1-wire can be used with H3 based Orange Pi's. After loading the approriate modules (w1-sunxi, w1-gpio and w1-therm) connected 1-wire slave devices should appear below ''/sys/bus/w1/devices/''. To let 1-wire work the GPIO pin to be used has to be defined in fex/script.bin. All OS images that applied the 1-wire patch (all from loboris after applying his latest fixes, Armbian or the community's OpenELEC build) use "gpio = 20" in the fex file. Attention: This is a logical mapping that correlates with physical GPIO pin 37 (see the gallery image below). Please keep this in mind when following 1-wire tutorials for Raspberry Pi where GPIO pin 7 is normally used. On H3 devices the pin to connect the data line to is on the other end of the GPIO header.<br />
<br />
== Locating the UART ==<br />
The UART pins are located between HDMI and power jack of the board. They are marked as ''TX'', ''RX'' and ''GND'' on the PCB. Just attach some leads according to our [[UART|UART Howto]].<br />
[[File:Orange Pi PC UART.PNG|thumbnail]]<br />
<br />
= Pictures =<br />
<br />
== Orange Pi PC ==<br />
<gallery><br />
File:Xunlong_Orange_Pi_PC_front.PNG<br />
File:Xunlong_Orange_Pi_PC_back.PNG<br />
File:Xunlong Orange Pi_PC_bottom.PNG<br />
File:Xunlong Orange Pi_PC_top.PNG<br />
File:Xunlong_Orange_Pi_PC_left.PNG<br />
File:Xunlong_Orange_Pi_PC_right.PNG<br />
File:Orange_Pi_PC_with_Cameraboard_and_Camera.jpg<br />
File:Xunlong_OrangePi_expansion_header_pinout.png<br />
H3 UBOOT FAKEBUTTON.jpg<br />
</gallery><br />
<br />
== Orange Pi PC Plus ==<br />
<gallery><br />
File:Orange_Pi_PC_Plus_top.jpg<br />
File:Orange_Pi_PC_Plus_bottom.jpg<br />
</gallery><br />
<br />
= Variants =<br />
<br />
* The '''Orange Pi PC Plus''' adds 8GB eMMC and Realtek RTL8189FTV SDIO-based WiFi directly on the board (as opposed to a soldered-on module). The physical dimensions and position of connectors are exactly the same as the '''Orange Pi PC'''. The same type of DRAM is used but tracing is different since one DRAM module moved to the bottom side of the PCB. Since a FEL button is missing on this board it's not that easy to verify DRAM reliability the usual way (through FEL boot) so we should stay with the failsafe value of 624 MHz DRAM clock. Regarding software support we can base on fex file and device tree for the ''PC'' and simply add the necessary WiFi chip mappings.<br />
<br />
= Also known as =<br />
<br />
= See also =<br />
<br />
*[http://www.orangepi.org Xunlong Orange Pi site]<br />
*[https://github.com/orangepi-xunlong Official Github Repository].<br />
*[http://www.orangepi.org/orangepibbsen Official Orange Pi Form].<br />
*[[H3_Manual_build_howto]]<br />
*[https://drive.google.com/open?id=0BwQT0FP7IkTbRFJQamNwWTAzWms Orange Pi PC Schematics 1.2]<br />
<br />
== Manufacturer images ==<br />
A various amount of [http://www.orangepi.org/downloaded/download.html prebuilt images] is provided via OrangePi's Website most of them not containing latest fixes.<br />
Many people are also running images generated by forum user [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342 loboris] ([http://filez.zoobab.com/allwinner/orangepi/mega/ mirror available). It should be noted that when using loboris' images it's always useful to execute his [http://filez.zoobab.com/allwinner/orangepi/mega/update_kernel.sh update_kernel.sh] to get latest kernel fixes and settings for the board in question (various script.bin variants for different Orange Pis and display settings). To adjust script.bin settings (overclocked/overvolted) to linux-sunxi defaults there's informations and a script available in [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=785 this thread].<br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:Devices]]<br />
[[Category:H3 Boards]]<br />
[[Category:Xunlong]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]<br />
<br />
<br />
[[Category:NDH_TODO]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_PC&diff=18025
Xunlong Orange Pi PC
2016-08-10T12:33:25Z
<p>Jonkerj: Expansion header (copy/paste from Opi+, since schematics show this pinout is identical)</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Xunlong_Orange_Pi_PC_top.PNG|250px]]<br />
| manufacturer = [http://www.orangepi.org/ OrangePi]<br />
| dimensions = 85''mm'' x 55''mm''<br />
| release_date = August 2015<br />
| website = [http://www.orangepi.org/orangepipc/ Orange Pi PC Product Page]<br />
| soc = [[H3]] @ 1.3 GHz<br />
| dram = 1GiB DDR3L ([[DDR3#K4B4G1646Q-HYK0|K4B4G1646Q-HYK0]])<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br>or via GPIO header pins<br />
| video = HDMI (HDCP, CEC), CVBS<br />
| audio = 3.5 mm Jack, HDMI, Microphone<br />
| network = 10/100 Ethernet<br />
| storage = µSD, 8GB eMMC on PC Plus<br />
| usb = 3 USB 2.0 Host, 1 USB 2.0 OTG<br />
| other = IR<br />
| headers = 3 pin UART, CSI, 40 pin GPIO <br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
Orange Pi PC is [[H3]] based development board produced by [[Xunlong]]. <br />
<br />
= Identification =<br />
The ''PC'' PCB has the following silkscreened on it:<br />
<pre>Orange Pi PC V1.2</pre><br />
<br />
The ''PC Plus'' PCB shows the following:<br />
<pre>Orange Pi PC Plus V1.1</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
The H3 and Orange Pi PC support is progressing nicely. It is possible to find a usable mainline 4.x kernel (plus some patches) and a legacy 3.4 kernel in various work-in-progress git branches. See the [[Orange_Pi_PC#Manual_build|Manual build]] section for more details.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Use the ''orangepi_pc'' build target (supported since v2016.01-rc2).<br />
<br />
It can boot from the SD card or via [[FEL/USBBoot|FEL]]. Only the initial basic functionality is implemented and there are still no USB host and Ethernet drivers for H3 in U-Boot v2016.01 (it affects only u-boot functionality, device would work in linux as long kernel supports it).<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
The [https://github.com/allwinner-zh/linux-3.4-sunxi 3.4 kernel from the official Allwinner's git repository] [https://github.com/allwinner-zh/linux-3.4-sunxi/issues/14 does not support H3 yet]. But it is possible to use one of the kernel forks, based on the [http://www.cnx-software.com/2015/05/12/orange-pi-plus-allwinner-h3-firmware-images-and-linux-sdk-released/ lichee H3 SDK tarball]:<br />
* Siarhei Siamashka's branch '20151207-embedded-lima-memtester-h3' at https://github.com/ssvb/linux-sunxi/tree/20151207-embedded-lima-memtester-h3<br />
<br />
Configure this kernel using '''sun8i_h3_defconfig''', the rest is explained in the [[Linux_Kernel#Compilation|kernel compilation guide]].<br />
<br />
Use the [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/h3/xunlong_orange_pi_pc.fex xunlong_orange_pi_pc.fex] file for generating [[Script.bin|script.bin]].<br />
<br />
When booting the legacy 3.4 kernel with the mainline U-Boot, add the following line to boot.cmd:<br />
<br />
setenv machid 1029<br />
setenv bootm_boot_mode sec<br />
<br />
==== Mainline kernel ====<br />
<br />
Initial H3 patches have been submitted to the [[Mainline_Kernel_Howto|mainline kernel]], but have not landed yet. Currently you can find these patches in the arm-linux mailing list, or alternatively in one of the work-in-progress kernel forks:<br />
* Maxime Ripard's branch 'sunxi/for-next' at https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/log/?h=sunxi/for-next (very basic H3 support, without USB)<br />
* Hans de Goede's branch 'sunxi-wip' at https://github.com/jwrdegoede/linux-sunxi/tree/sunxi-wip (many work-in-progress patches, including H3 and USB support for it)<br />
* Siarhei Siamashka's branch '20151223-h3-mainline-smp-hack' at https://github.com/ssvb/linux-sunxi/tree/20151223-h3-mainline-smp-hack (minimal set of H3 patches, with USB and SMP)<br />
* Chen-Yu Tsai's branch 'h3-emac' at https://github.com/wens/linux/tree/h3-emac (working Ethernet and USB)<br />
<br />
Use the '''sun8i-h3-orangepi-pc.dtb''' device-tree binary.<br />
<br />
== Expansion Port ==<br />
<br />
The Orange Pi PC has a 40-pin, 0.1" connector with several low-speed interfaces.<br />
<br />
{| class="wikitable" style="width:600px;"<br />
! colspan=4 | 2x20 Header<br />
|-<br />
| 1 || ''3.3V''<br />
| 2 || ''5V'' <br />
|-<br />
| 3 || PA12 <small>(TWI0_SDA/DI_RX/PA_EINT12)</small><br />
| 4 || ''5V'' <br />
|-<br />
| 5 || PA11 <small>(TWI0_SCK/DI_TX/PA_EINT11)</small><br />
| 6 || ''GND''<br />
|-<br />
| 7 || PA6 <small>(SIM_PWREN/PWM1/PA_EINT6)</small><br />
| 8 || PA13 <small>(SPI1_CS/UART3_TX/PA_EINT13)</small><br />
|-<br />
| 9 || ''GND''<br />
| 10 || PA14 <small>(SPI1_CLK/UART3_RX/PA_EINT14)</small><br />
|-<br />
| 11 || PA1 <small>(UART2_RX/JTAG_CK/PA_EINT1)</small><br />
| 12 || PD14<br />
|-<br />
| 13 || PA0 <small>(UART2_TX/JTAG_MS/PA_EINT0)</small><br />
| 14 || ''GND''<br />
|-<br />
| 15 || PA3 <small>(UART2_CTS/JTAG_DI/PA_EINT3)</small><br />
| 16 || PC4<br />
|-<br />
| 17 || ''3.3V''<br />
| 18 || PC7<br />
|-<br />
| 19 || PC0 <small>(SPI0_MOSI)</small><br />
| 20 || ''GND''<br />
|-<br />
| 21 || PC1 <small>(SPI0_MISO)</small><br />
| 22 || PA2 <small>(UART2_RTS/JTAG_DO/PA_EINT2)</small><br />
|-<br />
| 23 || PC2 <small>(SPI0_CLK)</small><br />
| 24 || PC3 <small>(SPI0_CS)</small><br />
|-<br />
| 25 || ''GND''<br />
| 26 || PA21 <small>(PCM0_DIN/SIM_VPPPP/PA_EINT21)</small><br />
|-<br />
| 27 || PA19 <small>(PCM0_CLK/TWI1_SDA/PA_EINT19)</small><br />
| 28 || PA18 <small>(PCM0_SYNC/TWI1_SCK/PA_EINT18)</small><br />
|-<br />
| 29 || PA7 <small>(SIM_CLK/PA_EINT7)</small><br />
| 30 || ''GND''<br />
|-<br />
| 31 || PA8 <small>(SIM_DATA/PA_EINT8)</small><br />
| 32 || PG8 <small>(UART1_RTS/PG_EINT8)</small><br />
|-<br />
| 33 || PA9 <small>(SIM_RST/PA_EINT9)</small><br />
| 34 || ''GND''<br />
|-<br />
| 35 || PA10 <small>(SIM_DET/PA_EINT10)</small><br />
| 36 || PG9 <small>(UART1_CTS/PG_EINT9)</small><br />
|-<br />
| 37 || PA20 <small>(PCM0_DOUT/SIM_VPPEN/PA_EINT20)</small><br />
| 38 || PG6 <small>(UART1_TX/PG_EINT6)</small><br />
|-<br />
| 39 || ''GND''<br />
| 40 || PG7 <small>(UART1_RX/PG_EINT7)</small><br />
|}<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* Heat issues when using common OS images for the OPi PC. Without a heatsink the Orange Pi PC overheats easily and will drop cores to thwart further temperature increase and unfortunately the heatsink provided by the manufacturer does little to help. The [http://www.cnx-software.com/2015/08/26/orange-pi-pc-allwinner-h3-board-is-now-available-for-15/ low cost $15 variant] does not have any heatsink included at all. This is the result of 'factory settings' overclocking/overvolting the H3 way too much. With adjusted dvfs entries and an upper limit of 1.2 GHz SoC temperature stays below 75°C without heatsink when running cpuburn-a7 on all 4 cores. Using a quality heatsink, some airflow and reasonable cpufreq settings the H3 [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=743&page=3 remains below 60°C even under full load at an ambient temperature of 22°C].<br />
<br />
* It is also possible to power the device via GPIO pin header: connect +5V to either pin 2 or 4 (both are connected to DCIN test point) and GND to pin 6.<br />
<br />
== FEL mode ==<br />
<br />
There is no dedicated FEL button. The Orange Pi ''PC'' will fail over to FEL mode if it doesn't detect a card present in the µSD slot. On the ''PC Plus'' it gets somewhat tricky to use FEL mode in case the eMMC is already populated with an OS (or at least a working boot loader). In this case it helps to grab the ''fel-sdboot.sunxi'' image from [https://github.com/linux-sunxi/sunxi-tools/tree/master/bin/ sunxi-tools github repo] and write it to an SD card of any size as follows:<br />
<pre>sudo dd if=fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8</pre><br />
Then boot afterwards with this SD card inserted and H3 will be in FEL mode afterwards.<br />
<br />
'''Not tested yet'''<br />
You can use "FAKE FEL BUTTON". See photo "H3_FAKE_BUTTON". According to the board's schematic UBOOT pin is connected to R124 (bottom leed, because top leed is connected to R38 which is connected to VCC). You can connect it to GND. The right R108 leed is the nearest GND pin (I've checked it). It is very close so it is not too hard. I draw it as yellow line. Enjoy!<br />
<br />
== LEDs ==<br />
<br />
[[File:Xunlong Orange Pi PC LEDs.jpg|thumb|150px|Two LEDs]]<br />
<br />
The board has two LEDs:<br />
* A red LED, connected to the PA15 pin.<br />
* A green LED, connected to the PL10 pin.<br />
<br />
When using kernel 3.4 with Xunlong's or loboris' settings then the LEDs can only be switched on/off. By changing the definition in the fex file (see [https://groups.google.com/forum/#!msg/linux-sunxi/20Ir4It3GsA/2KDRe_8IAQAJ patch] or [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/h3/xunlong_orange_pi_pc.fex fex with applied fix]) both LEDs can be used the usual way (using different triggers and so on)<br />
<br />
== CPU clock speed limit ==<br />
<br />
The Allwinner H3 manual does not provide the CPU clock speed information. But the following is a common comment in the FEX files from various H3 SDK variants:<br />
<pre><br />
; dvfs voltage-frequency table configuration<br />
;<br />
; pmuic_type:0:none, 1:gpio, 2:i2c<br />
; pmu_gpio0: gpio config.<br />
; pmu_levelx: 0~9999: voltage(mV), 10000~90000:gpio0 state. voltage form high to low.<br />
;<br />
; extremity_freq(Hz): cpu extremity frequency when run benckmark or demo apk<br />
; 1536MHz@1500mV with radiator, 1296MHz@1340mV without radiator<br />
; max_freq: cpu maximum frequency, based on Hz, can not be more than 1200MHz<br />
; min_freq: cpu minimum frequency, based on Hz, can not be less than 60MHz<br />
;<br />
; LV_count: count of LV_freq/LV_volt, must be < 16<br />
;<br />
; LV1: core vdd is 1.50v if cpu frequency is (1296Mhz, 1536Mhz]<br />
; LV2: core vdd is 1.34v if cpu frequency is (1200Mhz, 1296Mhz]<br />
; LV3: core vdd is 1.32v if cpu frequency is (1008Mhz, 1200Mhz]<br />
; LV4: core vdd is 1.20v if cpu frequency is (816Mhz, 1008Mhz]<br />
; LV5: core vdd is 1.10v if cpu frequency is (648Mhz, 816Mhz]<br />
; LV6: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
; LV7: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
; LV8: core vdd is 1.04v if cpu frequency is (0Mhz, 648Mhz]<br />
</pre><br />
It means that this comment likely originates from Allwinner, rather than something added by Xunlong or any other H3 device manufacturer.<br />
<br />
The Orange Pi PC board uses the [[SY8106A]] voltage regulator for providing the CPU core voltage (VDD_CPUX). The default CPU voltage is 1.2V after power-on (selected by the resistors on the PCB) and can be changed at runtime by software via I2C interface. According to the table above, this default voltage should be safe for using with the CPU clock frequencies up to 1008MHz. The H3 datasheet specifies 1.5V as the absolute maximum for the VDD_CPUX voltage and 1.4V as the recommended maximum.<br />
<br />
== DRAM clock speed limit ==<br />
<br />
DRAM is clocked at '''672 MHz''' by the hardware vendor. But the reliability still needs to be verified. One of the ways of doing reliability tests may be https://github.com/ssvb/lima-memtester/releases/tag/20151207-orange-pi-pc-fel-test (it checks the Orange Pi PC DRAM setup in the current mainline U-Boot v2016.01-rc2 + [https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg14969.html a bugfix]).<br />
<br />
{| class="wikitable"<br />
! Hardware<br />
! Diagnostic software<br />
! lima-memtester passes (survives until the red LED)<br />
! lima-memtester fails<br />
! Notes<br />
|-<br />
| [[User:Ssvb]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 696 MHz fails after running for just a few seconds, so not much confidence in 672 MHz either<br />
|-<br />
| [[User:Tkaiser]]'s 1st Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Small heatsink'''. 696 MHz fails after running for 2-3 minutes<br />
|-<br />
| Orange Pi PC v1.2 ([[User:Plaes|plaes]])|| fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || '''672 MHz''' || '''No heatsink'''. Multiple reproducible failures.<br> SoC markings: <tt>F7004BA 68D3</tt>, Memory: Samsung <tt>K4B4G1646Q-HYK0</tt><br />
|-<br />
| [[User:Tkaiser]]'s 2nd Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 696 MHz fails after running for ~10 minutes<br />
|-<br />
| [[User:Peko]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''Heatsink'''. 744 MHz fails after running for ~1-2 minutes<br />
|-<br />
| [[User:Patapovich]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''No heatsink'''. 672 MHz was running for ~16 hours without problems<br />
|-<br />
| [[User:Runnerway]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Small heatsink'''.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 1 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 744 MHz || 768 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 768MHz failed < 1 min.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 2 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 720MHz failed after 5 mins.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 3 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 720MHz failed after ~30 mins.<br />
|-<br />
| [[User:Camh]]'s Orange Pi PC 4 || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Heatsink (35mmx25mm) covering SoC and RAM'''. 696MHz failed in < 30s.<br />
|-<br />
| [http://www.orangepi.org/orangepibbsen/forum.php?mod=redirect&goto=findpost&ptid=847&pid=8002 lymon's Orange Pi PC] || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || fails/hangs after approx. 10 minutes<br />
|-<br />
| [[User:Michal]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''No heatsink'''. At 720 MHz test failed in about 5 minutes.<br />
|-<br />
| [[User:Jvdwaa]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''No heatsink'''.<br />
|-<br />
| [[User:dusthillguy]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Only one 14mm*14mm*5mm heatsink, fitted on the H3 chip.''' Stable at 672 for over 12 hours without a fan, the green led was still flashing when I powered the system off. Fails within 30 to 60 minutes at 696 without a fan. At 696 with a fan, it survives for a few hours, but even with the fan it does eventually fail (the LEDs go off).<br />
<br />
By the way, the fan I used is 70mm, taken from an old intel heatsink, and powered by USB, so it rotates at a low speed. Just in case this is useful to know.<br />
|-<br />
| [[User:kc|kc]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''No heatsink'''. stable for ~35minutes of testing at 648 (to the red led), failing within 1-2 minutes at 672.<br />
<br />
board label: 112169, SOC markings: F7008BA 68E3, ram markings: K4B4G1646Q-HYKO / EKG384K8C<br />
|-<br />
| [[User:fjen]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''14mm*14mm*8mm Heatsink on H3'''. 744 MHz fails after 1 minute<br />
|-<br />
| [[User:dvl36]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 720 MHz || 744 MHz || '''Heatsink (35x35x25mm) covering SoC and RAM'''. 744 MHz fails after ~2 minutes.<br />
|-<br />
| [[User:cosm]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''22mm*22mm*10mm heatsink on the SoC only'''. 672 MHz worked until the red LED lit, but failed after about two hours. 648 MHz was still working after 10 hours.<br />
|-<br />
| [[User:hp197]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 696 MHz || 720 MHz || '''Heatsink (13x14x6.5mm) covering only SoC ([http://www.ebay.com/itm/121799610035 Ebay Link])'''. 720Mhz Failed quick after start (at the bit flip test, 1st pass).<br />
|-<br />
| [[User:emsi88]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''With big heatsink '''. 696 Mhz Failed afrer few minutes, 672 MHz worked stable for over 9 hours.<br />
|-<br />
| [[User:lampra]]'s Orange Pi PC || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 648 MHz || 672 MHz || '''No heatsink'''. 672 Mhz Failed afrer few minutes.<br />
|-<br />
| [[User:Tkaiser]]'s Orange Pi PC ''Plus'' || fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz || 672 MHz || 696 MHz || '''Cheap heatsink'''. 696 MHz fails after running for 90 seconds<br />
|}<br />
<br />
<span style="color:red">'''We need still more test results in the table above in order to have more accurate statistics and finally pick a safe default DRAM clock speed for U-Boot. Preferably there should be at least 10 entries in the table (more is always better). And there are no "good" or "bad" test results. Even if your result looks very similar to the already reported results from the other people, please still add yours to the table! Because if people don't feel like reporting their "boring" results, then "interesting" outliers will unfortunately skew the statistics. Thanks!'''</span><br />
<br />
== DRAM clock speed limit (automated statistical analysis) ==<br />
<br />
Below is an intermediate analysis of the currently reported results, using the [https://github.com/ssvb/lima-memtester/blob/master/lima-memtester-genchart lima-memtester-genchart] script (run the script using this page URL as the command line argument). Assuming that the [https://en.wikipedia.org/wiki/Normal_distribution Gaussian distribution] is a good approximation, try to predict what percentage of boards is expected to pass the lima-memetser test at different DRAM clock frequencies. The [[lima-memtester#Results_analysis|lima-memtester]] page provides more information.<br />
<br />
Updating the analysis report:<pre><br />
wget https://raw.githubusercontent.com/ssvb/lima-memtester/master/lima-memtester-genchart<br />
ruby lima-memtester-genchart https://linux-sunxi.org/Xunlong_Orange_Pi_PC<br />
# copy/paste the script output into the linux-sunxi wiki<br />
</pre><br />
<br />
{| class="wikitable"<br />
! rowspan=2 | DRAM clock speed<br />
! colspan=2 | Percentage of boards failing the lima-memtester test<br />
! rowspan=2 | Theoretical pessimistic upper bound of the failure percentage using Chebyshev's inequality for lower semivariance <ref name="chebyshev"><br />
If nothing is known about the distribution of samples, then at least<br />
[https://en.wikipedia.org/wiki/Chebyshev's_inequality Chebyshev's inequality]<br />
can be used to get a rough idea about the probabilities of encountering reliability<br />
problems at different DRAM clock speeds. But this method is <u>very conservative</u><br />
and substantially overestimates probabilities (being too generic has its price).<br />
</ref><br />
! rowspan=2 | Histogram<br />
|-<br />
! Experimental results<br />
! Theoretical prediction (assuming Gaussian distribution) <ref name="gaussian"><br />
We can assume that the [https://en.wikipedia.org/wiki/Normal_distribution Gaussian distribution]<br />
is a good approximation for our experimental data, calculate theoretical probabilities and do an<br />
[http://www.biostathandbook.com/exactgof.html exact test of goodness-of-fit]<br />
to see if the experimental data does not contradict with the theory.<br />
There is a nice [https://cran.r-project.org/web/packages/XNomial/vignettes/XNomial.html XNomial]<br />
library for R, which can do the job:<pre><br />
P value (LLR) = 0.6305<br />
P value (Prob) = 0.6329<br />
P value (Chisq) = 0.6777<br />
</pre><br />
If the [https://en.wikipedia.org/wiki/P-value p-values] listed above happen to be too low<br />
(less than 0.05) and reject our [https://en.wikipedia.org/wiki/Null_hypothesis null hypothesis]<br />
about having the Gaussian distribution, then Chebyshev's inequality estimates still can be used.<br />
</ref><br />
|- <br />
| 528 MHz || 0.00 % (0/23) || 0.00 % || 1.03 % || <br />
|- <br />
| 552 MHz || 0.00 % (0/23) || 0.00 % || 1.40 % || <br />
|- <br />
| 576 MHz || 0.00 % (0/23) || 0.00 % || 2.02 % || <br />
|- <br />
| 600 MHz || 0.00 % (0/23) || 0.02 % || 3.17 % || <br />
|- style="color: orange;"<br />
| 624 MHz || 0.00 % (0/23) || 0.40 % || 5.65 % || <br />
|- style="color: orange;"<br />
| 648 MHz || 0.00 % (0/23) || 3.91 % || 12.81 % || <br />
|- style="color: red;"<br />
| 672 MHz || 17.39 % (4/23) || 19.18 % || 52.38 % || ****<br />
|- style="color: red;"<br />
| 696 MHz || 60.87 % (14/23) || 50.77 % || 100.00 % || **********<br />
|- style="color: red;"<br />
| 720 MHz || 78.26 % (18/23) || 81.86 % || 100.00 % || ****<br />
|- style="color: red;"<br />
| 744 MHz || 95.65 % (22/23) || 96.41 % || 100.00 % || ****<br />
|- style="color: red;"<br />
| 768 MHz || 100.00 % (23/23) || 99.64 % || 100.00 % || *<br />
|}<br />
<references/><br />
<br />
== OpenRISC core ==<br />
<br />
Also named as [[AR100]], CPUS and "arisc" in various Allwinner materials, which may cause a bit of confusion. According to the Orange Pi PC schematics, VDD_CPUS is connected to VDD_RTC. It means that the voltage powering the OpenRISC core is programmable via the hardware register VDD_RTC_REG (at 0x1F00190) and can be configured between 0.7V and 1.4V. The H3 datasheet says that 1.4V is the absolute maximum for VDD_CPUS and 1.1V-1.3V is the recommended range. The reset default for VDD_RTC voltage is 1.1V.<br />
<br />
Below is a quick evaluation of the potential clock speed limit of the OpenRISC core on just a single board ([[User:Ssvb|ssvb]]'s) by running a naive recursive fibonacci function:<br />
<br />
{| class="wikitable"<br />
! rowspan=2 | VDD_RTC voltage<br />
! colspan=2 | OpenRISC core deadlocks at<br />
! colspan=2 | OpenRISC core does not obviously fail at<br />
! rowspan=2 | OpenRISC core is reliable at<br />
|-<br />
! Without I-Cache !! With I-Cache !! Without I-Cache !! With I-Cache<br />
|-<br />
| 1.1V || 552 MHz || 456 MHz || 528 MHz || 432 MHz || ?<br />
|-<br />
| 1.2V || 624 MHz || 504 MHz || 600 MHz || 480 MHz || ?<br />
|-<br />
| 1.3V || 624 MHz || 504 MHz || 600 MHz || 480 MHz || ?<br />
|-<br />
|}<br />
<br />
Without I-Cache, fetching each instruction from SRAM takes 3 cycles instead of just 1.<br />
<br />
Please note that the intended use of the OpenRISC core in Allwinner devices is keeping a watch while the main Cortex-A7 CPU and the rest of the SoC peripherals are powered off in deep power save modes. In this usage scenario it is likely clocked at just the minimum possible clock frequency 32 KHz.<br />
<br />
== USB ==<br />
<br />
It should be noted that unlike some of the more expensive Orange Pi models the 'PC' does not use an internal USB hub therefore the 4 available USB ports don't have to share bandwidth. First tests with kernel 4.4.0-rc4, a fast SSD and an enclosure capable of [[USB/UAS|USB Attached SCSI]] show excellent sequential performance with mainline kernel: 39 MB/s write and 41.5 MB/s read (tests done with iozone using 4 GB test size and averaging the values of 4K/1M record size)<br />
<br />
== Camera module ==<br />
<br />
Xunlong sells also a cheap 2MP camera (an attempt to fix the driver's limited resolutions can be found [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=443&fromuid=29411 here]). Unlike Orange Pi Plus/2 that can directly connect to the camera module for the PC an 'expansion board' is needed (see gallery below). If you order from Xunlong simply say that you need the camera for Orange Pi PC and they ship camera together with the small board.<br />
<br />
== 1-Wire support ==<br />
<br />
After applying a [https://github.com/igorpecovnik/lib/blob/master/patch/kernel/sun8i-default/02-0013-w1_h3.patch] to the lichee kernel sources 1-wire can be used with H3 based Orange Pi's. After loading the approriate modules (w1-sunxi, w1-gpio and w1-therm) connected 1-wire slave devices should appear below ''/sys/bus/w1/devices/''. To let 1-wire work the GPIO pin to be used has to be defined in fex/script.bin. All OS images that applied the 1-wire patch (all from loboris after applying his latest fixes, Armbian or the community's OpenELEC build) use "gpio = 20" in the fex file. Attention: This is a logical mapping that correlates with physical GPIO pin 37 (see the gallery image below). Please keep this in mind when following 1-wire tutorials for Raspberry Pi where GPIO pin 7 is normally used. On H3 devices the pin to connect the data line to is on the other end of the GPIO header.<br />
<br />
== Locating the UART ==<br />
The UART pins are located between HDMI and power jack of the board. They are marked as ''TX'', ''RX'' and ''GND'' on the PCB. Just attach some leads according to our [[UART|UART Howto]].<br />
[[File:Orange Pi PC UART.PNG|thumbnail]]<br />
<br />
= Pictures =<br />
<br />
== Orange Pi PC ==<br />
<gallery><br />
File:Xunlong_Orange_Pi_PC_front.PNG<br />
File:Xunlong_Orange_Pi_PC_back.PNG<br />
File:Xunlong Orange Pi_PC_bottom.PNG<br />
File:Xunlong Orange Pi_PC_top.PNG<br />
File:Xunlong_Orange_Pi_PC_left.PNG<br />
File:Xunlong_Orange_Pi_PC_right.PNG<br />
File:Orange_Pi_PC_with_Cameraboard_and_Camera.jpg<br />
File:Xunlong_OrangePi_expansion_header_pinout.png<br />
H3 UBOOT FAKEBUTTON.jpg<br />
</gallery><br />
<br />
== Orange Pi PC Plus ==<br />
<gallery><br />
File:Orange_Pi_PC_Plus_top.jpg<br />
File:Orange_Pi_PC_Plus_bottom.jpg<br />
</gallery><br />
<br />
= Variants =<br />
<br />
* The '''Orange Pi PC Plus''' adds 8GB eMMC and Realtek RTL8189FTV SDIO-based WiFi directly on the board (as opposed to a soldered-on module). The physical dimensions and position of connectors are exactly the same as the '''Orange Pi PC'''. The same type of DRAM is used but tracing is different since one DRAM module moved to the bottom side of the PCB. Since a FEL button is missing on this board it's not that easy to verify DRAM reliability the usual way (through FEL boot) so we should stay with the failsafe value of 624 MHz DRAM clock. Regarding software support we can base on fex file and device tree for the ''PC'' and simply add the necessary WiFi chip mappings.<br />
<br />
= Also known as =<br />
<br />
= See also =<br />
<br />
*[http://www.orangepi.org Xunlong Orange Pi site]<br />
*[https://github.com/orangepi-xunlong Official Github Repository].<br />
*[http://www.orangepi.org/orangepibbsen Official Orange Pi Form].<br />
*[[H3_Manual_build_howto]]<br />
*[https://drive.google.com/open?id=0BwQT0FP7IkTbRFJQamNwWTAzWms Orange Pi PC Schematics 1.2]<br />
<br />
== Manufacturer images ==<br />
A various amount of [http://www.orangepi.org/downloaded/download.html prebuilt images] is provided via OrangePi's Website most of them not containing latest fixes.<br />
Many people are also running images generated by forum user [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342 loboris] ([http://filez.zoobab.com/allwinner/orangepi/mega/ mirror available). It should be noted that when using loboris' images it's always useful to execute his [http://filez.zoobab.com/allwinner/orangepi/mega/update_kernel.sh update_kernel.sh] to get latest kernel fixes and settings for the board in question (various script.bin variants for different Orange Pis and display settings). To adjust script.bin settings (overclocked/overvolted) to linux-sunxi defaults there's informations and a script available in [http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=785 this thread].<br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:Devices]]<br />
[[Category:H3 Boards]]<br />
[[Category:Xunlong]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]<br />
<br />
<br />
[[Category:NDH_TODO]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=SID_Register_Guide&diff=17973
SID Register Guide
2016-07-28T14:36:32Z
<p>Jonkerj: /* Currently known SID's */</p>
<hr />
<div>= Security ID =<br />
So far, all Allwinner A-series SoC come with a bit of memory called 'SID'. So far, for all chips this is 128 bits of freely? usable memory, with a catch. These 128 bits of memory, are not in RAM or ROM, they are so called [http://en.wikipedia.org/wiki/EFUSE e-fuses].<br />
<br />
By default, the chip ID or revision is written to these fusions and possibly some form of serial number. While modifying is untested at this moment, it is possible to read the fuses.<br />
<br />
A few use cases for the SID are, but not limited to:<br />
* Generate per-device unique MAC address<br />
* Store/use as an RSA etc key<br />
* Write in-house serial numbers<br />
<br />
== Info ==<br />
SID Base address: '''0x01c23800'''<br />
<br />
For Allwinner [[A83T]] and [[H3]] the SID address space starts at 0x01c14000, and the e-fuses are at offset 0x200 - so the address to use for these SoCs is '''0x01c14200'''.<br />
<br />
==== SID Registers ====<br />
{| class="wikitable" |<br />
! Register Name<br />
! Offset<br />
! Size<br />
! Description<br />
! Note<br />
|-<br />
| <tt>SID_KEY0</tt><br />
| <tt>0x00</tt><br />
| <tt>4 B</tt><br />
| Key0 [0:31]<br />
|<br />
|-<br />
| <tt>SID_KEY1</tt><br />
| <tt>0x04</tt><br />
| <tt>4 B</tt><br />
| Key1 [32:63]<br />
|<br />
|-<br />
| <tt>SID_KEY2</tt><br />
| <tt>0x08</tt><br />
| <tt>4 B</tt><br />
| Key2 [64:95]<br />
|<br />
|-<br />
| <tt>SID_KEY3</tt><br />
| <tt>0x0c</tt><br />
| <tt>4 B</tt><br />
| Key3 [96:127]<br />
|<br />
|-<br />
| <tt>SID_WRITE_DATA</tt><br />
| <tt>0x40</tt><br />
| <tt>4 B</tt><br />
| Data [0:31]<br />
| NOT VERIFIED<br />
|-<br />
| <tt>SID_WRITE_CTRL</tt><br />
| <tt>0x44</tt><br />
| <tt>4 B</tt><br />
| SID Program Control register<br />
|<br />
|}<br />
<br />
<br />
===== SID_KEY[0-3] =====<br />
Default value: undefined<br /><br />
Offset: 0x0{0, 4, 8, c}<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>KEY[0-3]</tt><br />
| <tt>0:31</tt><br />
| <tt>Read</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| 32 bits for SID<br />
|}<br />
<br />
<br />
===== SID_WRITE_DATA =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x40<br />
<br />
<p>We think this is the data register used when programming the SID efuses. <br />
<br />
<p>There is also a EFUSE_VDDQ pin (pin T9 on A10) which is normally tied to GND but which we guess needs to have suitable power to enable efuse programming. Details unknown.<br />
<br />
===== SID_WRITE_CTRL =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x44<br />
<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>SID_WRITE_START</tt><br />
| <tt>0</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = done writing<br />
0x01 = start writing<br />
</tt><br />
| Writes when enabled, returns to 0 after writing.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>1:3</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|-<br />
| <tt>SID_WRITE_POS</tt><br />
| <tt>4:7</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = macrocell 0<br />
0x01 = macrocell 1<br />
0x02 = macrocell 2<br />
0x03 = macrocell 3<br />
</tt><br />
| Index of which of the 4 hardware macrocell fuses to burn. It is currently unknown where to obtain said value from but a guess is register 0x40.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>8:31</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|}<br />
<br />
== Currently known SID's ==<br />
<br />
You may try to retrieve the SID value via our [[sunxi-tools]] (<code>./sunxi-fel sid</code>) - or dump it from within U-Boot using the corresponding, SoC-specific address (e.g. <code>md.l 0x01c23800 4</code>). If running a mainline kernel hexdump should be sufficient.<br />
<pre>hexdump -C /sys/devices/platform/soc@01c00000/1c23800.eeprom/eeprom<br />
00000000 16 51 66 c6 80 51 77 89 54 53 48 48 0a 40 f2 67 |.Qf..Qw.TSHH.@.g|<br />
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|<br />
</pre>.<br />
<br />
In 4.7 using [http://sunxi.montjoie.ovh/ Montjoie's patches], it can be obtained like this (your address may be different)<br />
$ hexdump -C $(find /sys/devices/platform/soc/ -path '*/sunxi-sid0/*' -name nvmem ) | grep 00000200<br />
00000200 02 00 46 20 94 34 05 08 50 1a 05 0e 40 00 00 6d |..F .4..P...@..m|<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Board !! eeprom<br />
|-<br />
|colspan="2" style="text-align:center;"|'''A10'''<br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236747 80728452 50574848 064163D5</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367C7 80778052 50554848 0201DDC3</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236750 80758352 52574848 08025081</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236745 80778052 50554848 07C171AD</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 0642d3e9</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236790 80758952 54544848 03c21c4e</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367d9 80758952 54544848 08c21483</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236798 80758952 54544848 0781186a</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623674c 80758952 54544848 0a02c845</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623670f 80758952 54544848 0981e268</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623678b 80778251 54534848 0a4285d6</tt><br />
|-<br />
| Gemei G9 (A10) || <tt>16236712 80726652 57524848 04c29968</tt><br />
|-<br />
| Mele A1000 (A10) early version || <tt>00000000 00000000 00000000 00000000</tt><br />
|-<br />
| pcDuino (A10) || <tt>16236755 80758952 53554848 0a41e8c9 </tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A10s'''<br />
|-<br />
| R7 hdmi-stick (A10s) || <tt>16254157 504B4133 30397030 0A41FA85</tt><br />
|-<br />
| mk802 hdmi-stick (A10s) || <tt>16254115 50484E39 35397030 0D02F6E8</tt><br />
|-<br />
| OlinuXino (A10S) || <tt>162541d3 50485937 30357030 04020663</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A13'''<br />
|-<br />
| A13B tablet (A13) || <tt>16254216 504E4837 39313030 06819C58</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254147 50475838 36313030 0341B75D</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254159 50475838 36313030 0B4181E9</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254158 504B4E39 35303030 0A0185F5</tt><br />
|-<br />
| OlinuXIno Micro (A13) || <tt>16254187 504b4e39 35303030 094313f2</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A20'''<br />
|-<br />
| EOMA68-A20 (A20) || <tt>165165c7 80807552 55564848 0842c7fb</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516507 80808952 56524848 03c18168</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516581 80808952 56524848 0583548e </tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516587 80808952 56524848 0b81d536 </tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651664f 80485686 53504848 0702dde9</tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651668a 80485788 51484848 02825172</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>16516608 80485172 49484848 0800ccfc</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>165166c6 80517789 54534848 0a40f267</tt><br />
|-<br />
| A20-OLinuXino-MICRO (A20) || <tt>00000000 00000000 00000000 00000000 </tt> (2 verified)<br />
|-<br />
| Cubieboard 2.0 1024 (A20) || <tt>00000000 00000000 00000000 00000000 </tt> (3 verified)<br />
|-<br />
|colspan="2" style="text-align:center;"|'''A31s''', sid in AXP221<br />
|-<br />
| CSQ CS908 (A31s) || <tt>16524251 434e3038 34010088 080d81eb</tt><br />
|-<br />
| Mele A1000G quad (A31) || <tt>16524251 43423635 32000045 060a7a38</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''H3'''<br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 502d05ce 5800006c</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 5040068e 54000000</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 50340a0e 4c00006f</tt><br />
|-<br />
| Orange Pi Plus || <tt>02004620 94340508 501a050e 4000006d</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 501d078e 4c000060</tt><br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5022018e 64000022</tt><br />
|}<br />
<br />
Newer SoC families no longer seem to follow the above pattern of containing the SoC ID within the first value.<br><br />
However, the leading 32 bits still seem to be consistent among the same SoCs:<br />
<br />
{| class="wikitable" |<br />
! SoC !! ID !! SID key<br />
|-<br />
| A64 || 0x1689 || <tt>92c000ba [...]</tt><br />
|-<br />
| A83T || 0x1673 || <tt>32c00401 [...]</tt><br />
|-<br />
| H3 || 0x1680 || <tt>02004620 [...]</tt><br />
|}<br />
<br />
[[Category:A10 Register guide]]<br />
[[Category:A13 Register guide]]<br />
[[Category:A20 Register guide]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=SID_Register_Guide&diff=17972
SID Register Guide
2016-07-28T14:32:13Z
<p>Jonkerj: /* Currently known SID's */</p>
<hr />
<div>= Security ID =<br />
So far, all Allwinner A-series SoC come with a bit of memory called 'SID'. So far, for all chips this is 128 bits of freely? usable memory, with a catch. These 128 bits of memory, are not in RAM or ROM, they are so called [http://en.wikipedia.org/wiki/EFUSE e-fuses].<br />
<br />
By default, the chip ID or revision is written to these fusions and possibly some form of serial number. While modifying is untested at this moment, it is possible to read the fuses.<br />
<br />
A few use cases for the SID are, but not limited to:<br />
* Generate per-device unique MAC address<br />
* Store/use as an RSA etc key<br />
* Write in-house serial numbers<br />
<br />
== Info ==<br />
SID Base address: '''0x01c23800'''<br />
<br />
For Allwinner [[A83T]] and [[H3]] the SID address space starts at 0x01c14000, and the e-fuses are at offset 0x200 - so the address to use for these SoCs is '''0x01c14200'''.<br />
<br />
==== SID Registers ====<br />
{| class="wikitable" |<br />
! Register Name<br />
! Offset<br />
! Size<br />
! Description<br />
! Note<br />
|-<br />
| <tt>SID_KEY0</tt><br />
| <tt>0x00</tt><br />
| <tt>4 B</tt><br />
| Key0 [0:31]<br />
|<br />
|-<br />
| <tt>SID_KEY1</tt><br />
| <tt>0x04</tt><br />
| <tt>4 B</tt><br />
| Key1 [32:63]<br />
|<br />
|-<br />
| <tt>SID_KEY2</tt><br />
| <tt>0x08</tt><br />
| <tt>4 B</tt><br />
| Key2 [64:95]<br />
|<br />
|-<br />
| <tt>SID_KEY3</tt><br />
| <tt>0x0c</tt><br />
| <tt>4 B</tt><br />
| Key3 [96:127]<br />
|<br />
|-<br />
| <tt>SID_WRITE_DATA</tt><br />
| <tt>0x40</tt><br />
| <tt>4 B</tt><br />
| Data [0:31]<br />
| NOT VERIFIED<br />
|-<br />
| <tt>SID_WRITE_CTRL</tt><br />
| <tt>0x44</tt><br />
| <tt>4 B</tt><br />
| SID Program Control register<br />
|<br />
|}<br />
<br />
<br />
===== SID_KEY[0-3] =====<br />
Default value: undefined<br /><br />
Offset: 0x0{0, 4, 8, c}<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>KEY[0-3]</tt><br />
| <tt>0:31</tt><br />
| <tt>Read</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| 32 bits for SID<br />
|}<br />
<br />
<br />
===== SID_WRITE_DATA =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x40<br />
<br />
<p>We think this is the data register used when programming the SID efuses. <br />
<br />
<p>There is also a EFUSE_VDDQ pin (pin T9 on A10) which is normally tied to GND but which we guess needs to have suitable power to enable efuse programming. Details unknown.<br />
<br />
===== SID_WRITE_CTRL =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x44<br />
<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>SID_WRITE_START</tt><br />
| <tt>0</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = done writing<br />
0x01 = start writing<br />
</tt><br />
| Writes when enabled, returns to 0 after writing.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>1:3</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|-<br />
| <tt>SID_WRITE_POS</tt><br />
| <tt>4:7</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = macrocell 0<br />
0x01 = macrocell 1<br />
0x02 = macrocell 2<br />
0x03 = macrocell 3<br />
</tt><br />
| Index of which of the 4 hardware macrocell fuses to burn. It is currently unknown where to obtain said value from but a guess is register 0x40.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>8:31</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|}<br />
<br />
== Currently known SID's ==<br />
<br />
You may try to retrieve the SID value via our [[sunxi-tools]] (<code>./sunxi-fel sid</code>) - or dump it from within U-Boot using the corresponding, SoC-specific address (e.g. <code>md.l 0x01c23800 4</code>). If running a mainline kernel hexdump should be sufficient.<br />
<pre>hexdump -C /sys/devices/platform/soc@01c00000/1c23800.eeprom/eeprom<br />
00000000 16 51 66 c6 80 51 77 89 54 53 48 48 0a 40 f2 67 |.Qf..Qw.TSHH.@.g|<br />
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|<br />
</pre>.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Board !! eeprom<br />
|-<br />
|colspan="2" style="text-align:center;"|'''A10'''<br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236747 80728452 50574848 064163D5</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367C7 80778052 50554848 0201DDC3</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236750 80758352 52574848 08025081</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236745 80778052 50554848 07C171AD</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 0642d3e9</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236790 80758952 54544848 03c21c4e</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367d9 80758952 54544848 08c21483</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236798 80758952 54544848 0781186a</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623674c 80758952 54544848 0a02c845</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623670f 80758952 54544848 0981e268</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623678b 80778251 54534848 0a4285d6</tt><br />
|-<br />
| Gemei G9 (A10) || <tt>16236712 80726652 57524848 04c29968</tt><br />
|-<br />
| Mele A1000 (A10) early version || <tt>00000000 00000000 00000000 00000000</tt><br />
|-<br />
| pcDuino (A10) || <tt>16236755 80758952 53554848 0a41e8c9 </tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A10s'''<br />
|-<br />
| R7 hdmi-stick (A10s) || <tt>16254157 504B4133 30397030 0A41FA85</tt><br />
|-<br />
| mk802 hdmi-stick (A10s) || <tt>16254115 50484E39 35397030 0D02F6E8</tt><br />
|-<br />
| OlinuXino (A10S) || <tt>162541d3 50485937 30357030 04020663</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A13'''<br />
|-<br />
| A13B tablet (A13) || <tt>16254216 504E4837 39313030 06819C58</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254147 50475838 36313030 0341B75D</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254159 50475838 36313030 0B4181E9</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254158 504B4E39 35303030 0A0185F5</tt><br />
|-<br />
| OlinuXIno Micro (A13) || <tt>16254187 504b4e39 35303030 094313f2</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''A20'''<br />
|-<br />
| EOMA68-A20 (A20) || <tt>165165c7 80807552 55564848 0842c7fb</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516507 80808952 56524848 03c18168</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516581 80808952 56524848 0583548e </tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516587 80808952 56524848 0b81d536 </tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651664f 80485686 53504848 0702dde9</tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651668a 80485788 51484848 02825172</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>16516608 80485172 49484848 0800ccfc</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>165166c6 80517789 54534848 0a40f267</tt><br />
|-<br />
| A20-OLinuXino-MICRO (A20) || <tt>00000000 00000000 00000000 00000000 </tt> (2 verified)<br />
|-<br />
| Cubieboard 2.0 1024 (A20) || <tt>00000000 00000000 00000000 00000000 </tt> (3 verified)<br />
|-<br />
|colspan="2" style="text-align:center;"|'''A31s''', sid in AXP221<br />
|-<br />
| CSQ CS908 (A31s) || <tt>16524251 434e3038 34010088 080d81eb</tt><br />
|-<br />
| Mele A1000G quad (A31) || <tt>16524251 43423635 32000045 060a7a38</tt><br />
|-<br />
|colspan="2" style="text-align:center;"|'''H3'''<br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 502d05ce 5800006c</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 5040068e 54000000</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 50340a0e 4c00006f</tt><br />
|-<br />
| Orange Pi Plus || <tt>02004620 94340508 501a050e 4000006d</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 501d078e 4c000060</tt><br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5022018e 64000022</tt><br />
|}<br />
<br />
Newer SoC families no longer seem to follow the above pattern of containing the SoC ID within the first value.<br><br />
However, the leading 32 bits still seem to be consistent among the same SoCs:<br />
<br />
{| class="wikitable" |<br />
! SoC !! ID !! SID key<br />
|-<br />
| A64 || 0x1689 || <tt>92c000ba [...]</tt><br />
|-<br />
| A83T || 0x1673 || <tt>32c00401 [...]</tt><br />
|-<br />
| H3 || 0x1680 || <tt>02004620 [...]</tt><br />
|}<br />
<br />
[[Category:A10 Register guide]]<br />
[[Category:A13 Register guide]]<br />
[[Category:A20 Register guide]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=17968
Linux mainlining effort
2016-07-27T11:13:52Z
<p>Jonkerj: /* Status Matrix */</p>
<hr />
<div>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.<br />
<br />
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!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
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.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|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|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! SoC Name !! AC97 !! Audio Codec !! Clocks !! Crypto !! CSI !! Display (SimpleFB) !! Display (DRM) !! DMA !! EMAC !! HW Spinlocks !! I2C !! I2S !! IR !! Keypad !! LRADC !! MsgBox !! NAND !! Pinctrl !! PWM !! RSB !! RTC !! SATA !! SD / MMC !! SMP !! SPI !! Touch / Thermal / GPADC !! USB !! USB OTG !! Watchdog<br />
|-<br />
| [[A10]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | v3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A10s]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
| N/A<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11<br />
|-<br />
| [[A13]] || N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.3<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[A20]] || style="background: red; " | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.11 / 3.15 (GMAC)<br />
| N/A<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.12<br />
|-<br />
| [[A31]] || N/A<br />
| style="background: yellow;" | [https://github.com/wens/linux/tree/a31-audio WIP]<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A23]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;"| ?<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 3.18<br />
| N/A<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 3.18<br />
|-<br />
| [[A33]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| style="background: orange;"| [https://github.com/mripard/linux/tree/sunxi/wip/drm-a33 WIP]<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: darkgreen;" |?<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.2<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;"| WIP<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.2<br />
|-<br />
| [[A80]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;" |?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" |4.5<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP (AC100)]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | 3.19<br />
|-<br />
| [[A83T]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;"| ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 4.6<br />
|-<br />
| [[H3]] || N/A<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" |?<br />
| style="background: red;"| NO<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;" | NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: lightgreen;" | OK<br />
| style="background: lightgreen;" | OK<br />
| style="background: darkgreen;" |?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | OK<br />
|-<br />
| [[A64]] || N/A<br />
| style="background: red;"| NO<br />
| style="background: yellow;" |[https://github.com/apritzel/linux/commits/a64-v5 WIP]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: yellow;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: yellow;"| WIP<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"|?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: red;"| NO<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: red;"| NO<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | OK<br />
| N/A<br />
| style="background: yellow;" | slow [[#a64_slow_mmc|[1]]]<br />
| style="background: lightgreen;" |OK<br />
| style="background: yellow;"| WIP<br />
| style="background: orange;"| [[Linux_mainlining_effort#Major_drivers|THS]]<br />
| style="background: yellow;" | [https://github.com/Icenowy/linux-sunxi/tree/a64-usb WIP]<br />
| style="background: red;"| NO<br />
| style="background: darkgreen;"| ?<br />
|}<br />
<br />
<div id="a64_slow_mmc" />[1] MMC/SD transfer rate is limited to about 3 MiB/s at the moment, support for the slightly changed MMC h/w block needs to be implemented.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: yellow;" | Somebody works on it and the result is mostly stable enough<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* Allwinner [[A31]]/[[A31s]] support<br />
** Initial clock control unit support (WiP: Chen-Yu Tsai (wens)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-July/445539.html patch-v1]<br />
* Allwinner [[A64]] support<br />
** pinctrl and clocks support (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-July/445684.html patch-v1]<br />
* Allwinner [[A80]] support<br />
** SMP support (WiP: Chen-Yu Tsai (wens)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/343354.html patch-rfc] <br />
* Allwinner [[A83T]] support<br />
** Modern Clock (clock-ng) support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/435630.html patch-v2]<br />
** Clocks, r_pio, MMC and RSB support (WiP: Vishnu Patekar) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416027.html patch-v4]<br />
** USB support (WiP: Chen-Yu Tsai (wens))<br />
* Suspend / Resume / CPUIdle (WiP: Antoine Tenart)<br />
<br />
=== Major drivers ===<br />
* [[A31]] Audio Codec driver (WiP: Chen-Yu Tsai (wens))<br />
** A31 PLL2 and module 1 clocks<br />
** ASoC driver<br />
<br />
* Display Engine driver<br />
** sun8i (H3) (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-February/404278.html patch-v4]<br />
<br />
* CSI (camera sensor interface) (WiP: Yassin Jaffer (ddc)) (WiP: Maxime Ripard (mripard))<br />
** CSI clock driver (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/416152.html patch-RFC]<br />
<br />
* [[Sun8i emac|A64/H3 Emac]] (WiP: LABBE Corentin [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/433151.html patch-v1])<br />
* Ac200 (At least EPHY) (WiP: LABBE Corentin)<br />
<br />
* sun8i-ss/sun9i-ss/sun5i-ss (Security System/Crypto Engine)(WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/)<br />
<br />
* A80 related (WiP: Chen-Yu Tsai (wens))<br />
** AXP806 PMIC<br />
** AC100 Codec mfd/rtc driver [http://www.spinics.net/lists/arm-kernel/msg515407.html patch-v4]<br />
** GMAC<br />
** External SDIO WiFi<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* A31 GPADC (WiP: Quentin Schulz) [https://lkml.org/lkml/2016/6/28/226 patch]<br />
* Enable and fix USB OTG port support on Orange Pi PC/One (wip: Ondřej Jirman) [https://github.com/megous/linux/commits/orange-pi-4.7 wip-patch]<br />
* DVFS support for Orange Pi PC/One (wip: Ondřej Jirman - megi) [https://xff.cz/orange-pi-dvfs/] [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/438794.html patch-v1]<br />
* Sunxi THS (H3) (Josef Gajdusek) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-November/387312.html patch-v2]<br />
* Keypad (WiP: Yassin Jaffer (ddc)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch]<br />
* [[AXP152]]/[[AXP202]]/[[AXP209]]/[[AXP223]]<br />
** AXP209 GPIO support (Wip: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/414784.html patch]<br />
** AC driver: (WiP: Michael Haas (laga)) [https://groups.google.com/d/msg/linux-sunxi/nEUg87cV6KI/xH4_8BZMEgAJ patch] [https://groups.google.com/forum/#!topic/linux-sunxi/Ee7i8DVI4F8 patch V2]<br />
** Battery driver (WiP: Bruno Prémont (bonbons)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295547.html RFC-patch]<br />
*** Michael Haas will be re-submitting Brunos battery driver<br />
* hardware spinlock (H3/A83) (WIP: LABBE Corentin)<br />
* Activate pwm on A83T (necessary for PHY)<br />
<br />
== Left to be done ==<br />
<br />
=== Easy Tasks ===<br />
<br />
Following drivers should be doable by someone with no or a small kernel development experience:<br />
* [[1-Wire|One Wire / 1-Wire]] (dedicated HW only present on A31/A80)<br />
* Smart Card Reader<br />
* A23/A33 Thermal Sensor Controller<br />
<br />
=== Medium Tasks ===<br />
<br />
Following drivers require some good knowledge of the kernel internals.<br />
* Audio Related drivers<br />
** A23 Audio codec and AC97 audio interface support (A23 SDK contains drivers for both)<br />
** A33/A64 Audio codec driver (A33 SDK contains driver)<br />
*** According to the register map and the A33 SDK driver, there seems to be a internal I2S bus between the codec and the processor<br />
<br />
=== Difficult Tasks ===<br />
These drivers require some good knowledge of the kernel internals, plus a good experience with such piece of hardware.<br />
<br />
* Video Engine (See [[VE_Planning]])<br />
* Audio Engine (Only exists in A10)<br />
* V4L driver for G2D/Mixer is based on samsung g2d and fimc driver. Only initial work started. [https://bitbucket.org/cybrixsystems/linux-next-devel/]<br />
<br />
=== Troublesome ===<br />
* Memory Stick (missing hardware?)<br />
* TV Decoder (Analog in, no existing driver, no datasheet)<br />
* Transport Stream(DVB) in<br />
** IRC user woprr has started to work on this<br />
* PATA (old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (only present on [[A10]], not much interesting, as all modern GPS receivers have MCU with UART output, no documentation)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
== Planned for 4.8 ==<br />
<br />
* [[A10]]/[[A20]]<br />
** Display engine clocks (TCON, FE, DE)<br />
** I2S audio interface driver<br />
<br />
* [[H3]]<br />
** Clocks (through sunxi-ng)<br />
** USB multi-reset lines support<br />
* AXP2xx driver:<br />
** External drivebus support<br />
** AXP223 USB power supply support<br />
** AXP809 PMIC support<br />
<br />
* [https://www.spinics.net/lists/arm-kernel/msg510602.html BCM53125 support]<br />
** This switch is used in [[Lamobo R1|Lamobo / Banana Pi R1]]<br />
<br />
== Planned for 4.7 ==<br />
<br />
* [[A13]]/[[R8]]<br />
** Display Engine support<br />
<br />
* [[A10]]/[[A20]]<br />
** SPDIF Support<br />
<br />
* [[A31]]/[[A23]]/[[H3]] DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-April/424280.html patch-v6]<br />
<br />
* [[H3]]<br />
** USB support (multi-reset line support delayed til 4.8)<br />
<br />
Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350<br />
<br />
== Merged into 4.6 ==<br />
* {{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.}}<br />
<br />
* Allwinner [[A83T]] support<br />
** Initial bringup<br />
** timer, watchdog and reboot<br />
<br />
* [[H3]]<br />
** R_PIO support<br />
<br />
* [[A64]]<br />
** pinctrl driver<br />
** generic arm64 Allwinner platform (ARCH_SUNXI) support<br />
<br />
* NAND<br />
** ECC layout definition rework (partially) and randomizer support<br />
<br />
* A10/A20 SPDIF driver<br />
<br />
* AXP223 PMIC support<br />
<br />
* eMMC HS-DDR support for all currently supported SoCs except [[A80]]<br />
<br />
Added board support: [[Allwinner A83TDevBoard]], [[Cubietech Cubietruck Plus]]<br />
<br />
== Merged into 4.5 ==<br />
* Allwinner [[A80]] support<br />
** IR receiver driver<br />
** NMI controller<br />
** PRCM driver<br />
** R_PIO support<br />
** RSB driver<br />
<br />
* Allwinner H3 SoC support<br />
** H3 USB PHY clocks<br />
<br />
* A10/A20 Video Engine clocks<br />
<br />
* MIC1 capture for sun4i codec<br />
<br />
* Audio codec enabled on various boards<br />
<br />
Added board support: [[Xunlong Orange Pi Plus]]<br />
<br />
{{knownProblems|<br />
* Release tag v4.5 contains a change that broke ''stmmac'' networking on quite a few sunxi devices. The symptoms are<br />
<pre>[ 13.196778] libphy: PHY stmmac-0:ffffffff not found<br />
[ 13.204800] eth0: Could not attach to PHY<br />
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)</pre>}}<br />
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/netdev@vger.kernel.org/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.<br><br />
Version ''v4.5-rc7'' is known to be still okay, ''v4.6-rc2'' fixes stmmac again.<br />
<br />
== Merged into 4.4 ==<br />
<br />
* [[R8]] SoC support<br />
<br />
* [[A10]] / [[A20]]<br />
** CAN driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0738eff14d817a02ab082c392c96a1613006f158 (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Audio Codec driver<br />
** Audio clocks (PLL2)<br />
** Audio codec related DTS bits<br />
*** Enabled on [[Cubieboard]], [[Cubieboard2]], [[Cubietruck]], C.H.I.P., [[Mele A1000]]<br />
<br />
* [[A23]] / [[A33]]<br />
** RSB (Reduced Serial Bus) driver<br />
** PWM enabled<br />
<br />
* [[A83T]]<br />
** PIO driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** USB power supply driver<br />
** Support for OTG vbus detection via AXP pmic<br />
** DTS nodes for OTG vbus support<br />
<br />
Added board support: Olimex A20 EVB [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=15ada16dc7657c08242d24067a4ddf07a2662062 (commit)], Unified Q8 format tablet, Wits Pro A20 DKT [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5cf0022450d2068e56b60cbbd0b5ff1430b7656 (commit)], Yones Toptech bs1078v2 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=849147cdb540266883cb49f2094a87b3ee6e12ec (commit)], Wobo i5 [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=adfa06ce9bd30f8bc5439be49bcfaa7ceb1b6c2a (commit)], C.H.I.P [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=465a225fb2afb3ebf1becbe76d46b084d46f30a5 (commit)], [[Sinlinx SinA31s]], [[MSI Primo81]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a5ea06d0bc123cc7f49d042fab60ddd3964764c8 (commit)]<br />
<br />
== Merged into 4.3 ==<br />
<br />
* [[A10]] / [[A13]] / [[A20]] / [[A23]] / [[A31]] <br />
** Enable OTG controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ff12049d6b6cc79ad8ee092ae226434687062ec (commit)]<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]]<br />
** Support for DMA engine<br />
<br />
* [[A23]] / [[A33]]<br />
** Support for USB-controllers<br />
<br />
* most of Allwinner SoC<br />
** Support for [[Security System]] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4c90396ed7ef9b4e4d221e008e54be8bea8307f (commit)]<br />
<br />
* [[AXP152]]<br />
** AXP152 mfd support<br />
<br />
Added board support: Iteaduino Plus A10, Ippo-q8h-a33 v1.2<br />
<br />
== Merged into 4.2 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** SRAM Controller<br />
<br />
* [[A23]]<br />
** SMP support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=73e601ea57020c42d989120061dfc83ce9c85360 (commit)]<br />
** Architected timer support<br />
<br />
* [[A31]]/[[A31s]]<br />
** CPUFreq support<br />
<br />
* [[A33]]<br />
** Machine support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=159870d2413c92622790e9cecbce95099bed539a (commit)]<br />
** Bring-up sharing most drivers with [[A23]]<br />
** pinctl driver [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=93a4b1b9465d92e8be031b57166afa3d5611e142 (commit)]<br />
** PIO controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7164873e7c69d6bab74726debc3b495a86332b1f (commit)]<br />
<br />
* [[A80]]<br />
** Architected timer support<br />
** USB support<br />
<br />
* [[AXP221]] PMIC driver<br />
<br />
* [[H3]]<br />
** Introduce H3 support [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=14a882df14a5ae859b245bc708ce3fce47a91594 (commit)]<br />
** DMA Controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1bc5e157ed2b4f5b206155fc772d860158acd201 (commit)]<br />
<br />
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]]<br />
<br />
== Merged into 4.1 ==<br />
<br />
* [[A80]]<br />
** USB PHY driver<br />
<br />
* [[AXP202]]/[[AXP209]]<br />
** DT bindings<br />
<br />
== Merged into 4.0 ==<br />
<br />
* [[A10]] / [[A20]]<br />
** PS/2 Controller<br />
<br />
* [[A13]] / [[A31]]<br />
** IR receiver<br />
<br />
* [[A31s]]<br />
** bring-up sharing majority of drivers with [[A31]]<br />
** pinctrl driver<br />
<br />
* [[A80]]<br />
** MMC<br />
<br />
* All SoCs<br />
** LRADC Input driver<br />
** CPUFreq<br />
** PWM Driver<br />
<br />
* AXP209 power button input driver<br />
<br />
Added board support: [[CSQ CS908]], [[LeMaker Banana Pro]], [[Chuwi V7 CW0825]], [[Rikomagic mk802]], [[Rikomagic mk802ii]], [[Rikomagic mk802_a10s]], [[MarsBoard A10]], [[Hyundai A7HD]]<br />
<br />
== Merged into 3.19 ==<br />
<br />
* [[A10]] / [[A10s]] / [[A13]] / [[A20]] / [[A31]] / [[A23]]<br />
** Simple Framebuffer<br />
*** In order to use that, you'll need a recent mainline u-boot (2015.01+)<br />
** USB phy driver support for usb0<br />
<br />
* [[A10]] / [[A20]]<br />
** NAND [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/295818.html]<br />
*** Only works for SLC NAND for now<br />
*** Some additional work is needed for MLC NANDs<br />
<br />
* [[A23]]<br />
** DMAengine driver (shared with A31) [http://www.spinics.net/lists/arm-kernel/msg375529.html]<br />
<br />
* [[A80]]<br />
** initial machine support [http://www.spinics.net/lists/arm-kernel/msg368569.html]<br />
** basic clocks and reset [http://www.spinics.net/lists/arm-kernel/msg370495.html]<br />
** pinctrl driver [http://www.spinics.net/lists/arm-kernel/msg372176.html]<br />
** extra UART, I2C, LEDS [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-October/298729.html]<br />
<br />
Related merges:<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=fe0c888 sunxi-simplefb-for-3.19]<br />
<br />
Added board support: [[Mele M3]], [[LeMaker Banana Pi]], [[Merrii A80 Optimus Board]], [[Olimex A20-OLinuXino-Lime2]]<br />
<br />
== Merged into 3.18 ==<br />
<br />
* [[A31]]/[[A23]]<br />
** RTC [http://www.spinics.net/lists/arm-kernel/msg351626.html]<br />
** Watchdog [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-September/287807.html]<br />
<br />
* [[A23]]<br />
** MMC<br />
** pinctrl<br />
** DMA<br />
** I2C<br />
<br />
Added board support: [[Olimex A20-OLinuXino-Lime]], [[Merrii Hummingbird A20]], [[HSG H702]]<br />
<br />
== Merged into 3.17 ==<br />
* A10/A20<br />
** IR driver<br />
<br />
* A31<br />
** PIO/R_PIO external interrupts<br />
** DMAengine<br />
** GMAC<br />
<br />
* A23<br />
** Timers, UARTs, initial bringup<br />
** Basic clocks<br />
** PIO/R_PIO drivers<br />
<br />
Related merges: <br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e4ca430 clk-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=54c72d5 mfd-for-linus-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e0b8b78 pinctrl-v3.17-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b3345d7 soc-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4e1f5a dt-for-3.17],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c7a19c7 slave-dma for-linus],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4d3333 v4l_for_linus],<br />
<br />
Added Board Support: [[Merrii Hummingbird A31]], BA10, [[LinkSprite pcDuino V3]], [[Ippo q8h]]<br />
<br />
== Merged into 3.16 ==<br />
* AXP20x regulator support<br />
<br />
* All<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** SMBus Regmap<br />
** Special Pins Muxer<br />
** P2WI Controller<br />
<br />
* A10<br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Related Merges:<br />
<!-- wens: not complete --><br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7477838f2e481256a40e0c44b92f9bccb065bc51 defconfig-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a727eaf64ff084a50b983fc506810c7a576b7ce3 drivers-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=755a9ba7bf24a45b6dbf8bb15a5a56c8ed12461a dt-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=825f4e0271b0de3f7f31d963dcdaa0056fe9b73a soc-for-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e5c4ecdc55b6d824365ba7964bcd3185223f9688 usb-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd698cf6595b079ce36423e8c7eb4a69a31b1733 pinctrl-v3.16-1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1a5700bc2d10cd379a795fd2bb377a190af5acd4 clk-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dd1845af24a47b70cf84c29126698884f740ff9c clk-for-linus-3.16-part2],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=07888238f55056605cd23aa4ea3ca97d5e15938f mmc-updates-for-3.16-rc1],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1fe9eb184721132c7254d76d9ef31c96edad8870 mfd-for-linus-3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=312c76f1a3989b8d0c0c13fee765bb2c41f2d114 regulator-v3.16],<br />
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f4f9b8fc73f9aa93744f0e91e18f367d7766f523 input-for-linus]<br />
<br />
Added board support: [[Mele M9]], [[R7]]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[Olimex A10s-OLinuXino-Micro]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=User:Jonkerj&diff=17943
User:Jonkerj
2016-07-20T10:21:41Z
<p>Jonkerj: Created page with "= Personal Hardware = * 2x Xunlong Orange Pi Plus * 1x Xunlong Orange Pi PC (in transit) * the Remote_Reboot_Jig = Hardware accelerated graphics = I'll try to doc..."</p>
<hr />
<div>= Personal Hardware =<br />
* 2x [[Xunlong Orange Pi Plus]]<br />
* 1x [[Xunlong Orange Pi PC]] (in transit)<br />
* the [[Remote_Reboot_Jig]]<br />
<br />
= Hardware accelerated graphics =<br />
I'll try to document my progress on getting "kodi" working with bells and whistles on mainline. If I get there, it will be documented here.<br />
<br />
== Graphics on H3 ==<br />
This is yet unresolved, as there seems to be no proper way to get graphics with DRM and HDMI working on H3. Some pointers:<br />
<br />
* [http://moinejf.free.fr/opi2/ Jeff Moine's patches]<br />
<br />
== Mali on H3 ==<br />
'''WARNING''': this is all quite useless, until:<br />
# there is a working DRM/prime display driver for your board<br />
# either:<br />
#* someone finds a way to make libGLES working with DRM/prime<br />
#* someone creates a UMP/prime, so allwinner's GLES is going to work with prime<br />
<br />
I found it very hard to get Mali to compile for a recent kernel, and I was not very successful in finding documentation on the subject. I did some guesswork, read a lot of source code, and got mali to at least compile for me.<br />
<br />
I assume the presence of a kernel source, a cross-compiler (arm-linux-gnueabihf-gcc), etc.<br />
<br />
=== Kernel ===<br />
First of all, compile a kernel. Make sure the following options are set, these are needed to get TRACEPOINTS, which is needed by ump/mali later on.<br />
CONFIG_PROFILING=y<br />
CONFIG_FTRACE=y<br />
CONFIG_ENABLE_DEFAULT_TRACERS=y<br />
<br />
=== Mali ===<br />
Then, get, patch and compile mali:<br />
export KDIR=/media/scratch/linux-4.7-rc7/<br />
export CROSS_COMPILE=arm-linux-gnueabihf-<br />
wget -P /tmp http://malideveloper.arm.com/downloads/drivers/DX910/r6p2-01rel0/DX910-SW-99002-r6p2-01rel0.tgz<br />
wget -P /tmp https://gist.githubusercontent.com/jonkerj/15bd5a793c0f157b5d7e43b019efccb4/raw/b6c83bb396d3b4e6463b12f52f51e4181ad029ad/fix-mali-sunxi-4.5.patch<br />
tar zxf /tmp/DX910-SW-99002-r6p2-01rel0.tgz<br />
cd DX910-SW-99002-r6p2-01rel0<br />
patch -p1 < /tmp/fix-mali-sunxi-4.5.patch<br />
cd driver/src/devicedrv/ump<br />
CONFIG=ca8-virtex820-m400-1 BUILD=release make<br />
cd ../mali<br />
USING_DT=1 USING_UMP=1 MALI_SHARED_INTERRUPTS=1 MALI_PLATFORM=arm make<br />
<br />
This yields the needed kernel modules</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Remote_Reboot_Jig&diff=17940
Remote Reboot Jig
2016-07-20T10:20:39Z
<p>Jonkerj: </p>
<hr />
<div>Developing Linux on a remote board can be challenging, because sometimes you'll need to reboot a crashed board. This can be simplified using a remote reboot jig consisting of a [http://vusb.wikidot.com/project:driver-less-usb-relays-hid-interface USB relay board]. [[File:Development jig.JPG|thumbnail]]<br />
<br />
Here is a ASCII art diagram of the schematic:<br />
<br />
------ -------<br />
| +| ----[ USB relay ]----|+ |<br />
| 5V | | board |<br />
| -| ---------------------|- |<br />
------ -------<br />
<br />
Basically, you put the relay between the power source and the board on the Vbus line. You could do this by splicing a USB extension cord, by buying the appropriate power connector, or very fancy using a [http://www.techunboxed.com/2013/06/usb.html USB breakout board].<br />
<br />
You can find a cheap USB relay on eBay, by searching for "USB relay smart home". Single channel suffices for 1 board, but you could go large, of course. Controlling the board (given you bought the HID "driverless" version) is done through [https://github.com/pavel-a/usb-relay-hid this software]:<br />
<br />
jorik@neon:~$ cat bin/cycle.sh <br />
#!/bin/sh<br />
hidusb-relay-cmd on 2<br />
hidusb-relay-cmd off 2<br />
<br />
Of course, on/off may need to be swapped, since the relay is [https://en.wikipedia.org/wiki/Single_pole,_double_throw SPDT].<br />
<br />
[[Category:Hardware]]</div>
Jonkerj
https://linux-sunxi.org/index.php?title=File:Development_jig.JPG&diff=17939
File:Development jig.JPG
2016-07-20T10:18:59Z
<p>Jonkerj: Photo of my development jig</p>
<hr />
<div>Photo of my development jig</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Remote_Reboot_Jig&diff=17851
Remote Reboot Jig
2016-07-01T20:06:27Z
<p>Jonkerj: </p>
<hr />
<div>Developing Linux on a remote board can be challenging, because sometimes you'll need to reboot a crashed board. This can be simplified using a remote reboot jig consisting of a [http://vusb.wikidot.com/project:driver-less-usb-relays-hid-interface USB relay board].<br />
<br />
------ -------<br />
| +| ----[ USB relay ]----|+ |<br />
| 5V | | board |<br />
| -| ---------------------|- |<br />
------ -------<br />
<br />
Basically, you put the relay between the power source and the board on the Vbus line. You could do this by splicing a USB extension cord, by buying the appropriate power connector, or very fancy using a [http://www.techunboxed.com/2013/06/usb.html USB breakout board].<br />
<br />
You can find a cheap USB relay on eBay, by searching for "USB relay smart home". Single channel suffices for 1 board, but you could go large, of course. Controlling the board (given you bought the HID "driverless" version) is done through [https://github.com/pavel-a/usb-relay-hid this software]:<br />
<br />
jorik@neon:~$ cat bin/cycle.sh <br />
#!/bin/sh<br />
hidusb-relay-cmd on 2<br />
hidusb-relay-cmd off 2<br />
<br />
Of course, on/off may need to be swapped, since the relay is [https://en.wikipedia.org/wiki/Single_pole,_double_throw SPDT].</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Remote_Reboot_Jig&diff=17849
Remote Reboot Jig
2016-07-01T19:42:26Z
<p>Jonkerj: </p>
<hr />
<div>Developing Linux on a remote board can be challenging, because sometimes you'll need to reboot a crashed board. This can be simplified using a remote reboot jig consisting of a [http://vusb.wikidot.com/project:driver-less-usb-relays-hid-interface USB relay board].<br />
<br />
------ -------<br />
| +| ----[ USB relay ]----|+ |<br />
| 5V | | board |<br />
| -| ---------------------|- |<br />
------ -------<br />
<br />
Basically, you put the relay between the power source and the board on the Vbus line. You could do this by splicing a USB extension cord, by buying the appropriate power connector, or very fancy using a [http://www.techunboxed.com/2013/06/usb.html USB breakout board].<br />
<br />
You can find a cheap USB relay on eBay, by searching for "USB relay smart home". Single channel suffices for 1 board, but you could go large, of course. Controlling the board (given you bought the HID "driverless" version) is done through [https://github.com/pavel-a/usb-relay-hid this software]:<br />
<br />
jorik@neon:~$ cat bin/cycle.sh <br />
#!/bin/sh<br />
hidusb-relay-cmd on 2<br />
hidusb-relay-cmd off 2<br />
<br />
Of course, on/off may need to be swapped, since the relay is "SPDT".</div>
Jonkerj
https://linux-sunxi.org/index.php?title=Remote_Reboot_Jig&diff=17848
Remote Reboot Jig
2016-07-01T19:37:12Z
<p>Jonkerj: Initial version</p>
<hr />
<div>Developing Linux on a remote board can be challenging, because sometimes you'll need to reboot a crashed board. This can be simplified using a remote reboot jig consisting of a [http://vusb.wikidot.com/project:driver-less-usb-relays-hid-interface USB relay board].<br />
<br />
Basically, you put the relay between the power source and the board on the Vbus line. You could do this by splicing a USB extension cord, by buying the appropriate power connector, or very fancy using a [http://www.techunboxed.com/2013/06/usb.html USB breakout board].<br />
<br />
You can find a cheap USB relay on eBay, by searching for "USB relay smart home". Single channel suffices for 1 board, but you could go large, of course. Controlling the board (given you bought the HID "driverless" version) is done through [https://github.com/pavel-a/usb-relay-hid this software]:<br />
<br />
jorik@neon:~$ cat bin/cycle.sh <br />
#!/bin/sh<br />
hidusb-relay-cmd on 2<br />
hidusb-relay-cmd off 2<br />
<br />
Of course, on/off may need to be swapped, since the relay is "SPDT".</div>
Jonkerj