https://linux-sunxi.org/api.php?action=feedcontributions&user=Rellla&feedformat=atom
linux-sunxi.org - User contributions [en]
2024-03-29T10:18:35Z
User contributions
MediaWiki 1.35.8
https://linux-sunxi.org/index.php?title=Cedrus&diff=24194
Cedrus
2021-05-26T07:09:24Z
<p>Rellla: </p>
<hr />
<div>= Overview =<br />
{{:Category:Cedrus}}<br />
<br />
= Development / Mainline Kernel =<br />
Interested people are welcome to join the development channel '''#cedrus''' on OFTC IRC (irc.oftc.net).<br />
<br />
This channel is logged and the logs are available at [https://oftc.irclog.whitequark.org/cedrus/].<br />
<br />
Development of a mainline kernel driver and the corresponding libva-v4l2-request LibVA implementation is in progress. You can follow the development on [[Sunxi-Cedrus|'''Sunxi-Cedrus''']].<br />
<br />
= Crowdfunding =<br />
On February 2, 2018 [https://bootlin.com/ Bootlin] (formerly Free Electrons) started a [https://www.kickstarter.com/projects/bootlin/allwinner-vpu-support-in-the-official-linux-kernel crowdfunding campaign] in order to bring sunxi-cedrus into the linux mainline kernel. The main goal (MPEG2 and H264 decoding on A10, A13, A20, A33, R8 and R16) and the first stretch goal (implement H3, H5 and A64) has reached already. Delivery date of the main goal is expected to be by end of June 2018, stretch goals are expected to be delivered by end of December 2018.<br />
<br />
Outstanding stretch goals are:<br />
* H265 decoding support<br />
* H264 encoding support<br />
<br />
In October 2018, Maxime Ripard of Bootlin gave a presentation on the project at [https://events.linuxfoundation.org/events/elc-openiot-europe-2018/ ELCE] entitled [https://youtu.be/KRrO9e5UugA Supporting Hardware Codecs in a Linux system].<br />
<br />
= Current status =<br />
<br />
The hardware is already well understood by the means of the [[CedarX/Reverse_Engineering | reverse-engineering effort]], which very quickly got successful results. A large majority of the [[VE_Register_guide|hardware registers]] are documented. With this information some Proof of Concept (PoC) [https://github.com/jemk/cedrus example source code] was written to verify that the hardware can be configured correctly from the information obtained.<br />
To forward verifying, there was implemented a [https://github.com/linux-sunxi/libvdpau-sunxi vdpau driver backend] which is quite usable and can be used by any media player that uses the [https://en.wikipedia.org/wiki/VDPAU vdpau framework].<br />
<br />
The Cedrus project aims for a proper driver and software that can be mainlined and upstreamed to the proper places, this can't happen with the vendor kernel driver in its limitations, source code quality or transbording as a security risk.<br />
<br />
Steps for this proper driver and software can be seen in its [[VE_Planning|planning phase]].<br />
<br />
See for more information.<br />
* [[VE_Register_guide|'''Video Engine Register Guide''']]<br />
* [[Cedrus/libvdpau-sunxi|'''libvdpau-sunxi''']]<br />
* [[VE_Planning|'''Video Engine Planning]].<br />
* [[Sunxi-cedrus|'''Sunxi-cedrus''']]<br />
<br />
= Supported codec matrix =<br />
{{:Cedrus/Supported Codec Feature Matrix}}<br />
<br />
[[Category:Cedrus]]<br />
<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Cedrus&diff=24193
Cedrus
2021-05-25T08:58:59Z
<p>Rellla: /* Development / Mainline Kernel */</p>
<hr />
<div>= Overview =<br />
{{:Category:Cedrus}}<br />
<br />
= Development / Mainline Kernel =<br />
Interested people are welcome to join the development channel '''#cedrus''' on OFTC IRC (irc.oftc.net).<br />
<br />
Development of a mainline kernel driver and the corresponding libva-v4l2-request LibVA implementation is in progress. You can follow the development on [[Sunxi-Cedrus|'''Sunxi-Cedrus''']].<br />
<br />
= Crowdfunding =<br />
On February 2, 2018 [https://bootlin.com/ Bootlin] (formerly Free Electrons) started a [https://www.kickstarter.com/projects/bootlin/allwinner-vpu-support-in-the-official-linux-kernel crowdfunding campaign] in order to bring sunxi-cedrus into the linux mainline kernel. The main goal (MPEG2 and H264 decoding on A10, A13, A20, A33, R8 and R16) and the first stretch goal (implement H3, H5 and A64) has reached already. Delivery date of the main goal is expected to be by end of June 2018, stretch goals are expected to be delivered by end of December 2018.<br />
<br />
Outstanding stretch goals are:<br />
* H265 decoding support<br />
* H264 encoding support<br />
<br />
In October 2018, Maxime Ripard of Bootlin gave a presentation on the project at [https://events.linuxfoundation.org/events/elc-openiot-europe-2018/ ELCE] entitled [https://youtu.be/KRrO9e5UugA Supporting Hardware Codecs in a Linux system].<br />
<br />
= Current status =<br />
<br />
The hardware is already well understood by the means of the [[CedarX/Reverse_Engineering | reverse-engineering effort]], which very quickly got successful results. A large majority of the [[VE_Register_guide|hardware registers]] are documented. With this information some Proof of Concept (PoC) [https://github.com/jemk/cedrus example source code] was written to verify that the hardware can be configured correctly from the information obtained.<br />
To forward verifying, there was implemented a [https://github.com/linux-sunxi/libvdpau-sunxi vdpau driver backend] which is quite usable and can be used by any media player that uses the [https://en.wikipedia.org/wiki/VDPAU vdpau framework].<br />
<br />
The Cedrus project aims for a proper driver and software that can be mainlined and upstreamed to the proper places, this can't happen with the vendor kernel driver in its limitations, source code quality or transbording as a security risk.<br />
<br />
Steps for this proper driver and software can be seen in its [[VE_Planning|planning phase]].<br />
<br />
See for more information.<br />
* [[VE_Register_guide|'''Video Engine Register Guide''']]<br />
* [[Cedrus/libvdpau-sunxi|'''libvdpau-sunxi''']]<br />
* [[VE_Planning|'''Video Engine Planning]].<br />
* [[Sunxi-cedrus|'''Sunxi-cedrus''']]<br />
<br />
= Supported codec matrix =<br />
{{:Cedrus/Supported Codec Feature Matrix}}<br />
<br />
[[Category:Cedrus]]<br />
<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=23944
Mainline Kernel Howto
2021-01-22T21:39:13Z
<p>Rellla: /* Devicetree */</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel.<br />
<br />
Warning: Mainline NAND support is not compatible with Allwinner NAND support and will make your existing NAND unreadable.<br />
<br />
= Current status =<br />
<br />
Please refer to the [[Linux mainlining effort]] page for detailed status of the mainlining effort, and supported boards and driver coverage.<br />
<br />
Some SoCs and some subsystems might not be supported yet, you might need to revert to our [[Linux_Kernel|heavily hacked kernel version]] that's close to Allwinners code for A10/A13/A20, or use a BSP kernel. <br />
<br />
= Prerequisites =<br />
<br />
You should be running through this howto as part of our [[Manual build howto]]. It guides you through toolchain, u-boot and rootfs steps as well.<br />
<br />
= Kernel source =<br />
<br />
== Linus' tree ==<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually.<br />
<br />
For a full clone (if you wish to do future development) run:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git</pre><br />
<br />
Often a shallow clone will suffice to just get mainline working:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1</pre><br />
<br />
== Patches merged in the next stable release ==<br />
<br />
There is also a ''sunxi-next'' branch maintained with all the inclusions that have been accepted, merged and will be included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
<pre>git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-next git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-next --depth=1</pre><br />
<br />
= Kernel Configuration =<br />
<br />
== defconfig ==<br />
<br />
To get a working kernel, just use the following for configuration:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig</pre><br />
== oldconfig ==<br />
<br />
If you have an old relevant .config, e.g. if you installed a late debian, and now want to build the kernel, you can copy it in and run <code>make ARCH=arm oldconfig</code> or <code>make ARCH=arm64 oldconfig</code>.<br />
<br />
:{{note|If you happen to run <code>make menuconfig</code> without specifying the architecture, architecture-specific options will be '''lost'''; in that case you'll need to go back to an existing config and start again.}}<br />
<br />
== manual configuration ==<br />
<br />
If you wish to alter configuration, run:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig</pre><br />
<br />
= Kernel Compilation =<br />
<br />
== zImage/ Image ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 Image</pre><br />
After the compilation ended, you should have generated '''zImage''' in ''arch/arm/boot'' (armhf) or '''Image''' in ''arch/arm64/boot'' (arm64).<br />
<br />
== Devicetree ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 dtbs</pre><br />
You should now have a device tree binary (''.dtb'') in ''arch/arm/boot/dts'' (armhf) or ''arch/arm64/boot/dts'' (arm64), which matches your device, it should be listed on the device page for your device.<br />
<br />
All the sunxi dtbs follow the pattern <family>-<soc>-<board>.dtb.<br />
<br />
== modules ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 modules<br />
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 modules<br />
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
After the build succeeds, you can find the modules in the supplied <tt>INSTALL_MOD_PATH</tt> directory.<br />
<br />
== headers ==<br />
'''armhf'''<br />
<pre>ARCH=arm INSTALL_HDR_PATH=<any-path-you-like> make headers_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 INSTALL_HDR_PATH=<any-path-you-like> make headers_install</pre><br />
<br />
Change <tt>INSTALL_HDR_PATH</tt> to the path, you want the headers to be installed to, for example <tt>/usr</pre></tt> or <tt><some_prefix>/usr</tt> if you are doing a cross build.<br />
<br />
== Specific Debian kernel notes ==<br />
<br />
Having installed a late debian using the arm installer, building the Debian kernel is an attractive proposition. (for Debian install, see [[Rikomagic_mk802]] 'Images' section).<br />
<br />
Some notes on doing so (as it's not so obvious from Google): You can download the sources using apt-get linux-source. Today, Dec 2016, this will get you ~4.8.7. Given sufficient space, this can be built on device (~4 days compile time), but probably better to cross-compile. Extract the tar to a suitable location, and copy /boot/config-<your current version> to .config. You may want to edit the .config comment out CONFIG_MODULE_SIG_FORCE and CONFIG_MODULE_SIG. Prepare your cross machine, and then run <br />
<br />
<code>make ARCH=arm oldconfig</code><br />
<br />
(you may get some new options).<br />
<br />
Now, the important bit. IF 'uname -a' on your target shows 'armmp' anywhere, your kernel will need to be this 'flavor'; if it is not, then your newly created .deb kernel package will not install on the device..... So, to stamp it as flavor 'armmp':<br />
<br />
Create a file called 'localversion' in the linux-source directory, and put -armmp inside. This will then generate a kernel stamped with the version '4.8.7-armmp' rather than plain '4.8.7', and will make dpkg/flash-kernel happy on install.<br />
<br />
Then, to make the kernel, use; substituting your cross compiler;:<br />
<br />
<code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg</code><br />
<br />
Note: if you want to build, but not start from scratch, the target bindeb-pkg does not do a clean first, whereas deb-pkg does.<br />
<br />
You should end up with a file in one folder lower called something like <code>linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
To install this on the device, go to that folder, or copy it to the device, and use<br />
<br />
<code>dpkg -i linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
and if successful, reboot...<br />
<br />
<br />
Note from the author of this last bit: I'm no expert on this, but as it took me over a week to establish the above; I hope it helps somebody! Please feel free to enhance or correct any of the above.<br />
'''If you do intend to reproduce this, then please make notes as you do it; a good (accurate) from scratch description would be a bonus here.'''<br />
<br />
= Boot =<br />
== SD-Card Boot partition ==<br />
<br />
Like with our [[Manual_build_howto#Setting_up_the_boot_partition | Manual build howto]], you have to set up the boot partition. Instead of ''script.bin'', you need to install your board-specific '''.dtb''' to the boot partition. (Above kernel compilation should generate this binary representation of the [[device tree]] automatically.)<br />
<br />
=== boot.cmd ===<br />
Like in the [[Manual_build_howto#boot.cmd| Manual build howto]], create a boot.cmd with the following contents:<br />
<br />
<pre>fatload mmc 0 0x46000000 zImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}<br />
<br />
bootz 0x46000000 - 0x49000000</pre><br />
:{{note|In order to boot an '''arm64''' kernel, remember to use ''Image'' instead of ''zImage''. You also have to load it with ''booti'' instead of ''bootz''. So you have to adopt the corresponding lines in the above boot.cmd file.}}<br />
Replace ''fatload'' with ''ext2load'' if needed. [[#Early_printk|earlyprintk]] is optional; if your kernel boots up just fine, you might as well remove it.<br />
<br />
If you are using an older U-Boot (you shouldn't - {{Remove|Which?}}), you might require the following line, to keep the extracted kernel from overwriting the device tree configuration:<br />
<pre>setenv fdt_high ffffffff</pre><br />
<br />
If you wish to use an initramfs, then the ''bootz'' command becomes:<br />
<pre>bootz 0x46000000 0x<initramfs-address> 0x49000000</pre><br />
<br />
Now [[Mainline_U-boot#Boot|generate boot.scr]]. Don't forget to copy over your ''zImage'' and <board>.dtb files as well.<br />
<br />
== eMMC boot partition ==<br />
<br />
[http://en.wikipedia.org/wiki/MultiMediaCard#eMMC eMMC] is very similar to the SD card case (see above). From a user's perspective, think of it as an "internal" memory card. Some devices are able to boot entirely from eMMC, forgoing the need for an external SD card.<br />
<br />
{{info|Keep a keen eye on the numbering of the ''mmcblk'' devices when switching the boot process between SD card and eMMC, e.g. during installation.}}<br />
:The Linux kernel may change device numbers depending on which mmc devices are actually present.<br />
:For example: If your SD card corresponds to ''mmc0'', and the eMMC is ''mmc1'', you'll probably end up with the eMMC as ''mmcblk'''1''''' when a SD card is also present (with the latter being ''mmcblk'''0'''''). But it's likely that the eMMC becomes ''mmcblk'''0''''' as soon as no SD card (''mmc0'') is present. If in doubt, check the kernel messages and adjust your partition layout / boot options accordingly.<br />
<br />
== Network boot setup ==<br />
<br />
{{Remove|TODO.}} Fold in [[Possible setups for hacking on mainline]].<br />
<br />
= Extra features =<br />
<br />
== SYSV IPC (debian users!) ==<br />
<br />
The current sunxi_defconfig has actually become rather complete, but SYSV IPC is disabled, and it is important for the fakeroot tool which is used for making debian packages.<br />
<br />
Go to:<br />
<pre> General setup ---></pre><br />
<br />
Then enable '''CONFIG_SYSVIPC''':<br />
<pre>[*] System V IPC</pre><br />
<br />
== Early printk ==<br />
<br />
If and only if your kernel does nothing, it pays to enable early printk support.<br />
<br />
Go to:<br />
<pre> Kernel hacking ---></pre><br />
<br />
Then enable '''CONFIG_DEBUG_KERNEL''':<br />
<pre>[*] Kernel debugging</pre><br />
<br />
To actually get early printk, you need to also enable '''CONFIG_DEBUG_LL''', select one of the '''CONFIG_DEBUG_SUNXI_''' options, and enable '''CONFIG_EARLY_PRINTK''':<br />
<pre>[*] Kernel low-level debugging functions (read help!)<br />
Kernel low-level debugging port (Kernel low-level debugging messages via sunXi UART0) ---><br />
[*] Early printk</pre><br />
<br />
The selection of the debugging port ('''CONFIG_DEBUG_SUNXI_''') depends on the board you are using. The selection of these is this contrived as these are all symbolic names for the raw addresses for the debug port.<br />
* For most SoCs, you should first select '''DEBUG_SUNXI_UART0''':<pre>(X) Kernel low-level debugging messages via sunXi UART0</pre><br />
* For A13, try '''DEBUG_SUNXI_UART1''' first:<pre>(X) Kernel low-level debugging messages via sunXi UART1</pre><br />
* For A23, try '''DEBUG_SUNXI_R_UART''' first:<pre>(X) Kernel low-level debugging messages via sunXi R_UART</pre><br />
* For A80, try '''DEBUG_SUN9I_UART0''' first:<pre>(X) Kernel low-level debugging messages via sun9i UART0</pre><br />
<br />
== simplefb ==<br />
<br />
{{Remove | TODO: This is now part of defconfig anyway. Be sure to add the console command line option to the console/display support page.}}<br />
<br />
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.<br />
<br />
= Adding a new device =<br />
<br />
Mainly, you have to write a [[Device Tree|device description]]. Please [[Sending_patches|send a patch]] to help others finding good examples.<br />
<br />
=See also=<br />
* [[Manual build howto]]<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=23487
Mainline Kernel Howto
2020-08-18T09:16:44Z
<p>Rellla: /* Kernel Compilation */ make headers_install</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel.<br />
<br />
Warning: Mainline NAND support is not compatible with Allwinner NAND support and will make your existing NAND unreadable.<br />
<br />
= Current status =<br />
<br />
Please refer to the [[Linux mainlining effort]] page for detailed status of the mainlining effort, and supported boards and driver coverage.<br />
<br />
Some SoCs and some subsystems might not be supported yet, you might need to revert to our [[Linux_Kernel|heavily hacked kernel version]] that's close to Allwinners code for A10/A13/A20, or use a BSP kernel. <br />
<br />
= Prerequisites =<br />
<br />
You should be running through this howto as part of our [[Manual build howto]]. It guides you through toolchain, u-boot and rootfs steps as well.<br />
<br />
= Kernel source =<br />
<br />
== Linus' tree ==<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually.<br />
<br />
For a full clone (if you wish to do future development) run:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git</pre><br />
<br />
Often a shallow clone will suffice to just get mainline working:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1</pre><br />
<br />
== Patches merged in the next stable release ==<br />
<br />
There is also a ''sunxi-next'' branch maintained with all the inclusions that have been accepted, merged and will be included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
<pre>git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-next git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-next --depth=1</pre><br />
<br />
= Kernel Configuration =<br />
<br />
== defconfig ==<br />
<br />
To get a working kernel, just use the following for configuration:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig</pre><br />
== oldconfig ==<br />
<br />
If you have an old relevant .config, e.g. if you installed a late debian, and now want to build the kernel, you can copy it in and run <code>make ARCH=arm oldconfig</code> or <code>make ARCH=arm64 oldconfig</code>.<br />
<br />
:{{note|If you happen to run <code>make menuconfig</code> without specifying the architecture, architecture-specific options will be '''lost'''; in that case you'll need to go back to an existing config and start again.}}<br />
<br />
== manual configuration ==<br />
<br />
If you wish to alter configuration, run:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig</pre><br />
<br />
= Kernel Compilation =<br />
<br />
== zImage/ Image ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 Image</pre><br />
After the compilation ended, you should have generated '''zImage''' in ''arch/arm/boot'' (armhf) or '''Image''' in ''arch/arm64/boot'' (arm64).<br />
<br />
== Devicetree ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 dtbs</pre><br />
You should now have a device tree binary (''.dtb'') in ''arch/arm/boot/dts'' (armhf) or ''arch/arm64/boot/dts'' (armhf), which matches your device, it should be listed on the device page for your device.<br />
<br />
All the sunxi dtbs follow the pattern <family>-<soc>-<board>.dtb.<br />
<br />
== modules ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 modules<br />
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 modules<br />
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
After the build succeeds, you can find the modules in the supplied <tt>INSTALL_MOD_PATH</tt> directory.<br />
<br />
== headers ==<br />
'''armhf'''<br />
<pre>ARCH=arm INSTALL_HDR_PATH=<any-path-you-like> make headers_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 INSTALL_HDR_PATH=<any-path-you-like> make headers_install</pre><br />
<br />
Change <tt>INSTALL_HDR_PATH</tt> to the path, you want the headers to be installed to, for example <tt>/usr</pre></tt> or <tt><some_prefix>/usr</tt> if you are doing a cross build.<br />
<br />
== Specific Debian kernel notes ==<br />
<br />
Having installed a late debian using the arm installer, building the Debian kernel is an attractive proposition. (for Debian install, see [[Rikomagic_mk802]] 'Images' section).<br />
<br />
Some notes on doing so (as it's not so obvious from Google): You can download the sources using apt-get linux-source. Today, Dec 2016, this will get you ~4.8.7. Given sufficient space, this can be built on device (~4 days compile time), but probably better to cross-compile. Extract the tar to a suitable location, and copy /boot/config-<your current version> to .config. You may want to edit the .config comment out CONFIG_MODULE_SIG_FORCE and CONFIG_MODULE_SIG. Prepare your cross machine, and then run <br />
<br />
<code>make ARCH=arm oldconfig</code><br />
<br />
(you may get some new options).<br />
<br />
Now, the important bit. IF 'uname -a' on your target shows 'armmp' anywhere, your kernel will need to be this 'flavor'; if it is not, then your newly created .deb kernel package will not install on the device..... So, to stamp it as flavor 'armmp':<br />
<br />
Create a file called 'localversion' in the linux-source directory, and put -armmp inside. This will then generate a kernel stamped with the version '4.8.7-armmp' rather than plain '4.8.7', and will make dpkg/flash-kernel happy on install.<br />
<br />
Then, to make the kernel, use; substituting your cross compiler;:<br />
<br />
<code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg</code><br />
<br />
Note: if you want to build, but not start from scratch, the target bindeb-pkg does not do a clean first, whereas deb-pkg does.<br />
<br />
You should end up with a file in one folder lower called something like <code>linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
To install this on the device, go to that folder, or copy it to the device, and use<br />
<br />
<code>dpkg -i linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
and if successful, reboot...<br />
<br />
<br />
Note from the author of this last bit: I'm no expert on this, but as it took me over a week to establish the above; I hope it helps somebody! Please feel free to enhance or correct any of the above.<br />
'''If you do intend to reproduce this, then please make notes as you do it; a good (accurate) from scratch description would be a bonus here.'''<br />
<br />
= Boot =<br />
== SD-Card Boot partition ==<br />
<br />
Like with our [[Manual_build_howto#Setting_up_the_boot_partition | Manual build howto]], you have to set up the boot partition. Instead of ''script.bin'', you need to install your board-specific '''.dtb''' to the boot partition. (Above kernel compilation should generate this binary representation of the [[device tree]] automatically.)<br />
<br />
=== boot.cmd ===<br />
Like in the [[Manual_build_howto#boot.cmd| Manual build howto]], create a boot.cmd with the following contents:<br />
<br />
<pre>fatload mmc 0 0x46000000 zImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}<br />
<br />
bootz 0x46000000 - 0x49000000</pre><br />
:{{note|In order to boot an '''arm64''' kernel, remember to use ''Image'' instead of ''zImage''. You also have to load it with ''booti'' instead of ''bootz''. So you have to adopt the corresponding lines in the above boot.cmd file.}}<br />
Replace ''fatload'' with ''ext2load'' if needed. [[#Early_printk|earlyprintk]] is optional; if your kernel boots up just fine, you might as well remove it.<br />
<br />
If you are using an older U-Boot (you shouldn't - {{Remove|Which?}}), you might require the following line, to keep the extracted kernel from overwriting the device tree configuration:<br />
<pre>setenv fdt_high ffffffff</pre><br />
<br />
If you wish to use an initramfs, then the ''bootz'' command becomes:<br />
<pre>bootz 0x46000000 0x<initramfs-address> 0x49000000</pre><br />
<br />
Now [[Mainline_U-boot#Boot|generate boot.scr]]. Don't forget to copy over your ''zImage'' and <board>.dtb files as well.<br />
<br />
== eMMC boot partition ==<br />
<br />
[http://en.wikipedia.org/wiki/MultiMediaCard#eMMC eMMC] is very similar to the SD card case (see above). From a user's perspective, think of it as an "internal" memory card. Some devices are able to boot entirely from eMMC, forgoing the need for an external SD card.<br />
<br />
{{info|Keep a keen eye on the numbering of the ''mmcblk'' devices when switching the boot process between SD card and eMMC, e.g. during installation.}}<br />
:The Linux kernel may change device numbers depending on which mmc devices are actually present.<br />
:For example: If your SD card corresponds to ''mmc0'', and the eMMC is ''mmc1'', you'll probably end up with the eMMC as ''mmcblk'''1''''' when a SD card is also present (with the latter being ''mmcblk'''0'''''). But it's likely that the eMMC becomes ''mmcblk'''0''''' as soon as no SD card (''mmc0'') is present. If in doubt, check the kernel messages and adjust your partition layout / boot options accordingly.<br />
<br />
== Network boot setup ==<br />
<br />
{{Remove|TODO.}} Fold in [[Possible setups for hacking on mainline]].<br />
<br />
= Extra features =<br />
<br />
== SYSV IPC (debian users!) ==<br />
<br />
The current sunxi_defconfig has actually become rather complete, but SYSV IPC is disabled, and it is important for the fakeroot tool which is used for making debian packages.<br />
<br />
Go to:<br />
<pre> General setup ---></pre><br />
<br />
Then enable '''CONFIG_SYSVIPC''':<br />
<pre>[*] System V IPC</pre><br />
<br />
== Early printk ==<br />
<br />
If and only if your kernel does nothing, it pays to enable early printk support.<br />
<br />
Go to:<br />
<pre> Kernel hacking ---></pre><br />
<br />
Then enable '''CONFIG_DEBUG_KERNEL''':<br />
<pre>[*] Kernel debugging</pre><br />
<br />
To actually get early printk, you need to also enable '''CONFIG_DEBUG_LL''', select one of the '''CONFIG_DEBUG_SUNXI_''' options, and enable '''CONFIG_EARLY_PRINTK''':<br />
<pre>[*] Kernel low-level debugging functions (read help!)<br />
Kernel low-level debugging port (Kernel low-level debugging messages via sunXi UART0) ---><br />
[*] Early printk</pre><br />
<br />
The selection of the debugging port ('''CONFIG_DEBUG_SUNXI_''') depends on the board you are using. The selection of these is this contrived as these are all symbolic names for the raw addresses for the debug port.<br />
* For most SoCs, you should first select '''DEBUG_SUNXI_UART0''':<pre>(X) Kernel low-level debugging messages via sunXi UART0</pre><br />
* For A13, try '''DEBUG_SUNXI_UART1''' first:<pre>(X) Kernel low-level debugging messages via sunXi UART1</pre><br />
* For A23, try '''DEBUG_SUNXI_R_UART''' first:<pre>(X) Kernel low-level debugging messages via sunXi R_UART</pre><br />
* For A80, try '''DEBUG_SUN9I_UART0''' first:<pre>(X) Kernel low-level debugging messages via sun9i UART0</pre><br />
<br />
== simplefb ==<br />
<br />
{{Remove | TODO: This is now part of defconfig anyway. Be sure to add the console command line option to the console/display support page.}}<br />
<br />
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.<br />
<br />
= Adding a new device =<br />
<br />
Mainly, you have to write a [[Device Tree|device description]]. Please [[Sending_patches|send a patch]] to help others finding good examples.<br />
<br />
=See also=<br />
* [[Manual build howto]]<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=23119
Used IP cores
2020-01-28T06:46:49Z
<p>Rellla: Reverted edits by Rellla (talk) to last revision by Jfether</p>
<hr />
<div>This page defines a list of used IP cores of the current generation of Allwinner devices.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Component name !! IP core vendor !! Driver available/usable? !! A10 !! A13 !! A31 !! A20 !! A23 !! A33<br />
|-<br />
| [[Cortex A8]] || ARM ltd. || Mainline || Y || Y || N || N || N || N<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y || Y<br />
|-<br />
| [[GIC-400]] || ARM ltd. || Mainline || N || N || Y || N || Y || Y<br />
|-<br />
| [[IRQ]] || Unknown || Mainline, Allwinner || Y || Y || N || N || N || N<br />
|-<br />
| [[NMI]] || Unknown, seems to be a stripped down version of A10/A13 IRQ controller || Mainline, Allwinner || N || N || Y || Y || Y || Y<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Mainline, Allwinner || Y || Y || Y || Y || Y || Y<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare, Same as Rockchip rk2918 DMC || Mainline/Allwinner U-Boot || Y || Y || N || Y || N || N<br />
|-<br />
| [[DDR]] || Synopsys DesignWare?, Similar to Xilinx Zynq UltraScale+ (reduced feature) || Mainline/Allwinner U-Boot || N || N || Y || N || Y || N<br />
|-<br />
| [[DDR]] || Synopsys DesignWare?, seems to be re-arranged A80/A23 DRAM controller || Mainline/Allwinner U-Boot || N || N || N || N || N || Y<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[DMA]] || Unknown || Allwinner || Y || Y || Y || Y <br />
|-<br />
| [[PWM]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[GPS]] || Highvision<ref>http://www.highvision.com.cn/</ref> || No driver available. Only GPL-violating .ko were available, but untested || Y || N || N || N || N || N<br />
|-<br />
| [[G2D]] || Unknown || Allwinner implementation used. Might have connection to Exynos G2D.<br />
|-<br />
| [[GPU]] || ARM Mali-400 MP1 || ARM ltd || Y || Y || N || N <br />
|-<br />
| [[GPU]] || ARM Mali-400 MP2 || ARM ltd || N || N || N|| Y<br />
|-<br />
| [[GPU]] || Imagination Technologies PowerVR SGX544 || ? || N || N || Y || N <br />
|-<br />
| [[IPU]] || Allwinner "DISP/LCD/HDMI" stack || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[Video Engine]] || Most likely a custom design by Chipsbank<ref name="chipsbank">http://www.chipsbank.com/</ref> ||Allwiner kernel driver + Blob || Y ||Y || Y || Y <br />
|-<br />
| [[I2C]] || Marvell MV64xxx || Mainline || Y || Y || Y || Y<br />
|-<br />
| [[SPI]] || Unknown || Allwinner<br />
|-<br />
| [[UART]] || Synopsys DesignWare 8250 || Mainline || Y || Y || Y || Y<br />
|-<br />
| [[USB]] || <del>MentorGraphics MUSB</del> Generic OHCI/EHCI with glue || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[USB-OTG]] || MentorGraphics MSUSB<ref>http://www.mentor.com/products/ip/usb/usb20otg/upload/usb-2-0-multipoint-hi-speed-otg-controller-1c66e6a0-a88d-d2f7-65ca-77caf24abed0</ref> || Allwinner (mainline musb)<br />
|-<br />
| [[SATA]] || Synopsys DesignWare SATA but PHY part maybe AW|| Allwinner glue + mainline libata || Y || N || ? || Y<br />
|-<br />
| [[SD/MMC]] || Unknown || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[NAND]] || Unknown || Allwinner. Most likely IP core is not done by Allwinner due to weird glue || Y || Y || Y || Y<br />
|-<br />
| [[Memory Stick]] || Unknown || No driver available<br />
|-<br />
| [[CE-ATA]], IDE, ATA || Unknown || No driver available<br />
|-<br />
| [[TouchScreen controller]] || Unknown || Allwinner<br />
|-<br />
| [[SS]] || Unknown || No driver available<br />
|-<br />
| [[IR]] || Unknown || Allwinner || Y || ? || Y || Y<br />
|-<br />
| [[IIS]] || Unknown || Allwinner <br />
|- <br />
| [[AC97]] || Unknown || Allwinner <br />
|- <br />
| [[Keypad]] || Unknown || Allwinner <br />
|- <br />
| [[LRADC]] || Unknown || Allwinner || Y || Y || Y || Y<br />
|- <br />
| [[CSI]] || Unknown || Allwinner. Might use something pre made by MIPI<br />
|- <br />
| [[TransportStream]] || Unknown || Allwinner (3.4 only)<br />
|- <br />
| [[ACE]] || Most likely a custom design by Chipsbank<ref name="chipsbank" /> || Allwinner <br />
|- <br />
| [[TV Encoder]] || Unknown || No driver available <br />
|- <br />
| [[GMAC]] || Synopsys DesignWare Ethernet MAC 10/100/1000 Universal || Allwinner. Mainline (3.14, stmmac) || N || N || Y? || Y<br />
|-<br />
| [[CAN]] || Unknown ||<br />
|}<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Hardware]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=23118
Used IP cores
2020-01-28T06:46:07Z
<p>Rellla: Reverted edits by Jfether (talk) to last revision by Icenowy</p>
<hr />
<div>This page defines a list of used IP cores of the current generation of Allwinner devices.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Component name !! IP core vendor !! Driver available/usable? !! A10 !! A13 !! A31 !! A20 !! A23 !! A33<br />
|-<br />
| [[Cortex A8]] || ARM ltd. || Mainline || Y || Y || N || N || N || N<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y || Y<br />
|-<br />
| [[GIC-400]] || ARM ltd. || Mainline || N || N || Y || Y || Y || Y<br />
|-<br />
| [[IRQ]] || Unknown || Mainline, Allwinner || Y || Y || N || N || N || N<br />
|-<br />
| [[NMI]] || Unknown, seems to be a stripped down version of A10/A13 IRQ controller || Mainline, Allwinner || N || N || Y || Y || Y || Y<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Mainline, Allwinner || Y || Y || Y || Y || Y || Y<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare, Same as Rockchip rk2918 DMC || Mainline/Allwinner U-Boot || Y || Y || N || Y || N || N<br />
|-<br />
| [[DDR]] || Synopsys DesignWare?, Similar to Xilinx Zynq UltraScale+ (reduced feature) || Mainline/Allwinner U-Boot || N || N || Y || N || Y || N<br />
|-<br />
| [[DDR]] || Synopsys DesignWare?, seems to be re-arranged A80/A23 DRAM controller || Mainline/Allwinner U-Boot || N || N || N || N || N || Y<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[DMA]] || Unknown || Allwinner || Y || Y || Y || Y <br />
|-<br />
| [[PWM]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[GPS]] || Highvision<ref>http://www.highvision.com.cn/</ref> || No driver available. Only GPL-violating .ko were available, but untested || Y || N || N || N || N || N<br />
|-<br />
| [[G2D]] || Unknown || Allwinner implementation used. Might have connection to Exynos G2D.<br />
|-<br />
| [[GPU]] || ARM Mali-400 MP1 || ARM ltd || Y || Y || N || N <br />
|-<br />
| [[GPU]] || ARM Mali-400 MP2 || ARM ltd || N || N || N|| Y<br />
|-<br />
| [[GPU]] || Imagination Technologies PowerVR SGX544 || ? || N || N || Y || N <br />
|-<br />
| [[IPU]] || Allwinner "DISP/LCD/HDMI" stack || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[Video Engine]] || Most likely a custom design by Chipsbank<ref name="chipsbank">http://www.chipsbank.com/</ref> ||Allwiner kernel driver + Blob || Y ||Y || Y || Y <br />
|-<br />
| [[I2C]] || Marvell MV64xxx || Mainline || Y || Y || Y || Y<br />
|-<br />
| [[SPI]] || Unknown || Allwinner<br />
|-<br />
| [[UART]] || Synopsys DesignWare 8250 || Mainline || Y || Y || Y || Y<br />
|-<br />
| [[USB]] || <del>MentorGraphics MUSB</del> Generic OHCI/EHCI with glue || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[USB-OTG]] || MentorGraphics MSUSB<ref>http://www.mentor.com/products/ip/usb/usb20otg/upload/usb-2-0-multipoint-hi-speed-otg-controller-1c66e6a0-a88d-d2f7-65ca-77caf24abed0</ref> || Allwinner (mainline musb)<br />
|-<br />
| [[SATA]] || Synopsys DesignWare SATA but PHY part maybe AW|| Allwinner glue + mainline libata || Y || N || ? || Y<br />
|-<br />
| [[SD/MMC]] || Unknown || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[NAND]] || Unknown || Allwinner. Most likely IP core is not done by Allwinner due to weird glue || Y || Y || Y || Y<br />
|-<br />
| [[Memory Stick]] || Unknown || No driver available<br />
|-<br />
| [[CE-ATA]], IDE, ATA || Unknown || No driver available<br />
|-<br />
| [[TouchScreen controller]] || Unknown || Allwinner<br />
|-<br />
| [[SS]] || Unknown || No driver available<br />
|-<br />
| [[IR]] || Unknown || Allwinner || Y || ? || Y || Y<br />
|-<br />
| [[IIS]] || Unknown || Allwinner <br />
|- <br />
| [[AC97]] || Unknown || Allwinner <br />
|- <br />
| [[Keypad]] || Unknown || Allwinner <br />
|- <br />
| [[LRADC]] || Unknown || Allwinner || Y || Y || Y || Y<br />
|- <br />
| [[CSI]] || Unknown || Allwinner. Might use something pre made by MIPI<br />
|- <br />
| [[TransportStream]] || Unknown || Allwinner (3.4 only)<br />
|- <br />
| [[ACE]] || Most likely a custom design by Chipsbank<ref name="chipsbank" /> || Allwinner <br />
|- <br />
| [[TV Encoder]] || Unknown || No driver available <br />
|- <br />
| [[GMAC]] || Synopsys DesignWare Ethernet MAC 10/100/1000 Universal || Allwinner. Mainline (3.14, stmmac) || N || N || Y? || Y<br />
|-<br />
| [[CAN]] || Unknown ||<br />
|}<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Hardware]]</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=23070
User:Rellla
2020-01-04T11:42:31Z
<p>Rellla: /* Lima development */</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== Lima development ==<br />
<code>malisc -d Mali-400_r7p0-00rel0 -c Mali-400 -r r1p1 -o "outputfile" "inputfile"</code><br />
<br />
<code>./disassemble -a lima_pp -t fragment -s verbose "inputfile"</code><br />
<br />
'''build mesa'''<br />
<pre>-Dvulkan-drivers=[] -Dplatforms=drm,x11,surfaceless -Ddri-drivers=[] -Dgallium-drivers=lima,kmsro</pre><br />
<br />
'''build deqp'''<br />
<pre>ccmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain.cmake -DDEQP_TARGET=surfaceless -DCMAKE_BUILD_TYPE=Release ../VK-GL-CTS</pre><br />
<br />
'''toolchain.cmake'''<br />
<pre><br />
SET(CMAKE_SYSTEM_NAME Linux)<br />
SET(CMAKE_SYSTEM_VERSION 1)<br />
<br />
SET(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)<br />
SET(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)<br />
SET(CMAKE_PREFIX_PATH /opt/prefix)<br />
<br />
SET(CMAKE_FIND_ROOT_PATH /path/to/target/root)<br />
<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)<br />
</pre><br />
<br />
'''kernel'''<br />
<br />
lima, nfs_server<br />
<br />
cma, nfs_server</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22955
Linux mainlining effort
2019-12-10T11:30:55Z
<p>Rellla: </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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
<br />
* [[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li [https://lore.kernel.org/patchwork/cover/1159201/ add thermal sensor driver for A64, A83T, H3, H5, H6, R40]<br />
** [[A80]] included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H6]] <br />
** PWM WIP Clément Péron [https://patchwork.kernel.org/cover/11227685/ Add support for H6 PWM v3] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
<br />
=== Drivers that can still be improved/added ===<br />
<br />
Nobody works on these features. If you're interested, you can pick one of these add your name to them and move them to one of the sections above, to indicate you're working on the driver/feature.<br />
<br />
* sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)<br />
* DE2 on some SoCs (A64, A83T) includes rotation egnine that is not yet supported<br />
* DE2 driver has buggy layer support, see [https://patchwork.kernel.org/patch/11145803/]<br />
== Planned for 5.6 ==<br />
...<br />
== Merged into 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged into 5.4 ==<br />
* [[A20]]<br />
** CSI<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22862
Linux mainlining effort
2019-11-05T08:23:56Z
<p>Rellla: /* Major drivers */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1058765/ media: Allwinner A10 CSI support v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal WIP Yangtao Li [https://patchwork.kernel.org/cover/11088251/ add thermal driver for h6 v5]<br />
* [[H6]] <br />
** PWM WIP Jernej Škrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=197209 pwm: sun4i: Add support for Allwinner H6 v2] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A64]] / [[A80]] / [[A83T]] / [[H5]] Thermal driver WIP: Philipp Rossak (embed-3d) v3-branch: <br />
** [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3 sunxi-ths-v3] <br />
** [https://patchwork.kernel.org/cover/10582083/ IIO-based thermal sensor driver for Allwinner H3 and A83T SoC]<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC<br />
<br />
== Merged for 5.4 ==<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Litchee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22861
Linux mainlining effort
2019-11-05T08:22:45Z
<p>Rellla: /* Planned for 5.5 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1058765/ media: Allwinner A10 CSI support v5] <br />
<br />
* HEVC/H.265 video decoding WiP Paul Kocialkowski [https://lore.kernel.org/patchwork/cover/1143012/ HEVC/H.265 stateless support for V4L2 and Cedrus]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal WIP Yangtao Li [https://patchwork.kernel.org/cover/11088251/ add thermal driver for h6 v5]<br />
* [[H6]] <br />
** PWM WIP Jernej Škrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=197209 pwm: sun4i: Add support for Allwinner H6 v2] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A64]] / [[A80]] / [[A83T]] / [[H5]] Thermal driver WIP: Philipp Rossak (embed-3d) v3-branch: <br />
** [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3 sunxi-ths-v3] <br />
** [https://patchwork.kernel.org/cover/10582083/ IIO-based thermal sensor driver for Allwinner H3 and A83T SoC]<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC<br />
<br />
== Merged for 5.4 ==<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Litchee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22860
Linux mainlining effort
2019-11-05T08:14:46Z
<p>Rellla: /* Merged for 5.3 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1058765/ media: Allwinner A10 CSI support v5] <br />
<br />
* HEVC/H.265 video decoding WiP Paul Kocialkowski [https://lore.kernel.org/patchwork/cover/1143012/ HEVC/H.265 stateless support for V4L2 and Cedrus]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal WIP Yangtao Li [https://patchwork.kernel.org/cover/11088251/ add thermal driver for h6 v5]<br />
* [[H6]] <br />
** PWM WIP Jernej Škrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=197209 pwm: sun4i: Add support for Allwinner H6 v2] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A64]] / [[A80]] / [[A83T]] / [[H5]] Thermal driver WIP: Philipp Rossak (embed-3d) v3-branch: <br />
** [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3 sunxi-ths-v3] <br />
** [https://patchwork.kernel.org/cover/10582083/ IIO-based thermal sensor driver for Allwinner H3 and A83T SoC]<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.5 ==<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged for 5.4 ==<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Litchee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22771
User:Rellla
2019-10-01T16:20:26Z
<p>Rellla: /* Lima development */ some commands stash</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== Lima development ==<br />
<code>malisc -d Mali-400_r7p0-00rel0 -c Mali-400 -r r1p1 -o "outputfile" "inputfile"</code><br />
<br />
<code>./disassemble -a lima_pp -t fragment -s verbose "inputfile"</code><br />
<br />
'''build mesa'''<br />
<pre>-Dvulkan-drivers=[] -Dplatforms=drm,x11,surfaceless -Ddri-drivers=[] -Dgallium-drivers=lima,kmsro</pre><br />
<br />
'''build deqp'''<br />
<pre>ccmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain.cmake -DDEQP_TARGET=surfaceless -DCMAKE_BUILD_TYPE=Release ../VK-GL-CTS</pre><br />
<br />
'''toolchain.cmake'''<br />
<pre><br />
SET(CMAKE_SYSTEM_NAME Linux)<br />
SET(CMAKE_SYSTEM_VERSION 1)<br />
<br />
SET(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)<br />
SET(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)<br />
SET(CMAKE_PREFIX_PATH /opt/prefix)<br />
<br />
SET(CMAKE_FIND_ROOT_PATH /path/to/target/root)<br />
<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)<br />
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)<br />
</pre></div>
Rellla
https://linux-sunxi.org/index.php?title=Debootstrap&diff=22642
Debootstrap
2019-08-14T21:41:56Z
<p>Rellla: add arm64</p>
<hr />
<div>On debian based systems, you can manually initialize an installation using ''debootstrap''.<br />
<br />
This whole process takes half an hour or so (depending on network bandwidth and disk setup, direct to sd-card will be slower), and will result in a 250MB root filesystem, or a 80MB tarball, <br />
<br />
= Pre-requisites =<br />
<br />
* A debian based distribution.<br />
* package '''debootstrap'''<br />
* package '''qemu-user-static''' if you are doing this from a different architecture<br />
<br />
It is assumed that your target filesystem is mounted in '''/mnt'''<br />
<br />
Also, figure out which distribution version you wish to use. Current debian stable is called ''stretch'', and a current ubuntu is called ''cosmic''.<br />
<br />
= First stage =<br />
<br />
This step can be run from any host architecture.<br />
<br />
'''armhf'''<br />
<pre>debootstrap --arch=armhf --foreign <distro> /mnt/</pre><br />
'''arm64'''<br />
<pre>debootstrap --arch=arm64 --foreign <distro> /mnt/</pre><br />
<br />
Replace <distro> with your preferred distribution, probably ''buster'' or ''cosmic''.<br />
<br />
= Second stage =<br />
<br />
== From a different host architecture ==<br />
<br />
Copy qemu to the target filesystem and chroot to target: <br />
<br />
'''armhf'''<br />
<pre>cp /usr/bin/qemu-arm-static /mnt/usr/bin/<br />
chroot /mnt /usr/bin/qemu-arm-static /bin/sh -i</pre><br />
'''arm64'''<br />
<pre>cp /usr/bin/qemu-aarch64-static /mnt/usr/bin/<br />
chroot /mnt /usr/bin/qemu-aarch64-static /bin/sh -i</pre><br />
<br />
== From the same architecture ==<br />
<br />
Chroot to target: <pre>chroot /mnt /bin/sh -i</pre><br />
<br />
== Debootstrap second stage ==<br />
<br />
<pre>/debootstrap/debootstrap --second-stage</pre><br />
<br />
= Mandatory setup =<br />
<br />
== Add root passwd ==<br />
<br />
While in the chroot, run:<pre>passwd</pre><br />
<br />
== Hostname ==<br />
<br />
You do not wish to have your rootfs have the same hostname as your host machine, so it is wise to change this now, as this will surreptitiously influence things like your ssh keys.<br />
<br />
Simply edit ''/etc/hostname'', this can be done from both inside and outside of the chroot.<br />
<br />
== Fstab ==<br />
<br />
This can be done from both inside and outside of the chroot.<br />
<br />
=== Add tmpfs ===<br />
<br />
<pre>none /tmp tmpfs defaults,noatime,mode=1777 0 0</pre><br />
<br />
=== Add root filesystem ===<br />
<br />
<pre>/dev/mmcblk0p2 / ext4 defaults 0 1 </pre><br />
<br />
Rename this to ''/dev/mmcblk0p1'' if you use a single partition.<br />
<br />
=== Add boot partition (if present) ===<br />
<br />
<pre>/dev/mmcblk0p1 /boot vfat defaults 0 2 </pre><br />
<br />
Adjust filesystemtype accordingly.<br />
<br />
== Serial console ==<br />
<br />
=== With systemd ===<br />
<br />
* From within the chroot:<pre>systemctl enable serial-getty@ttyS0.service</pre><br />
<br />
* Outside of chroot:<pre>ln -s /lib/systemd/system/serial-getty@.service /mnt/etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service</pre><br />
<br />
=== With upstart ===<br />
<br />
Please follow [https://help.ubuntu.com/community/SerialConsoleHowto#line-18 this ubuntu howto], which can be done from outside the chroot.<br />
<br />
=== With sysvinit ===<br />
<br />
Add the following line to ''/etc/inittab'', independent of chroot (apart from the path):<br />
<pre>T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100</pre><br />
<br />
= Optional/deferrable setup =<br />
<br />
Most of these things can be done from within the chroot or on the actual machine. They are really nice to have, but not totally necessary before the first boot of the target machine.<br />
<br />
If debians servers are not resolving, you might need to copy the hosts' resolv.conf to the target filesystem before chrooting back in.<br />
<br />
== Locales ==<br />
<br />
Run:<pre>apt-get install locales<br />
dpkg-reconfigure locales</pre><br />
<br />
It might make sense to choose ''en_US.UTF-8''<br />
<br />
== Configure ethernet with dhcp ==<br />
cat <<END >> /etc/network/interfaces<br />
auto lo eth0<br />
allow-hotplug eth0<br />
iface lo inet loopback<br />
iface eth0 inet dhcp<br />
END<br />
<br />
== Expanded apts sources.list ==<br />
<br />
Here are some expanded sources.lists, which are bound to be out of date, to augment /apt/sources.list on the target rootfs.<br />
<br />
=== Debian ===<br />
Replace ''stretch'' with your chosen debian distribution name.<br />
<pre>deb http://deb.debian.org/debian/ buster main contrib non-free<br />
deb-src http://deb.debian.org/debian/ buster main contrib non-free<br />
deb http://deb.debian.org/debian/ buster-updates main contrib non-free<br />
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free<br />
deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free<br />
deb-src http://deb.debian.org.org/debian-security/ buster/updates main contrib non-free</pre><br />
<br />
=== Ubuntu ===<br />
Replace ''cosmic'' with your chosen ubuntu version.<br />
<pre>deb http://ports.ubuntu.com/ cosmic main universe<br />
deb-src http://ports.ubuntu.com/ cosmic main universe<br />
deb http://ports.ubuntu.com/ cosmic-security main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-security main universe<br />
deb http://ports.ubuntu.com/ cosmic-updates main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-updates main universe</pre><br />
<br />
== Openssh-server ==<br />
<br />
Run:<pre>apt-get install openssh-server</pre><br />
<br />
If you want access as root, you will need to edit ''/etc/ssh/sshd_config''.<br />
<br />
=== Key based authentication ===<br />
<br />
Uncomment the following line:<br />
<pre>#PermitRootLogin prohibit-password</pre><br />
<br />
And add your key to ''/root/.ssh/authorized_keys''.<br />
<br />
=== Password based authentication ===<br />
<br />
Uncomment the ''PermitRootLogin'' line, and set it to ''yes''.<br />
<br />
<pre>PermitRootLogin yes</pre><br />
<br />
= Cleanup =<br />
<br />
From within the chroot, run ''apt-get clean'' to remove cached packages.<br />
<br />
If you were using a qemu chroot, then you need to remove ''/mnt/usr/bin/qemu-arm-static'' or ''/usr/bin/qemu-aarch64-static''.<br />
<br />
If you needed the hosts' resolv.conf, then you need to remove ''/mnt/etc/resolv.conf''<br />
<br />
= Tarring up the result =<br />
<br />
You spent some time setting this up, and you might not want to retrace the above steps every few days, so you might as well throw this into a 100ish MB tarball:<br />
<br />
From the host, from within ''/mnt/'', run:<br />
<pre>tar -cjpf /home/user/sunxi_rootfs.tar.bz2 .</pre><br />
<br />
Be careful when you unpack that, as rootfses are pretty much the only time tarballs should be untarred in the local directory.</div>
Rellla
https://linux-sunxi.org/index.php?title=Debootstrap&diff=22641
Debootstrap
2019-08-14T21:32:06Z
<p>Rellla: /* First stage */ add arm64</p>
<hr />
<div>On debian based systems, you can manually initialize an installation using ''debootstrap''.<br />
<br />
This whole process takes half an hour or so (depending on network bandwidth and disk setup, direct to sd-card will be slower), and will result in a 250MB root filesystem, or a 80MB tarball, <br />
<br />
= Pre-requisites =<br />
<br />
* A debian based distribution.<br />
* package '''debootstrap'''<br />
* package '''qemu-user-static''' if you are doing this from a different architecture<br />
<br />
It is assumed that your target filesystem is mounted in '''/mnt'''<br />
<br />
Also, figure out which distribution version you wish to use. Current debian stable is called ''stretch'', and a current ubuntu is called ''cosmic''.<br />
<br />
= First stage =<br />
<br />
This step can be run from any host architecture.<br />
<br />
'''armhf'''<br />
<pre>debootstrap --arch=armhf --foreign <distro> /mnt/</pre><br />
'''arm64'''<br />
<pre>debootstrap --arch=arm64 --foreign <distro> /mnt/</pre<br />
<br />
Replace <distro> with your preferred distribution, probably ''buster'' or ''cosmic''.<br />
<br />
= Second stage =<br />
<br />
== From a different host architecture ==<br />
<br />
Copy qemu to the target filesystem: <pre>cp /usr/bin/qemu-arm-static /mnt/usr/bin/</pre><br />
<br />
Chroot to target: <pre>chroot /mnt /usr/bin/qemu-arm-static /bin/sh -i</pre><br />
<br />
== From the same architecture ==<br />
<br />
Chroot to target: <pre>chroot /mnt /bin/sh -i</pre><br />
<br />
== Debootstrap second stage ==<br />
<br />
<pre>/debootstrap/debootstrap --second-stage</pre><br />
<br />
= Mandatory setup =<br />
<br />
== Add root passwd ==<br />
<br />
While in the chroot, run:<pre>passwd</pre><br />
<br />
== Hostname ==<br />
<br />
You do not wish to have your rootfs have the same hostname as your host machine, so it is wise to change this now, as this will surreptitiously influence things like your ssh keys.<br />
<br />
Simply edit ''/etc/hostname'', this can be done from both inside and outside of the chroot.<br />
<br />
== Fstab ==<br />
<br />
This can be done from both inside and outside of the chroot.<br />
<br />
=== Add tmpfs ===<br />
<br />
<pre>none /tmp tmpfs defaults,noatime,mode=1777 0 0</pre><br />
<br />
=== Add root filesystem ===<br />
<br />
<pre>/dev/mmcblk0p2 / ext4 defaults 0 1 </pre><br />
<br />
Rename this to ''/dev/mmcblk0p1'' if you use a single partition.<br />
<br />
=== Add boot partition (if present) ===<br />
<br />
<pre>/dev/mmcblk0p1 /boot vfat defaults 0 2 </pre><br />
<br />
Adjust filesystemtype accordingly.<br />
<br />
== Serial console ==<br />
<br />
=== With systemd ===<br />
<br />
* From within the chroot:<pre>systemctl enable serial-getty@ttyS0.service</pre><br />
<br />
* Outside of chroot:<pre>ln -s /lib/systemd/system/serial-getty@.service /mnt/etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service</pre><br />
<br />
=== With upstart ===<br />
<br />
Please follow [https://help.ubuntu.com/community/SerialConsoleHowto#line-18 this ubuntu howto], which can be done from outside the chroot.<br />
<br />
=== With sysvinit ===<br />
<br />
Add the following line to ''/etc/inittab'', independent of chroot (apart from the path):<br />
<pre>T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100</pre><br />
<br />
= Optional/deferrable setup =<br />
<br />
Most of these things can be done from within the chroot or on the actual machine. They are really nice to have, but not totally necessary before the first boot of the target machine.<br />
<br />
If debians servers are not resolving, you might need to copy the hosts' resolv.conf to the target filesystem before chrooting back in.<br />
<br />
== Locales ==<br />
<br />
Run:<pre>apt-get install locales<br />
dpkg-reconfigure locales</pre><br />
<br />
It might make sense to choose ''en_US.UTF-8''<br />
<br />
== Configure ethernet with dhcp ==<br />
cat <<END >> /etc/network/interfaces<br />
auto lo eth0<br />
allow-hotplug eth0<br />
iface lo inet loopback<br />
iface eth0 inet dhcp<br />
END<br />
<br />
== Expanded apts sources.list ==<br />
<br />
Here are some expanded sources.lists, which are bound to be out of date, to augment /apt/sources.list on the target rootfs.<br />
<br />
=== Debian ===<br />
Replace ''stretch'' with your chosen debian distribution name.<br />
<pre>deb http://http.debian.net/debian stretch main contrib non-free<br />
deb-src http://http.debian.net/debian stretch main contrib non-free<br />
deb http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb-src http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb http://security.debian.org/debian-security stretch/updates main contrib non-free<br />
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free</pre><br />
<br />
=== Ubuntu ===<br />
Replace ''cosmic'' with your chosen ubuntu version.<br />
<pre>deb http://ports.ubuntu.com/ cosmic main universe<br />
deb-src http://ports.ubuntu.com/ cosmic main universe<br />
deb http://ports.ubuntu.com/ cosmic-security main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-security main universe<br />
deb http://ports.ubuntu.com/ cosmic-updates main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-updates main universe</pre><br />
<br />
== Openssh-server ==<br />
<br />
Run:<pre>apt-get install openssh-server</pre><br />
<br />
If you want access as root, you will need to edit ''/etc/ssh/sshd_config''.<br />
<br />
=== Key based authentication ===<br />
<br />
Uncomment the following line:<br />
<pre>#PermitRootLogin prohibit-password</pre><br />
<br />
And add your key to ''/root/.ssh/authorized_keys''.<br />
<br />
=== Password based authentication ===<br />
<br />
Uncomment the ''PermitRootLogin'' line, and set it to ''yes''.<br />
<br />
<pre>PermitRootLogin yes</pre><br />
<br />
= Cleanup =<br />
<br />
From within the chroot, run ''apt-get clean'' to remove cached packages.<br />
<br />
If you were using a qemu chroot, then you need to remove ''/mnt/usr/bin/qemu-arm-static''.<br />
<br />
If you needed the hosts' resolv.conf, then you need to remove ''/mnt/etc/resolv.conf''<br />
<br />
= Tarring up the result =<br />
<br />
You spent some time setting this up, and you might not want to retrace the above steps every few days, so you might as well throw this into a 100ish MB tarball:<br />
<br />
From the host, from within ''/mnt/'', run:<br />
<pre>tar -cjpf /home/user/sunxi_rootfs.tar.bz2 .</pre><br />
<br />
Be careful when you unpack that, as rootfses are pretty much the only time tarballs should be untarred in the local directory.</div>
Rellla
https://linux-sunxi.org/index.php?title=U-Boot&diff=22640
U-Boot
2019-08-14T21:29:49Z
<p>Rellla: /* Install U-Boot */ add arm64</p>
<hr />
<div>Support for sunxi devices is increasingly available from [http://www.denx.de/wiki/U-Boot upstream U-Boot]. This page describes that support. We have a separate page for the 'legacy' [[U-Boot|sunxi branch of U-Boot]].<br />
<br />
{{alert|This document is mainly for 32bits ARM device. Differences for ARM64 are only mentioned in the [[#Compile U-Boot|Compile U-Boot]] section. Fort more info see directly board/sunxi/README.sunxi64 in uboot sources}}<br />
= Status =<br />
<br />
The current U-Boot release fully supports major functions (except NAND) on<br />
all the older Allwinner SoCs ([[A10]]/[[A10s]]/[[A13]]/[[A20]]/[[A23]]/[[A31]]/[[A31s]]) and has basic support for the more recent [[A33]], [[A64]], [[A80]], [[A83T]], [[H2+]], [[H3]], [[H5]], and [[V3s]](No MPI-DSI Lcd).<br />
<br />
The next release will be v2019.07.<br />
<br />
See also: [http://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle and Release Schedule].<br />
<br />
== In Progress ==<br />
* [[A83T]] USB support (WiP: Chen-Yu Tsai (wens)) [http://lists.denx.de/pipermail/u-boot/2016-March/250003.html patch-rfc]<br />
* [[A83T]] PSCI support (WiP: Timothy Pearson) [https://patchwork.ozlabs.org/patch/622853/ patch-rfc]<br />
* [[H2+]]/[[H3]]/[[A64]] HDMI / Composite out support (WiP: Jernej Škrabec) [https://github.com/jernejsk/u-boot/tree/de2_wip git-repo]<br />
* [[A20]] SPI driver (WiP: Stephan van Schaik (Swabbles)) [http://lists.denx.de/pipermail/u-boot/2017-February/280966.html patch-rfc] [https://github.com/StephanvanSchaik/u-boot/tree/sunxi-spi git-repo]<br />
* [[A31]]/[[A80]]/[[A64]] SPI driver (WiP: Philipp Tomsich) [https://lists.denx.de/pipermail/u-boot/2017-February/281946.html patch-v1]<br />
* [[R40]] [[Banana Pi M2 Ultra]] support (WiP: Chen-Yu Tsai (wens)) [https://lists.denx.de/pipermail/u-boot/2017-March/282760.html patch]<br />
<br />
== Next Release (v2019.07) ==<br />
[http://git.denx.de/?p=u-boot/u-boot-sunxi.git;a=shortlog;h=refs/heads/master Development branch]<br />
* Boards<br />
** [[Beelink GS1]]<br />
** [[Oceanic 5205 5inMFD]]<br />
** [[Olimex Teres-A64]]<br />
<br />
== v2019.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.04 v2019.04 Release branch]<br />
* Boards<br />
** [[Emlid Neutis N5]]<br />
<br />
== v2019.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.01 v2019.01 Release branch]<br />
* Boards<br />
** [[Pine Pinebook]]<br />
** [[Pine Pine64-LTS]]<br />
** [[Sinovoip Banana Pi M2 Zero]]<br />
** [[Xunlong Orange Pi Lite 2]]<br />
<br />
== v2018.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.11 v2018.11 Release branch]<br />
<br />
== v2018.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.09 v2018.09 Release branch]<br />
* Boards<br />
** [[Pine64#Variants | Pine64 SoPINE]]<br />
** [[Xunlong Orange Pi One Plus]]<br />
** [[PineH64]]<br />
<br />
== v2018.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.07 v2018.07 Release branch]<br />
* Boards<br />
** [[Xunlong_Orange_Pi_Zero#Variants | Orange Pi R1 ]]<br />
** [[Libre Computer Board ALL-H3-CC]], H2+ version<br />
** [[Libre Computer Board ALL-H3-CC]], H5 version<br />
** [[Orange Pi Zero Plus]]<br />
** [[Sinovoip_Banana_Pi_M2_Berry | Banana Pi M2 Berry]]<br />
<br />
== v2018.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.05 v2018.05 Release branch]<br />
* Boards<br />
** [[Olimex A20-SOM204-EVB]]<br />
** [[Olimex A20-SOM204-EVB]] with eMMC<br />
<br />
== v2018.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.03 v2018.03 Release branch]<br />
* Boards<br />
**[[Libre Computer Board ALL-H3-CC]], H3 version<br />
<br />
== v2018.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.01 v2018.01 Release branch]<br />
* Boards<br />
** [[NanoPi NEO Plus 2]]<br />
** [[TBS A711]]<br />
<br />
== v2017.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.11 v2017.11 Release branch]<br />
* Boards<br />
** [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
** [[FriendlyARM Nanopi M1 Plus]]<br />
** [[Sinovoip Banana Pi M2]] Magic<br />
<br />
== v2017.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.09 v2017.09 Release branch]<br />
* Boards<br />
** [[FriendlyARM_NanoPi_A64 | NanoPi A64 ]]<br />
** [[Olimex_A20-OLinuXino-Lime2 | OLinuXino Lime2 (A20)]] with eMMC<br />
** [[Olimex_A64-OLinuXino | OLinuXino A64]]<br />
<br />
== v2017.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.07 v2017.07 Release branch]<br />
* Boards<br />
** [[Xunlong Orange Pi Win]] and Win Plus<br />
** [[Xunlong Orange Pi Prime]]<br />
** [[Xunlong Orange Pi Zero Plus 2]]<br />
<br />
== v2017.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.05 v2017.05 Release branch]<br />
* [[A64]] SPL support<br />
* [[H5]] support (with SPL)<br />
* Boards<br />
** [[Xunlong Orange Pi PC 2]]<br />
** [[FriendlyARM NanoPi NEO Air]]<br />
<br />
== v2017.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.03 v2017.03 Release branch]<br />
<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=2fc554d3e37c27c5b8d2540d7a571dc53152a301 enable H3 EMAC for the nanopi neo]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=59603d026b9ad3f51a8d69c2a94d3a511639c525 add proper device tree for Orange Pi Zero boards]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=7490130c9f8a4e17e858a38c767ad9ed64bd777b OrangePi Zero: defconfig: enable SPI flash]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=8b15f8eb67a48a98d5c131c1d44aa78c236c064d OrangePi Zero: add Ethernet node]<br />
<br />
== v2017.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.01 v2017.01 Release branch]<br />
<br />
* add support for [[Nintendo NES Classic Edition]]<br />
<br />
== v2016.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.11 v2016.11 Release branch]<br />
<br />
* Hans de Goede and Ian Campbell step down as U-boot Sunxi maintainers<br />
<br />
* A80<br />
** Full SPL support<br />
<br />
* A64<br />
** USB support<br />
<br />
* H3<br />
** DRAM impedance calibration fixes<br />
<br />
* Boards<br />
** [[FriendlyARM NanoPi NEO]]<br />
** [[Sinlinx SinA33]]<br />
*** USB host and OTG support<br />
** [[Cubietech Cubieboard4]]<br />
<br />
== v2016.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.09 v2016.09 Release branch]<br />
<br />
* General<br />
** GPIO fixes<br />
** PSCI rewrite in C part 2<br />
** NAND controller driver<br />
** H3/A64 Ethernet (EMAC) support<br />
<br />
* Boards<br />
** [[Empire Electronix M712]]<br />
** [[Inet Q972]]<br />
** [[Olimex A33-OLinuXino]]<br />
** [[Xunlong Orange Pi PC | Xunlong Orange Pi PC Plus]]<br />
** [[Xunlong Orange Pi Plus 2E]]<br />
<br />
== v2016.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.07 v2016.07 Release branch]<br />
<br />
* AXP809 PMIC support<br />
<br />
* PSCI rewrite in C part 1<br />
<br />
* Boards<br />
** [[Allwinner R16 EVB]]<br />
** [[Inet 86dz]]<br />
** [[Polaroid MID2407PXE03]]<br />
<br />
== v2016.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.05 v2016.05 Release branch]<br />
<br />
* [[A23]]<br />
** Support new revisions<br />
<br />
* [[A64]]<br />
** 64-bit ARMv8 port, basic support (MMC, UART, no USB, no Ethernet)<br />
** (basic) EFI support (allows booting EFI applications (like grub) or kernels)<br />
<br />
* I2C support fix for families with separate reset control<br />
<br />
* SID e-fuse support for A83T and H3<br />
<br />
* Sync up dts files with Linux kernel<br />
* Update compatible strings for GPIO<br />
<br />
* Boards<br />
** colorfly e708 q1, Difrence DIT4350, Polaroid MID2809PXE4, Itead Ibox, icnova-a20-swac, yones toptech bs1078-v2, Dserve DSRV9703C, <br />
** [[Cubietech Cubietruck Plus]]<br />
** [[Sinlinx SinA31s]]<br />
** [[Xunlong Orange Pi 2]]<br />
** [[Pine64]]<br />
** [[LicheePi Zero]]<br />
<br />
== v2016.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.03 v2016.03 Release branch]<br />
<br />
* PRCM i2c support<br />
<br />
* A83T<br />
** LPDDR3 support<br />
<br />
* H3<br />
** USB host support<br />
** PSCI (security switches included)<br />
** sy8106a i2c-based regulator support<br />
<br />
* AXP PMICs<br />
** Power off support<br />
<br />
* Boards<br />
** [[Banana Pi M3]] (SinoVoip BPi-M3)<br />
<br />
{{knownProblems|1=<br><br />
* Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=c32a6fd07b1839e4a45729587ebc8e1c55601a4d c32a6fd] breaks MII detection (and thus U-Boot networking) for sunxi GMAC.<br />
<br />
You might observe the PHY not initializing (e.g. no LED activity), and the command <code>mii&nbsp;info</code> likely will list useless information on all available PHY slots (0x00-0x1F). Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba fc8991c] fixes it again, but unfortunately that means U-Boot release '''v2016.03 is affected'''.}}<br />
<br />
== v2016.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.01 v2016.01 Release branch]<br />
* sun8i-H3 support<br />
<br />
* Boards<br />
** Empire Electronix D709 tablet<br />
** A83T HomletV2 Board<br />
** [[Lamobo R1]]<br />
** [[Xunlong Orange Pi Plus]]<br />
** [[Orange Pi PC|Xunlong Orange Pi PC]]<br />
** [[NextThingCo_CHIP | C.H.I.P.]]<br />
<br />
== v2015.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.10 v2015.10 Release branch]<br />
<br />
* Console/display output<br />
:* ANX9804 LCD-eDP bridge chip support<br />
:* Composite video output support<br />
* NAND SPL driver<br />
<br />
* Boards<br />
** Olimex A20-SOM-EVB<br />
** A10s-Wobo-i5 (settop box)<br />
** Point of View pov protab2-ips9 tablet<br />
** Auxtek-T003 HDMI stick<br />
** A10 tablets based on the iNet-tek iNet-1 mainboard (e.g. Point of View Protab2 XXL, Cherry M1007)<br />
** A10 tablets based on the inet9f-rev03 mainboard (e.g. qware tb-g100 tablet)<br />
** A13 tablets based on on the inet98v_rev2 mainboard<br />
** A10 tablets based on the inet97fv2 mainboard<br />
** A23 tablets based on the gt90h-v4 mainboard<br />
<br />
== v2015.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.07 v2015.07 Release branch]<br />
<br />
* Serial number support<br />
* Device model support<br />
** Ethernet<br />
** GPIO<br />
* sun8i (A33) support (including SPL)<br />
* sun9i (A80) basic support<br />
** UART<br />
** MMC<br />
* sun6i/sun8i<br />
** PSCI CPU hotplugging<br />
* SPL<br />
** <strike>NAND support</strike> reverted: [http://git.denx.de/?p=u-boot.git;a=commit;h=da9971d1b3bdb554d4a4ac948119f8b2616bbcce Revert commit]<br />
<br />
* Boards:<br />
** [[Mixtile LOFT-Q]]<br />
** [[Ainol AW1]]<br />
** [[Yones Toptech BD1078]]<br />
** [[iNet 3W]]<br />
** [[iNet 3F]]<br />
** [[ET-Q8 A33]]<br />
** [[Ippo q8h#v1.2 | Ippo q8h v1.2 A33 1024x600]]<br />
** [[ga10h v1.1]]<br />
** [[Merrii A80 Optimus Board]]<br />
<br />
== v2015.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.04 v2015.04 Release branch]<br />
<br />
* sun7i (A20) [[PSCI]] CPU hotplug<br />
* sun8i (A23) SPL<br />
** RSB<br />
** AXP223<br />
<br />
* sun9i (A80) basic support<br />
** Clocks<br />
** RSB<br />
<br />
* Console/display output<br />
** VGA via internal DAC<br />
** VGA via external DAC on LCD interface<br />
** LVDS<br />
** SSD2828 MIPI bridge<br />
** tl059wv5c0 LCD panel<br />
<br />
* USB OTG<br />
<br />
* Boards:<br />
** [[CSQ CS908]]<br />
** [[Merrii Hummingbird A31]]<br />
** [[Ippo q8h#Q8H-V1.2 | Ippo q8h v1.2]]<br />
** [[MSI Primo81]]<br />
** [[MSI Primo73]]<br />
** [[LinkSprite pcDuino]]<br />
** [[LinkSprite pcDuino V2]]<br />
** [[LeMaker Banana Pro]]<br />
** [[Rikomagic mk802]]<br />
** [[Rikomagic mk802ii]]<br />
** [[Semitime g2]] (See also [[Format_MK802]] with A10s)<br />
** [[MarsBoard A10]]<br />
** [[Gemei G9]]<br />
** [[Chuwi V7 CW0825]]<br />
** [[Mele M5]]<br />
** [[Hyundai A7HD]]<br />
** [[LinkSprite pcDuino3 Nano]]<br />
** [[TZX-Q8-713B7]]<br />
** [[Inet 86vs]]<br />
** [[Ampe A76]]<br />
** [[Jesurun Q5]]<br />
** [[MK808C]]<br />
** [[Mele I7]]<br />
** [[Forfun Q88DB]]<br />
** [[Wits Pro A20 DKT]]<br />
** [[Xunlong Orange Pi]]<br />
** [[Xunlong Orange Pi Mini]]<br />
** [[Wexler TAB 7200]]<br />
<br />
== v2015.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.01 v2015.01 Release branch]<br />
<br />
* sun6i (A31) processor support<br />
** P2WI<br />
** AXP221<br />
** SPL<br />
** GMAC<br />
* sun8i (A23) processor support (no SPL)<br />
* sun6i/sun8i reset support<br />
* Console/display output<br />
** HDMI only<br />
** simplefb<br />
<br />
* Boards:<br />
** [[Mele M3]]<br />
** [[Olimex A20-OLinuXino-Lime2]]<br />
** WITS Colombus Board<br />
** [[Mele M9]]<br />
<br />
== v2014.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.10 v2014.10 Release branch]<br />
<br />
* AHCI (SATA)<br />
* sun4i (AKA A10) and sun5i (AKA A10s and A13) processors<br />
* EMAC Ethernet<br />
* AXP152 and AXP209 power controllers<br />
* EHCI USB<br />
* SMP support for sun7i via [[PSCI]].<br />
<br />
* Boards:<br />
** [[LeMaker Banana Pi]]<br />
<br />
== v2014.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.07 v2014.07 Release branch]<br />
* sun7i (AKA A20) processors<br />
* MMC<br />
* GMAC Ethernet<br />
* Boards:<br />
** [[Cubietech Cubietruck]]<br />
<br />
= Supported Devices =<br />
<categorytree mode=pages hideroot=on>Mainline_U-Boot</categorytree><br />
Beware: some of the above might only be supported in the latest development version.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[toolchain]] installed and added to your PATH.<br />
<br />
You may also need to add some additional packages to build U-Boot:<br />
<pre>apt-get install swig python-dev</pre><br />
<br />
== Get the Device-tree Compiler ==<br />
<br />
Depending on your desired U-Boot version, a sufficiently up-to-date ''dtc'' may be required. (The build process will error on an outdated ''dtc'', and request you to upgrade it.) The installation of dtc is described in the [[Device_Tree#Get_the_Device-tree_Compiler|Device tree article]].<br />
<br />
If you are going to build a Linux kernel alongside U-Boot, it might also be worth to examine the kernel sources - as they come with ''dtc'' included under <code>${KERNEL_DIR}/scripts/dtc/</code>.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone the u-boot repository by running:<br />
<pre>git clone git://git.denx.de/u-boot.git</pre><br />
<br />
{{alert|You should prefer using a stable release, unless you're testing recently added boards or experimental features that have not yet made into stable release:<br />
<br />
git checkout v2016.01 # or whatever is latest<br />
}}<br />
== Determine build target ==<br />
<br />
Go to your u-boot tree and search in the directory ''configs/'' for your board, the file name looks like ''<board_name>_defconfig''.<br />
<br />
So, if your device is [[Cubietech Cubieboard2|Cubieboard2]] your build target is ''Cubieboard2_defconfig''.<br />
<br />
== Build ==<br />
'''Arm Trusted Firmware (arm64)'''<br />
<br />
In order to build U-Boot for a arm64 device you need to build Arm Trusted Firmware (ATF) as a prerequisite first. Change <platform> to your needs. ''PLAT=sun50i_a64'' for example is suitable for H5 and A64 devices. (See board/sunxi/README.sunxi64 in uboot sources for more infos.)<br />
<pre>git clone https://github.com/ARM-software/arm-trusted-firmware.git<br />
cd arm-trusted-firmware<br />
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=<platform> DEBUG=1 bl31</pre><br />
<br />
When you have determined what <board_name> just configure U-Boot with a suitable default configuration. Use menuconfing to play with the settings if you feel like it and then just build it:<br />
<br />
'''armhf'''<br />
<pre>make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
'''arm64'''<br />
<pre>make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin <board_name>_defconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin menuconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin</pre><br />
<br />
(When compiling natively, omit the <kbd>CROSS_COMPILE=…</kbd>)<br />
<br />
When the build has completed, there will be ''u-boot-sunxi-with-spl.bin'' available in your u-boot tree. The installation step will instruct how to install this on the installation media (e.g. a SD card), but first U-Boot needs to be configured.<br />
<br />
= Configure U-Boot =<br />
<br />
This article provides a collection of various scenarios for booting with U-Boot. <br />
<br />
== Boot ==<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[Mainline_NAND_Howto#Booting_from_NAND|NAND]]<br />
* [[Bootable SPI flash | SPI NOR Flash]]<br />
* [[FEL/USBBoot | USB OTG]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[Fastboot]]<br />
<br />
=== Booting with boot.cmd ===<br />
For booting from SD with mainline U-Boot, the recommended way is:<br />
<br />
* create a file ''boot.cmd'' on the first partition (also check [[Kernel arguments]] for extra 'bootargs' options):<br />
<br />
{| class="wikitable"<br />
! mainline kernel<br />
! sunxi-3.4 kernel<br />
|-<br />
|<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000 - 0x43000000<br />
||<br />
setenv bootm_boot_mode sec<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000<br />
|}<br />
* If you also want to use an initramfs, please refer to the [[Initial Ramdisk]] article for details.<br />
:{{info|If you're wondering why setting '''bootm_boot_mode''' might be necessary for older kernels, have a look at the details of [[PSCI]].}}<br />
<br />
:{{note|Directly using a '''zImage''' is also supported by U-Boot for the sunxi platform.}} Substitute ''zImage'' in place of ''uImage'' in the commands above, and then use the '''bootz''' command instead of ''bootm''.<br />
:{{note|In order to boot your newly created '''arm64''' kernel, remember to use ''Image'' instead of ''uImage/zImage''. You also have to load it with ''booti'' instead of ''bootm/bootz''. So you have to adopt the corresponding lines in the boot.cmd file.}}<br />
<br />
=== Booting with extlinux.conf ===<br />
Mainline U-Boot also use syslinux/extlinux as payload.<br />
<br />
You need to install the boot configuration file extlinux.conf in an ext2/3/4 partition of SD card and U-Boot will find and execute it. This is conceptually identical to creating a GRUB configuration file on a desktop PC.<br />
<br />
Example extlinux.conf:<br />
<pre><br />
TIMEOUT 100<br />
DEFAULT default<br />
MENU TITLE Boot menu<br />
<br />
LABEL default<br />
MENU LABEL Default<br />
LINUX /zImage<br />
FDT /sun4i-a10-marsboard.dtb<br />
APPEND root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8<br />
<br />
LABEL exit<br />
MENU LABEL Local boot script (boot.scr)<br />
LOCALBOOT 1<br />
</pre><br />
<br />
== Setting u-boot environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the U-Boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== NAND ==<br />
Example U-Boot environment, as found in <code>uEnv.txt</code> from a stock android U-Boot environment partition<br />
<br />
<pre>bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot</pre><br />
<br />
== NFS ==<br />
<br />
Recent version of U-Boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
{{Note|on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.}}<br />
<br />
== FB console ==<br />
<br />
To get U-Boot output shown on the built-in framebuffer driver (currently, HDMI only at 1024x768), add the following to your boot.cmd:<br />
<pre>setenv stdout=serial,vga<br />
setenv stderr=serial,vga</pre><br />
The default environment has these values set as well.<br />
<br />
== LCD Settings ==<br />
<br />
There is a [[LCD|separate wiki page about configuring LCD]] in U-Boot.<br />
<br />
= Install U-Boot =<br />
<br />
* Convert the ''boot.cmd'' to ''boot.scr'' using [[U-Boot/Tools#mkimage|mkimage]]:<br />
<br />
'''armhf'''<br />
mkimage -C none -A arm -T script -d boot.cmd boot.scr<br />
'''arm64'''<br />
mkimage -C none -A arm64 -T script -d boot.cmd boot.scr<br />
* Copy the bootloader to the installation media<br />
<br />
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
* copy kernel files to the first partition<br />
** For a 3.4 kernel you need ''uImage'' (linux kernel) and ''script.bin'' (binary representation of [[Fex Guide|FEX]]).<br />
** For a device tree based kernel ("mainline", 4.x) you need the kernel image (''uImage'', ''zImage'' or ''Image'') and the device-specific ''.dtb'' file (the one referenced in the ''${fdtfile}'' above) that is generated as part of your kernel compilation.<br />
<br />
Look at [[Manual build howto]] for more details.<br />
<br />
= Troubleshooting =<br />
<br />
== USB 1.x, USB keyboards (U-Boot < v2015.07) ==<br />
<br />
'''U-Boot v2015.07 and later shouldn't have problems supporting mixed USB 1.x/2.0 devices.''' OHCI and EHCI no longer conflict with each other (after the switch to device model).<br />
<br />
Previous U-Boot versions (v2015.04 and older) have a problem supporting both USB 1.x (OHCI) and USB 2.0 (EHCI) at the same time - the latter includes the ''SUNXI_EHCI'' driver for Allwinner boards.<br />
<br />
:Unfortunately, this also affects many '''USB HID / keyboard''' devices which would not be detected properly by U-Boot. The typical message in this case is "''cannot reset port N!?''", where ''N'' is whichever USB port those devices were attached to.<br />
<br />
{{info|A possible workaround is to place an external USB 2.0 hub between your board and these USB devices.}}<br />
<br />
See: http://lists.denx.de/pipermail/u-boot/2015-January/200162.html.<br />
<br />
== U-Boot 2015.07+ won't start ==<br />
If you're using a recent (device model based) U-Boot, and the SPL just hangs after initializing the DRAM (<code>CPU: 912000000Hz, AXI/AHB/APB: 3/2/2</code> or something similar), chances are that your main U-Boot binary may be missing DTB information / a proper [[device tree]]. Depending on the (possibly outdated) instructions you followed: double-check that you're not incorrectly using ''u-boot.bin'' instead of ''u-boot'''-dtb'''.bin'', or ''u-boot.img'' instead of ''u-boot'''-dtb'''.img''.<br />
<br />
== Legacy kernel won't start ==<br />
* If your 3.4.x kernel refuses to boot / gets stuck right after ''"Starting kernel ..."'':<br />
** Double-check that '''bootm_boot_mode''' is set to "'''sec'''"! (see [[#Boot|above]])<br />
** For U-Boot 2018.09-rc1 or later, set CONFIG_ARMV7_LPAE=n in .config or apply https://patchwork.ozlabs.org/patch/1058338/<br />
* If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see [[#Unrecognized.2Funsupported_machine_ID|below]]).<br />
<br />
== Unrecognized/unsupported machine ID ==<br />
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a HDMI monitor or a LCD display!):<br />
<pre><br />
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).<br />
</pre><br />
In this case either upgrade to a recent ''stage/sunxi-3.4'' kernel ([https://github.com/linux-sunxi/linux-sunxi/tree/stage/sunxi-3.4 github branch]) - or try to '''"Enable workarounds for booting old kernels"''' in U-Boot:<br />
:<code>make menuconfig</code> or <code>make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)<br />
<br />
If upgrading to ''stage/sunxi-3.4'' is not an option (i.e. using some old and very much diverged<br />
sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (=&nbsp;selectively merged <u>as a set</u>):<br />
<pre><br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/9a1cd034181af628d4145202289e1993c1687db6.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
git am 9a1cd034181af628d4145202289e1993c1687db6.patch<br />
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
</pre><br />
{{warn|It is required to apply '''all''' of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.|}}<br />
<br />
<br />
== ImportError: No module named _libfdt ==<br />
<br />
If you see the following error when compiling on Arch Linux arm<br />
<pre><br />
ImportError: No module named _libfdt<br />
</pre><br />
<br />
install dtc<br />
<pre><br />
sudo pacman -S dtc<br />
</pre><br />
<br />
= Adding a new device to upstream U-Boot =<br />
<br />
http://lists.denx.de/pipermail/u-boot/2014-December/199351.html<br />
<br />
== DRAM Settings ==<br />
<br />
=== Failsafe DRAM settings, based on standard JEDEC timings ===<br />
<br />
Each device has DRAM settings configured in its defconfig file in the U-Boot "configs" directory (here is [http://git.denx.de/?p=u-boot.git;a=blob;f=configs/Cubietruck_defconfig;h=b64f84f2b8d2d48bed3130aecd31d220013061f0;hb=HEAD an example for the Cubietruck board]). The slow failsafe DRAM settings for an A10/A13/A20 device may look like:<br />
<pre style="background-color: lightgreen;"><br />
+S:CONFIG_DRAM_CLK=360<br />
+S:CONFIG_DRAM_ZQ=123<br />
+S:CONFIG_DRAM_EMR1=4<br />
+S:CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y<br />
</pre><br />
<br />
A more complete set of available Kconfig options and their descriptions can be found here: http://git.denx.de/?p=u-boot.git;a=blob;f=board/sunxi/Kconfig;h=e1d4ab148f0838d746889775cfbab5bed57838bf;hb=a705ebc81b7f91bbd0ef7c634284208342901149#l177<br />
<br />
=== The settings from the Android firmware ===<br />
<br />
Somewhat better settings can be retrieved by the [[Retrieving_device_information#Reading_memory_information_from_registers|meminfo tool]] from the stock Android or GNU/Linux system, provided by the device manufacturer. It still makes sense to [[Hardware_Reliability_Tests#DRAM|test the reliability]] of the resulting DRAM configuration. Because some vendors are providing poor configuration for ZQ or EMR1, but nevertheless trying to optimistically set the DRAM clock speed too high.<br />
<br />
=== Performance optimized DRAM settings ===<br />
<br />
Tuning DRAM setting for each individual board can provide much better performance than the failsafe defaults. This involves trial and error testing of different settings using a tool until an optimal combination is found. The [[DRAM_Controller|DRAM Controller page]] provides links to start researching this topic. This approach will be time consuming, so a satisfactory solution using one of the other approaches may be best to start with.<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:Development]]<br />
[[Category:Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=22639
Mainline Kernel Howto
2019-08-14T21:27:51Z
<p>Rellla: /* boot.cmd */ add arm64</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel.<br />
<br />
Warning: Mainline NAND support is not compatible with Allwinner NAND support and will make your existing NAND unreadable.<br />
<br />
= Current status =<br />
<br />
Please refer to the [[Linux mainlining effort]] page for detailed status of the mainlining effort, and supported boards and driver coverage.<br />
<br />
Some SoCs and some subsystems might not be supported yet, you might need to revert to our [[Linux_Kernel|heavily hacked kernel version]] that's close to Allwinners code for A10/A13/A20, or use a BSP kernel. <br />
<br />
= Prerequisites =<br />
<br />
You should be running through this howto as part of our [[Manual build howto]]. It guides you through toolchain, u-boot and rootfs steps as well.<br />
<br />
= Kernel source =<br />
<br />
== Linus' tree ==<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually.<br />
<br />
For a full clone (if you wish to do future development) run:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git</pre><br />
<br />
Often a shallow clone will suffice to just get mainline working:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1</pre><br />
<br />
== Patches merged in the next stable release ==<br />
<br />
There is also a ''sunxi-next'' branch maintained with all the inclusions that have been accepted, merged and will be included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
<pre>git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-next git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-next --depth=1</pre><br />
<br />
= Kernel Configuration =<br />
<br />
== defconfig ==<br />
<br />
To get a working kernel, just use the following for configuration:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig</pre><br />
== oldconfig ==<br />
<br />
If you have an old relevant .config, e.g. if you installed a late debian, and now want to build the kernel, you can copy it in and run <code>make ARCH=arm oldconfig</code> or <code>make ARCH=arm64 oldconfig</code>.<br />
<br />
:{{note|If you happen to run <code>make menuconfig</code> without specifying the architecture, architecture-specific options will be '''lost'''; in that case you'll need to go back to an existing config and start again.}}<br />
<br />
== manual configuration ==<br />
<br />
If you wish to alter configuration, run:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig</pre><br />
<br />
= Kernel Compilation =<br />
<br />
== zImage/ Image ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 Image</pre><br />
After the compilation ended, you should have generated '''zImage''' in ''arch/arm/boot'' (armhf) or '''Image''' in ''arch/arm64/boot'' (arm64).<br />
<br />
== Devicetree ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 dtbs</pre><br />
You should now have a device tree binary (''.dtb'') in ''arch/arm/boot/dts'' (armhf) or ''arch/arm64/boot/dts'' (armhf), which matches your device, it should be listed on the device page for your device.<br />
<br />
All the sunxi dtbs follow the pattern <family>-<soc>-<board>.dtb.<br />
<br />
== modules ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 modules<br />
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 modules<br />
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
After the build succeeds, you can find the modules in the supplied <tt>INSTALL_MOD_PATH</tt> directory.<br />
<br />
== Specific Debian kernel notes ==<br />
<br />
Having installed a late debian using the arm installer, building the Debian kernel is an attractive proposition. (for Debian install, see [[Rikomagic_mk802]] 'Images' section).<br />
<br />
Some notes on doing so (as it's not so obvious from Google): You can download the sources using apt-get linux-source. Today, Dec 2016, this will get you ~4.8.7. Given sufficient space, this can be built on device (~4 days compile time), but probably better to cross-compile. Extract the tar to a suitable location, and copy /boot/config-<your current version> to .config. You may want to edit the .config comment out CONFIG_MODULE_SIG_FORCE and CONFIG_MODULE_SIG. Prepare your cross machine, and then run <br />
<br />
<code>make ARCH=arm oldconfig</code><br />
<br />
(you may get some new options).<br />
<br />
Now, the important bit. IF 'uname -a' on your target shows 'armmp' anywhere, your kernel will need to be this 'flavor'; if it is not, then your newly created .deb kernel package will not install on the device..... So, to stamp it as flavor 'armmp':<br />
<br />
Create a file called 'localversion' in the linux-source directory, and put -armmp inside. This will then generate a kernel stamped with the version '4.8.7-armmp' rather than plain '4.8.7', and will make dpkg/flash-kernel happy on install.<br />
<br />
Then, to make the kernel, use; substituting your cross compiler;:<br />
<br />
<code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg</code><br />
<br />
Note: if you want to build, but not start from scratch, the target bindeb-pkg does not do a clean first, whereas deb-pkg does.<br />
<br />
You should end up with a file in one folder lower called something like <code>linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
To install this on the device, go to that folder, or copy it to the device, and use<br />
<br />
<code>dpkg -i linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
and if successful, reboot...<br />
<br />
<br />
Note from the author of this last bit: I'm no expert on this, but as it took me over a week to establish the above; I hope it helps somebody! Please feel free to enhance or correct any of the above.<br />
'''If you do intend to reproduce this, then please make notes as you do it; a good (accurate) from scratch description would be a bonus here.'''<br />
<br />
= Boot =<br />
== SD-Card Boot partition ==<br />
<br />
Like with our [[Manual_build_howto#Setting_up_the_boot_partition | Manual build howto]], you have to set up the boot partition. Instead of ''script.bin'', you need to install your board-specific '''.dtb''' to the boot partition. (Above kernel compilation should generate this binary representation of the [[device tree]] automatically.)<br />
<br />
=== boot.cmd ===<br />
Like in the [[Manual_build_howto#boot.cmd| Manual build howto]], create a boot.cmd with the following contents:<br />
<br />
<pre>fatload mmc 0 0x46000000 zImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}<br />
<br />
bootz 0x46000000 - 0x49000000</pre><br />
:{{note|In order to boot an '''arm64''' kernel, remember to use ''Image'' instead of ''zImage''. You also have to load it with ''booti'' instead of ''bootz''. So you have to adopt the corresponding lines in the above boot.cmd file.}}<br />
Replace ''fatload'' with ''ext2load'' if needed. [[#Early_printk|earlyprintk]] is optional; if your kernel boots up just fine, you might as well remove it.<br />
<br />
If you are using an older U-Boot (you shouldn't - {{Remove|Which?}}), you might require the following line, to keep the extracted kernel from overwriting the device tree configuration:<br />
<pre>setenv fdt_high ffffffff</pre><br />
<br />
If you wish to use an initramfs, then the ''bootz'' command becomes:<br />
<pre>bootz 0x46000000 0x<initramfs-address> 0x49000000</pre><br />
<br />
Now [[Mainline_U-boot#Boot|generate boot.scr]]. Don't forget to copy over your ''zImage'' and <board>.dtb files as well.<br />
<br />
== eMMC boot partition ==<br />
<br />
[http://en.wikipedia.org/wiki/MultiMediaCard#eMMC eMMC] is very similar to the SD card case (see above). From a user's perspective, think of it as an "internal" memory card. Some devices are able to boot entirely from eMMC, forgoing the need for an external SD card.<br />
<br />
{{info|Keep a keen eye on the numbering of the ''mmcblk'' devices when switching the boot process between SD card and eMMC, e.g. during installation.}}<br />
:The Linux kernel may change device numbers depending on which mmc devices are actually present.<br />
:For example: If your SD card corresponds to ''mmc0'', and the eMMC is ''mmc1'', you'll probably end up with the eMMC as ''mmcblk'''1''''' when a SD card is also present (with the latter being ''mmcblk'''0'''''). But it's likely that the eMMC becomes ''mmcblk'''0''''' as soon as no SD card (''mmc0'') is present. If in doubt, check the kernel messages and adjust your partition layout / boot options accordingly.<br />
<br />
== Network boot setup ==<br />
<br />
{{Remove|TODO.}} Fold in [[Possible setups for hacking on mainline]].<br />
<br />
= Extra features =<br />
<br />
== SYSV IPC (debian users!) ==<br />
<br />
The current sunxi_defconfig has actually become rather complete, but SYSV IPC is disabled, and it is important for the fakeroot tool which is used for making debian packages.<br />
<br />
Go to:<br />
<pre> General setup ---></pre><br />
<br />
Then enable '''CONFIG_SYSVIPC''':<br />
<pre>[*] System V IPC</pre><br />
<br />
== Early printk ==<br />
<br />
If and only if your kernel does nothing, it pays to enable early printk support.<br />
<br />
Go to:<br />
<pre> Kernel hacking ---></pre><br />
<br />
Then enable '''CONFIG_DEBUG_KERNEL''':<br />
<pre>[*] Kernel debugging</pre><br />
<br />
To actually get early printk, you need to also enable '''CONFIG_DEBUG_LL''', select one of the '''CONFIG_DEBUG_SUNXI_''' options, and enable '''CONFIG_EARLY_PRINTK''':<br />
<pre>[*] Kernel low-level debugging functions (read help!)<br />
Kernel low-level debugging port (Kernel low-level debugging messages via sunXi UART0) ---><br />
[*] Early printk</pre><br />
<br />
The selection of the debugging port ('''CONFIG_DEBUG_SUNXI_''') depends on the board you are using. The selection of these is this contrived as these are all symbolic names for the raw addresses for the debug port.<br />
* For most SoCs, you should first select '''DEBUG_SUNXI_UART0''':<pre>(X) Kernel low-level debugging messages via sunXi UART0</pre><br />
* For A13, try '''DEBUG_SUNXI_UART1''' first:<pre>(X) Kernel low-level debugging messages via sunXi UART1</pre><br />
* For A23, try '''DEBUG_SUNXI_R_UART''' first:<pre>(X) Kernel low-level debugging messages via sunXi R_UART</pre><br />
* For A80, try '''DEBUG_SUN9I_UART0''' first:<pre>(X) Kernel low-level debugging messages via sun9i UART0</pre><br />
<br />
== simplefb ==<br />
<br />
{{Remove | TODO: This is now part of defconfig anyway. Be sure to add the console command line option to the console/display support page.}}<br />
<br />
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.<br />
<br />
= Adding a new device =<br />
<br />
Mainly, you have to write a [[Device Tree|device description]]. Please [[Sending_patches|send a patch]] to help others finding good examples.<br />
<br />
=See also=<br />
* [[Manual build howto]]<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=U-Boot&diff=22638
U-Boot
2019-08-14T21:26:07Z
<p>Rellla: /* Booting with boot.cmd */ add arm64</p>
<hr />
<div>Support for sunxi devices is increasingly available from [http://www.denx.de/wiki/U-Boot upstream U-Boot]. This page describes that support. We have a separate page for the 'legacy' [[U-Boot|sunxi branch of U-Boot]].<br />
<br />
{{alert|This document is mainly for 32bits ARM device. Differences for ARM64 are only mentioned in the [[#Compile U-Boot|Compile U-Boot]] section. Fort more info see directly board/sunxi/README.sunxi64 in uboot sources}}<br />
= Status =<br />
<br />
The current U-Boot release fully supports major functions (except NAND) on<br />
all the older Allwinner SoCs ([[A10]]/[[A10s]]/[[A13]]/[[A20]]/[[A23]]/[[A31]]/[[A31s]]) and has basic support for the more recent [[A33]], [[A64]], [[A80]], [[A83T]], [[H2+]], [[H3]], [[H5]], and [[V3s]](No MPI-DSI Lcd).<br />
<br />
The next release will be v2019.07.<br />
<br />
See also: [http://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle and Release Schedule].<br />
<br />
== In Progress ==<br />
* [[A83T]] USB support (WiP: Chen-Yu Tsai (wens)) [http://lists.denx.de/pipermail/u-boot/2016-March/250003.html patch-rfc]<br />
* [[A83T]] PSCI support (WiP: Timothy Pearson) [https://patchwork.ozlabs.org/patch/622853/ patch-rfc]<br />
* [[H2+]]/[[H3]]/[[A64]] HDMI / Composite out support (WiP: Jernej Škrabec) [https://github.com/jernejsk/u-boot/tree/de2_wip git-repo]<br />
* [[A20]] SPI driver (WiP: Stephan van Schaik (Swabbles)) [http://lists.denx.de/pipermail/u-boot/2017-February/280966.html patch-rfc] [https://github.com/StephanvanSchaik/u-boot/tree/sunxi-spi git-repo]<br />
* [[A31]]/[[A80]]/[[A64]] SPI driver (WiP: Philipp Tomsich) [https://lists.denx.de/pipermail/u-boot/2017-February/281946.html patch-v1]<br />
* [[R40]] [[Banana Pi M2 Ultra]] support (WiP: Chen-Yu Tsai (wens)) [https://lists.denx.de/pipermail/u-boot/2017-March/282760.html patch]<br />
<br />
== Next Release (v2019.07) ==<br />
[http://git.denx.de/?p=u-boot/u-boot-sunxi.git;a=shortlog;h=refs/heads/master Development branch]<br />
* Boards<br />
** [[Beelink GS1]]<br />
** [[Oceanic 5205 5inMFD]]<br />
** [[Olimex Teres-A64]]<br />
<br />
== v2019.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.04 v2019.04 Release branch]<br />
* Boards<br />
** [[Emlid Neutis N5]]<br />
<br />
== v2019.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.01 v2019.01 Release branch]<br />
* Boards<br />
** [[Pine Pinebook]]<br />
** [[Pine Pine64-LTS]]<br />
** [[Sinovoip Banana Pi M2 Zero]]<br />
** [[Xunlong Orange Pi Lite 2]]<br />
<br />
== v2018.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.11 v2018.11 Release branch]<br />
<br />
== v2018.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.09 v2018.09 Release branch]<br />
* Boards<br />
** [[Pine64#Variants | Pine64 SoPINE]]<br />
** [[Xunlong Orange Pi One Plus]]<br />
** [[PineH64]]<br />
<br />
== v2018.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.07 v2018.07 Release branch]<br />
* Boards<br />
** [[Xunlong_Orange_Pi_Zero#Variants | Orange Pi R1 ]]<br />
** [[Libre Computer Board ALL-H3-CC]], H2+ version<br />
** [[Libre Computer Board ALL-H3-CC]], H5 version<br />
** [[Orange Pi Zero Plus]]<br />
** [[Sinovoip_Banana_Pi_M2_Berry | Banana Pi M2 Berry]]<br />
<br />
== v2018.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.05 v2018.05 Release branch]<br />
* Boards<br />
** [[Olimex A20-SOM204-EVB]]<br />
** [[Olimex A20-SOM204-EVB]] with eMMC<br />
<br />
== v2018.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.03 v2018.03 Release branch]<br />
* Boards<br />
**[[Libre Computer Board ALL-H3-CC]], H3 version<br />
<br />
== v2018.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.01 v2018.01 Release branch]<br />
* Boards<br />
** [[NanoPi NEO Plus 2]]<br />
** [[TBS A711]]<br />
<br />
== v2017.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.11 v2017.11 Release branch]<br />
* Boards<br />
** [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
** [[FriendlyARM Nanopi M1 Plus]]<br />
** [[Sinovoip Banana Pi M2]] Magic<br />
<br />
== v2017.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.09 v2017.09 Release branch]<br />
* Boards<br />
** [[FriendlyARM_NanoPi_A64 | NanoPi A64 ]]<br />
** [[Olimex_A20-OLinuXino-Lime2 | OLinuXino Lime2 (A20)]] with eMMC<br />
** [[Olimex_A64-OLinuXino | OLinuXino A64]]<br />
<br />
== v2017.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.07 v2017.07 Release branch]<br />
* Boards<br />
** [[Xunlong Orange Pi Win]] and Win Plus<br />
** [[Xunlong Orange Pi Prime]]<br />
** [[Xunlong Orange Pi Zero Plus 2]]<br />
<br />
== v2017.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.05 v2017.05 Release branch]<br />
* [[A64]] SPL support<br />
* [[H5]] support (with SPL)<br />
* Boards<br />
** [[Xunlong Orange Pi PC 2]]<br />
** [[FriendlyARM NanoPi NEO Air]]<br />
<br />
== v2017.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.03 v2017.03 Release branch]<br />
<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=2fc554d3e37c27c5b8d2540d7a571dc53152a301 enable H3 EMAC for the nanopi neo]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=59603d026b9ad3f51a8d69c2a94d3a511639c525 add proper device tree for Orange Pi Zero boards]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=7490130c9f8a4e17e858a38c767ad9ed64bd777b OrangePi Zero: defconfig: enable SPI flash]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=8b15f8eb67a48a98d5c131c1d44aa78c236c064d OrangePi Zero: add Ethernet node]<br />
<br />
== v2017.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.01 v2017.01 Release branch]<br />
<br />
* add support for [[Nintendo NES Classic Edition]]<br />
<br />
== v2016.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.11 v2016.11 Release branch]<br />
<br />
* Hans de Goede and Ian Campbell step down as U-boot Sunxi maintainers<br />
<br />
* A80<br />
** Full SPL support<br />
<br />
* A64<br />
** USB support<br />
<br />
* H3<br />
** DRAM impedance calibration fixes<br />
<br />
* Boards<br />
** [[FriendlyARM NanoPi NEO]]<br />
** [[Sinlinx SinA33]]<br />
*** USB host and OTG support<br />
** [[Cubietech Cubieboard4]]<br />
<br />
== v2016.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.09 v2016.09 Release branch]<br />
<br />
* General<br />
** GPIO fixes<br />
** PSCI rewrite in C part 2<br />
** NAND controller driver<br />
** H3/A64 Ethernet (EMAC) support<br />
<br />
* Boards<br />
** [[Empire Electronix M712]]<br />
** [[Inet Q972]]<br />
** [[Olimex A33-OLinuXino]]<br />
** [[Xunlong Orange Pi PC | Xunlong Orange Pi PC Plus]]<br />
** [[Xunlong Orange Pi Plus 2E]]<br />
<br />
== v2016.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.07 v2016.07 Release branch]<br />
<br />
* AXP809 PMIC support<br />
<br />
* PSCI rewrite in C part 1<br />
<br />
* Boards<br />
** [[Allwinner R16 EVB]]<br />
** [[Inet 86dz]]<br />
** [[Polaroid MID2407PXE03]]<br />
<br />
== v2016.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.05 v2016.05 Release branch]<br />
<br />
* [[A23]]<br />
** Support new revisions<br />
<br />
* [[A64]]<br />
** 64-bit ARMv8 port, basic support (MMC, UART, no USB, no Ethernet)<br />
** (basic) EFI support (allows booting EFI applications (like grub) or kernels)<br />
<br />
* I2C support fix for families with separate reset control<br />
<br />
* SID e-fuse support for A83T and H3<br />
<br />
* Sync up dts files with Linux kernel<br />
* Update compatible strings for GPIO<br />
<br />
* Boards<br />
** colorfly e708 q1, Difrence DIT4350, Polaroid MID2809PXE4, Itead Ibox, icnova-a20-swac, yones toptech bs1078-v2, Dserve DSRV9703C, <br />
** [[Cubietech Cubietruck Plus]]<br />
** [[Sinlinx SinA31s]]<br />
** [[Xunlong Orange Pi 2]]<br />
** [[Pine64]]<br />
** [[LicheePi Zero]]<br />
<br />
== v2016.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.03 v2016.03 Release branch]<br />
<br />
* PRCM i2c support<br />
<br />
* A83T<br />
** LPDDR3 support<br />
<br />
* H3<br />
** USB host support<br />
** PSCI (security switches included)<br />
** sy8106a i2c-based regulator support<br />
<br />
* AXP PMICs<br />
** Power off support<br />
<br />
* Boards<br />
** [[Banana Pi M3]] (SinoVoip BPi-M3)<br />
<br />
{{knownProblems|1=<br><br />
* Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=c32a6fd07b1839e4a45729587ebc8e1c55601a4d c32a6fd] breaks MII detection (and thus U-Boot networking) for sunxi GMAC.<br />
<br />
You might observe the PHY not initializing (e.g. no LED activity), and the command <code>mii&nbsp;info</code> likely will list useless information on all available PHY slots (0x00-0x1F). Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba fc8991c] fixes it again, but unfortunately that means U-Boot release '''v2016.03 is affected'''.}}<br />
<br />
== v2016.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.01 v2016.01 Release branch]<br />
* sun8i-H3 support<br />
<br />
* Boards<br />
** Empire Electronix D709 tablet<br />
** A83T HomletV2 Board<br />
** [[Lamobo R1]]<br />
** [[Xunlong Orange Pi Plus]]<br />
** [[Orange Pi PC|Xunlong Orange Pi PC]]<br />
** [[NextThingCo_CHIP | C.H.I.P.]]<br />
<br />
== v2015.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.10 v2015.10 Release branch]<br />
<br />
* Console/display output<br />
:* ANX9804 LCD-eDP bridge chip support<br />
:* Composite video output support<br />
* NAND SPL driver<br />
<br />
* Boards<br />
** Olimex A20-SOM-EVB<br />
** A10s-Wobo-i5 (settop box)<br />
** Point of View pov protab2-ips9 tablet<br />
** Auxtek-T003 HDMI stick<br />
** A10 tablets based on the iNet-tek iNet-1 mainboard (e.g. Point of View Protab2 XXL, Cherry M1007)<br />
** A10 tablets based on the inet9f-rev03 mainboard (e.g. qware tb-g100 tablet)<br />
** A13 tablets based on on the inet98v_rev2 mainboard<br />
** A10 tablets based on the inet97fv2 mainboard<br />
** A23 tablets based on the gt90h-v4 mainboard<br />
<br />
== v2015.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.07 v2015.07 Release branch]<br />
<br />
* Serial number support<br />
* Device model support<br />
** Ethernet<br />
** GPIO<br />
* sun8i (A33) support (including SPL)<br />
* sun9i (A80) basic support<br />
** UART<br />
** MMC<br />
* sun6i/sun8i<br />
** PSCI CPU hotplugging<br />
* SPL<br />
** <strike>NAND support</strike> reverted: [http://git.denx.de/?p=u-boot.git;a=commit;h=da9971d1b3bdb554d4a4ac948119f8b2616bbcce Revert commit]<br />
<br />
* Boards:<br />
** [[Mixtile LOFT-Q]]<br />
** [[Ainol AW1]]<br />
** [[Yones Toptech BD1078]]<br />
** [[iNet 3W]]<br />
** [[iNet 3F]]<br />
** [[ET-Q8 A33]]<br />
** [[Ippo q8h#v1.2 | Ippo q8h v1.2 A33 1024x600]]<br />
** [[ga10h v1.1]]<br />
** [[Merrii A80 Optimus Board]]<br />
<br />
== v2015.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.04 v2015.04 Release branch]<br />
<br />
* sun7i (A20) [[PSCI]] CPU hotplug<br />
* sun8i (A23) SPL<br />
** RSB<br />
** AXP223<br />
<br />
* sun9i (A80) basic support<br />
** Clocks<br />
** RSB<br />
<br />
* Console/display output<br />
** VGA via internal DAC<br />
** VGA via external DAC on LCD interface<br />
** LVDS<br />
** SSD2828 MIPI bridge<br />
** tl059wv5c0 LCD panel<br />
<br />
* USB OTG<br />
<br />
* Boards:<br />
** [[CSQ CS908]]<br />
** [[Merrii Hummingbird A31]]<br />
** [[Ippo q8h#Q8H-V1.2 | Ippo q8h v1.2]]<br />
** [[MSI Primo81]]<br />
** [[MSI Primo73]]<br />
** [[LinkSprite pcDuino]]<br />
** [[LinkSprite pcDuino V2]]<br />
** [[LeMaker Banana Pro]]<br />
** [[Rikomagic mk802]]<br />
** [[Rikomagic mk802ii]]<br />
** [[Semitime g2]] (See also [[Format_MK802]] with A10s)<br />
** [[MarsBoard A10]]<br />
** [[Gemei G9]]<br />
** [[Chuwi V7 CW0825]]<br />
** [[Mele M5]]<br />
** [[Hyundai A7HD]]<br />
** [[LinkSprite pcDuino3 Nano]]<br />
** [[TZX-Q8-713B7]]<br />
** [[Inet 86vs]]<br />
** [[Ampe A76]]<br />
** [[Jesurun Q5]]<br />
** [[MK808C]]<br />
** [[Mele I7]]<br />
** [[Forfun Q88DB]]<br />
** [[Wits Pro A20 DKT]]<br />
** [[Xunlong Orange Pi]]<br />
** [[Xunlong Orange Pi Mini]]<br />
** [[Wexler TAB 7200]]<br />
<br />
== v2015.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.01 v2015.01 Release branch]<br />
<br />
* sun6i (A31) processor support<br />
** P2WI<br />
** AXP221<br />
** SPL<br />
** GMAC<br />
* sun8i (A23) processor support (no SPL)<br />
* sun6i/sun8i reset support<br />
* Console/display output<br />
** HDMI only<br />
** simplefb<br />
<br />
* Boards:<br />
** [[Mele M3]]<br />
** [[Olimex A20-OLinuXino-Lime2]]<br />
** WITS Colombus Board<br />
** [[Mele M9]]<br />
<br />
== v2014.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.10 v2014.10 Release branch]<br />
<br />
* AHCI (SATA)<br />
* sun4i (AKA A10) and sun5i (AKA A10s and A13) processors<br />
* EMAC Ethernet<br />
* AXP152 and AXP209 power controllers<br />
* EHCI USB<br />
* SMP support for sun7i via [[PSCI]].<br />
<br />
* Boards:<br />
** [[LeMaker Banana Pi]]<br />
<br />
== v2014.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.07 v2014.07 Release branch]<br />
* sun7i (AKA A20) processors<br />
* MMC<br />
* GMAC Ethernet<br />
* Boards:<br />
** [[Cubietech Cubietruck]]<br />
<br />
= Supported Devices =<br />
<categorytree mode=pages hideroot=on>Mainline_U-Boot</categorytree><br />
Beware: some of the above might only be supported in the latest development version.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[toolchain]] installed and added to your PATH.<br />
<br />
You may also need to add some additional packages to build U-Boot:<br />
<pre>apt-get install swig python-dev</pre><br />
<br />
== Get the Device-tree Compiler ==<br />
<br />
Depending on your desired U-Boot version, a sufficiently up-to-date ''dtc'' may be required. (The build process will error on an outdated ''dtc'', and request you to upgrade it.) The installation of dtc is described in the [[Device_Tree#Get_the_Device-tree_Compiler|Device tree article]].<br />
<br />
If you are going to build a Linux kernel alongside U-Boot, it might also be worth to examine the kernel sources - as they come with ''dtc'' included under <code>${KERNEL_DIR}/scripts/dtc/</code>.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone the u-boot repository by running:<br />
<pre>git clone git://git.denx.de/u-boot.git</pre><br />
<br />
{{alert|You should prefer using a stable release, unless you're testing recently added boards or experimental features that have not yet made into stable release:<br />
<br />
git checkout v2016.01 # or whatever is latest<br />
}}<br />
== Determine build target ==<br />
<br />
Go to your u-boot tree and search in the directory ''configs/'' for your board, the file name looks like ''<board_name>_defconfig''.<br />
<br />
So, if your device is [[Cubietech Cubieboard2|Cubieboard2]] your build target is ''Cubieboard2_defconfig''.<br />
<br />
== Build ==<br />
'''Arm Trusted Firmware (arm64)'''<br />
<br />
In order to build U-Boot for a arm64 device you need to build Arm Trusted Firmware (ATF) as a prerequisite first. Change <platform> to your needs. ''PLAT=sun50i_a64'' for example is suitable for H5 and A64 devices. (See board/sunxi/README.sunxi64 in uboot sources for more infos.)<br />
<pre>git clone https://github.com/ARM-software/arm-trusted-firmware.git<br />
cd arm-trusted-firmware<br />
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=<platform> DEBUG=1 bl31</pre><br />
<br />
When you have determined what <board_name> just configure U-Boot with a suitable default configuration. Use menuconfing to play with the settings if you feel like it and then just build it:<br />
<br />
'''armhf'''<br />
<pre>make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
'''arm64'''<br />
<pre>make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin <board_name>_defconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin menuconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin</pre><br />
<br />
(When compiling natively, omit the <kbd>CROSS_COMPILE=…</kbd>)<br />
<br />
When the build has completed, there will be ''u-boot-sunxi-with-spl.bin'' available in your u-boot tree. The installation step will instruct how to install this on the installation media (e.g. a SD card), but first U-Boot needs to be configured.<br />
<br />
= Configure U-Boot =<br />
<br />
This article provides a collection of various scenarios for booting with U-Boot. <br />
<br />
== Boot ==<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[Mainline_NAND_Howto#Booting_from_NAND|NAND]]<br />
* [[Bootable SPI flash | SPI NOR Flash]]<br />
* [[FEL/USBBoot | USB OTG]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[Fastboot]]<br />
<br />
=== Booting with boot.cmd ===<br />
For booting from SD with mainline U-Boot, the recommended way is:<br />
<br />
* create a file ''boot.cmd'' on the first partition (also check [[Kernel arguments]] for extra 'bootargs' options):<br />
<br />
{| class="wikitable"<br />
! mainline kernel<br />
! sunxi-3.4 kernel<br />
|-<br />
|<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000 - 0x43000000<br />
||<br />
setenv bootm_boot_mode sec<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000<br />
|}<br />
* If you also want to use an initramfs, please refer to the [[Initial Ramdisk]] article for details.<br />
:{{info|If you're wondering why setting '''bootm_boot_mode''' might be necessary for older kernels, have a look at the details of [[PSCI]].}}<br />
<br />
:{{note|Directly using a '''zImage''' is also supported by U-Boot for the sunxi platform.}} Substitute ''zImage'' in place of ''uImage'' in the commands above, and then use the '''bootz''' command instead of ''bootm''.<br />
:{{note|In order to boot your newly created '''arm64''' kernel, remember to use ''Image'' instead of ''uImage/zImage''. You also have to load it with ''booti'' instead of ''bootm/bootz''. So you have to adopt the corresponding lines in the boot.cmd file.}}<br />
<br />
=== Booting with extlinux.conf ===<br />
Mainline U-Boot also use syslinux/extlinux as payload.<br />
<br />
You need to install the boot configuration file extlinux.conf in an ext2/3/4 partition of SD card and U-Boot will find and execute it. This is conceptually identical to creating a GRUB configuration file on a desktop PC.<br />
<br />
Example extlinux.conf:<br />
<pre><br />
TIMEOUT 100<br />
DEFAULT default<br />
MENU TITLE Boot menu<br />
<br />
LABEL default<br />
MENU LABEL Default<br />
LINUX /zImage<br />
FDT /sun4i-a10-marsboard.dtb<br />
APPEND root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8<br />
<br />
LABEL exit<br />
MENU LABEL Local boot script (boot.scr)<br />
LOCALBOOT 1<br />
</pre><br />
<br />
== Setting u-boot environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the U-Boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== NAND ==<br />
Example U-Boot environment, as found in <code>uEnv.txt</code> from a stock android U-Boot environment partition<br />
<br />
<pre>bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot</pre><br />
<br />
== NFS ==<br />
<br />
Recent version of U-Boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
{{Note|on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.}}<br />
<br />
== FB console ==<br />
<br />
To get U-Boot output shown on the built-in framebuffer driver (currently, HDMI only at 1024x768), add the following to your boot.cmd:<br />
<pre>setenv stdout=serial,vga<br />
setenv stderr=serial,vga</pre><br />
The default environment has these values set as well.<br />
<br />
== LCD Settings ==<br />
<br />
There is a [[LCD|separate wiki page about configuring LCD]] in U-Boot.<br />
<br />
= Install U-Boot =<br />
<br />
* Convert the ''boot.cmd'' to ''boot.scr'' using [[U-Boot/Tools#mkimage|mkimage]]:<br />
<br />
mkimage -C none -A arm -T script -d boot.cmd boot.scr<br />
<br />
* Copy the bootloader to the installation media<br />
<br />
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
* copy kernel files to the first partition<br />
** For a 3.4 kernel you need ''uImage'' (linux kernel) and ''script.bin'' (binary representation of [[Fex Guide|FEX]]).<br />
** For a device tree based kernel ("mainline", 4.x) you need the kernel image (''uImage'' or ''zImage'') and the device-specific ''.dtb'' file (the one referenced in the ''${fdtfile}'' above) that is generated as part of your kernel compilation.<br />
<br />
Look at [[Manual build howto]] for more details.<br />
<br />
= Troubleshooting =<br />
<br />
== USB 1.x, USB keyboards (U-Boot < v2015.07) ==<br />
<br />
'''U-Boot v2015.07 and later shouldn't have problems supporting mixed USB 1.x/2.0 devices.''' OHCI and EHCI no longer conflict with each other (after the switch to device model).<br />
<br />
Previous U-Boot versions (v2015.04 and older) have a problem supporting both USB 1.x (OHCI) and USB 2.0 (EHCI) at the same time - the latter includes the ''SUNXI_EHCI'' driver for Allwinner boards.<br />
<br />
:Unfortunately, this also affects many '''USB HID / keyboard''' devices which would not be detected properly by U-Boot. The typical message in this case is "''cannot reset port N!?''", where ''N'' is whichever USB port those devices were attached to.<br />
<br />
{{info|A possible workaround is to place an external USB 2.0 hub between your board and these USB devices.}}<br />
<br />
See: http://lists.denx.de/pipermail/u-boot/2015-January/200162.html.<br />
<br />
== U-Boot 2015.07+ won't start ==<br />
If you're using a recent (device model based) U-Boot, and the SPL just hangs after initializing the DRAM (<code>CPU: 912000000Hz, AXI/AHB/APB: 3/2/2</code> or something similar), chances are that your main U-Boot binary may be missing DTB information / a proper [[device tree]]. Depending on the (possibly outdated) instructions you followed: double-check that you're not incorrectly using ''u-boot.bin'' instead of ''u-boot'''-dtb'''.bin'', or ''u-boot.img'' instead of ''u-boot'''-dtb'''.img''.<br />
<br />
== Legacy kernel won't start ==<br />
* If your 3.4.x kernel refuses to boot / gets stuck right after ''"Starting kernel ..."'':<br />
** Double-check that '''bootm_boot_mode''' is set to "'''sec'''"! (see [[#Boot|above]])<br />
** For U-Boot 2018.09-rc1 or later, set CONFIG_ARMV7_LPAE=n in .config or apply https://patchwork.ozlabs.org/patch/1058338/<br />
* If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see [[#Unrecognized.2Funsupported_machine_ID|below]]).<br />
<br />
== Unrecognized/unsupported machine ID ==<br />
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a HDMI monitor or a LCD display!):<br />
<pre><br />
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).<br />
</pre><br />
In this case either upgrade to a recent ''stage/sunxi-3.4'' kernel ([https://github.com/linux-sunxi/linux-sunxi/tree/stage/sunxi-3.4 github branch]) - or try to '''"Enable workarounds for booting old kernels"''' in U-Boot:<br />
:<code>make menuconfig</code> or <code>make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)<br />
<br />
If upgrading to ''stage/sunxi-3.4'' is not an option (i.e. using some old and very much diverged<br />
sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (=&nbsp;selectively merged <u>as a set</u>):<br />
<pre><br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/9a1cd034181af628d4145202289e1993c1687db6.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
git am 9a1cd034181af628d4145202289e1993c1687db6.patch<br />
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
</pre><br />
{{warn|It is required to apply '''all''' of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.|}}<br />
<br />
<br />
== ImportError: No module named _libfdt ==<br />
<br />
If you see the following error when compiling on Arch Linux arm<br />
<pre><br />
ImportError: No module named _libfdt<br />
</pre><br />
<br />
install dtc<br />
<pre><br />
sudo pacman -S dtc<br />
</pre><br />
<br />
= Adding a new device to upstream U-Boot =<br />
<br />
http://lists.denx.de/pipermail/u-boot/2014-December/199351.html<br />
<br />
== DRAM Settings ==<br />
<br />
=== Failsafe DRAM settings, based on standard JEDEC timings ===<br />
<br />
Each device has DRAM settings configured in its defconfig file in the U-Boot "configs" directory (here is [http://git.denx.de/?p=u-boot.git;a=blob;f=configs/Cubietruck_defconfig;h=b64f84f2b8d2d48bed3130aecd31d220013061f0;hb=HEAD an example for the Cubietruck board]). The slow failsafe DRAM settings for an A10/A13/A20 device may look like:<br />
<pre style="background-color: lightgreen;"><br />
+S:CONFIG_DRAM_CLK=360<br />
+S:CONFIG_DRAM_ZQ=123<br />
+S:CONFIG_DRAM_EMR1=4<br />
+S:CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y<br />
</pre><br />
<br />
A more complete set of available Kconfig options and their descriptions can be found here: http://git.denx.de/?p=u-boot.git;a=blob;f=board/sunxi/Kconfig;h=e1d4ab148f0838d746889775cfbab5bed57838bf;hb=a705ebc81b7f91bbd0ef7c634284208342901149#l177<br />
<br />
=== The settings from the Android firmware ===<br />
<br />
Somewhat better settings can be retrieved by the [[Retrieving_device_information#Reading_memory_information_from_registers|meminfo tool]] from the stock Android or GNU/Linux system, provided by the device manufacturer. It still makes sense to [[Hardware_Reliability_Tests#DRAM|test the reliability]] of the resulting DRAM configuration. Because some vendors are providing poor configuration for ZQ or EMR1, but nevertheless trying to optimistically set the DRAM clock speed too high.<br />
<br />
=== Performance optimized DRAM settings ===<br />
<br />
Tuning DRAM setting for each individual board can provide much better performance than the failsafe defaults. This involves trial and error testing of different settings using a tool until an optimal combination is found. The [[DRAM_Controller|DRAM Controller page]] provides links to start researching this topic. This approach will be time consuming, so a satisfactory solution using one of the other approaches may be best to start with.<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:Development]]<br />
[[Category:Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Manual_build_howto&diff=22637
Manual build howto
2019-08-14T21:16:54Z
<p>Rellla: /* Get a cross toolchain */ add prereqs</p>
<hr />
<div>This page describes the process to combine sunxi U-Boot, linux kernel and other bits together to create a useful SD-card from scratch, the basis for further hacking.<br />
<br />
This page is only suited for [[A10]], [[A13]]/[[A10s]] and [[A20]] based devices. [[#See also|The manual build howtos for other SoCs are at the end of this page.]]<br />
<br />
We of course do not build a whole distribution, we only build U-Boot, the kernel and a handful of tools, and then use an existing rootfs to get a useful system. Depending on the rootfs size, you might want to use a 2GB or larger SD Card. SD-card partitioning and formatting will be taken care of later.<br />
<br />
= Get a cross toolchain =<br />
<br />
For this part, you need to refer to our [[Toolchain| toolchain page]].<br />
<br />
To build the kernel you may need some additional packages:<br />
<br />
<pre>apt-get install flex bison</pre><br />
<br />
= Build U-Boot =<br />
<br />
== Sunxi/Legacy U-Boot ==<br />
Please refer to [[U-Boot#Compile_U-Boot|Compile U-Boot]]. When the build has completed, there will be ''spl/sunxi-spl.bin'' and ''u-boot.img'' available in your U-Boot tree.<br />
<br />
The installation to SD card is covered in [[Bootable_SD_card#Bootloader]].<br />
<br />
== Upstream/Mainline U-Boot ==<br />
<br />
If your device is [[:Category:Mainline_U-Boot|supported by upstream/mainline U-Boot]], you should probably use that instead.<br />
<br />
Follow [[Mainline_U-Boot#Compile_U-Boot|these instructions]] to create ''u-boot-sunxi-with-spl.bin''.<br />
<br />
{{red|If you intend to boot older 3.4.x kernels with mainline U-Boot, make sure you also understand its [[Mainline_U-Boot#Boot|boot configuration]]. Some information presented on this page needs to be adjusted accordingly - especially '''bootm_boot_mode''' could be important in that case.}}<br />
<br />
= Build the kernel =<br />
<br />
== Sunxi/Legacy kernel ==<br />
<br />
=== Build script.bin ===<br />
<br />
The sunxi kernel depends on Allwinners own hardware description file, called [[script.bin]], which needs to be loaded into memory by the bootloader so that the kernel can access it.<br />
<br />
To build ''script.bin'' follow our [[Script.bin#Build_script.bin|guide to building script.bin]].<br />
<br />
=== Build the actual kernel ===<br />
<br />
Please refer to [[Linux_Kernel#Compilation| our Kernel compilation guide]].<br />
<br />
== Upstream/Mainline kernel ==<br />
<br />
Please refer to [[Mainline_Kernel_Howto| our upstream kernel howto]].<br />
<br />
Remember to also build the device tree binaries.<br />
<br />
= Set up SD-Card for booting = <br />
<br />
== Clean SD-Card ==<br />
<br />
Refer to [[Bootable_SD_card#Cleaning|our SD-Card cleaning howto]].<br />
<br />
== Partition SD-Card ==<br />
<br />
Refer to [[Bootable_SD_card#Partitioning|our SD-Card partitioning howto]].<br />
<br />
== Install Bootloader to the SD-Card ==<br />
<br />
Refer to [[Bootable_SD_card#Bootloader|our SD-Card bootloader installation howto]].<br />
<br />
== Mount your boot or root partition ==<br />
<br />
Mount your boot or root partition again:<br />
<pre><br />
mount /dev/${card}1 /mnt<br />
</pre><br />
<br />
== Install bootloader configuration ==<br />
<br />
Follow instructions to set up either mainline or legacy sunxi U-Boot:<br />
* [[Mainline U-Boot#Boot|mainline U-Boot]]<br />
* [[U-Boot#Boot|legacy U-Boot]]<br />
<br />
== Install kernel binary ==<br />
<br />
Now you can install your built kernel into the boot partition:<br />
<pre>cp /home/user/dir/linux-sunxi/arch/arm/boot/uImage /mnt</pre><br />
<br />
== Install board description ==<br />
<br />
=== script.bin (for sunxi kernel) ===<br />
<br />
If you are using the sunxi kernel, you need to install [[#Building_script.bin | ''script.bin'']] to the boot partition:<br />
<pre>cp /home/user/dir/sunxi-boards/sys_config/aXX/script.bin /mnt</pre><br />
<br />
=== device tree binary (for upstream kernel) ===<br />
<br />
If you are using the upstream/mainline kernel, you need to install the compiled [[device tree]] into the boot partition as well.<br />
<br />
<pre>cp /home/user/dir/linux/arch/arm/boot/dtbs/<your_board>.dtb /mnt</pre><br />
(assuming your kernel sources are in ''/home/user/dir/linux'')<br />
<br />
You can find available compiled trees by listing kernel directory ''arch/arm/boot/dts/''<br />
<br />
<pre>ls /home/user/dir/linux/arch/arm/boot/dts/*.dtb</pre><br />
What trees get compiled during kernel compilation depend on what you selected in "System Type" menuconfig during kernel configuration. However you can [[Device_tree#Compiling_the_Device_Tree|compile any tree]] without recompiling kernel.<br />
<br />
By default U-Boot boots with a tree, specified with [[Mainline_U-Boot#Build|U-Boot config option]] CONFIG_DEFAULT_DEVICE_TREE=<your_board><br />
<br />
== Unmount your boot or root partition ==<br />
Unmount the partition again.<br />
<pre>umount /mnt</pre><br />
<br />
= Setting up the rootfs =<br />
Please refer to [[Bootable_SD_card#Rootfs]]<br />
<br />
== Install kernel modules ==<br />
<br />
As a last step you need to copy the kernel modules into the newly created rootfs. Change into the top level directory of the newly created rootfs and run:<br />
<pre><br />
mount ${cardroot} /mnt<br />
mkdir -p /mnt/lib/modules<br />
rm -rf /mnt/lib/modules/<br />
cp -r <PATH_TO_KERNEL_TREE>/output/lib /mnt/<br />
umount /mnt<br />
</pre><br />
(Replace <PATH_TO_KERNEL_TREE> with the directory you have built your kernel in as described [[#Building_the_kernel|above]].)<br />
<br />
= Boot! =<br />
<br />
Now you should be able to unmount your SDCard filesystems, and you should be able to boot your brand new installation.<br />
<br />
= See also =<br />
<br />
We have Manual build howtos for all SoCs:<br />
<categorytree mode=pages hideroot=on depth=1>Manual build howto</categorytree><br />
<br />
[[Category:Tutorial]]<br />
[[Category:Manual_build_howto]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=22636
Mainline Kernel Howto
2019-08-14T21:15:15Z
<p>Rellla: /* Kernel Compilation */ add arm64</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel.<br />
<br />
Warning: Mainline NAND support is not compatible with Allwinner NAND support and will make your existing NAND unreadable.<br />
<br />
= Current status =<br />
<br />
Please refer to the [[Linux mainlining effort]] page for detailed status of the mainlining effort, and supported boards and driver coverage.<br />
<br />
Some SoCs and some subsystems might not be supported yet, you might need to revert to our [[Linux_Kernel|heavily hacked kernel version]] that's close to Allwinners code for A10/A13/A20, or use a BSP kernel. <br />
<br />
= Prerequisites =<br />
<br />
You should be running through this howto as part of our [[Manual build howto]]. It guides you through toolchain, u-boot and rootfs steps as well.<br />
<br />
= Kernel source =<br />
<br />
== Linus' tree ==<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually.<br />
<br />
For a full clone (if you wish to do future development) run:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git</pre><br />
<br />
Often a shallow clone will suffice to just get mainline working:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1</pre><br />
<br />
== Patches merged in the next stable release ==<br />
<br />
There is also a ''sunxi-next'' branch maintained with all the inclusions that have been accepted, merged and will be included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
<pre>git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-next git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-next --depth=1</pre><br />
<br />
= Kernel Configuration =<br />
<br />
== defconfig ==<br />
<br />
To get a working kernel, just use the following for configuration:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig</pre><br />
== oldconfig ==<br />
<br />
If you have an old relevant .config, e.g. if you installed a late debian, and now want to build the kernel, you can copy it in and run <code>make ARCH=arm oldconfig</code> or <code>make ARCH=arm64 oldconfig</code>.<br />
<br />
:{{note|If you happen to run <code>make menuconfig</code> without specifying the architecture, architecture-specific options will be '''lost'''; in that case you'll need to go back to an existing config and start again.}}<br />
<br />
== manual configuration ==<br />
<br />
If you wish to alter configuration, run:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig</pre><br />
<br />
= Kernel Compilation =<br />
<br />
== zImage/ Image ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 Image</pre><br />
After the compilation ended, you should have generated '''zImage''' in ''arch/arm/boot'' (armhf) or '''Image''' in ''arch/arm64/boot'' (arm64).<br />
<br />
== Devicetree ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs</pre><br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 dtbs</pre><br />
You should now have a device tree binary (''.dtb'') in ''arch/arm/boot/dts'' (armhf) or ''arch/arm64/boot/dts'' (armhf), which matches your device, it should be listed on the device page for your device.<br />
<br />
All the sunxi dtbs follow the pattern <family>-<soc>-<board>.dtb.<br />
<br />
== modules ==<br />
'''armhf'''<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 modules<br />
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j4 modules<br />
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
After the build succeeds, you can find the modules in the supplied <tt>INSTALL_MOD_PATH</tt> directory.<br />
<br />
== Specific Debian kernel notes ==<br />
<br />
Having installed a late debian using the arm installer, building the Debian kernel is an attractive proposition. (for Debian install, see [[Rikomagic_mk802]] 'Images' section).<br />
<br />
Some notes on doing so (as it's not so obvious from Google): You can download the sources using apt-get linux-source. Today, Dec 2016, this will get you ~4.8.7. Given sufficient space, this can be built on device (~4 days compile time), but probably better to cross-compile. Extract the tar to a suitable location, and copy /boot/config-<your current version> to .config. You may want to edit the .config comment out CONFIG_MODULE_SIG_FORCE and CONFIG_MODULE_SIG. Prepare your cross machine, and then run <br />
<br />
<code>make ARCH=arm oldconfig</code><br />
<br />
(you may get some new options).<br />
<br />
Now, the important bit. IF 'uname -a' on your target shows 'armmp' anywhere, your kernel will need to be this 'flavor'; if it is not, then your newly created .deb kernel package will not install on the device..... So, to stamp it as flavor 'armmp':<br />
<br />
Create a file called 'localversion' in the linux-source directory, and put -armmp inside. This will then generate a kernel stamped with the version '4.8.7-armmp' rather than plain '4.8.7', and will make dpkg/flash-kernel happy on install.<br />
<br />
Then, to make the kernel, use; substituting your cross compiler;:<br />
<br />
<code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg</code><br />
<br />
Note: if you want to build, but not start from scratch, the target bindeb-pkg does not do a clean first, whereas deb-pkg does.<br />
<br />
You should end up with a file in one folder lower called something like <code>linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
To install this on the device, go to that folder, or copy it to the device, and use<br />
<br />
<code>dpkg -i linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
and if successful, reboot...<br />
<br />
<br />
Note from the author of this last bit: I'm no expert on this, but as it took me over a week to establish the above; I hope it helps somebody! Please feel free to enhance or correct any of the above.<br />
'''If you do intend to reproduce this, then please make notes as you do it; a good (accurate) from scratch description would be a bonus here.'''<br />
<br />
= Boot =<br />
== SD-Card Boot partition ==<br />
<br />
Like with our [[Manual_build_howto#Setting_up_the_boot_partition | Manual build howto]], you have to set up the boot partition. Instead of ''script.bin'', you need to install your board-specific '''.dtb''' to the boot partition. (Above kernel compilation should generate this binary representation of the [[device tree]] automatically.)<br />
<br />
=== boot.cmd ===<br />
Like in the [[Manual_build_howto#boot.cmd| Manual build howto]], create a boot.cmd with the following contents:<br />
<br />
<pre>fatload mmc 0 0x46000000 zImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}<br />
<br />
bootz 0x46000000 - 0x49000000</pre><br />
<br />
Replace ''fatload'' with ''ext2load'' if needed. [[#Early_printk|earlyprintk]] is optional; if your kernel boots up just fine, you might as well remove it.<br />
<br />
If you are using an older U-Boot (you shouldn't - {{Remove|Which?}}), you might require the following line, to keep the extracted kernel from overwriting the device tree configuration:<br />
<pre>setenv fdt_high ffffffff</pre><br />
<br />
If you wish to use an initramfs, then the ''bootz'' command becomes:<br />
<pre>bootz 0x46000000 0x<initramfs-address> 0x49000000</pre><br />
<br />
Now [[Mainline_U-boot#Boot|generate boot.scr]]. Don't forget to copy over your ''zImage'' and <board>.dtb files as well.<br />
<br />
== eMMC boot partition ==<br />
<br />
[http://en.wikipedia.org/wiki/MultiMediaCard#eMMC eMMC] is very similar to the SD card case (see above). From a user's perspective, think of it as an "internal" memory card. Some devices are able to boot entirely from eMMC, forgoing the need for an external SD card.<br />
<br />
{{info|Keep a keen eye on the numbering of the ''mmcblk'' devices when switching the boot process between SD card and eMMC, e.g. during installation.}}<br />
:The Linux kernel may change device numbers depending on which mmc devices are actually present.<br />
:For example: If your SD card corresponds to ''mmc0'', and the eMMC is ''mmc1'', you'll probably end up with the eMMC as ''mmcblk'''1''''' when a SD card is also present (with the latter being ''mmcblk'''0'''''). But it's likely that the eMMC becomes ''mmcblk'''0''''' as soon as no SD card (''mmc0'') is present. If in doubt, check the kernel messages and adjust your partition layout / boot options accordingly.<br />
<br />
== Network boot setup ==<br />
<br />
{{Remove|TODO.}} Fold in [[Possible setups for hacking on mainline]].<br />
<br />
= Extra features =<br />
<br />
== SYSV IPC (debian users!) ==<br />
<br />
The current sunxi_defconfig has actually become rather complete, but SYSV IPC is disabled, and it is important for the fakeroot tool which is used for making debian packages.<br />
<br />
Go to:<br />
<pre> General setup ---></pre><br />
<br />
Then enable '''CONFIG_SYSVIPC''':<br />
<pre>[*] System V IPC</pre><br />
<br />
== Early printk ==<br />
<br />
If and only if your kernel does nothing, it pays to enable early printk support.<br />
<br />
Go to:<br />
<pre> Kernel hacking ---></pre><br />
<br />
Then enable '''CONFIG_DEBUG_KERNEL''':<br />
<pre>[*] Kernel debugging</pre><br />
<br />
To actually get early printk, you need to also enable '''CONFIG_DEBUG_LL''', select one of the '''CONFIG_DEBUG_SUNXI_''' options, and enable '''CONFIG_EARLY_PRINTK''':<br />
<pre>[*] Kernel low-level debugging functions (read help!)<br />
Kernel low-level debugging port (Kernel low-level debugging messages via sunXi UART0) ---><br />
[*] Early printk</pre><br />
<br />
The selection of the debugging port ('''CONFIG_DEBUG_SUNXI_''') depends on the board you are using. The selection of these is this contrived as these are all symbolic names for the raw addresses for the debug port.<br />
* For most SoCs, you should first select '''DEBUG_SUNXI_UART0''':<pre>(X) Kernel low-level debugging messages via sunXi UART0</pre><br />
* For A13, try '''DEBUG_SUNXI_UART1''' first:<pre>(X) Kernel low-level debugging messages via sunXi UART1</pre><br />
* For A23, try '''DEBUG_SUNXI_R_UART''' first:<pre>(X) Kernel low-level debugging messages via sunXi R_UART</pre><br />
* For A80, try '''DEBUG_SUN9I_UART0''' first:<pre>(X) Kernel low-level debugging messages via sun9i UART0</pre><br />
<br />
== simplefb ==<br />
<br />
{{Remove | TODO: This is now part of defconfig anyway. Be sure to add the console command line option to the console/display support page.}}<br />
<br />
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.<br />
<br />
= Adding a new device =<br />
<br />
Mainly, you have to write a [[Device Tree|device description]]. Please [[Sending_patches|send a patch]] to help others finding good examples.<br />
<br />
=See also=<br />
* [[Manual build howto]]<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=22635
Mainline Kernel Howto
2019-08-14T21:07:54Z
<p>Rellla: /* Kernel Configuration */ add arm64</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel.<br />
<br />
Warning: Mainline NAND support is not compatible with Allwinner NAND support and will make your existing NAND unreadable.<br />
<br />
= Current status =<br />
<br />
Please refer to the [[Linux mainlining effort]] page for detailed status of the mainlining effort, and supported boards and driver coverage.<br />
<br />
Some SoCs and some subsystems might not be supported yet, you might need to revert to our [[Linux_Kernel|heavily hacked kernel version]] that's close to Allwinners code for A10/A13/A20, or use a BSP kernel. <br />
<br />
= Prerequisites =<br />
<br />
You should be running through this howto as part of our [[Manual build howto]]. It guides you through toolchain, u-boot and rootfs steps as well.<br />
<br />
= Kernel source =<br />
<br />
== Linus' tree ==<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually.<br />
<br />
For a full clone (if you wish to do future development) run:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git</pre><br />
<br />
Often a shallow clone will suffice to just get mainline working:<br />
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1</pre><br />
<br />
== Patches merged in the next stable release ==<br />
<br />
There is also a ''sunxi-next'' branch maintained with all the inclusions that have been accepted, merged and will be included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
<pre>git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-next git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-next --depth=1</pre><br />
<br />
= Kernel Configuration =<br />
<br />
== defconfig ==<br />
<br />
To get a working kernel, just use the following for configuration:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig</pre><br />
== oldconfig ==<br />
<br />
If you have an old relevant .config, e.g. if you installed a late debian, and now want to build the kernel, you can copy it in and run <code>make ARCH=arm oldconfig</code> or <code>make ARCH=arm64 oldconfig</code>.<br />
<br />
:{{note|If you happen to run <code>make menuconfig</code> without specifying the architecture, architecture-specific options will be '''lost'''; in that case you'll need to go back to an existing config and start again.}}<br />
<br />
== manual configuration ==<br />
<br />
If you wish to alter configuration, run:<br />
<br />
'''armhf'''<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</pre><br />
<br />
'''arm64'''<br />
<pre>ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig</pre><br />
<br />
= Kernel Compilation =<br />
<br />
== zImage ==<br />
<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage</pre><br />
<br />
After the compilation ended, you should have generated both the zImage in ''arch/arm/boot''.<br />
<br />
== Devicetree ==<br />
<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs</pre><br />
<br />
You should now have a device tree binary (''.dtb'') in ''arch/arm/boot/dts'', which matches your device, it should be listed on the device page for your device.<br />
<br />
All the sunxi dtbs follow the pattern <family>-<soc>-<board>.dtb.<br />
<br />
== modules ==<br />
<br />
<pre>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 modules</pre><br />
<br />
<pre>ARCH=arm CROSS_COMPILE=<toolchain-prefix> INSTALL_MOD_PATH=<any-path-you-like> make modules modules_install</pre><br />
<br />
After the build succeeds, you can find the modules in the supplied <tt>INSTALL_MOD_PATH</tt> directory.<br />
<br />
== Specific Debian kernel notes ==<br />
<br />
Having installed a late debian using the arm installer, building the Debian kernel is an attractive proposition. (for Debian install, see [[Rikomagic_mk802]] 'Images' section).<br />
<br />
Some notes on doing so (as it's not so obvious from Google): You can download the sources using apt-get linux-source. Today, Dec 2016, this will get you ~4.8.7. Given sufficient space, this can be built on device (~4 days compile time), but probably better to cross-compile. Extract the tar to a suitable location, and copy /boot/config-<your current version> to .config. You may want to edit the .config comment out CONFIG_MODULE_SIG_FORCE and CONFIG_MODULE_SIG. Prepare your cross machine, and then run <br />
<br />
<code>make ARCH=arm oldconfig</code><br />
<br />
(you may get some new options).<br />
<br />
Now, the important bit. IF 'uname -a' on your target shows 'armmp' anywhere, your kernel will need to be this 'flavor'; if it is not, then your newly created .deb kernel package will not install on the device..... So, to stamp it as flavor 'armmp':<br />
<br />
Create a file called 'localversion' in the linux-source directory, and put -armmp inside. This will then generate a kernel stamped with the version '4.8.7-armmp' rather than plain '4.8.7', and will make dpkg/flash-kernel happy on install.<br />
<br />
Then, to make the kernel, use; substituting your cross compiler;:<br />
<br />
<code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg</code><br />
<br />
Note: if you want to build, but not start from scratch, the target bindeb-pkg does not do a clean first, whereas deb-pkg does.<br />
<br />
You should end up with a file in one folder lower called something like <code>linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
To install this on the device, go to that folder, or copy it to the device, and use<br />
<br />
<code>dpkg -i linux-image-4.8.7-armmp_4.8.7-armmp-3_armhf.deb</code><br />
<br />
and if successful, reboot...<br />
<br />
<br />
Note from the author of this last bit: I'm no expert on this, but as it took me over a week to establish the above; I hope it helps somebody! Please feel free to enhance or correct any of the above.<br />
'''If you do intend to reproduce this, then please make notes as you do it; a good (accurate) from scratch description would be a bonus here.'''<br />
<br />
= Boot =<br />
== SD-Card Boot partition ==<br />
<br />
Like with our [[Manual_build_howto#Setting_up_the_boot_partition | Manual build howto]], you have to set up the boot partition. Instead of ''script.bin'', you need to install your board-specific '''.dtb''' to the boot partition. (Above kernel compilation should generate this binary representation of the [[device tree]] automatically.)<br />
<br />
=== boot.cmd ===<br />
Like in the [[Manual_build_howto#boot.cmd| Manual build howto]], create a boot.cmd with the following contents:<br />
<br />
<pre>fatload mmc 0 0x46000000 zImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}<br />
<br />
bootz 0x46000000 - 0x49000000</pre><br />
<br />
Replace ''fatload'' with ''ext2load'' if needed. [[#Early_printk|earlyprintk]] is optional; if your kernel boots up just fine, you might as well remove it.<br />
<br />
If you are using an older U-Boot (you shouldn't - {{Remove|Which?}}), you might require the following line, to keep the extracted kernel from overwriting the device tree configuration:<br />
<pre>setenv fdt_high ffffffff</pre><br />
<br />
If you wish to use an initramfs, then the ''bootz'' command becomes:<br />
<pre>bootz 0x46000000 0x<initramfs-address> 0x49000000</pre><br />
<br />
Now [[Mainline_U-boot#Boot|generate boot.scr]]. Don't forget to copy over your ''zImage'' and <board>.dtb files as well.<br />
<br />
== eMMC boot partition ==<br />
<br />
[http://en.wikipedia.org/wiki/MultiMediaCard#eMMC eMMC] is very similar to the SD card case (see above). From a user's perspective, think of it as an "internal" memory card. Some devices are able to boot entirely from eMMC, forgoing the need for an external SD card.<br />
<br />
{{info|Keep a keen eye on the numbering of the ''mmcblk'' devices when switching the boot process between SD card and eMMC, e.g. during installation.}}<br />
:The Linux kernel may change device numbers depending on which mmc devices are actually present.<br />
:For example: If your SD card corresponds to ''mmc0'', and the eMMC is ''mmc1'', you'll probably end up with the eMMC as ''mmcblk'''1''''' when a SD card is also present (with the latter being ''mmcblk'''0'''''). But it's likely that the eMMC becomes ''mmcblk'''0''''' as soon as no SD card (''mmc0'') is present. If in doubt, check the kernel messages and adjust your partition layout / boot options accordingly.<br />
<br />
== Network boot setup ==<br />
<br />
{{Remove|TODO.}} Fold in [[Possible setups for hacking on mainline]].<br />
<br />
= Extra features =<br />
<br />
== SYSV IPC (debian users!) ==<br />
<br />
The current sunxi_defconfig has actually become rather complete, but SYSV IPC is disabled, and it is important for the fakeroot tool which is used for making debian packages.<br />
<br />
Go to:<br />
<pre> General setup ---></pre><br />
<br />
Then enable '''CONFIG_SYSVIPC''':<br />
<pre>[*] System V IPC</pre><br />
<br />
== Early printk ==<br />
<br />
If and only if your kernel does nothing, it pays to enable early printk support.<br />
<br />
Go to:<br />
<pre> Kernel hacking ---></pre><br />
<br />
Then enable '''CONFIG_DEBUG_KERNEL''':<br />
<pre>[*] Kernel debugging</pre><br />
<br />
To actually get early printk, you need to also enable '''CONFIG_DEBUG_LL''', select one of the '''CONFIG_DEBUG_SUNXI_''' options, and enable '''CONFIG_EARLY_PRINTK''':<br />
<pre>[*] Kernel low-level debugging functions (read help!)<br />
Kernel low-level debugging port (Kernel low-level debugging messages via sunXi UART0) ---><br />
[*] Early printk</pre><br />
<br />
The selection of the debugging port ('''CONFIG_DEBUG_SUNXI_''') depends on the board you are using. The selection of these is this contrived as these are all symbolic names for the raw addresses for the debug port.<br />
* For most SoCs, you should first select '''DEBUG_SUNXI_UART0''':<pre>(X) Kernel low-level debugging messages via sunXi UART0</pre><br />
* For A13, try '''DEBUG_SUNXI_UART1''' first:<pre>(X) Kernel low-level debugging messages via sunXi UART1</pre><br />
* For A23, try '''DEBUG_SUNXI_R_UART''' first:<pre>(X) Kernel low-level debugging messages via sunXi R_UART</pre><br />
* For A80, try '''DEBUG_SUN9I_UART0''' first:<pre>(X) Kernel low-level debugging messages via sun9i UART0</pre><br />
<br />
== simplefb ==<br />
<br />
{{Remove | TODO: This is now part of defconfig anyway. Be sure to add the console command line option to the console/display support page.}}<br />
<br />
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.<br />
<br />
= Adding a new device =<br />
<br />
Mainly, you have to write a [[Device Tree|device description]]. Please [[Sending_patches|send a patch]] to help others finding good examples.<br />
<br />
=See also=<br />
* [[Manual build howto]]<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=U-Boot&diff=22634
U-Boot
2019-08-14T21:03:37Z
<p>Rellla: extend alert</p>
<hr />
<div>Support for sunxi devices is increasingly available from [http://www.denx.de/wiki/U-Boot upstream U-Boot]. This page describes that support. We have a separate page for the 'legacy' [[U-Boot|sunxi branch of U-Boot]].<br />
<br />
{{alert|This document is mainly for 32bits ARM device. Differences for ARM64 are only mentioned in the [[#Compile U-Boot|Compile U-Boot]] section. Fort more info see directly board/sunxi/README.sunxi64 in uboot sources}}<br />
= Status =<br />
<br />
The current U-Boot release fully supports major functions (except NAND) on<br />
all the older Allwinner SoCs ([[A10]]/[[A10s]]/[[A13]]/[[A20]]/[[A23]]/[[A31]]/[[A31s]]) and has basic support for the more recent [[A33]], [[A64]], [[A80]], [[A83T]], [[H2+]], [[H3]], [[H5]], and [[V3s]](No MPI-DSI Lcd).<br />
<br />
The next release will be v2019.07.<br />
<br />
See also: [http://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle and Release Schedule].<br />
<br />
== In Progress ==<br />
* [[A83T]] USB support (WiP: Chen-Yu Tsai (wens)) [http://lists.denx.de/pipermail/u-boot/2016-March/250003.html patch-rfc]<br />
* [[A83T]] PSCI support (WiP: Timothy Pearson) [https://patchwork.ozlabs.org/patch/622853/ patch-rfc]<br />
* [[H2+]]/[[H3]]/[[A64]] HDMI / Composite out support (WiP: Jernej Škrabec) [https://github.com/jernejsk/u-boot/tree/de2_wip git-repo]<br />
* [[A20]] SPI driver (WiP: Stephan van Schaik (Swabbles)) [http://lists.denx.de/pipermail/u-boot/2017-February/280966.html patch-rfc] [https://github.com/StephanvanSchaik/u-boot/tree/sunxi-spi git-repo]<br />
* [[A31]]/[[A80]]/[[A64]] SPI driver (WiP: Philipp Tomsich) [https://lists.denx.de/pipermail/u-boot/2017-February/281946.html patch-v1]<br />
* [[R40]] [[Banana Pi M2 Ultra]] support (WiP: Chen-Yu Tsai (wens)) [https://lists.denx.de/pipermail/u-boot/2017-March/282760.html patch]<br />
<br />
== Next Release (v2019.07) ==<br />
[http://git.denx.de/?p=u-boot/u-boot-sunxi.git;a=shortlog;h=refs/heads/master Development branch]<br />
* Boards<br />
** [[Beelink GS1]]<br />
** [[Oceanic 5205 5inMFD]]<br />
** [[Olimex Teres-A64]]<br />
<br />
== v2019.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.04 v2019.04 Release branch]<br />
* Boards<br />
** [[Emlid Neutis N5]]<br />
<br />
== v2019.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.01 v2019.01 Release branch]<br />
* Boards<br />
** [[Pine Pinebook]]<br />
** [[Pine Pine64-LTS]]<br />
** [[Sinovoip Banana Pi M2 Zero]]<br />
** [[Xunlong Orange Pi Lite 2]]<br />
<br />
== v2018.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.11 v2018.11 Release branch]<br />
<br />
== v2018.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.09 v2018.09 Release branch]<br />
* Boards<br />
** [[Pine64#Variants | Pine64 SoPINE]]<br />
** [[Xunlong Orange Pi One Plus]]<br />
** [[PineH64]]<br />
<br />
== v2018.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.07 v2018.07 Release branch]<br />
* Boards<br />
** [[Xunlong_Orange_Pi_Zero#Variants | Orange Pi R1 ]]<br />
** [[Libre Computer Board ALL-H3-CC]], H2+ version<br />
** [[Libre Computer Board ALL-H3-CC]], H5 version<br />
** [[Orange Pi Zero Plus]]<br />
** [[Sinovoip_Banana_Pi_M2_Berry | Banana Pi M2 Berry]]<br />
<br />
== v2018.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.05 v2018.05 Release branch]<br />
* Boards<br />
** [[Olimex A20-SOM204-EVB]]<br />
** [[Olimex A20-SOM204-EVB]] with eMMC<br />
<br />
== v2018.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.03 v2018.03 Release branch]<br />
* Boards<br />
**[[Libre Computer Board ALL-H3-CC]], H3 version<br />
<br />
== v2018.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.01 v2018.01 Release branch]<br />
* Boards<br />
** [[NanoPi NEO Plus 2]]<br />
** [[TBS A711]]<br />
<br />
== v2017.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.11 v2017.11 Release branch]<br />
* Boards<br />
** [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
** [[FriendlyARM Nanopi M1 Plus]]<br />
** [[Sinovoip Banana Pi M2]] Magic<br />
<br />
== v2017.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.09 v2017.09 Release branch]<br />
* Boards<br />
** [[FriendlyARM_NanoPi_A64 | NanoPi A64 ]]<br />
** [[Olimex_A20-OLinuXino-Lime2 | OLinuXino Lime2 (A20)]] with eMMC<br />
** [[Olimex_A64-OLinuXino | OLinuXino A64]]<br />
<br />
== v2017.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.07 v2017.07 Release branch]<br />
* Boards<br />
** [[Xunlong Orange Pi Win]] and Win Plus<br />
** [[Xunlong Orange Pi Prime]]<br />
** [[Xunlong Orange Pi Zero Plus 2]]<br />
<br />
== v2017.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.05 v2017.05 Release branch]<br />
* [[A64]] SPL support<br />
* [[H5]] support (with SPL)<br />
* Boards<br />
** [[Xunlong Orange Pi PC 2]]<br />
** [[FriendlyARM NanoPi NEO Air]]<br />
<br />
== v2017.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.03 v2017.03 Release branch]<br />
<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=2fc554d3e37c27c5b8d2540d7a571dc53152a301 enable H3 EMAC for the nanopi neo]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=59603d026b9ad3f51a8d69c2a94d3a511639c525 add proper device tree for Orange Pi Zero boards]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=7490130c9f8a4e17e858a38c767ad9ed64bd777b OrangePi Zero: defconfig: enable SPI flash]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=8b15f8eb67a48a98d5c131c1d44aa78c236c064d OrangePi Zero: add Ethernet node]<br />
<br />
== v2017.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.01 v2017.01 Release branch]<br />
<br />
* add support for [[Nintendo NES Classic Edition]]<br />
<br />
== v2016.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.11 v2016.11 Release branch]<br />
<br />
* Hans de Goede and Ian Campbell step down as U-boot Sunxi maintainers<br />
<br />
* A80<br />
** Full SPL support<br />
<br />
* A64<br />
** USB support<br />
<br />
* H3<br />
** DRAM impedance calibration fixes<br />
<br />
* Boards<br />
** [[FriendlyARM NanoPi NEO]]<br />
** [[Sinlinx SinA33]]<br />
*** USB host and OTG support<br />
** [[Cubietech Cubieboard4]]<br />
<br />
== v2016.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.09 v2016.09 Release branch]<br />
<br />
* General<br />
** GPIO fixes<br />
** PSCI rewrite in C part 2<br />
** NAND controller driver<br />
** H3/A64 Ethernet (EMAC) support<br />
<br />
* Boards<br />
** [[Empire Electronix M712]]<br />
** [[Inet Q972]]<br />
** [[Olimex A33-OLinuXino]]<br />
** [[Xunlong Orange Pi PC | Xunlong Orange Pi PC Plus]]<br />
** [[Xunlong Orange Pi Plus 2E]]<br />
<br />
== v2016.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.07 v2016.07 Release branch]<br />
<br />
* AXP809 PMIC support<br />
<br />
* PSCI rewrite in C part 1<br />
<br />
* Boards<br />
** [[Allwinner R16 EVB]]<br />
** [[Inet 86dz]]<br />
** [[Polaroid MID2407PXE03]]<br />
<br />
== v2016.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.05 v2016.05 Release branch]<br />
<br />
* [[A23]]<br />
** Support new revisions<br />
<br />
* [[A64]]<br />
** 64-bit ARMv8 port, basic support (MMC, UART, no USB, no Ethernet)<br />
** (basic) EFI support (allows booting EFI applications (like grub) or kernels)<br />
<br />
* I2C support fix for families with separate reset control<br />
<br />
* SID e-fuse support for A83T and H3<br />
<br />
* Sync up dts files with Linux kernel<br />
* Update compatible strings for GPIO<br />
<br />
* Boards<br />
** colorfly e708 q1, Difrence DIT4350, Polaroid MID2809PXE4, Itead Ibox, icnova-a20-swac, yones toptech bs1078-v2, Dserve DSRV9703C, <br />
** [[Cubietech Cubietruck Plus]]<br />
** [[Sinlinx SinA31s]]<br />
** [[Xunlong Orange Pi 2]]<br />
** [[Pine64]]<br />
** [[LicheePi Zero]]<br />
<br />
== v2016.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.03 v2016.03 Release branch]<br />
<br />
* PRCM i2c support<br />
<br />
* A83T<br />
** LPDDR3 support<br />
<br />
* H3<br />
** USB host support<br />
** PSCI (security switches included)<br />
** sy8106a i2c-based regulator support<br />
<br />
* AXP PMICs<br />
** Power off support<br />
<br />
* Boards<br />
** [[Banana Pi M3]] (SinoVoip BPi-M3)<br />
<br />
{{knownProblems|1=<br><br />
* Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=c32a6fd07b1839e4a45729587ebc8e1c55601a4d c32a6fd] breaks MII detection (and thus U-Boot networking) for sunxi GMAC.<br />
<br />
You might observe the PHY not initializing (e.g. no LED activity), and the command <code>mii&nbsp;info</code> likely will list useless information on all available PHY slots (0x00-0x1F). Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba fc8991c] fixes it again, but unfortunately that means U-Boot release '''v2016.03 is affected'''.}}<br />
<br />
== v2016.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.01 v2016.01 Release branch]<br />
* sun8i-H3 support<br />
<br />
* Boards<br />
** Empire Electronix D709 tablet<br />
** A83T HomletV2 Board<br />
** [[Lamobo R1]]<br />
** [[Xunlong Orange Pi Plus]]<br />
** [[Orange Pi PC|Xunlong Orange Pi PC]]<br />
** [[NextThingCo_CHIP | C.H.I.P.]]<br />
<br />
== v2015.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.10 v2015.10 Release branch]<br />
<br />
* Console/display output<br />
:* ANX9804 LCD-eDP bridge chip support<br />
:* Composite video output support<br />
* NAND SPL driver<br />
<br />
* Boards<br />
** Olimex A20-SOM-EVB<br />
** A10s-Wobo-i5 (settop box)<br />
** Point of View pov protab2-ips9 tablet<br />
** Auxtek-T003 HDMI stick<br />
** A10 tablets based on the iNet-tek iNet-1 mainboard (e.g. Point of View Protab2 XXL, Cherry M1007)<br />
** A10 tablets based on the inet9f-rev03 mainboard (e.g. qware tb-g100 tablet)<br />
** A13 tablets based on on the inet98v_rev2 mainboard<br />
** A10 tablets based on the inet97fv2 mainboard<br />
** A23 tablets based on the gt90h-v4 mainboard<br />
<br />
== v2015.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.07 v2015.07 Release branch]<br />
<br />
* Serial number support<br />
* Device model support<br />
** Ethernet<br />
** GPIO<br />
* sun8i (A33) support (including SPL)<br />
* sun9i (A80) basic support<br />
** UART<br />
** MMC<br />
* sun6i/sun8i<br />
** PSCI CPU hotplugging<br />
* SPL<br />
** <strike>NAND support</strike> reverted: [http://git.denx.de/?p=u-boot.git;a=commit;h=da9971d1b3bdb554d4a4ac948119f8b2616bbcce Revert commit]<br />
<br />
* Boards:<br />
** [[Mixtile LOFT-Q]]<br />
** [[Ainol AW1]]<br />
** [[Yones Toptech BD1078]]<br />
** [[iNet 3W]]<br />
** [[iNet 3F]]<br />
** [[ET-Q8 A33]]<br />
** [[Ippo q8h#v1.2 | Ippo q8h v1.2 A33 1024x600]]<br />
** [[ga10h v1.1]]<br />
** [[Merrii A80 Optimus Board]]<br />
<br />
== v2015.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.04 v2015.04 Release branch]<br />
<br />
* sun7i (A20) [[PSCI]] CPU hotplug<br />
* sun8i (A23) SPL<br />
** RSB<br />
** AXP223<br />
<br />
* sun9i (A80) basic support<br />
** Clocks<br />
** RSB<br />
<br />
* Console/display output<br />
** VGA via internal DAC<br />
** VGA via external DAC on LCD interface<br />
** LVDS<br />
** SSD2828 MIPI bridge<br />
** tl059wv5c0 LCD panel<br />
<br />
* USB OTG<br />
<br />
* Boards:<br />
** [[CSQ CS908]]<br />
** [[Merrii Hummingbird A31]]<br />
** [[Ippo q8h#Q8H-V1.2 | Ippo q8h v1.2]]<br />
** [[MSI Primo81]]<br />
** [[MSI Primo73]]<br />
** [[LinkSprite pcDuino]]<br />
** [[LinkSprite pcDuino V2]]<br />
** [[LeMaker Banana Pro]]<br />
** [[Rikomagic mk802]]<br />
** [[Rikomagic mk802ii]]<br />
** [[Semitime g2]] (See also [[Format_MK802]] with A10s)<br />
** [[MarsBoard A10]]<br />
** [[Gemei G9]]<br />
** [[Chuwi V7 CW0825]]<br />
** [[Mele M5]]<br />
** [[Hyundai A7HD]]<br />
** [[LinkSprite pcDuino3 Nano]]<br />
** [[TZX-Q8-713B7]]<br />
** [[Inet 86vs]]<br />
** [[Ampe A76]]<br />
** [[Jesurun Q5]]<br />
** [[MK808C]]<br />
** [[Mele I7]]<br />
** [[Forfun Q88DB]]<br />
** [[Wits Pro A20 DKT]]<br />
** [[Xunlong Orange Pi]]<br />
** [[Xunlong Orange Pi Mini]]<br />
** [[Wexler TAB 7200]]<br />
<br />
== v2015.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.01 v2015.01 Release branch]<br />
<br />
* sun6i (A31) processor support<br />
** P2WI<br />
** AXP221<br />
** SPL<br />
** GMAC<br />
* sun8i (A23) processor support (no SPL)<br />
* sun6i/sun8i reset support<br />
* Console/display output<br />
** HDMI only<br />
** simplefb<br />
<br />
* Boards:<br />
** [[Mele M3]]<br />
** [[Olimex A20-OLinuXino-Lime2]]<br />
** WITS Colombus Board<br />
** [[Mele M9]]<br />
<br />
== v2014.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.10 v2014.10 Release branch]<br />
<br />
* AHCI (SATA)<br />
* sun4i (AKA A10) and sun5i (AKA A10s and A13) processors<br />
* EMAC Ethernet<br />
* AXP152 and AXP209 power controllers<br />
* EHCI USB<br />
* SMP support for sun7i via [[PSCI]].<br />
<br />
* Boards:<br />
** [[LeMaker Banana Pi]]<br />
<br />
== v2014.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.07 v2014.07 Release branch]<br />
* sun7i (AKA A20) processors<br />
* MMC<br />
* GMAC Ethernet<br />
* Boards:<br />
** [[Cubietech Cubietruck]]<br />
<br />
= Supported Devices =<br />
<categorytree mode=pages hideroot=on>Mainline_U-Boot</categorytree><br />
Beware: some of the above might only be supported in the latest development version.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[toolchain]] installed and added to your PATH.<br />
<br />
You may also need to add some additional packages to build U-Boot:<br />
<pre>apt-get install swig python-dev</pre><br />
<br />
== Get the Device-tree Compiler ==<br />
<br />
Depending on your desired U-Boot version, a sufficiently up-to-date ''dtc'' may be required. (The build process will error on an outdated ''dtc'', and request you to upgrade it.) The installation of dtc is described in the [[Device_Tree#Get_the_Device-tree_Compiler|Device tree article]].<br />
<br />
If you are going to build a Linux kernel alongside U-Boot, it might also be worth to examine the kernel sources - as they come with ''dtc'' included under <code>${KERNEL_DIR}/scripts/dtc/</code>.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone the u-boot repository by running:<br />
<pre>git clone git://git.denx.de/u-boot.git</pre><br />
<br />
{{alert|You should prefer using a stable release, unless you're testing recently added boards or experimental features that have not yet made into stable release:<br />
<br />
git checkout v2016.01 # or whatever is latest<br />
}}<br />
== Determine build target ==<br />
<br />
Go to your u-boot tree and search in the directory ''configs/'' for your board, the file name looks like ''<board_name>_defconfig''.<br />
<br />
So, if your device is [[Cubietech Cubieboard2|Cubieboard2]] your build target is ''Cubieboard2_defconfig''.<br />
<br />
== Build ==<br />
'''Arm Trusted Firmware (arm64)'''<br />
<br />
In order to build U-Boot for a arm64 device you need to build Arm Trusted Firmware (ATF) as a prerequisite first. Change <platform> to your needs. ''PLAT=sun50i_a64'' for example is suitable for H5 and A64 devices. (See board/sunxi/README.sunxi64 in uboot sources for more infos.)<br />
<pre>git clone https://github.com/ARM-software/arm-trusted-firmware.git<br />
cd arm-trusted-firmware<br />
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=<platform> DEBUG=1 bl31</pre><br />
<br />
When you have determined what <board_name> just configure U-Boot with a suitable default configuration. Use menuconfing to play with the settings if you feel like it and then just build it:<br />
<br />
'''armhf'''<br />
<pre>make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
'''arm64'''<br />
<pre>make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin <board_name>_defconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin menuconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin</pre><br />
<br />
(When compiling natively, omit the <kbd>CROSS_COMPILE=…</kbd>)<br />
<br />
When the build has completed, there will be ''u-boot-sunxi-with-spl.bin'' available in your u-boot tree. The installation step will instruct how to install this on the installation media (e.g. a SD card), but first U-Boot needs to be configured.<br />
<br />
= Configure U-Boot =<br />
<br />
This article provides a collection of various scenarios for booting with U-Boot. <br />
<br />
== Boot ==<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[Mainline_NAND_Howto#Booting_from_NAND|NAND]]<br />
* [[Bootable SPI flash | SPI NOR Flash]]<br />
* [[FEL/USBBoot | USB OTG]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[Fastboot]]<br />
<br />
=== Booting with boot.cmd ===<br />
For booting from SD with mainline U-Boot, the recommended way is:<br />
<br />
* create a file ''boot.cmd'' on the first partition (also check [[Kernel arguments]] for extra 'bootargs' options):<br />
<br />
{| class="wikitable"<br />
! mainline kernel<br />
! sunxi-3.4 kernel<br />
|-<br />
|<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000 - 0x43000000<br />
||<br />
setenv bootm_boot_mode sec<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000<br />
|}<br />
* If you also want to use an initramfs, please refer to the [[Initial Ramdisk]] article for details.<br />
<br />
:{{info|If you're wondering why setting '''bootm_boot_mode''' might be necessary for older kernels, have a look at the details of [[PSCI]].}}<br />
<br />
:{{note|Directly using a '''zImage''' is also supported by U-Boot for the sunxi platform.}} Substitute ''zImage'' in place of ''uImage'' in the commands above, and then use the '''bootz''' command instead of ''bootm''.<br />
<br />
=== Booting with extlinux.conf ===<br />
Mainline U-Boot also use syslinux/extlinux as payload.<br />
<br />
You need to install the boot configuration file extlinux.conf in an ext2/3/4 partition of SD card and U-Boot will find and execute it. This is conceptually identical to creating a GRUB configuration file on a desktop PC.<br />
<br />
Example extlinux.conf:<br />
<pre><br />
TIMEOUT 100<br />
DEFAULT default<br />
MENU TITLE Boot menu<br />
<br />
LABEL default<br />
MENU LABEL Default<br />
LINUX /zImage<br />
FDT /sun4i-a10-marsboard.dtb<br />
APPEND root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8<br />
<br />
LABEL exit<br />
MENU LABEL Local boot script (boot.scr)<br />
LOCALBOOT 1<br />
</pre><br />
<br />
== Setting u-boot environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the U-Boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== NAND ==<br />
Example U-Boot environment, as found in <code>uEnv.txt</code> from a stock android U-Boot environment partition<br />
<br />
<pre>bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot</pre><br />
<br />
== NFS ==<br />
<br />
Recent version of U-Boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
{{Note|on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.}}<br />
<br />
== FB console ==<br />
<br />
To get U-Boot output shown on the built-in framebuffer driver (currently, HDMI only at 1024x768), add the following to your boot.cmd:<br />
<pre>setenv stdout=serial,vga<br />
setenv stderr=serial,vga</pre><br />
The default environment has these values set as well.<br />
<br />
== LCD Settings ==<br />
<br />
There is a [[LCD|separate wiki page about configuring LCD]] in U-Boot.<br />
<br />
= Install U-Boot =<br />
<br />
* Convert the ''boot.cmd'' to ''boot.scr'' using [[U-Boot/Tools#mkimage|mkimage]]:<br />
<br />
mkimage -C none -A arm -T script -d boot.cmd boot.scr<br />
<br />
* Copy the bootloader to the installation media<br />
<br />
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
* copy kernel files to the first partition<br />
** For a 3.4 kernel you need ''uImage'' (linux kernel) and ''script.bin'' (binary representation of [[Fex Guide|FEX]]).<br />
** For a device tree based kernel ("mainline", 4.x) you need the kernel image (''uImage'' or ''zImage'') and the device-specific ''.dtb'' file (the one referenced in the ''${fdtfile}'' above) that is generated as part of your kernel compilation.<br />
<br />
Look at [[Manual build howto]] for more details.<br />
<br />
= Troubleshooting =<br />
<br />
== USB 1.x, USB keyboards (U-Boot < v2015.07) ==<br />
<br />
'''U-Boot v2015.07 and later shouldn't have problems supporting mixed USB 1.x/2.0 devices.''' OHCI and EHCI no longer conflict with each other (after the switch to device model).<br />
<br />
Previous U-Boot versions (v2015.04 and older) have a problem supporting both USB 1.x (OHCI) and USB 2.0 (EHCI) at the same time - the latter includes the ''SUNXI_EHCI'' driver for Allwinner boards.<br />
<br />
:Unfortunately, this also affects many '''USB HID / keyboard''' devices which would not be detected properly by U-Boot. The typical message in this case is "''cannot reset port N!?''", where ''N'' is whichever USB port those devices were attached to.<br />
<br />
{{info|A possible workaround is to place an external USB 2.0 hub between your board and these USB devices.}}<br />
<br />
See: http://lists.denx.de/pipermail/u-boot/2015-January/200162.html.<br />
<br />
== U-Boot 2015.07+ won't start ==<br />
If you're using a recent (device model based) U-Boot, and the SPL just hangs after initializing the DRAM (<code>CPU: 912000000Hz, AXI/AHB/APB: 3/2/2</code> or something similar), chances are that your main U-Boot binary may be missing DTB information / a proper [[device tree]]. Depending on the (possibly outdated) instructions you followed: double-check that you're not incorrectly using ''u-boot.bin'' instead of ''u-boot'''-dtb'''.bin'', or ''u-boot.img'' instead of ''u-boot'''-dtb'''.img''.<br />
<br />
== Legacy kernel won't start ==<br />
* If your 3.4.x kernel refuses to boot / gets stuck right after ''"Starting kernel ..."'':<br />
** Double-check that '''bootm_boot_mode''' is set to "'''sec'''"! (see [[#Boot|above]])<br />
** For U-Boot 2018.09-rc1 or later, set CONFIG_ARMV7_LPAE=n in .config or apply https://patchwork.ozlabs.org/patch/1058338/<br />
* If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see [[#Unrecognized.2Funsupported_machine_ID|below]]).<br />
<br />
== Unrecognized/unsupported machine ID ==<br />
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a HDMI monitor or a LCD display!):<br />
<pre><br />
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).<br />
</pre><br />
In this case either upgrade to a recent ''stage/sunxi-3.4'' kernel ([https://github.com/linux-sunxi/linux-sunxi/tree/stage/sunxi-3.4 github branch]) - or try to '''"Enable workarounds for booting old kernels"''' in U-Boot:<br />
:<code>make menuconfig</code> or <code>make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)<br />
<br />
If upgrading to ''stage/sunxi-3.4'' is not an option (i.e. using some old and very much diverged<br />
sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (=&nbsp;selectively merged <u>as a set</u>):<br />
<pre><br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/9a1cd034181af628d4145202289e1993c1687db6.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
git am 9a1cd034181af628d4145202289e1993c1687db6.patch<br />
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
</pre><br />
{{warn|It is required to apply '''all''' of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.|}}<br />
<br />
<br />
== ImportError: No module named _libfdt ==<br />
<br />
If you see the following error when compiling on Arch Linux arm<br />
<pre><br />
ImportError: No module named _libfdt<br />
</pre><br />
<br />
install dtc<br />
<pre><br />
sudo pacman -S dtc<br />
</pre><br />
<br />
= Adding a new device to upstream U-Boot =<br />
<br />
http://lists.denx.de/pipermail/u-boot/2014-December/199351.html<br />
<br />
== DRAM Settings ==<br />
<br />
=== Failsafe DRAM settings, based on standard JEDEC timings ===<br />
<br />
Each device has DRAM settings configured in its defconfig file in the U-Boot "configs" directory (here is [http://git.denx.de/?p=u-boot.git;a=blob;f=configs/Cubietruck_defconfig;h=b64f84f2b8d2d48bed3130aecd31d220013061f0;hb=HEAD an example for the Cubietruck board]). The slow failsafe DRAM settings for an A10/A13/A20 device may look like:<br />
<pre style="background-color: lightgreen;"><br />
+S:CONFIG_DRAM_CLK=360<br />
+S:CONFIG_DRAM_ZQ=123<br />
+S:CONFIG_DRAM_EMR1=4<br />
+S:CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y<br />
</pre><br />
<br />
A more complete set of available Kconfig options and their descriptions can be found here: http://git.denx.de/?p=u-boot.git;a=blob;f=board/sunxi/Kconfig;h=e1d4ab148f0838d746889775cfbab5bed57838bf;hb=a705ebc81b7f91bbd0ef7c634284208342901149#l177<br />
<br />
=== The settings from the Android firmware ===<br />
<br />
Somewhat better settings can be retrieved by the [[Retrieving_device_information#Reading_memory_information_from_registers|meminfo tool]] from the stock Android or GNU/Linux system, provided by the device manufacturer. It still makes sense to [[Hardware_Reliability_Tests#DRAM|test the reliability]] of the resulting DRAM configuration. Because some vendors are providing poor configuration for ZQ or EMR1, but nevertheless trying to optimistically set the DRAM clock speed too high.<br />
<br />
=== Performance optimized DRAM settings ===<br />
<br />
Tuning DRAM setting for each individual board can provide much better performance than the failsafe defaults. This involves trial and error testing of different settings using a tool until an optimal combination is found. The [[DRAM_Controller|DRAM Controller page]] provides links to start researching this topic. This approach will be time consuming, so a satisfactory solution using one of the other approaches may be best to start with.<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:Development]]<br />
[[Category:Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=U-Boot&diff=22633
U-Boot
2019-08-14T20:56:46Z
<p>Rellla: /* Get a toolchain */ add some prereqs</p>
<hr />
<div>Support for sunxi devices is increasingly available from [http://www.denx.de/wiki/U-Boot upstream U-Boot]. This page describes that support. We have a separate page for the 'legacy' [[U-Boot|sunxi branch of U-Boot]].<br />
<br />
{{alert|This document is for 32bits ARM device, for ARM64 see directly board/sunxi/README.sunxi64 in uboot sources}}<br />
= Status =<br />
<br />
The current U-Boot release fully supports major functions (except NAND) on<br />
all the older Allwinner SoCs ([[A10]]/[[A10s]]/[[A13]]/[[A20]]/[[A23]]/[[A31]]/[[A31s]]) and has basic support for the more recent [[A33]], [[A64]], [[A80]], [[A83T]], [[H2+]], [[H3]], [[H5]], and [[V3s]](No MPI-DSI Lcd).<br />
<br />
The next release will be v2019.07.<br />
<br />
See also: [http://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle and Release Schedule].<br />
<br />
== In Progress ==<br />
* [[A83T]] USB support (WiP: Chen-Yu Tsai (wens)) [http://lists.denx.de/pipermail/u-boot/2016-March/250003.html patch-rfc]<br />
* [[A83T]] PSCI support (WiP: Timothy Pearson) [https://patchwork.ozlabs.org/patch/622853/ patch-rfc]<br />
* [[H2+]]/[[H3]]/[[A64]] HDMI / Composite out support (WiP: Jernej Škrabec) [https://github.com/jernejsk/u-boot/tree/de2_wip git-repo]<br />
* [[A20]] SPI driver (WiP: Stephan van Schaik (Swabbles)) [http://lists.denx.de/pipermail/u-boot/2017-February/280966.html patch-rfc] [https://github.com/StephanvanSchaik/u-boot/tree/sunxi-spi git-repo]<br />
* [[A31]]/[[A80]]/[[A64]] SPI driver (WiP: Philipp Tomsich) [https://lists.denx.de/pipermail/u-boot/2017-February/281946.html patch-v1]<br />
* [[R40]] [[Banana Pi M2 Ultra]] support (WiP: Chen-Yu Tsai (wens)) [https://lists.denx.de/pipermail/u-boot/2017-March/282760.html patch]<br />
<br />
== Next Release (v2019.07) ==<br />
[http://git.denx.de/?p=u-boot/u-boot-sunxi.git;a=shortlog;h=refs/heads/master Development branch]<br />
* Boards<br />
** [[Beelink GS1]]<br />
** [[Oceanic 5205 5inMFD]]<br />
** [[Olimex Teres-A64]]<br />
<br />
== v2019.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.04 v2019.04 Release branch]<br />
* Boards<br />
** [[Emlid Neutis N5]]<br />
<br />
== v2019.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.01 v2019.01 Release branch]<br />
* Boards<br />
** [[Pine Pinebook]]<br />
** [[Pine Pine64-LTS]]<br />
** [[Sinovoip Banana Pi M2 Zero]]<br />
** [[Xunlong Orange Pi Lite 2]]<br />
<br />
== v2018.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.11 v2018.11 Release branch]<br />
<br />
== v2018.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.09 v2018.09 Release branch]<br />
* Boards<br />
** [[Pine64#Variants | Pine64 SoPINE]]<br />
** [[Xunlong Orange Pi One Plus]]<br />
** [[PineH64]]<br />
<br />
== v2018.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.07 v2018.07 Release branch]<br />
* Boards<br />
** [[Xunlong_Orange_Pi_Zero#Variants | Orange Pi R1 ]]<br />
** [[Libre Computer Board ALL-H3-CC]], H2+ version<br />
** [[Libre Computer Board ALL-H3-CC]], H5 version<br />
** [[Orange Pi Zero Plus]]<br />
** [[Sinovoip_Banana_Pi_M2_Berry | Banana Pi M2 Berry]]<br />
<br />
== v2018.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.05 v2018.05 Release branch]<br />
* Boards<br />
** [[Olimex A20-SOM204-EVB]]<br />
** [[Olimex A20-SOM204-EVB]] with eMMC<br />
<br />
== v2018.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.03 v2018.03 Release branch]<br />
* Boards<br />
**[[Libre Computer Board ALL-H3-CC]], H3 version<br />
<br />
== v2018.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.01 v2018.01 Release branch]<br />
* Boards<br />
** [[NanoPi NEO Plus 2]]<br />
** [[TBS A711]]<br />
<br />
== v2017.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.11 v2017.11 Release branch]<br />
* Boards<br />
** [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
** [[FriendlyARM Nanopi M1 Plus]]<br />
** [[Sinovoip Banana Pi M2]] Magic<br />
<br />
== v2017.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.09 v2017.09 Release branch]<br />
* Boards<br />
** [[FriendlyARM_NanoPi_A64 | NanoPi A64 ]]<br />
** [[Olimex_A20-OLinuXino-Lime2 | OLinuXino Lime2 (A20)]] with eMMC<br />
** [[Olimex_A64-OLinuXino | OLinuXino A64]]<br />
<br />
== v2017.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.07 v2017.07 Release branch]<br />
* Boards<br />
** [[Xunlong Orange Pi Win]] and Win Plus<br />
** [[Xunlong Orange Pi Prime]]<br />
** [[Xunlong Orange Pi Zero Plus 2]]<br />
<br />
== v2017.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.05 v2017.05 Release branch]<br />
* [[A64]] SPL support<br />
* [[H5]] support (with SPL)<br />
* Boards<br />
** [[Xunlong Orange Pi PC 2]]<br />
** [[FriendlyARM NanoPi NEO Air]]<br />
<br />
== v2017.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.03 v2017.03 Release branch]<br />
<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=2fc554d3e37c27c5b8d2540d7a571dc53152a301 enable H3 EMAC for the nanopi neo]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=59603d026b9ad3f51a8d69c2a94d3a511639c525 add proper device tree for Orange Pi Zero boards]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=7490130c9f8a4e17e858a38c767ad9ed64bd777b OrangePi Zero: defconfig: enable SPI flash]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=8b15f8eb67a48a98d5c131c1d44aa78c236c064d OrangePi Zero: add Ethernet node]<br />
<br />
== v2017.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.01 v2017.01 Release branch]<br />
<br />
* add support for [[Nintendo NES Classic Edition]]<br />
<br />
== v2016.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.11 v2016.11 Release branch]<br />
<br />
* Hans de Goede and Ian Campbell step down as U-boot Sunxi maintainers<br />
<br />
* A80<br />
** Full SPL support<br />
<br />
* A64<br />
** USB support<br />
<br />
* H3<br />
** DRAM impedance calibration fixes<br />
<br />
* Boards<br />
** [[FriendlyARM NanoPi NEO]]<br />
** [[Sinlinx SinA33]]<br />
*** USB host and OTG support<br />
** [[Cubietech Cubieboard4]]<br />
<br />
== v2016.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.09 v2016.09 Release branch]<br />
<br />
* General<br />
** GPIO fixes<br />
** PSCI rewrite in C part 2<br />
** NAND controller driver<br />
** H3/A64 Ethernet (EMAC) support<br />
<br />
* Boards<br />
** [[Empire Electronix M712]]<br />
** [[Inet Q972]]<br />
** [[Olimex A33-OLinuXino]]<br />
** [[Xunlong Orange Pi PC | Xunlong Orange Pi PC Plus]]<br />
** [[Xunlong Orange Pi Plus 2E]]<br />
<br />
== v2016.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.07 v2016.07 Release branch]<br />
<br />
* AXP809 PMIC support<br />
<br />
* PSCI rewrite in C part 1<br />
<br />
* Boards<br />
** [[Allwinner R16 EVB]]<br />
** [[Inet 86dz]]<br />
** [[Polaroid MID2407PXE03]]<br />
<br />
== v2016.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.05 v2016.05 Release branch]<br />
<br />
* [[A23]]<br />
** Support new revisions<br />
<br />
* [[A64]]<br />
** 64-bit ARMv8 port, basic support (MMC, UART, no USB, no Ethernet)<br />
** (basic) EFI support (allows booting EFI applications (like grub) or kernels)<br />
<br />
* I2C support fix for families with separate reset control<br />
<br />
* SID e-fuse support for A83T and H3<br />
<br />
* Sync up dts files with Linux kernel<br />
* Update compatible strings for GPIO<br />
<br />
* Boards<br />
** colorfly e708 q1, Difrence DIT4350, Polaroid MID2809PXE4, Itead Ibox, icnova-a20-swac, yones toptech bs1078-v2, Dserve DSRV9703C, <br />
** [[Cubietech Cubietruck Plus]]<br />
** [[Sinlinx SinA31s]]<br />
** [[Xunlong Orange Pi 2]]<br />
** [[Pine64]]<br />
** [[LicheePi Zero]]<br />
<br />
== v2016.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.03 v2016.03 Release branch]<br />
<br />
* PRCM i2c support<br />
<br />
* A83T<br />
** LPDDR3 support<br />
<br />
* H3<br />
** USB host support<br />
** PSCI (security switches included)<br />
** sy8106a i2c-based regulator support<br />
<br />
* AXP PMICs<br />
** Power off support<br />
<br />
* Boards<br />
** [[Banana Pi M3]] (SinoVoip BPi-M3)<br />
<br />
{{knownProblems|1=<br><br />
* Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=c32a6fd07b1839e4a45729587ebc8e1c55601a4d c32a6fd] breaks MII detection (and thus U-Boot networking) for sunxi GMAC.<br />
<br />
You might observe the PHY not initializing (e.g. no LED activity), and the command <code>mii&nbsp;info</code> likely will list useless information on all available PHY slots (0x00-0x1F). Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba fc8991c] fixes it again, but unfortunately that means U-Boot release '''v2016.03 is affected'''.}}<br />
<br />
== v2016.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.01 v2016.01 Release branch]<br />
* sun8i-H3 support<br />
<br />
* Boards<br />
** Empire Electronix D709 tablet<br />
** A83T HomletV2 Board<br />
** [[Lamobo R1]]<br />
** [[Xunlong Orange Pi Plus]]<br />
** [[Orange Pi PC|Xunlong Orange Pi PC]]<br />
** [[NextThingCo_CHIP | C.H.I.P.]]<br />
<br />
== v2015.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.10 v2015.10 Release branch]<br />
<br />
* Console/display output<br />
:* ANX9804 LCD-eDP bridge chip support<br />
:* Composite video output support<br />
* NAND SPL driver<br />
<br />
* Boards<br />
** Olimex A20-SOM-EVB<br />
** A10s-Wobo-i5 (settop box)<br />
** Point of View pov protab2-ips9 tablet<br />
** Auxtek-T003 HDMI stick<br />
** A10 tablets based on the iNet-tek iNet-1 mainboard (e.g. Point of View Protab2 XXL, Cherry M1007)<br />
** A10 tablets based on the inet9f-rev03 mainboard (e.g. qware tb-g100 tablet)<br />
** A13 tablets based on on the inet98v_rev2 mainboard<br />
** A10 tablets based on the inet97fv2 mainboard<br />
** A23 tablets based on the gt90h-v4 mainboard<br />
<br />
== v2015.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.07 v2015.07 Release branch]<br />
<br />
* Serial number support<br />
* Device model support<br />
** Ethernet<br />
** GPIO<br />
* sun8i (A33) support (including SPL)<br />
* sun9i (A80) basic support<br />
** UART<br />
** MMC<br />
* sun6i/sun8i<br />
** PSCI CPU hotplugging<br />
* SPL<br />
** <strike>NAND support</strike> reverted: [http://git.denx.de/?p=u-boot.git;a=commit;h=da9971d1b3bdb554d4a4ac948119f8b2616bbcce Revert commit]<br />
<br />
* Boards:<br />
** [[Mixtile LOFT-Q]]<br />
** [[Ainol AW1]]<br />
** [[Yones Toptech BD1078]]<br />
** [[iNet 3W]]<br />
** [[iNet 3F]]<br />
** [[ET-Q8 A33]]<br />
** [[Ippo q8h#v1.2 | Ippo q8h v1.2 A33 1024x600]]<br />
** [[ga10h v1.1]]<br />
** [[Merrii A80 Optimus Board]]<br />
<br />
== v2015.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.04 v2015.04 Release branch]<br />
<br />
* sun7i (A20) [[PSCI]] CPU hotplug<br />
* sun8i (A23) SPL<br />
** RSB<br />
** AXP223<br />
<br />
* sun9i (A80) basic support<br />
** Clocks<br />
** RSB<br />
<br />
* Console/display output<br />
** VGA via internal DAC<br />
** VGA via external DAC on LCD interface<br />
** LVDS<br />
** SSD2828 MIPI bridge<br />
** tl059wv5c0 LCD panel<br />
<br />
* USB OTG<br />
<br />
* Boards:<br />
** [[CSQ CS908]]<br />
** [[Merrii Hummingbird A31]]<br />
** [[Ippo q8h#Q8H-V1.2 | Ippo q8h v1.2]]<br />
** [[MSI Primo81]]<br />
** [[MSI Primo73]]<br />
** [[LinkSprite pcDuino]]<br />
** [[LinkSprite pcDuino V2]]<br />
** [[LeMaker Banana Pro]]<br />
** [[Rikomagic mk802]]<br />
** [[Rikomagic mk802ii]]<br />
** [[Semitime g2]] (See also [[Format_MK802]] with A10s)<br />
** [[MarsBoard A10]]<br />
** [[Gemei G9]]<br />
** [[Chuwi V7 CW0825]]<br />
** [[Mele M5]]<br />
** [[Hyundai A7HD]]<br />
** [[LinkSprite pcDuino3 Nano]]<br />
** [[TZX-Q8-713B7]]<br />
** [[Inet 86vs]]<br />
** [[Ampe A76]]<br />
** [[Jesurun Q5]]<br />
** [[MK808C]]<br />
** [[Mele I7]]<br />
** [[Forfun Q88DB]]<br />
** [[Wits Pro A20 DKT]]<br />
** [[Xunlong Orange Pi]]<br />
** [[Xunlong Orange Pi Mini]]<br />
** [[Wexler TAB 7200]]<br />
<br />
== v2015.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.01 v2015.01 Release branch]<br />
<br />
* sun6i (A31) processor support<br />
** P2WI<br />
** AXP221<br />
** SPL<br />
** GMAC<br />
* sun8i (A23) processor support (no SPL)<br />
* sun6i/sun8i reset support<br />
* Console/display output<br />
** HDMI only<br />
** simplefb<br />
<br />
* Boards:<br />
** [[Mele M3]]<br />
** [[Olimex A20-OLinuXino-Lime2]]<br />
** WITS Colombus Board<br />
** [[Mele M9]]<br />
<br />
== v2014.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.10 v2014.10 Release branch]<br />
<br />
* AHCI (SATA)<br />
* sun4i (AKA A10) and sun5i (AKA A10s and A13) processors<br />
* EMAC Ethernet<br />
* AXP152 and AXP209 power controllers<br />
* EHCI USB<br />
* SMP support for sun7i via [[PSCI]].<br />
<br />
* Boards:<br />
** [[LeMaker Banana Pi]]<br />
<br />
== v2014.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.07 v2014.07 Release branch]<br />
* sun7i (AKA A20) processors<br />
* MMC<br />
* GMAC Ethernet<br />
* Boards:<br />
** [[Cubietech Cubietruck]]<br />
<br />
= Supported Devices =<br />
<categorytree mode=pages hideroot=on>Mainline_U-Boot</categorytree><br />
Beware: some of the above might only be supported in the latest development version.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[toolchain]] installed and added to your PATH.<br />
<br />
You may also need to add some additional packages to build U-Boot:<br />
<pre>apt-get install swig python-dev</pre><br />
<br />
== Get the Device-tree Compiler ==<br />
<br />
Depending on your desired U-Boot version, a sufficiently up-to-date ''dtc'' may be required. (The build process will error on an outdated ''dtc'', and request you to upgrade it.) The installation of dtc is described in the [[Device_Tree#Get_the_Device-tree_Compiler|Device tree article]].<br />
<br />
If you are going to build a Linux kernel alongside U-Boot, it might also be worth to examine the kernel sources - as they come with ''dtc'' included under <code>${KERNEL_DIR}/scripts/dtc/</code>.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone the u-boot repository by running:<br />
<pre>git clone git://git.denx.de/u-boot.git</pre><br />
<br />
{{alert|You should prefer using a stable release, unless you're testing recently added boards or experimental features that have not yet made into stable release:<br />
<br />
git checkout v2016.01 # or whatever is latest<br />
}}<br />
== Determine build target ==<br />
<br />
Go to your u-boot tree and search in the directory ''configs/'' for your board, the file name looks like ''<board_name>_defconfig''.<br />
<br />
So, if your device is [[Cubietech Cubieboard2|Cubieboard2]] your build target is ''Cubieboard2_defconfig''.<br />
<br />
== Build ==<br />
'''Arm Trusted Firmware (arm64)'''<br />
<br />
In order to build U-Boot for a arm64 device you need to build Arm Trusted Firmware (ATF) as a prerequisite first. Change <platform> to your needs. ''PLAT=sun50i_a64'' for example is suitable for H5 and A64 devices. (See board/sunxi/README.sunxi64 in uboot sources for more infos.)<br />
<pre>git clone https://github.com/ARM-software/arm-trusted-firmware.git<br />
cd arm-trusted-firmware<br />
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=<platform> DEBUG=1 bl31</pre><br />
<br />
When you have determined what <board_name> just configure U-Boot with a suitable default configuration. Use menuconfing to play with the settings if you feel like it and then just build it:<br />
<br />
'''armhf'''<br />
<pre>make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
'''arm64'''<br />
<pre>make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin <board_name>_defconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin menuconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin</pre><br />
<br />
(When compiling natively, omit the <kbd>CROSS_COMPILE=…</kbd>)<br />
<br />
When the build has completed, there will be ''u-boot-sunxi-with-spl.bin'' available in your u-boot tree. The installation step will instruct how to install this on the installation media (e.g. a SD card), but first U-Boot needs to be configured.<br />
<br />
= Configure U-Boot =<br />
<br />
This article provides a collection of various scenarios for booting with U-Boot. <br />
<br />
== Boot ==<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[Mainline_NAND_Howto#Booting_from_NAND|NAND]]<br />
* [[Bootable SPI flash | SPI NOR Flash]]<br />
* [[FEL/USBBoot | USB OTG]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[Fastboot]]<br />
<br />
=== Booting with boot.cmd ===<br />
For booting from SD with mainline U-Boot, the recommended way is:<br />
<br />
* create a file ''boot.cmd'' on the first partition (also check [[Kernel arguments]] for extra 'bootargs' options):<br />
<br />
{| class="wikitable"<br />
! mainline kernel<br />
! sunxi-3.4 kernel<br />
|-<br />
|<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000 - 0x43000000<br />
||<br />
setenv bootm_boot_mode sec<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000<br />
|}<br />
* If you also want to use an initramfs, please refer to the [[Initial Ramdisk]] article for details.<br />
<br />
:{{info|If you're wondering why setting '''bootm_boot_mode''' might be necessary for older kernels, have a look at the details of [[PSCI]].}}<br />
<br />
:{{note|Directly using a '''zImage''' is also supported by U-Boot for the sunxi platform.}} Substitute ''zImage'' in place of ''uImage'' in the commands above, and then use the '''bootz''' command instead of ''bootm''.<br />
<br />
=== Booting with extlinux.conf ===<br />
Mainline U-Boot also use syslinux/extlinux as payload.<br />
<br />
You need to install the boot configuration file extlinux.conf in an ext2/3/4 partition of SD card and U-Boot will find and execute it. This is conceptually identical to creating a GRUB configuration file on a desktop PC.<br />
<br />
Example extlinux.conf:<br />
<pre><br />
TIMEOUT 100<br />
DEFAULT default<br />
MENU TITLE Boot menu<br />
<br />
LABEL default<br />
MENU LABEL Default<br />
LINUX /zImage<br />
FDT /sun4i-a10-marsboard.dtb<br />
APPEND root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8<br />
<br />
LABEL exit<br />
MENU LABEL Local boot script (boot.scr)<br />
LOCALBOOT 1<br />
</pre><br />
<br />
== Setting u-boot environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the U-Boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== NAND ==<br />
Example U-Boot environment, as found in <code>uEnv.txt</code> from a stock android U-Boot environment partition<br />
<br />
<pre>bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot</pre><br />
<br />
== NFS ==<br />
<br />
Recent version of U-Boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
{{Note|on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.}}<br />
<br />
== FB console ==<br />
<br />
To get U-Boot output shown on the built-in framebuffer driver (currently, HDMI only at 1024x768), add the following to your boot.cmd:<br />
<pre>setenv stdout=serial,vga<br />
setenv stderr=serial,vga</pre><br />
The default environment has these values set as well.<br />
<br />
== LCD Settings ==<br />
<br />
There is a [[LCD|separate wiki page about configuring LCD]] in U-Boot.<br />
<br />
= Install U-Boot =<br />
<br />
* Convert the ''boot.cmd'' to ''boot.scr'' using [[U-Boot/Tools#mkimage|mkimage]]:<br />
<br />
mkimage -C none -A arm -T script -d boot.cmd boot.scr<br />
<br />
* Copy the bootloader to the installation media<br />
<br />
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
* copy kernel files to the first partition<br />
** For a 3.4 kernel you need ''uImage'' (linux kernel) and ''script.bin'' (binary representation of [[Fex Guide|FEX]]).<br />
** For a device tree based kernel ("mainline", 4.x) you need the kernel image (''uImage'' or ''zImage'') and the device-specific ''.dtb'' file (the one referenced in the ''${fdtfile}'' above) that is generated as part of your kernel compilation.<br />
<br />
Look at [[Manual build howto]] for more details.<br />
<br />
= Troubleshooting =<br />
<br />
== USB 1.x, USB keyboards (U-Boot < v2015.07) ==<br />
<br />
'''U-Boot v2015.07 and later shouldn't have problems supporting mixed USB 1.x/2.0 devices.''' OHCI and EHCI no longer conflict with each other (after the switch to device model).<br />
<br />
Previous U-Boot versions (v2015.04 and older) have a problem supporting both USB 1.x (OHCI) and USB 2.0 (EHCI) at the same time - the latter includes the ''SUNXI_EHCI'' driver for Allwinner boards.<br />
<br />
:Unfortunately, this also affects many '''USB HID / keyboard''' devices which would not be detected properly by U-Boot. The typical message in this case is "''cannot reset port N!?''", where ''N'' is whichever USB port those devices were attached to.<br />
<br />
{{info|A possible workaround is to place an external USB 2.0 hub between your board and these USB devices.}}<br />
<br />
See: http://lists.denx.de/pipermail/u-boot/2015-January/200162.html.<br />
<br />
== U-Boot 2015.07+ won't start ==<br />
If you're using a recent (device model based) U-Boot, and the SPL just hangs after initializing the DRAM (<code>CPU: 912000000Hz, AXI/AHB/APB: 3/2/2</code> or something similar), chances are that your main U-Boot binary may be missing DTB information / a proper [[device tree]]. Depending on the (possibly outdated) instructions you followed: double-check that you're not incorrectly using ''u-boot.bin'' instead of ''u-boot'''-dtb'''.bin'', or ''u-boot.img'' instead of ''u-boot'''-dtb'''.img''.<br />
<br />
== Legacy kernel won't start ==<br />
* If your 3.4.x kernel refuses to boot / gets stuck right after ''"Starting kernel ..."'':<br />
** Double-check that '''bootm_boot_mode''' is set to "'''sec'''"! (see [[#Boot|above]])<br />
** For U-Boot 2018.09-rc1 or later, set CONFIG_ARMV7_LPAE=n in .config or apply https://patchwork.ozlabs.org/patch/1058338/<br />
* If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see [[#Unrecognized.2Funsupported_machine_ID|below]]).<br />
<br />
== Unrecognized/unsupported machine ID ==<br />
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a HDMI monitor or a LCD display!):<br />
<pre><br />
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).<br />
</pre><br />
In this case either upgrade to a recent ''stage/sunxi-3.4'' kernel ([https://github.com/linux-sunxi/linux-sunxi/tree/stage/sunxi-3.4 github branch]) - or try to '''"Enable workarounds for booting old kernels"''' in U-Boot:<br />
:<code>make menuconfig</code> or <code>make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)<br />
<br />
If upgrading to ''stage/sunxi-3.4'' is not an option (i.e. using some old and very much diverged<br />
sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (=&nbsp;selectively merged <u>as a set</u>):<br />
<pre><br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/9a1cd034181af628d4145202289e1993c1687db6.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
git am 9a1cd034181af628d4145202289e1993c1687db6.patch<br />
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
</pre><br />
{{warn|It is required to apply '''all''' of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.|}}<br />
<br />
<br />
== ImportError: No module named _libfdt ==<br />
<br />
If you see the following error when compiling on Arch Linux arm<br />
<pre><br />
ImportError: No module named _libfdt<br />
</pre><br />
<br />
install dtc<br />
<pre><br />
sudo pacman -S dtc<br />
</pre><br />
<br />
= Adding a new device to upstream U-Boot =<br />
<br />
http://lists.denx.de/pipermail/u-boot/2014-December/199351.html<br />
<br />
== DRAM Settings ==<br />
<br />
=== Failsafe DRAM settings, based on standard JEDEC timings ===<br />
<br />
Each device has DRAM settings configured in its defconfig file in the U-Boot "configs" directory (here is [http://git.denx.de/?p=u-boot.git;a=blob;f=configs/Cubietruck_defconfig;h=b64f84f2b8d2d48bed3130aecd31d220013061f0;hb=HEAD an example for the Cubietruck board]). The slow failsafe DRAM settings for an A10/A13/A20 device may look like:<br />
<pre style="background-color: lightgreen;"><br />
+S:CONFIG_DRAM_CLK=360<br />
+S:CONFIG_DRAM_ZQ=123<br />
+S:CONFIG_DRAM_EMR1=4<br />
+S:CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y<br />
</pre><br />
<br />
A more complete set of available Kconfig options and their descriptions can be found here: http://git.denx.de/?p=u-boot.git;a=blob;f=board/sunxi/Kconfig;h=e1d4ab148f0838d746889775cfbab5bed57838bf;hb=a705ebc81b7f91bbd0ef7c634284208342901149#l177<br />
<br />
=== The settings from the Android firmware ===<br />
<br />
Somewhat better settings can be retrieved by the [[Retrieving_device_information#Reading_memory_information_from_registers|meminfo tool]] from the stock Android or GNU/Linux system, provided by the device manufacturer. It still makes sense to [[Hardware_Reliability_Tests#DRAM|test the reliability]] of the resulting DRAM configuration. Because some vendors are providing poor configuration for ZQ or EMR1, but nevertheless trying to optimistically set the DRAM clock speed too high.<br />
<br />
=== Performance optimized DRAM settings ===<br />
<br />
Tuning DRAM setting for each individual board can provide much better performance than the failsafe defaults. This involves trial and error testing of different settings using a tool until an optimal combination is found. The [[DRAM_Controller|DRAM Controller page]] provides links to start researching this topic. This approach will be time consuming, so a satisfactory solution using one of the other approaches may be best to start with.<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:Development]]<br />
[[Category:Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=U-Boot&diff=22632
U-Boot
2019-08-14T20:54:26Z
<p>Rellla: /* Build */ add arm64</p>
<hr />
<div>Support for sunxi devices is increasingly available from [http://www.denx.de/wiki/U-Boot upstream U-Boot]. This page describes that support. We have a separate page for the 'legacy' [[U-Boot|sunxi branch of U-Boot]].<br />
<br />
{{alert|This document is for 32bits ARM device, for ARM64 see directly board/sunxi/README.sunxi64 in uboot sources}}<br />
= Status =<br />
<br />
The current U-Boot release fully supports major functions (except NAND) on<br />
all the older Allwinner SoCs ([[A10]]/[[A10s]]/[[A13]]/[[A20]]/[[A23]]/[[A31]]/[[A31s]]) and has basic support for the more recent [[A33]], [[A64]], [[A80]], [[A83T]], [[H2+]], [[H3]], [[H5]], and [[V3s]](No MPI-DSI Lcd).<br />
<br />
The next release will be v2019.07.<br />
<br />
See also: [http://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle and Release Schedule].<br />
<br />
== In Progress ==<br />
* [[A83T]] USB support (WiP: Chen-Yu Tsai (wens)) [http://lists.denx.de/pipermail/u-boot/2016-March/250003.html patch-rfc]<br />
* [[A83T]] PSCI support (WiP: Timothy Pearson) [https://patchwork.ozlabs.org/patch/622853/ patch-rfc]<br />
* [[H2+]]/[[H3]]/[[A64]] HDMI / Composite out support (WiP: Jernej Škrabec) [https://github.com/jernejsk/u-boot/tree/de2_wip git-repo]<br />
* [[A20]] SPI driver (WiP: Stephan van Schaik (Swabbles)) [http://lists.denx.de/pipermail/u-boot/2017-February/280966.html patch-rfc] [https://github.com/StephanvanSchaik/u-boot/tree/sunxi-spi git-repo]<br />
* [[A31]]/[[A80]]/[[A64]] SPI driver (WiP: Philipp Tomsich) [https://lists.denx.de/pipermail/u-boot/2017-February/281946.html patch-v1]<br />
* [[R40]] [[Banana Pi M2 Ultra]] support (WiP: Chen-Yu Tsai (wens)) [https://lists.denx.de/pipermail/u-boot/2017-March/282760.html patch]<br />
<br />
== Next Release (v2019.07) ==<br />
[http://git.denx.de/?p=u-boot/u-boot-sunxi.git;a=shortlog;h=refs/heads/master Development branch]<br />
* Boards<br />
** [[Beelink GS1]]<br />
** [[Oceanic 5205 5inMFD]]<br />
** [[Olimex Teres-A64]]<br />
<br />
== v2019.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.04 v2019.04 Release branch]<br />
* Boards<br />
** [[Emlid Neutis N5]]<br />
<br />
== v2019.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2019.01 v2019.01 Release branch]<br />
* Boards<br />
** [[Pine Pinebook]]<br />
** [[Pine Pine64-LTS]]<br />
** [[Sinovoip Banana Pi M2 Zero]]<br />
** [[Xunlong Orange Pi Lite 2]]<br />
<br />
== v2018.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.11 v2018.11 Release branch]<br />
<br />
== v2018.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.09 v2018.09 Release branch]<br />
* Boards<br />
** [[Pine64#Variants | Pine64 SoPINE]]<br />
** [[Xunlong Orange Pi One Plus]]<br />
** [[PineH64]]<br />
<br />
== v2018.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.07 v2018.07 Release branch]<br />
* Boards<br />
** [[Xunlong_Orange_Pi_Zero#Variants | Orange Pi R1 ]]<br />
** [[Libre Computer Board ALL-H3-CC]], H2+ version<br />
** [[Libre Computer Board ALL-H3-CC]], H5 version<br />
** [[Orange Pi Zero Plus]]<br />
** [[Sinovoip_Banana_Pi_M2_Berry | Banana Pi M2 Berry]]<br />
<br />
== v2018.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.05 v2018.05 Release branch]<br />
* Boards<br />
** [[Olimex A20-SOM204-EVB]]<br />
** [[Olimex A20-SOM204-EVB]] with eMMC<br />
<br />
== v2018.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.03 v2018.03 Release branch]<br />
* Boards<br />
**[[Libre Computer Board ALL-H3-CC]], H3 version<br />
<br />
== v2018.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2018.01 v2018.01 Release branch]<br />
* Boards<br />
** [[NanoPi NEO Plus 2]]<br />
** [[TBS A711]]<br />
<br />
== v2017.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.11 v2017.11 Release branch]<br />
* Boards<br />
** [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
** [[FriendlyARM Nanopi M1 Plus]]<br />
** [[Sinovoip Banana Pi M2]] Magic<br />
<br />
== v2017.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.09 v2017.09 Release branch]<br />
* Boards<br />
** [[FriendlyARM_NanoPi_A64 | NanoPi A64 ]]<br />
** [[Olimex_A20-OLinuXino-Lime2 | OLinuXino Lime2 (A20)]] with eMMC<br />
** [[Olimex_A64-OLinuXino | OLinuXino A64]]<br />
<br />
== v2017.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.07 v2017.07 Release branch]<br />
* Boards<br />
** [[Xunlong Orange Pi Win]] and Win Plus<br />
** [[Xunlong Orange Pi Prime]]<br />
** [[Xunlong Orange Pi Zero Plus 2]]<br />
<br />
== v2017.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.05 v2017.05 Release branch]<br />
* [[A64]] SPL support<br />
* [[H5]] support (with SPL)<br />
* Boards<br />
** [[Xunlong Orange Pi PC 2]]<br />
** [[FriendlyARM NanoPi NEO Air]]<br />
<br />
== v2017.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.03 v2017.03 Release branch]<br />
<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=2fc554d3e37c27c5b8d2540d7a571dc53152a301 enable H3 EMAC for the nanopi neo]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=59603d026b9ad3f51a8d69c2a94d3a511639c525 add proper device tree for Orange Pi Zero boards]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=7490130c9f8a4e17e858a38c767ad9ed64bd777b OrangePi Zero: defconfig: enable SPI flash]<br />
* [http://git.denx.de/?p=u-boot.git;a=commit;h=8b15f8eb67a48a98d5c131c1d44aa78c236c064d OrangePi Zero: add Ethernet node]<br />
<br />
== v2017.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2017.01 v2017.01 Release branch]<br />
<br />
* add support for [[Nintendo NES Classic Edition]]<br />
<br />
== v2016.11 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.11 v2016.11 Release branch]<br />
<br />
* Hans de Goede and Ian Campbell step down as U-boot Sunxi maintainers<br />
<br />
* A80<br />
** Full SPL support<br />
<br />
* A64<br />
** USB support<br />
<br />
* H3<br />
** DRAM impedance calibration fixes<br />
<br />
* Boards<br />
** [[FriendlyARM NanoPi NEO]]<br />
** [[Sinlinx SinA33]]<br />
*** USB host and OTG support<br />
** [[Cubietech Cubieboard4]]<br />
<br />
== v2016.09 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.09 v2016.09 Release branch]<br />
<br />
* General<br />
** GPIO fixes<br />
** PSCI rewrite in C part 2<br />
** NAND controller driver<br />
** H3/A64 Ethernet (EMAC) support<br />
<br />
* Boards<br />
** [[Empire Electronix M712]]<br />
** [[Inet Q972]]<br />
** [[Olimex A33-OLinuXino]]<br />
** [[Xunlong Orange Pi PC | Xunlong Orange Pi PC Plus]]<br />
** [[Xunlong Orange Pi Plus 2E]]<br />
<br />
== v2016.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.07 v2016.07 Release branch]<br />
<br />
* AXP809 PMIC support<br />
<br />
* PSCI rewrite in C part 1<br />
<br />
* Boards<br />
** [[Allwinner R16 EVB]]<br />
** [[Inet 86dz]]<br />
** [[Polaroid MID2407PXE03]]<br />
<br />
== v2016.05 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.05 v2016.05 Release branch]<br />
<br />
* [[A23]]<br />
** Support new revisions<br />
<br />
* [[A64]]<br />
** 64-bit ARMv8 port, basic support (MMC, UART, no USB, no Ethernet)<br />
** (basic) EFI support (allows booting EFI applications (like grub) or kernels)<br />
<br />
* I2C support fix for families with separate reset control<br />
<br />
* SID e-fuse support for A83T and H3<br />
<br />
* Sync up dts files with Linux kernel<br />
* Update compatible strings for GPIO<br />
<br />
* Boards<br />
** colorfly e708 q1, Difrence DIT4350, Polaroid MID2809PXE4, Itead Ibox, icnova-a20-swac, yones toptech bs1078-v2, Dserve DSRV9703C, <br />
** [[Cubietech Cubietruck Plus]]<br />
** [[Sinlinx SinA31s]]<br />
** [[Xunlong Orange Pi 2]]<br />
** [[Pine64]]<br />
** [[LicheePi Zero]]<br />
<br />
== v2016.03 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.03 v2016.03 Release branch]<br />
<br />
* PRCM i2c support<br />
<br />
* A83T<br />
** LPDDR3 support<br />
<br />
* H3<br />
** USB host support<br />
** PSCI (security switches included)<br />
** sy8106a i2c-based regulator support<br />
<br />
* AXP PMICs<br />
** Power off support<br />
<br />
* Boards<br />
** [[Banana Pi M3]] (SinoVoip BPi-M3)<br />
<br />
{{knownProblems|1=<br><br />
* Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=c32a6fd07b1839e4a45729587ebc8e1c55601a4d c32a6fd] breaks MII detection (and thus U-Boot networking) for sunxi GMAC.<br />
<br />
You might observe the PHY not initializing (e.g. no LED activity), and the command <code>mii&nbsp;info</code> likely will list useless information on all available PHY slots (0x00-0x1F). Commit [http://git.denx.de/?p=u-boot.git;a=commit;h=fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba fc8991c] fixes it again, but unfortunately that means U-Boot release '''v2016.03 is affected'''.}}<br />
<br />
== v2016.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2016.01 v2016.01 Release branch]<br />
* sun8i-H3 support<br />
<br />
* Boards<br />
** Empire Electronix D709 tablet<br />
** A83T HomletV2 Board<br />
** [[Lamobo R1]]<br />
** [[Xunlong Orange Pi Plus]]<br />
** [[Orange Pi PC|Xunlong Orange Pi PC]]<br />
** [[NextThingCo_CHIP | C.H.I.P.]]<br />
<br />
== v2015.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.10 v2015.10 Release branch]<br />
<br />
* Console/display output<br />
:* ANX9804 LCD-eDP bridge chip support<br />
:* Composite video output support<br />
* NAND SPL driver<br />
<br />
* Boards<br />
** Olimex A20-SOM-EVB<br />
** A10s-Wobo-i5 (settop box)<br />
** Point of View pov protab2-ips9 tablet<br />
** Auxtek-T003 HDMI stick<br />
** A10 tablets based on the iNet-tek iNet-1 mainboard (e.g. Point of View Protab2 XXL, Cherry M1007)<br />
** A10 tablets based on the inet9f-rev03 mainboard (e.g. qware tb-g100 tablet)<br />
** A13 tablets based on on the inet98v_rev2 mainboard<br />
** A10 tablets based on the inet97fv2 mainboard<br />
** A23 tablets based on the gt90h-v4 mainboard<br />
<br />
== v2015.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.07 v2015.07 Release branch]<br />
<br />
* Serial number support<br />
* Device model support<br />
** Ethernet<br />
** GPIO<br />
* sun8i (A33) support (including SPL)<br />
* sun9i (A80) basic support<br />
** UART<br />
** MMC<br />
* sun6i/sun8i<br />
** PSCI CPU hotplugging<br />
* SPL<br />
** <strike>NAND support</strike> reverted: [http://git.denx.de/?p=u-boot.git;a=commit;h=da9971d1b3bdb554d4a4ac948119f8b2616bbcce Revert commit]<br />
<br />
* Boards:<br />
** [[Mixtile LOFT-Q]]<br />
** [[Ainol AW1]]<br />
** [[Yones Toptech BD1078]]<br />
** [[iNet 3W]]<br />
** [[iNet 3F]]<br />
** [[ET-Q8 A33]]<br />
** [[Ippo q8h#v1.2 | Ippo q8h v1.2 A33 1024x600]]<br />
** [[ga10h v1.1]]<br />
** [[Merrii A80 Optimus Board]]<br />
<br />
== v2015.04 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.04 v2015.04 Release branch]<br />
<br />
* sun7i (A20) [[PSCI]] CPU hotplug<br />
* sun8i (A23) SPL<br />
** RSB<br />
** AXP223<br />
<br />
* sun9i (A80) basic support<br />
** Clocks<br />
** RSB<br />
<br />
* Console/display output<br />
** VGA via internal DAC<br />
** VGA via external DAC on LCD interface<br />
** LVDS<br />
** SSD2828 MIPI bridge<br />
** tl059wv5c0 LCD panel<br />
<br />
* USB OTG<br />
<br />
* Boards:<br />
** [[CSQ CS908]]<br />
** [[Merrii Hummingbird A31]]<br />
** [[Ippo q8h#Q8H-V1.2 | Ippo q8h v1.2]]<br />
** [[MSI Primo81]]<br />
** [[MSI Primo73]]<br />
** [[LinkSprite pcDuino]]<br />
** [[LinkSprite pcDuino V2]]<br />
** [[LeMaker Banana Pro]]<br />
** [[Rikomagic mk802]]<br />
** [[Rikomagic mk802ii]]<br />
** [[Semitime g2]] (See also [[Format_MK802]] with A10s)<br />
** [[MarsBoard A10]]<br />
** [[Gemei G9]]<br />
** [[Chuwi V7 CW0825]]<br />
** [[Mele M5]]<br />
** [[Hyundai A7HD]]<br />
** [[LinkSprite pcDuino3 Nano]]<br />
** [[TZX-Q8-713B7]]<br />
** [[Inet 86vs]]<br />
** [[Ampe A76]]<br />
** [[Jesurun Q5]]<br />
** [[MK808C]]<br />
** [[Mele I7]]<br />
** [[Forfun Q88DB]]<br />
** [[Wits Pro A20 DKT]]<br />
** [[Xunlong Orange Pi]]<br />
** [[Xunlong Orange Pi Mini]]<br />
** [[Wexler TAB 7200]]<br />
<br />
== v2015.01 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2015.01 v2015.01 Release branch]<br />
<br />
* sun6i (A31) processor support<br />
** P2WI<br />
** AXP221<br />
** SPL<br />
** GMAC<br />
* sun8i (A23) processor support (no SPL)<br />
* sun6i/sun8i reset support<br />
* Console/display output<br />
** HDMI only<br />
** simplefb<br />
<br />
* Boards:<br />
** [[Mele M3]]<br />
** [[Olimex A20-OLinuXino-Lime2]]<br />
** WITS Colombus Board<br />
** [[Mele M9]]<br />
<br />
== v2014.10 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.10 v2014.10 Release branch]<br />
<br />
* AHCI (SATA)<br />
* sun4i (AKA A10) and sun5i (AKA A10s and A13) processors<br />
* EMAC Ethernet<br />
* AXP152 and AXP209 power controllers<br />
* EHCI USB<br />
* SMP support for sun7i via [[PSCI]].<br />
<br />
* Boards:<br />
** [[LeMaker Banana Pi]]<br />
<br />
== v2014.07 ==<br />
[http://git.denx.de/?p=u-boot.git;a=shortlog;h=refs/tags/v2014.07 v2014.07 Release branch]<br />
* sun7i (AKA A20) processors<br />
* MMC<br />
* GMAC Ethernet<br />
* Boards:<br />
** [[Cubietech Cubietruck]]<br />
<br />
= Supported Devices =<br />
<categorytree mode=pages hideroot=on>Mainline_U-Boot</categorytree><br />
Beware: some of the above might only be supported in the latest development version.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[toolchain]] installed and added to your PATH.<br />
<br />
== Get the Device-tree Compiler ==<br />
<br />
Depending on your desired U-Boot version, a sufficiently up-to-date ''dtc'' may be required. (The build process will error on an outdated ''dtc'', and request you to upgrade it.) The installation of dtc is described in the [[Device_Tree#Get_the_Device-tree_Compiler|Device tree article]].<br />
<br />
If you are going to build a Linux kernel alongside U-Boot, it might also be worth to examine the kernel sources - as they come with ''dtc'' included under <code>${KERNEL_DIR}/scripts/dtc/</code>.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone the u-boot repository by running:<br />
<pre>git clone git://git.denx.de/u-boot.git</pre><br />
<br />
{{alert|You should prefer using a stable release, unless you're testing recently added boards or experimental features that have not yet made into stable release:<br />
<br />
git checkout v2016.01 # or whatever is latest<br />
}}<br />
== Determine build target ==<br />
<br />
Go to your u-boot tree and search in the directory ''configs/'' for your board, the file name looks like ''<board_name>_defconfig''.<br />
<br />
So, if your device is [[Cubietech Cubieboard2|Cubieboard2]] your build target is ''Cubieboard2_defconfig''.<br />
<br />
== Build ==<br />
'''Arm Trusted Firmware (arm64)'''<br />
<br />
In order to build U-Boot for a arm64 device you need to build Arm Trusted Firmware (ATF) as a prerequisite first. Change <platform> to your needs. ''PLAT=sun50i_a64'' for example is suitable for H5 and A64 devices. (See board/sunxi/README.sunxi64 in uboot sources for more infos.)<br />
<pre>git clone https://github.com/ARM-software/arm-trusted-firmware.git<br />
cd arm-trusted-firmware<br />
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=<platform> DEBUG=1 bl31</pre><br />
<br />
When you have determined what <board_name> just configure U-Boot with a suitable default configuration. Use menuconfing to play with the settings if you feel like it and then just build it:<br />
<br />
'''armhf'''<br />
<pre>make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
'''arm64'''<br />
<pre>make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin <board_name>_defconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin menuconfig<br />
make CROSS_COMPILE=aarch64-linux-gnu- BL31=<path_to_arm-trusted-firmware>/build/sun50i_a64/debug/bl31.bin</pre><br />
<br />
(When compiling natively, omit the <kbd>CROSS_COMPILE=…</kbd>)<br />
<br />
When the build has completed, there will be ''u-boot-sunxi-with-spl.bin'' available in your u-boot tree. The installation step will instruct how to install this on the installation media (e.g. a SD card), but first U-Boot needs to be configured.<br />
<br />
= Configure U-Boot =<br />
<br />
This article provides a collection of various scenarios for booting with U-Boot. <br />
<br />
== Boot ==<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[Mainline_NAND_Howto#Booting_from_NAND|NAND]]<br />
* [[Bootable SPI flash | SPI NOR Flash]]<br />
* [[FEL/USBBoot | USB OTG]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[Fastboot]]<br />
<br />
=== Booting with boot.cmd ===<br />
For booting from SD with mainline U-Boot, the recommended way is:<br />
<br />
* create a file ''boot.cmd'' on the first partition (also check [[Kernel arguments]] for extra 'bootargs' options):<br />
<br />
{| class="wikitable"<br />
! mainline kernel<br />
! sunxi-3.4 kernel<br />
|-<br />
|<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile}<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000 - 0x43000000<br />
||<br />
setenv bootm_boot_mode sec<br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10<br />
load mmc 0:1 0x43000000 script.bin || load mmc 0:1 0x43000000 boot/script.bin<br />
load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage<br />
bootm 0x42000000<br />
|}<br />
* If you also want to use an initramfs, please refer to the [[Initial Ramdisk]] article for details.<br />
<br />
:{{info|If you're wondering why setting '''bootm_boot_mode''' might be necessary for older kernels, have a look at the details of [[PSCI]].}}<br />
<br />
:{{note|Directly using a '''zImage''' is also supported by U-Boot for the sunxi platform.}} Substitute ''zImage'' in place of ''uImage'' in the commands above, and then use the '''bootz''' command instead of ''bootm''.<br />
<br />
=== Booting with extlinux.conf ===<br />
Mainline U-Boot also use syslinux/extlinux as payload.<br />
<br />
You need to install the boot configuration file extlinux.conf in an ext2/3/4 partition of SD card and U-Boot will find and execute it. This is conceptually identical to creating a GRUB configuration file on a desktop PC.<br />
<br />
Example extlinux.conf:<br />
<pre><br />
TIMEOUT 100<br />
DEFAULT default<br />
MENU TITLE Boot menu<br />
<br />
LABEL default<br />
MENU LABEL Default<br />
LINUX /zImage<br />
FDT /sun4i-a10-marsboard.dtb<br />
APPEND root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8<br />
<br />
LABEL exit<br />
MENU LABEL Local boot script (boot.scr)<br />
LOCALBOOT 1<br />
</pre><br />
<br />
== Setting u-boot environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the U-Boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== NAND ==<br />
Example U-Boot environment, as found in <code>uEnv.txt</code> from a stock android U-Boot environment partition<br />
<br />
<pre>bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot</pre><br />
<br />
== NFS ==<br />
<br />
Recent version of U-Boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
{{Note|on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.}}<br />
<br />
== FB console ==<br />
<br />
To get U-Boot output shown on the built-in framebuffer driver (currently, HDMI only at 1024x768), add the following to your boot.cmd:<br />
<pre>setenv stdout=serial,vga<br />
setenv stderr=serial,vga</pre><br />
The default environment has these values set as well.<br />
<br />
== LCD Settings ==<br />
<br />
There is a [[LCD|separate wiki page about configuring LCD]] in U-Boot.<br />
<br />
= Install U-Boot =<br />
<br />
* Convert the ''boot.cmd'' to ''boot.scr'' using [[U-Boot/Tools#mkimage|mkimage]]:<br />
<br />
mkimage -C none -A arm -T script -d boot.cmd boot.scr<br />
<br />
* Copy the bootloader to the installation media<br />
<br />
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
* copy kernel files to the first partition<br />
** For a 3.4 kernel you need ''uImage'' (linux kernel) and ''script.bin'' (binary representation of [[Fex Guide|FEX]]).<br />
** For a device tree based kernel ("mainline", 4.x) you need the kernel image (''uImage'' or ''zImage'') and the device-specific ''.dtb'' file (the one referenced in the ''${fdtfile}'' above) that is generated as part of your kernel compilation.<br />
<br />
Look at [[Manual build howto]] for more details.<br />
<br />
= Troubleshooting =<br />
<br />
== USB 1.x, USB keyboards (U-Boot < v2015.07) ==<br />
<br />
'''U-Boot v2015.07 and later shouldn't have problems supporting mixed USB 1.x/2.0 devices.''' OHCI and EHCI no longer conflict with each other (after the switch to device model).<br />
<br />
Previous U-Boot versions (v2015.04 and older) have a problem supporting both USB 1.x (OHCI) and USB 2.0 (EHCI) at the same time - the latter includes the ''SUNXI_EHCI'' driver for Allwinner boards.<br />
<br />
:Unfortunately, this also affects many '''USB HID / keyboard''' devices which would not be detected properly by U-Boot. The typical message in this case is "''cannot reset port N!?''", where ''N'' is whichever USB port those devices were attached to.<br />
<br />
{{info|A possible workaround is to place an external USB 2.0 hub between your board and these USB devices.}}<br />
<br />
See: http://lists.denx.de/pipermail/u-boot/2015-January/200162.html.<br />
<br />
== U-Boot 2015.07+ won't start ==<br />
If you're using a recent (device model based) U-Boot, and the SPL just hangs after initializing the DRAM (<code>CPU: 912000000Hz, AXI/AHB/APB: 3/2/2</code> or something similar), chances are that your main U-Boot binary may be missing DTB information / a proper [[device tree]]. Depending on the (possibly outdated) instructions you followed: double-check that you're not incorrectly using ''u-boot.bin'' instead of ''u-boot'''-dtb'''.bin'', or ''u-boot.img'' instead of ''u-boot'''-dtb'''.img''.<br />
<br />
== Legacy kernel won't start ==<br />
* If your 3.4.x kernel refuses to boot / gets stuck right after ''"Starting kernel ..."'':<br />
** Double-check that '''bootm_boot_mode''' is set to "'''sec'''"! (see [[#Boot|above]])<br />
** For U-Boot 2018.09-rc1 or later, set CONFIG_ARMV7_LPAE=n in .config or apply https://patchwork.ozlabs.org/patch/1058338/<br />
* If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see [[#Unrecognized.2Funsupported_machine_ID|below]]).<br />
<br />
== Unrecognized/unsupported machine ID ==<br />
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a HDMI monitor or a LCD display!):<br />
<pre><br />
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).<br />
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).<br />
</pre><br />
In this case either upgrade to a recent ''stage/sunxi-3.4'' kernel ([https://github.com/linux-sunxi/linux-sunxi/tree/stage/sunxi-3.4 github branch]) - or try to '''"Enable workarounds for booting old kernels"''' in U-Boot:<br />
:<code>make menuconfig</code> or <code>make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)<br />
<br />
If upgrading to ''stage/sunxi-3.4'' is not an option (i.e. using some old and very much diverged<br />
sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (=&nbsp;selectively merged <u>as a set</u>):<br />
<pre><br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/9a1cd034181af628d4145202289e1993c1687db6.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
wget https://github.com/linux-sunxi/linux-sunxi/commit/d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch<br />
git am 9a1cd034181af628d4145202289e1993c1687db6.patch<br />
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch<br />
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch<br />
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch<br />
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch<br />
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch<br />
</pre><br />
{{warn|It is required to apply '''all''' of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.|}}<br />
<br />
<br />
== ImportError: No module named _libfdt ==<br />
<br />
If you see the following error when compiling on Arch Linux arm<br />
<pre><br />
ImportError: No module named _libfdt<br />
</pre><br />
<br />
install dtc<br />
<pre><br />
sudo pacman -S dtc<br />
</pre><br />
<br />
= Adding a new device to upstream U-Boot =<br />
<br />
http://lists.denx.de/pipermail/u-boot/2014-December/199351.html<br />
<br />
== DRAM Settings ==<br />
<br />
=== Failsafe DRAM settings, based on standard JEDEC timings ===<br />
<br />
Each device has DRAM settings configured in its defconfig file in the U-Boot "configs" directory (here is [http://git.denx.de/?p=u-boot.git;a=blob;f=configs/Cubietruck_defconfig;h=b64f84f2b8d2d48bed3130aecd31d220013061f0;hb=HEAD an example for the Cubietruck board]). The slow failsafe DRAM settings for an A10/A13/A20 device may look like:<br />
<pre style="background-color: lightgreen;"><br />
+S:CONFIG_DRAM_CLK=360<br />
+S:CONFIG_DRAM_ZQ=123<br />
+S:CONFIG_DRAM_EMR1=4<br />
+S:CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y<br />
</pre><br />
<br />
A more complete set of available Kconfig options and their descriptions can be found here: http://git.denx.de/?p=u-boot.git;a=blob;f=board/sunxi/Kconfig;h=e1d4ab148f0838d746889775cfbab5bed57838bf;hb=a705ebc81b7f91bbd0ef7c634284208342901149#l177<br />
<br />
=== The settings from the Android firmware ===<br />
<br />
Somewhat better settings can be retrieved by the [[Retrieving_device_information#Reading_memory_information_from_registers|meminfo tool]] from the stock Android or GNU/Linux system, provided by the device manufacturer. It still makes sense to [[Hardware_Reliability_Tests#DRAM|test the reliability]] of the resulting DRAM configuration. Because some vendors are providing poor configuration for ZQ or EMR1, but nevertheless trying to optimistically set the DRAM clock speed too high.<br />
<br />
=== Performance optimized DRAM settings ===<br />
<br />
Tuning DRAM setting for each individual board can provide much better performance than the failsafe defaults. This involves trial and error testing of different settings using a tool until an optimal combination is found. The [[DRAM_Controller|DRAM Controller page]] provides links to start researching this topic. This approach will be time consuming, so a satisfactory solution using one of the other approaches may be best to start with.<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:Development]]<br />
[[Category:Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Toolchain&diff=22631
Toolchain
2019-08-14T20:33:42Z
<p>Rellla: /* Debian */ add arm64</p>
<hr />
<div>The toolchain is a set of binaries, system libraries and tools which allow you to build (in our case, cross-compile) u-boot and the kernel for a target platform. This will, to some limited extent, need to match the target rootfs. A large and incompatible change has taken place recently, through the [http://wiki.debian.org/ArmHardFloatPort Hard Float ABI]. Now, two different debian and ubuntu ports are binary incompatible with each other.<br />
<br />
= Part of distributions =<br />
<br />
== Ubuntu ==<br />
<br />
=== Recent (from 12.04 on) ===<br />
<br />
A complete cross toolchain is available as a package, just run:<br />
<br />
<pre>apt-get install gcc-arm-linux-gnueabihf</pre><br />
<br />
The gcc cross compiler from the standard package in Ubuntu 16 may have a bug that manifests itself as the following error while compiling U-Boot:<br />
<br />
<pre><br />
{standard input}: Assembler messages:<br />
{standard input}:323: Error: push/pop do not support {reglist}^ -- `pop {r0,r1,r2,r3,r4,r9,ip,pc}^'<br />
scripts/Makefile.build:280: recipe for target 'arch/arm/cpu/armv7/sunxi/psci.o' failed<br />
</pre><br />
<br />
Version of the compiler with the bug:<br />
<br />
<pre><br />
arm-linux-gnueabihf-gcc-5 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609<br />
</pre><br />
<br />
A suggested [https://a20.net/bert/tag/linaro/ solution] is to use the [[Toolchain#Linaro_toolchain|Linaro toolchain]]<br />
<br />
=== Older ===<br />
<br />
For older versions, you need to use an external repository.<br />
<br />
<pre>add-apt-repository ppa:linaro-maintainers/toolchain<br />
apt-get update<br />
apt-get install gcc-arm-linux-gnueabihf</pre><br />
<br />
== Debian ==<br />
Details on Cross-development Toolchains for Debian are at the [https://wiki.debian.org/CrossToolchains Debian Wiki]. <br />
<br /><br />
'''Note:''' Debian now has cross-toolchains in the archive, superseding those at emdebian.org<br />
<br />
Currently (December 2015) available for unstable and testing in the standard repositories.<br />
<br />
Install Cross Compiler and build utilities:<br />
<br />
'''armhf'''<br />
dpkg --add-architecture armhf<br />
apt-get update<br />
apt-get install '''g++-arm-linux-gnueabihf'''<br />
'''arm64'''<br />
dpkg --add-architecture arm64<br />
apt-get update<br />
apt-get install '''g++-aarch64-linux-gnu'''<br />
You might want additional tools for building a sunxi system that are not related to the cross-compiler:<br />
apt-get install build-essential git debootstrap u-boot-tools device-tree-compiler<br />
<br />
== Fedora ==<br />
<br />
A complete cross toolchain is available as a package, just run:<br />
<pre>yum install gcc-arm-linux-gnu</pre><br />
<br />
== Gentoo ==<br />
<br />
The [http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=2 crossdev tool]<ref>The Gentoo website has undergone a major overhaul as of April 2015. While a backup of the old content is still available, it seems to have left the ''Gentoo Embedded Handbook'' in a non-functional state. You can still find a copy [https://web.archive.org/web/20140811221945/http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&amp;chap=2 via archive.org]. The wiki article on [https://wiki.gentoo.org/wiki/Raspberry_Pi_Cross_building Raspberry Pi Cross building] might also be helpful.</ref><br />
is the standard way of dealing with crosscompilers in Gentoo. Command line options are used to specify any arbitrary mix of different versions of the kernel headers, glibc, binutils and gcc. You can also use the -S option instead (to pick whatever is considered to be stable at the moment), but in this case the crosscompiler will be also upgraded as part of the regular distribution updates, which might be a bit annoying.<br />
<br />
==== ARM crosscompiler ====<br />
Even though Gentoo normally uses '''armv7a-hardfloat-linux-gnueabi''' as the toolchain triplet on ARM, we can also use Debian alike '''arm-linux-gnueabihf''' variant in order to be able to use the compilation instructions from the linux-sunxi wiki as-is (without substituting the toolchain name).<br />
<br />
<pre><br />
emerge crossdev<br />
crossdev --kernel =3.18 --libc =2.20-r2 --binutils =2.24-r3 --gcc =4.8.5 \<br />
--genv 'USE="-fortran -mudflap -nls -openmp multilib" EXTRA_ECONF="--with-cpu=cortex-a8 --with-float=hard"' -t arm-linux-gnueabihf<br />
</pre><br />
<br />
==== ARM64 crosscompiler ====<br />
<br />
<pre><br />
emerge crossdev<br />
crossdev --kernel =3.18 --libc =2.21-r1 --binutils =9999 --gcc =4.9.3 \<br />
--genv 'USE="-fortran -mudflap -nls -openmp multilib -sanitize" EXTRA_ECONF="--enable-fix-cortex-a53-843419"' -t aarch64-linux-gnu<br />
</pre><br />
<br />
Note: binutils =9999 (fetch sources from git) should be replaced with =2.26 as soon as binutils 2.26 is added to portage. Such new binutils version is necessary for having a Cortex-A53 erratum 843419 workaround.<br />
<br />
==== OpenRISC crosscompiler ====<br />
<br />
If you have one of the Allwinner SoC variants with an additional [[AR100|OpenRISC core]] (for example [[A31]] and [[H3]] have it), then you might want to also build an OpenRISC crosscompiler too:<br />
<pre><br />
emerge crossdev<br />
mkdir -p /etc/portage/patches/cross-or1k-elf/gcc-5.2.0<br />
cd /etc/portage/patches/cross-or1k-elf/gcc-5.2.0<br />
wget https://gist.githubusercontent.com/ssvb/28e22f4086af26ec9cd0/raw/8d3d091177156a92497f31de3bfb3d7da9e52649/0001-OpenRISC-support-for-GCC-5.2.0.patch<br />
crossdev --binutils =2.25.1-r1 --gcc =5.2.0 --libc =2.2.0.20150423 \<br />
--genv 'USE="cxx multilib -fortran -mudflap -nls -openmp -sanitize"' \<br />
-s4 -t or1k-elf<br />
</pre><br />
Please note that the upstream GCC does not support OpenRISC yet, so the OpenRISC code is still brewing in https://github.com/openrisc/or1k-gcc.git and we can solve this problem by just providing a patch for GCC in the ''/etc/portage/patches'' directory.<br />
<br />
----<br />
<references /><br />
<br />
= Standalone =<br />
<br />
These standalone toolchains are big tarballs which come with everything you need.<br />
<br />
== Linaro toolchain ==<br />
<br />
=== Download ===<br />
<br />
Linaro has been very good at changing the location and availability of just about everything, making it very hard to keep a wiki up to date which refers to it. So the below download locations might be stale already.<br />
<br />
Currently, [https://www.linaro.org/latest/downloads/ the main selection page is here].<br />
<br />
It lists the following toolchains:<br />
* [http://releases.linaro.org/archive/12.03/components/toolchain/gcc-linaro/4.5 gcc-linaro 4.5 (4.5-2012.03)-obsolete]<br />
* [http://releases.linaro.org/archive/13.05/components/toolchain/gcc-linaro/4.6 gcc-linaro 4.6 (4.6-2013.05)-obsolete]<br />
* [http://releases.linaro.org/archive/14.06/components/toolchain/gcc-linaro/4.7 gcc-linaro 4.7 (4.7-2014.06)-obsolete]<br />
* [http://releases.linaro.org/archive/14.04/components/toolchain/gcc-linaro/4.8 gcc-linaro 4.8 (4.8-2014.04)-obsolete]<br />
* [https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/ gcc-linaro 4.9.4 (4.9.4-2017.01)-Recommended for sunxi-3.4]<br />
<br />
When in doubt, try 4.9 first.<br />
<br />
'''WARNING: Do not use the 4.8 gcc versions of the linaro toolchain to build legacy kernels (sunxi-3.4 etc.), those seem to have issues building the kernel.''' ({{Edit|TODO: Verify that this is still true today}}).<br />
<br />
=== Usage ===<br />
Take a gcc-linaro-<major>.<minor>-<year>.<month>.tar.xz file and untar it. You will find a bin directory in there. Temporarily add it to the environment you are building from:<br />
<br />
<pre>export PATH="$PATH":/home/user/folder/gcc-linaro-arm-linux-gnueabihf-*_linux/bin/</pre><br />
<br />
=== no hardfloat? ===<br />
Recent linaro toolchains are Hard Float (hf), this will be used throughout the wiki you see something like:<br />
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</pre><br />
<br />
Replace arm-linux-gnueabihf- with arm-linux-gnueabi- if your are not using a hardfloat toolchain.<br />
<br />
== Code Sourcery ==<br />
<br />
Another option is to install the Sourcery toolchain from Code Sourcery (now in Mentor Graphics). Download Code Sourcery G++ 2010 9-50<br />
https://sourcery.mentor.com/sgpp/lite/arm/portal/release1600 (official link, email registration required)<br />
<br />
Direct link: <br />
https://netst.org/pub/linux/ARM/CodeSourcery/arm-2010.09-50-arm-none-linux-gnueabi.bin (unofficial link)<br />
<br />
<br />
<pre><br />
chmod +x arm-2010.09-50-arm-none-linux-gnueabi.bin<br />
./arm-2010.09-50-arm-none-linux-gnueabi.bin<br />
</pre><br />
<br />
<br />
If you are using Ubuntu, you may need to switch to use bash shell (instead of dash shell)<br />
<pre><br />
sudo dpkg-reconfigure -plow dash ( then choose [No], this changes from using dash shell to using bash shell )<br />
</pre><br />
<br />
<br />
It will now install CodeSourcery with a GUI installer<br />
<br />
Follow default settings and do Next , Next, Next, etc… <br />
<br />
It should install in: ~/CodeSourcery/ ( for example: /home/penguin/CodeSourcery/ )<br />
<br />
Make sure the CodeSourcery binaries are added to your path (if your username is penguin, then this should be correct):<br />
<br />
<pre><br />
echo "export PATH=~/CodeSourcery/Sourcery_G++_Lite/bin:\${PATH}" >> ~/.bashrc<br />
export PATH=~/CodeSourcery/Sourcery_G++_Lite/bin:$PATH (or you can just spawn a new terminal window to update the path)<br />
echo $PATH (make sure your path is updated)<br />
</pre><br />
<br />
== Bootlin ==<br />
<br />
Bootlin also provices glibc / musl / uclibc based toolchains for building:<br />
<br />
[https://toolchains.bootlin.com/ https://toolchains.bootlin.com/]<br />
<br />
= External links =<br />
* [http://www.mentor.com/embedded-software/codesourcery Homepage] (<small>mentor.com</small>)<br />
* [http://sourcery.mentor.com/public/gnu_toolchain/ Direct download] (<small>mentor.com</small>)<br />
<br />
[[Category:Software]]</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22570
User:Rellla
2019-07-09T11:40:44Z
<p>Rellla: /* Lima development */</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== Lima development ==<br />
<code>malisc -d Mali-400_r7p0-00rel0 -c Mali-400 -r r1p1 -o "outputfile" "inputfile"</code><br />
<br />
<code>./disassemble -a lima_pp -t fragment -s verbose "inputfile"</code></div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22569
User:Rellla
2019-07-09T11:40:35Z
<p>Rellla: /* Mali offline compiler */</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== Lima development ==<br />
<code>malisc -d Mali-400_r7p0-00rel0 -c Mali-400 -r r1p1 -o "outputfile" "inputfile"</code><br />
<code>./disassemble -a lima_pp -t fragment -s verbose "inputfile"</code></div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22568
User:Rellla
2019-07-09T11:15:13Z
<p>Rellla: add malisc command</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== Mali offline compiler ==<br />
<code>malisc -d Mali-400_r7p0-00rel0 -c Mali-400 -r r1p1 -o "outputfile" "inputfile"</code></div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22484
Linux mainlining effort
2019-05-29T11:33:06Z
<p>Rellla: /* Major drivers */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1047302/ Allwinner sunxi message box support patch-v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A64]] RGB WIP Icenowy Zheng / Torsten Duwe [https://patchwork.kernel.org/patch/10943365/ arm64: DTS: allwinner: a64: Add pinmux for RGB666 LCD] <br />
<br />
* [[A83T]] <br />
** USB OTG WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1062459/ ARM: sun8i: a83t: Enable USB OTG patch-v4]<br />
** CSI WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1059328/ ARM: sun8i: a83t: Support Camera Sensor Interface controller]<br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1011772/ media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine sun8i-ss/sun9i-ss/sun5i-ss WiP LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]] HEVC decoding WiP Paul Kocialkowski [https://www.spinics.net/lists/arm-kernel/msg729304.html patch-v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] LRADC WIP Luca Weiss [https://lore.kernel.org/patchwork/patch/1075514/ arm64: dts: allwinner: a64: Add lradc node]<br />
* [[H6]] <br />
** [[IR]] WIP Clément Péron [https://lore.kernel.org/patchwork/cover/1079090/ Allwiner A64/H6 IR support] <br />
** Thermal WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1069625/ Add support for H6 thermal sensor]<br />
** RTC WIP Ondrej Jirman [https://patchwork.kernel.org/cover/10898083/ Add H6 RTC support]<br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/cover/10909623/ Allwinner H6 SPDIF support v2]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/cover/10843417/ Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/cover/1031389/ Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
=== Boards ===<br />
<br />
== Merged for 5.3 ==<br />
* [[H6]]<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22483
Linux mainlining effort
2019-05-29T11:28:46Z
<p>Rellla: /* Planned for 5.3 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1047302/ Allwinner sunxi message box support patch-v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A64]] RGB WIP Icenowy Zheng / Torsten Duwe [https://patchwork.kernel.org/patch/10943365/ arm64: DTS: allwinner: a64: Add pinmux for RGB666 LCD] <br />
<br />
* [[A83T]] <br />
** USB OTG WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1062459/ ARM: sun8i: a83t: Enable USB OTG patch-v4]<br />
** CSI WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1059328/ ARM: sun8i: a83t: Support Camera Sensor Interface controller]<br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1011772/ media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine sun8i-ss/sun9i-ss/sun5i-ss WiP LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]] H.264 decoding WiP Maxime Ripard [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] LRADC WIP Luca Weiss [https://lore.kernel.org/patchwork/patch/1075514/ arm64: dts: allwinner: a64: Add lradc node]<br />
* [[H6]] <br />
** [[IR]] WIP Clément Péron [https://lore.kernel.org/patchwork/cover/1079090/ Allwiner A64/H6 IR support] <br />
** Thermal WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1069625/ Add support for H6 thermal sensor]<br />
** RTC WIP Ondrej Jirman [https://patchwork.kernel.org/cover/10898083/ Add H6 RTC support]<br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/cover/10909623/ Allwinner H6 SPDIF support v2]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/cover/10843417/ Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/cover/1031389/ Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
=== Boards ===<br />
<br />
== Merged for 5.3 ==<br />
* [[H6]]<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22482
Linux mainlining effort
2019-05-29T11:28:22Z
<p>Rellla: /* Merged for 5.2 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1047302/ Allwinner sunxi message box support patch-v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A64]] RGB WIP Icenowy Zheng / Torsten Duwe [https://patchwork.kernel.org/patch/10943365/ arm64: DTS: allwinner: a64: Add pinmux for RGB666 LCD] <br />
<br />
* [[A83T]] <br />
** USB OTG WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1062459/ ARM: sun8i: a83t: Enable USB OTG patch-v4]<br />
** CSI WiP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1059328/ ARM: sun8i: a83t: Support Camera Sensor Interface controller]<br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1011772/ media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine sun8i-ss/sun9i-ss/sun5i-ss WiP LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]] H.264 decoding WiP Maxime Ripard [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] LRADC WIP Luca Weiss [https://lore.kernel.org/patchwork/patch/1075514/ arm64: dts: allwinner: a64: Add lradc node]<br />
* [[H6]] <br />
** [[IR]] WIP Clément Péron [https://lore.kernel.org/patchwork/cover/1079090/ Allwiner A64/H6 IR support] <br />
** Thermal WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1069625/ Add support for H6 thermal sensor]<br />
** RTC WIP Ondrej Jirman [https://patchwork.kernel.org/cover/10898083/ Add H6 RTC support]<br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/cover/10909623/ Allwinner H6 SPDIF support v2]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/cover/10843417/ Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/cover/1031389/ Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.3 ==<br />
* [[H6]]<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22445
Linux mainlining effort
2019-05-10T09:42:11Z
<p>Rellla: /* Planned for 5.2 */ h264 missed 5.2</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]] <br />
** USB OTG WiP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=84485&archive=both&state=* ARM: sun8i: a83t: Enable USB OTG patch-v2]<br />
** CSI WiP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-media/list/?series=102675&archive=both&state=* ARM: sun8i: a83t: Support Camera Sensor Interface controller]<br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=90117&archive=both&state=* drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/project/lkml/list/?series=389517 Allwinner H6 USB3 support]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine sun8i-ss/sun9i-ss/sun5i-ss WiP LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]] H.264 decoding WiP Maxime Ripard [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] <br />
** Thermal WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=392739&archive=both&state=* Add support for H6 thermal sensor]<br />
** RTC WIP Ondrej Jirman [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=104883 Add H6 RTC support]<br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=108073&archive=both&state=* Allwinner H6 SPDIF support v2]<br />
** Watchdog WIP Clément Péron [https://lore.kernel.org/patchwork/project/lkml/list/?series=390118&archive=both&state=* Add Watchdog for H6 v2]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011&archive=both&state=* Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527&archive=both&state=* arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361&archive=both&state= arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161&archive=both&state= Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.3 ==<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged for 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22421
Linux mainlining effort
2019-04-25T08:44:44Z
<p>Rellla: /* Planned for 5.2 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]] <br />
** USB OTG WiP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=84485&archive=both&state=* ARM: sun8i: a83t: Enable USB OTG patch-v2]<br />
** CSI WiP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-media/list/?series=102675&archive=both&state=* ARM: sun8i: a83t: Support Camera Sensor Interface controller]<br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=90117&archive=both&state=* drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/project/lkml/list/?series=389517 Allwinner H6 USB3 support]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine sun8i-ss/sun9i-ss/sun5i-ss WiP LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]] H.264 decoding WiP Maxime Ripard [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] <br />
** RTC WIP Ondrej Jirman [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=104883 Add H6 RTC support]<br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=108073&archive=both&state=* Allwinner H6 SPDIF support v2]<br />
** Watchdog WIP Clément Péron [https://lore.kernel.org/patchwork/project/lkml/list/?series=390118&archive=both&state=* Add Watchdog for H6 v2]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011&archive=both&state=* Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527&archive=both&state=* arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361&archive=both&state= arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161&archive=both&state= Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.2 ==<br />
* [[A83T]]<br />
** LRADC Ondřej Jirman [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=97337 Add support for lradc on A83T]<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
** [[Cedrus]] h264<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22275
User:Rellla
2019-03-27T12:39:55Z
<p>Rellla: cleanup</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== [DISP] not supported image0 pixel sequence ==<br />
Sometimes we have some issues with the 3.4 display driver. dmesg is flooded with messages like:<br />
[DISP] not supported image0 pixel sequence:208 in img_sw_para_to_reg<br />
or<br />
[DISP] not supported yuv channel pixel sequence:0 in img_sw_para_to_reg<br />
I think, this can be tracked down to https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L388<br />
Hal_Set_Frame executes https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L357 and https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L362 which could be both responsible for the dmesg output in case the parameters don't exist anymore in memory. This would explain the different and not-reasonable values.<br />
Hal_Set_Frame is executed during VBlanking, which would explain the massive flooding.<br />
This all can happen when ((g_video[sel][id].enable == TRUE) && (g_video[sel][id].have_got_frame == TRUE)), which is triggered by the DISP_CMD_VIDEO_START and DISP_CMD_VIDEO_SET_FB ioctl.<br />
Both are set false with DISP_CMD_VIDEO_STOP again.<br />
<br />
So, in case we forget the DISP_CMD_VIDEO_STOP ioctl, we may run into some issues with faulty parameters in Hal_Set_Frame itself. To debug that kernel bug, we could set some logs into Hal_Set_Frame, to see what happens. Or simply try to consequently use DISP_CMD_VIDEO_STOP.<br />
I could see this issue sometimes, if i CTRL-C a running program (e.g. sth. with libvdpau-sunxi) and then do another CTRL-C. Maybe everything is killed but g_video[sel][id].enable isn't set to FALSE again, which keeps Hal_Set_Frame executed every VBlank.<br />
<br />
I think it has nothing to do with the other ioctls which trigger the img_sw_para_to_reg function in the end because of the massive (most likely 50Hz) flood of dmesg. With this background, one maybe can reproduce the issue.</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22274
User:Rellla
2019-03-27T12:38:19Z
<p>Rellla: /* Software */</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
* Filesystem/ Distribution: [[Debootstrap | Debian ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [https://github.com/rellla/ Github]<br />
* [https://gitlab.freedesktop.org/rellla Freedesktop Gitlab]<br />
<br />
= Projects =<br />
<strike>Server usage:</strike><br />
Possible server scenarios:<br />
* MiniDLNA Server (Cubietruck)<br />
* Logitech Media Server (Cubietruck)<br />
* VDR Server (Cubietruck)<br />
* Git Server (Cubietruck)<br />
* Apache, PHP, MySQL, Samba (Cubietruck)<br />
* controlling a 5x relay board for multiroom audio via android clients<br />
* In-/ outside-temperature and humidity logger<br />
<br />
Client usage (testing with Cubieboard2 and legacy kernel):<br />
* MPD<br />
* squeezelite<br />
* (WIP) VDR client ([[Cedrus/libvdpau_integration_matrix]])<br />
* <strike>(WIP) XBMC client</strike><br />
<br />
= Todos =<br />
* refactor [https://github.com/rellla/libvdpau-sunxi/commits/staging libvdpau-sunxi fork] for upstream branch<br />
** ''Add 'real' queue - done''<br />
** ''Add deinterlacer - done''<br />
** ''Fix CSC handling - done''<br />
** ''[https://github.com/rellla/libvdpau-sunxi/tree/gles Add NV OpenGL/ES interop feature] - preliminary work done''<br />
** Improve performance of OSD handling<br />
** Improve logging, introduce loglevels<br />
** Add XEvent handling<br />
* [https://github.com/mosterta/libvdpau-sunxi OpenGL/ES Vdpau interop integration in libvdpau-sunxi]<br />
* [https://github.com/rellla/softhddevice-openglosd/tree/gles OpenGL/ES accelerated softhddevice] - preliminary work done<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== [DISP] not supported image0 pixel sequence ==<br />
Sometimes we have some issues with the 3.4 display driver. dmesg is flooded with messages like:<br />
[DISP] not supported image0 pixel sequence:208 in img_sw_para_to_reg<br />
or<br />
[DISP] not supported yuv channel pixel sequence:0 in img_sw_para_to_reg<br />
I think, this can be tracked down to https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L388<br />
Hal_Set_Frame executes https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L357 and https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L362 which could be both responsible for the dmesg output in case the parameters don't exist anymore in memory. This would explain the different and not-reasonable values.<br />
Hal_Set_Frame is executed during VBlanking, which would explain the massive flooding.<br />
This all can happen when ((g_video[sel][id].enable == TRUE) && (g_video[sel][id].have_got_frame == TRUE)), which is triggered by the DISP_CMD_VIDEO_START and DISP_CMD_VIDEO_SET_FB ioctl.<br />
Both are set false with DISP_CMD_VIDEO_STOP again.<br />
<br />
So, in case we forget the DISP_CMD_VIDEO_STOP ioctl, we may run into some issues with faulty parameters in Hal_Set_Frame itself. To debug that kernel bug, we could set some logs into Hal_Set_Frame, to see what happens. Or simply try to consequently use DISP_CMD_VIDEO_STOP.<br />
I could see this issue sometimes, if i CTRL-C a running program (e.g. sth. with libvdpau-sunxi) and then do another CTRL-C. Maybe everything is killed but g_video[sel][id].enable isn't set to FALSE again, which keeps Hal_Set_Frame executed every VBlank.<br />
<br />
I think it has nothing to do with the other ioctls which trigger the img_sw_para_to_reg function in the end because of the massive (most likely 50Hz) flood of dmesg. With this background, one maybe can reproduce the issue.</div>
Rellla
https://linux-sunxi.org/index.php?title=User:Rellla&diff=22273
User:Rellla
2019-03-27T12:32:58Z
<p>Rellla: /* H6 */</p>
<hr />
<div>= Hardware =<br />
<br />
== A10 ==<br />
* [[Cubieboard]]<br />
* [[Mele A100]]<br />
* [[Mele A2000]]<br />
== A20 ==<br />
* [[Cubietech Cubieboard2]]<br />
* [[Cubietech Cubietruck]]<br />
* [[LeMaker Banana Pi]]<br />
== H3 ==<br />
* [[Xunlong Orange Pi Plus]]<br />
== H5 ==<br />
* [[Xunlong Orange Pi PC 2]]<br />
== H6 ==<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Eachlink H6 Mini]]<br />
<br />
= Software =<br />
The software i'm currently dealing with:<br />
* Kernel: [https://github.com/rellla/linux-sunxi/tree/stage/sunxi-3.4_fixes stage/sunxi-3.4]<br />
* Filesystem/ Distribution: [[Bootable_SD_card#Rootfs | Debian Jessie ]] from scratch ([[User:Rellla/Debian]] as my own helpful installation record)<br />
* [[User:Rellla/Armbian | Armbian ]] <br />
* [[Cedrus | VDPAU for sunxi]]<br />
* [http://www.tvdr.de VDR]: [https://github.com/rellla/vdr-sunxi VDR for Sunxi Devices]<br />
* <strike>[http://www.xbmc.org XBMC]: [https://github.com/rellla/xbmca10 XBMCA10]</strike><br />
* <strike>[https://github.com/rellla/LMSarmhf Logitech Media Server] for armhf</strike><br />
* ... to complete<br />
<br />
= Projects =<br />
<strike>Server usage:</strike><br />
Possible server scenarios:<br />
* MiniDLNA Server (Cubietruck)<br />
* Logitech Media Server (Cubietruck)<br />
* VDR Server (Cubietruck)<br />
* Git Server (Cubietruck)<br />
* Apache, PHP, MySQL, Samba (Cubietruck)<br />
* controlling a 5x relay board for multiroom audio via android clients<br />
* In-/ outside-temperature and humidity logger<br />
<br />
Client usage (testing with Cubieboard2 and legacy kernel):<br />
* MPD<br />
* squeezelite<br />
* (WIP) VDR client ([[Cedrus/libvdpau_integration_matrix]])<br />
* <strike>(WIP) XBMC client</strike><br />
<br />
= Todos =<br />
* refactor [https://github.com/rellla/libvdpau-sunxi/commits/staging libvdpau-sunxi fork] for upstream branch<br />
** ''Add 'real' queue - done''<br />
** ''Add deinterlacer - done''<br />
** ''Fix CSC handling - done''<br />
** ''[https://github.com/rellla/libvdpau-sunxi/tree/gles Add NV OpenGL/ES interop feature] - preliminary work done''<br />
** Improve performance of OSD handling<br />
** Improve logging, introduce loglevels<br />
** Add XEvent handling<br />
* [https://github.com/mosterta/libvdpau-sunxi OpenGL/ES Vdpau interop integration in libvdpau-sunxi]<br />
* [https://github.com/rellla/softhddevice-openglosd/tree/gles OpenGL/ES accelerated softhddevice] - preliminary work done<br />
<br />
= Notices =<br />
Sunxi display driver bugs collection:<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_layer.c#L566<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L77<br />
* https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/de_fe.c#L1385<br />
* [[File:Ve_tile_format_v1.pdf|VE tile format layout]]<br />
*[http://pastebin.com/iWb5tX0U Tile format conversion code]<br />
<br />
== Useful links ==<br />
* https://github.com/dvdhrm/docs/tree/master/drm-howto<br />
* http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf<br />
<br />
== [DISP] not supported image0 pixel sequence ==<br />
Sometimes we have some issues with the 3.4 display driver. dmesg is flooded with messages like:<br />
[DISP] not supported image0 pixel sequence:208 in img_sw_para_to_reg<br />
or<br />
[DISP] not supported yuv channel pixel sequence:0 in img_sw_para_to_reg<br />
I think, this can be tracked down to https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L388<br />
Hal_Set_Frame executes https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L357 and https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/video/sunxi/disp/disp_video.c#L362 which could be both responsible for the dmesg output in case the parameters don't exist anymore in memory. This would explain the different and not-reasonable values.<br />
Hal_Set_Frame is executed during VBlanking, which would explain the massive flooding.<br />
This all can happen when ((g_video[sel][id].enable == TRUE) && (g_video[sel][id].have_got_frame == TRUE)), which is triggered by the DISP_CMD_VIDEO_START and DISP_CMD_VIDEO_SET_FB ioctl.<br />
Both are set false with DISP_CMD_VIDEO_STOP again.<br />
<br />
So, in case we forget the DISP_CMD_VIDEO_STOP ioctl, we may run into some issues with faulty parameters in Hal_Set_Frame itself. To debug that kernel bug, we could set some logs into Hal_Set_Frame, to see what happens. Or simply try to consequently use DISP_CMD_VIDEO_STOP.<br />
I could see this issue sometimes, if i CTRL-C a running program (e.g. sth. with libvdpau-sunxi) and then do another CTRL-C. Maybe everything is killed but g_video[sel][id].enable isn't set to FALSE again, which keeps Hal_Set_Frame executed every VBlank.<br />
<br />
I think it has nothing to do with the other ioctls which trigger the img_sw_para_to_reg function in the end because of the massive (most likely 50Hz) flood of dmesg. With this background, one maybe can reproduce the issue.</div>
Rellla
https://linux-sunxi.org/index.php?title=Debootstrap&diff=22272
Debootstrap
2019-03-27T12:29:41Z
<p>Rellla: /* Expanded apts sources.list */ typo</p>
<hr />
<div>On debian based systems, you can manually initialize an installation using ''debootstrap''.<br />
<br />
This whole process takes half an hour or so (depending on network bandwidth and disk setup, direct to sd-card will be slower), and will result in a 250MB root filesystem, or a 80MB tarball, <br />
<br />
= Pre-requisites =<br />
<br />
* A debian based distribution.<br />
* package '''debootstrap'''<br />
* package '''qemu-user-static''' if you are doing this from a different architecture<br />
<br />
It is assumed that your target filesystem is mounted in '''/mnt'''<br />
<br />
Also, figure out which distribution version you wish to use. Current debian stable is called ''stretch'', and a current ubuntu is called ''cosmic''.<br />
<br />
= First stage =<br />
<br />
This step can be run from any host architecture.<br />
<br />
<pre>debootstrap --arch=armhf --foreign <distro> /mnt/</pre><br />
<br />
Replace <distro> with your preferred distribution, probably ''stretch'' or ''cosmic''.<br />
<br />
= Second stage =<br />
<br />
== From a different host architecture ==<br />
<br />
Copy qemu to the target filesystem: <pre>cp /usr/bin/qemu-arm-static /mnt/usr/bin/</pre><br />
<br />
Chroot to target: <pre>chroot /mnt /usr/bin/qemu-arm-static /bin/sh -i</pre><br />
<br />
== From the same architecture ==<br />
<br />
Chroot to target: <pre>chroot /mnt /bin/sh -i</pre><br />
<br />
== Debootstrap second stage ==<br />
<br />
<pre>/debootstrap/debootstrap --second-stage</pre><br />
<br />
= Mandatory setup =<br />
<br />
== Add root passwd ==<br />
<br />
While in the chroot, run:<pre>passwd</pre><br />
<br />
== Hostname ==<br />
<br />
You do not wish to have your rootfs have the same hostname as your host machine, so it is wise to change this now, as this will surreptitiously influence things like your ssh keys.<br />
<br />
Simply edit ''/etc/hostname'', this can be done from both inside and outside of the chroot.<br />
<br />
== Fstab ==<br />
<br />
This can be done from both inside and outside of the chroot.<br />
<br />
=== Add tmpfs ===<br />
<br />
<pre>none /tmp tmpfs defaults,noatime,mode=1777 0 0</pre><br />
<br />
=== Add boot partition (if present) ===<br />
<br />
<pre>/dev/mmcblk0p1 /boot vfat defaults 0 0 </pre><br />
<br />
Adjust filesystemtype accordingly.<br />
<br />
== Serial console ==<br />
<br />
=== With systemd ===<br />
<br />
* From within the chroot:<pre>systemctl enable serial-getty@ttyS0.service</pre><br />
<br />
* Outside of chroot:<pre>ln -s /lib/systemd/system/serial-getty@.service /mnt/etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service</pre><br />
<br />
=== With upstart ===<br />
<br />
Please follow [https://help.ubuntu.com/community/SerialConsoleHowto#line-18 this ubuntu howto], which can be done from outside the chroot.<br />
<br />
=== With sysvinit ===<br />
<br />
Add the following line to ''/etc/inittab'', independent of chroot (apart from the path):<br />
<pre>T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100</pre><br />
<br />
= Optional/deferrable setup =<br />
<br />
Most of these things can be done from within the chroot or on the actual machine. They are really nice to have, but not totally necessary before the first boot of the target machine.<br />
<br />
If debians servers are not resolving, you might need to copy the hosts' resolv.conf to the target filesystem before chrooting back in.<br />
<br />
== Locales ==<br />
<br />
Run:<pre>apt-get install locales<br />
dpkg-reconfigure locales</pre><br />
<br />
It might make sense to choose ''en_US.UTF-8''<br />
<br />
== Configure ethernet with dhcp ==<br />
cat <<END >> /etc/network/interfaces<br />
auto lo eth0<br />
allow-hotplug eth0<br />
iface lo inet loopback<br />
iface eth0 inet dhcp<br />
END<br />
<br />
== Expanded apts sources.list ==<br />
<br />
Here are some expanded sources.lists, which are bound to be out of date, to augment /apt/sources.list on the target rootfs.<br />
<br />
=== Debian ===<br />
Replace ''stretch'' with your chosen debian distribution name.<br />
<pre>deb http://http.debian.net/debian stretch main contrib non-free<br />
deb-src http://http.debian.net/debian stretch main contrib non-free<br />
deb http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb-src http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb http://security.debian.org/debian-security stretch/updates main contrib non-free<br />
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free</pre><br />
<br />
=== Ubuntu ===<br />
Replace ''cosmic'' with your chosen ubuntu version.<br />
<pre>deb http://ports.ubuntu.com/ cosmic main universe<br />
deb-src http://ports.ubuntu.com/ cosmic main universe<br />
deb http://ports.ubuntu.com/ cosmic-security main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-security main universe<br />
deb http://ports.ubuntu.com/ cosmic-updates main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-updates main universe</pre><br />
<br />
== Openssh-server ==<br />
<br />
Run:<pre>apt-get install openssh-server</pre><br />
<br />
= Cleanup =<br />
<br />
From within the chroot, run ''apt-get clean'' to remove cached packages.<br />
<br />
If you were using a qemu chroot, then you need to remove ''/mnt/usr/bin/qemu-arm-static''.<br />
<br />
If you needed the hosts' resolv.conf, then you need to remove ''/mnt/etc/resolv.conf''<br />
<br />
= Tarring up the result =<br />
<br />
You spent some time setting this up, and you might not want to retrace the above steps every few days, so you might as well throw this into a 100ish MB tarball:<br />
<br />
From the host, from within ''/mnt/'', run:<br />
<pre>tar -cjpf /home/user/sunxi_rootfs.tar.bz2 .</pre><br />
<br />
Be careful when you unpack that, as rootfses are pretty much the only time tarballs should be untarred in the local directory.</div>
Rellla
https://linux-sunxi.org/index.php?title=Debootstrap&diff=22271
Debootstrap
2019-03-27T12:29:10Z
<p>Rellla: /* Optional/deferrable setup */ add network setup</p>
<hr />
<div>On debian based systems, you can manually initialize an installation using ''debootstrap''.<br />
<br />
This whole process takes half an hour or so (depending on network bandwidth and disk setup, direct to sd-card will be slower), and will result in a 250MB root filesystem, or a 80MB tarball, <br />
<br />
= Pre-requisites =<br />
<br />
* A debian based distribution.<br />
* package '''debootstrap'''<br />
* package '''qemu-user-static''' if you are doing this from a different architecture<br />
<br />
It is assumed that your target filesystem is mounted in '''/mnt'''<br />
<br />
Also, figure out which distribution version you wish to use. Current debian stable is called ''stretch'', and a current ubuntu is called ''cosmic''.<br />
<br />
= First stage =<br />
<br />
This step can be run from any host architecture.<br />
<br />
<pre>debootstrap --arch=armhf --foreign <distro> /mnt/</pre><br />
<br />
Replace <distro> with your preferred distribution, probably ''stretch'' or ''cosmic''.<br />
<br />
= Second stage =<br />
<br />
== From a different host architecture ==<br />
<br />
Copy qemu to the target filesystem: <pre>cp /usr/bin/qemu-arm-static /mnt/usr/bin/</pre><br />
<br />
Chroot to target: <pre>chroot /mnt /usr/bin/qemu-arm-static /bin/sh -i</pre><br />
<br />
== From the same architecture ==<br />
<br />
Chroot to target: <pre>chroot /mnt /bin/sh -i</pre><br />
<br />
== Debootstrap second stage ==<br />
<br />
<pre>/debootstrap/debootstrap --second-stage</pre><br />
<br />
= Mandatory setup =<br />
<br />
== Add root passwd ==<br />
<br />
While in the chroot, run:<pre>passwd</pre><br />
<br />
== Hostname ==<br />
<br />
You do not wish to have your rootfs have the same hostname as your host machine, so it is wise to change this now, as this will surreptitiously influence things like your ssh keys.<br />
<br />
Simply edit ''/etc/hostname'', this can be done from both inside and outside of the chroot.<br />
<br />
== Fstab ==<br />
<br />
This can be done from both inside and outside of the chroot.<br />
<br />
=== Add tmpfs ===<br />
<br />
<pre>none /tmp tmpfs defaults,noatime,mode=1777 0 0</pre><br />
<br />
=== Add boot partition (if present) ===<br />
<br />
<pre>/dev/mmcblk0p1 /boot vfat defaults 0 0 </pre><br />
<br />
Adjust filesystemtype accordingly.<br />
<br />
== Serial console ==<br />
<br />
=== With systemd ===<br />
<br />
* From within the chroot:<pre>systemctl enable serial-getty@ttyS0.service</pre><br />
<br />
* Outside of chroot:<pre>ln -s /lib/systemd/system/serial-getty@.service /mnt/etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service</pre><br />
<br />
=== With upstart ===<br />
<br />
Please follow [https://help.ubuntu.com/community/SerialConsoleHowto#line-18 this ubuntu howto], which can be done from outside the chroot.<br />
<br />
=== With sysvinit ===<br />
<br />
Add the following line to ''/etc/inittab'', independent of chroot (apart from the path):<br />
<pre>T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100</pre><br />
<br />
= Optional/deferrable setup =<br />
<br />
Most of these things can be done from within the chroot or on the actual machine. They are really nice to have, but not totally necessary before the first boot of the target machine.<br />
<br />
If debians servers are not resolving, you might need to copy the hosts' resolv.conf to the target filesystem before chrooting back in.<br />
<br />
== Locales ==<br />
<br />
Run:<pre>apt-get install locales<br />
dpkg-reconfigure locales</pre><br />
<br />
It might make sense to choose ''en_US.UTF-8''<br />
<br />
== Configure ethernet with dhcp ==<br />
cat <<END >> /etc/network/interfaces<br />
auto lo eth0<br />
allow-hotplug eth0<br />
iface lo inet loopback<br />
iface eth0 inet dhcp<br />
END<br />
<br />
== Expanded apts sources.list ==<br />
<br />
Here are some expanded sourcUes.lists, which are bound to be out of date, to augment /apt/sources.list on the target rootfs.<br />
<br />
=== Debian ===<br />
Replace ''stretch'' with your chosen debian distribution name.<br />
<pre>deb http://http.debian.net/debian stretch main contrib non-free<br />
deb-src http://http.debian.net/debian stretch main contrib non-free<br />
deb http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb-src http://http.debian.net/debian stretch-updates main contrib non-free<br />
deb http://security.debian.org/debian-security stretch/updates main contrib non-free<br />
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free</pre><br />
<br />
=== Ubuntu ===<br />
Replace ''cosmic'' with your chosen ubuntu version.<br />
<pre>deb http://ports.ubuntu.com/ cosmic main universe<br />
deb-src http://ports.ubuntu.com/ cosmic main universe<br />
deb http://ports.ubuntu.com/ cosmic-security main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-security main universe<br />
deb http://ports.ubuntu.com/ cosmic-updates main universe<br />
deb-src http://ports.ubuntu.com/ cosmic-updates main universe</pre><br />
<br />
== Openssh-server ==<br />
<br />
Run:<pre>apt-get install openssh-server</pre><br />
<br />
= Cleanup =<br />
<br />
From within the chroot, run ''apt-get clean'' to remove cached packages.<br />
<br />
If you were using a qemu chroot, then you need to remove ''/mnt/usr/bin/qemu-arm-static''.<br />
<br />
If you needed the hosts' resolv.conf, then you need to remove ''/mnt/etc/resolv.conf''<br />
<br />
= Tarring up the result =<br />
<br />
You spent some time setting this up, and you might not want to retrace the above steps every few days, so you might as well throw this into a 100ish MB tarball:<br />
<br />
From the host, from within ''/mnt/'', run:<br />
<pre>tar -cjpf /home/user/sunxi_rootfs.tar.bz2 .</pre><br />
<br />
Be careful when you unpack that, as rootfses are pretty much the only time tarballs should be untarred in the local directory.</div>
Rellla
https://linux-sunxi.org/index.php?title=Rongpin_RP-H6B&diff=22270
Rongpin RP-H6B
2019-03-27T08:41:51Z
<p>Rellla: please work through the new_device_howto - *readding the boilerplate*</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:RP-H6C.jpg|250px]]<br />
| manufacturer = [http://www.rpdzkj.com/ Shenzhen Rongpin Electronic Technology Co., Ltd.]<br />
| dimensions = 44''mm'' x 44''mm''<br />
| release_date = April 2018<br />
| website = [http://www.rpdzkj.com/showproducts.asp?/119.html Device Product Page]<br />
| soc = [[H6]] @ 1.5 Ghz<br />
| dram = 1GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GiB eMMC<br />
| power = DC 5V @ 3A<br />
| video = HDMI 2.0a, CVBS<br />
| audio = HDMI, Line out/in<br />
| network = 10/100/1000Mbps Ethernet interface<br />
| storage = SDIO<br />
| usb = 1 OTG USB2.0, 1 HOST USB2.0, 1 USB 3.0<br />
| other = UART0(Debug),UART1,UART2,UART3,UART4<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 />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>LIA-BB-V6.66<br />
1970-01-01</pre><br />
<br />
In android, under Settings->About Tablet, you will find:<br />
* Model Number: ''{{Edit|DEVICE}}''<br />
* Build Number: ''{{Edit|SOC_BOARD_DEVICE_*.*}}''<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
{{Remove|Give a brief overview of the current status of support under sunxi here.}}<br />
<br />
== Images ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE specific sunxi ROM images here. E.g. a livesuit image or some other linux image which uses linux-sunxi code. Do not put non-sunxi images here, they should live under [[#See_also|See also]]. If no sunxi based images are available, this section can be removed.}}<br />
<br />
== HW-Pack ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi HW-pack specifics here. When empty, this section can be removed.}}<br />
<br />
== BSP ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi BSP specifics here. When empty, this section can be removed.}}<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 />
==== Sunxi/Legacy U-Boot ====<br />
<br />
Use the ''{{Edit|MANUFACTURER_DEVICE}}'' build target.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Use the ''{{Edit|MANUFACTURER_DEVICE}}'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
Use the [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/SOC/MANUFACTURER_DEVICE.fex ''{{Edit|MANUFACTURER_DEVICE.fex}}''] file.<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the ''{{Edit|FAMILY-CHIP-DEVICE.dtb}}'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
{{Remove|Add MANUFACTURER DEVICE specific tips, tricks, Caveats and nice to have changes here.}}<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
[[File:device_uart.jpg|thumb|240px|{{Remove|DEVICE}} UART pads]]<br />
<br />
{{Remove|This section explains how to attach a serial port to the device. Make sure it refers to our [[UART|UART howto]]. For a development board, you can just mention how to find the header with the pins and include a picture, and you can remove the warranty voiding warning.}}<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
== Locating the UART ==<br />
<br />
{{Remove|Describe how to find the RX,TX,GND signals here, and mention the [[UART|UART howto]].}}<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:Device_board_front.jpg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
{{Remove|List rebadged devices here.}}<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]<br />
[[Category:Mainline_U-Boot]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22232
Linux mainlining effort
2019-03-18T13:24:07Z
<p>Rellla: /* Merged into 5.1 */ -was merged earlier-</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-March/209591.html patch-v7])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.2 ==<br />
* H6<br />
** Cedrus<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22231
Linux mainlining effort
2019-03-18T13:19:17Z
<p>Rellla: /* Merged into 5.1 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-March/209591.html patch-v7])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.2 ==<br />
* H6<br />
** Cedrus<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** SRAM controller / system control<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22230
Linux mainlining effort
2019-03-18T09:56:06Z
<p>Rellla: /* Status Matrix */ H6 cedrus missed 5.1</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-March/209591.html patch-v7])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.2 ==<br />
* H6<br />
** Cedrus<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22229
Linux mainlining effort
2019-03-18T09:24:11Z
<p>Rellla: /* Planned for 5.1 */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-March/209591.html patch-v7])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.2 ==<br />
* H6<br />
** Cedrus<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22208
Linux mainlining effort
2019-03-07T15:51:32Z
<p>Rellla: /* Major drivers */ lima-v7</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-March/209591.html patch-v7])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22207
Linux mainlining effort
2019-03-07T15:49:59Z
<p>Rellla: /* Major drivers */ cedrus-v5</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch v1] [https://www.spinics.net/lists/arm-kernel/msg710916.html v2] [https://www.spinics.net/lists/arm-kernel/msg711156.html v3]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg712145.html patch-v5]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-February/208532.html patch-v2])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22179
Linux mainlining effort
2019-02-25T14:37:47Z
<p>Rellla: /* Major drivers */ cedrus v4</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg708906.html patch-v4]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-February/208532.html patch-v2])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22178
Linux mainlining effort
2019-02-25T14:35:43Z
<p>Rellla: /* Major drivers */ lima v2</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg687543.html patch-v2]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-February/208532.html patch-v2])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22123
Linux mainlining effort
2019-02-11T08:44:52Z
<p>Rellla: /* Status Matrix */ fix colors</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A83T]]<br />
** USB OTG Chen-Yu Tsai [https://lore.kernel.org/patchwork/project/lkml/list/?series=382299 ARM: sun8i: a83t: Enable USB OTG]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A64]] CSI support (WiP: Jagan Teki [https://patchwork.kernel.org/project/linux-media/list/?series=54293 media/sun6i: Allwinner A64 CSI support])<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
** RGB565 format support for sun6i-csi (WiP: Chen-Yu Tsai (wens))<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg687543.html patch-v2]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-February/206260.html patch])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22119
Linux mainlining effort
2019-02-06T13:25:51Z
<p>Rellla: /* Major drivers */</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: orange;" rowspan="2" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.20<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A80]]<br />
** GMAC Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=76281 ARM: sun9i: a80: Enable GMAC]<br />
<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [https://patchwork.kernel.org/cover/10788707/ patch-v15] [[Applying Patches from Spinics Archive]]<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A64]] CSI support (WiP: Jagan Teki [https://patchwork.kernel.org/project/linux-media/list/?series=54293 media/sun6i: Allwinner A64 CSI support])<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
** RGB565 format support for sun6i-csi (WiP: Chen-Yu Tsai (wens))<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg687543.html patch-v2]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2019-February/206260.html patch])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22117
Linux mainlining effort
2019-02-05T14:52:44Z
<p>Rellla: /* Status Matrix */ H6 SRAM</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: red;" rowspan="2" | NO<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.20<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [https://patchwork.kernel.org/cover/10788707/ patch-v15] [[Applying Patches from Spinics Archive]]<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A64]] CSI support (WiP: Jagan Teki [https://patchwork.kernel.org/project/linux-media/list/?series=54293 media/sun6i: Allwinner A64 CSI support])<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
** RGB565 format support for sun6i-csi (WiP: Chen-Yu Tsai (wens))<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg687543.html patch-v2]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2018-May/177314.html patch-RFC])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22116
Linux mainlining effort
2019-02-05T13:25:33Z
<p>Rellla: /* Major drivers */ I'd like to keep the link to the patch ...</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 />
=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 Bootlin.<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; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: orange;" | [[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: lightgreen;" | 4.13<br />
| style="background: orange;" | [[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: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: red;" rowspan="2" | NO<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.20<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
! [[V3s]]<br />
<br />
|}<br />
<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: 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 />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://www.spinics.net/lists/arm-kernel/msg637294.html patch]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[A64]]<br />
** MIPI-DSI (WiP: Jagan Teki) [https://lore.kernel.org/patchwork/project/lkml/list/?series=372679 drm/sun4i: Allwinner A64 MIPI-DSI support]<br />
* [[H6]]<br />
** USB 2.0/3.0 support (WiP: Icenowy Zheng (icenowy)) [https://patchwork.ozlabs.org/cover/947451/ patch-v3]<br />
<br />
* Audio codec support:<br />
** [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [https://patchwork.kernel.org/cover/10788707/ patch-v15] [[Applying Patches from Spinics Archive]]<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirman (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* CSI (camera sensor interface)<br />
** [[A64]] CSI support (WiP: Jagan Teki [https://patchwork.kernel.org/project/linux-media/list/?series=54293 media/sun6i: Allwinner A64 CSI support])<br />
** [[A10]] CSI support (WiP: Maxime Ripard [https://lore.kernel.org/patchwork/project/lkml/list/?series=372659 media: Allwinner A10 CSI support])<br />
** RGB565 format support for sun6i-csi (WiP: Chen-Yu Tsai (wens))<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/) [https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc RFC]<br />
<br />
* [[Cedrus|Video Engine]]<br />
** H.264 decoding support (WiP: Maxime Ripard (mripard)) [https://www.spinics.net/lists/arm-kernel/msg687543.html patch-v2]<br />
<br />
* [[Mali|ARM Mali GPU]]<br />
** 4xx [https://gitlab.freedesktop.org/lima Lima] (WiP: Qiang Yu (yuq) [https://lists.freedesktop.org/archives/dri-devel/2018-May/177314.html patch-RFC])<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=73361 arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[A64]] [[IR]] WIP Jernej Skrabec [https://lore.kernel.org/patchwork/project/lkml/list/?series=379161 Add support for IR on Allwinner A64]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] [[H6]] Thermal driver (WIP: Philipp Rossak (embed-3d) v3-branch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3] patch v3: [https://lkml.org/lkml/2018/8/30/729 contains only a83t and h3])<br />
<br />
== Planned for 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* H6<br />
** Cedrus<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietruck Plus]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<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 />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin 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 Bootlin]<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 />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Rellla