https://linux-sunxi.org/api.php?action=feedcontributions&user=Icenowy&feedformat=atom
linux-sunxi.org - User contributions [en]
2024-03-29T11:39:32Z
User contributions
MediaWiki 1.35.8
https://linux-sunxi.org/index.php?title=Sipeed_MaixSense&diff=24385
Sipeed MaixSense
2021-08-02T08:13:42Z
<p>Icenowy: Onboard USB2UART does not void warranty</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:MaixSense_front.jpg|250px]]<br />
| manufacturer = [http://sipeed.com/ Sipeed]<br />
| dimensions = 33''mm'' x 39.9''mm'' x 9''mm''<br />
| release_date = Not fully released yet<br />
| soc = [[R329]] @ 1.512Ghz<br />
| dram = 256MiB co-packaged DDR3 @ 774MHz<br />
| power = DC 5V via Type-C ports<br />
| lcd = 240x240 (1.52" 1:1)<br />
| audio = on-board two microphonee and one speaker<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723BS/RTL8723DS]])<br />
| storage = µSD, SPI NOR/NAND (NC)<br />
| usb = 1 USB2.0 OTG (In Type-C port with hack to generate an ID signal)<br />
| other = On-board USB2UART for debug UART<br />
| headers = two GPIO headers<br />
}}<br />
<br />
Sipeed MaixSense is a development kit by Sipeed, utilizing their own Sipeed Maix IIA SoM.<br />
<br />
= Identification =<br />
On the baseboard, Sipeed logo, <pre>Sipeed</pre> and <pre>MaixSense</pre> is silkscreened, and on the SoM, <pre>Sipeed</pre> and <pre>M2A</pre>.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline support is WIP.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/u-boot/tree/r329-wip] and use the ''sipeed_maixsense_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/linux/tree/r329-wip] and use the ''sun50i-r329-maixsense.dtb'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== FEL mode ==<br />
<br />
By default no SPI Flash is soldered, that means just removing SD card makes the SoC to enter FEL.<br />
<br />
= Adding a serial port =<br />
<br />
Just plug a cable connected to your PC to the port at the down side (next to the 4-pin connector, which provides another UART, not the debug one). An onboard CH340 USB-UART bridge is available for accessing the debug UART.<br />
<br />
= Pictures =<br />
<br />
Sipeed Maix IIA SoM:<br />
<br />
<gallery><br />
File:M2A front.png<br />
File:M2A back.png<br />
</gallery><br />
<br />
MaixSense Kit:<br />
<br />
<gallery><br />
File:MaixSense_front.jpg<br />
File:MaixSense_back.png<br />
</gallery><br />
<br />
= Schematic =<br />
- [https://dl.sipeed.com/fileList/MaixII-A/HDK/4_Schematic_diagram/Sipeed_MAIX-II-A_SCH_1.0.pdf Maix II A schematics]<br />
- [https://dl.sipeed.com/fileList/MaixII-A/HDK/4_Schematic_diagram/Sipeed_MAIXSense_SCH_1.0.pdf MaixSense schematics]<br />
<br />
= See also =<br />
<br />
- [https://aijishu.com/a/1060000000214253 Official description at Jishu community]<br />
<br />
[[Category:Devices]]<br />
[[Category:R329 Boards]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Sipeed_MaixSense&diff=24384
Sipeed MaixSense
2021-08-02T08:13:12Z
<p>Icenowy: Add schematics and some other changes</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:MaixSense_front.jpg|250px]]<br />
| manufacturer = [http://sipeed.com/ Sipeed]<br />
| dimensions = 33''mm'' x 39.9''mm'' x 9''mm''<br />
| release_date = Not fully released yet<br />
| soc = [[R329]] @ 1.512Ghz<br />
| dram = 256MiB co-packaged DDR3 @ 774MHz<br />
| power = DC 5V via Type-C ports<br />
| lcd = 240x240 (1.52" 1:1)<br />
| audio = on-board two microphonee and one speaker<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723BS/RTL8723DS]])<br />
| storage = µSD, SPI NOR/NAND (NC)<br />
| usb = 1 USB2.0 OTG (In Type-C port with hack to generate an ID signal)<br />
| other = On-board USB2UART for debug UART<br />
| headers = two GPIO headers<br />
}}<br />
<br />
Sipeed MaixSense is a development kit by Sipeed, utilizing their own Sipeed Maix IIA SoM.<br />
<br />
= Identification =<br />
On the baseboard, Sipeed logo, <pre>Sipeed</pre> and <pre>MaixSense</pre> is silkscreened, and on the SoM, <pre>Sipeed</pre> and <pre>M2A</pre>.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline support is WIP.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/u-boot/tree/r329-wip] and use the ''sipeed_maixsense_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/linux/tree/r329-wip] and use the ''sun50i-r329-maixsense.dtb'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== FEL mode ==<br />
<br />
By default no SPI Flash is soldered, that means just removing SD card makes the SoC to enter FEL.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
Just plug a cable connected to your PC to the port at the down side (next to the 4-pin connector, which provides another UART, not the debug one). An onboard CH340 USB-UART bridge is available for accessing the debug UART.<br />
<br />
= Pictures =<br />
<br />
Sipeed Maix IIA SoM:<br />
<br />
<gallery><br />
File:M2A front.png<br />
File:M2A back.png<br />
</gallery><br />
<br />
MaixSense Kit:<br />
<br />
<gallery><br />
File:MaixSense_front.jpg<br />
File:MaixSense_back.png<br />
</gallery><br />
<br />
= Schematic =<br />
- [https://dl.sipeed.com/fileList/MaixII-A/HDK/4_Schematic_diagram/Sipeed_MAIX-II-A_SCH_1.0.pdf Maix II A schematics]<br />
- [https://dl.sipeed.com/fileList/MaixII-A/HDK/4_Schematic_diagram/Sipeed_MAIXSense_SCH_1.0.pdf MaixSense schematics]<br />
<br />
= See also =<br />
<br />
- [https://aijishu.com/a/1060000000214253 Official description at Jishu community]<br />
<br />
[[Category:Devices]]<br />
[[Category:R329 Boards]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Sipeed_MaixSense&diff=24383
Sipeed MaixSense
2021-08-02T08:04:52Z
<p>Icenowy: fix back image suffix</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [http://sipeed.com/ Sipeed]<br />
| dimensions = width''mm'' x breadth''mm'' x height''mm''<br />
| release_date = Not fully released yet<br />
| website = [http://manufacturer/device Device Product Page]<br />
| soc = [[R329]] @ 1.512Ghz<br />
| dram = 256MiB co-packaged DDR3 @ 774MHz<br />
| power = DC 5V @ 3A, 3700mAh 3.7V Li-Ion battery<br />
| lcd = 240x240 (1.52" 1:1)<br />
| audio = on-board two microphonee and one speaker<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723BS/RTL8723DS]])<br />
| storage = µSD, SATA<br />
| usb = 1 USB2.0 OTG (In Type-C port with hack to generate an ID signal)<br />
| other = On-board USB2UART for debug UART<br />
| headers = two GPIO headers<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 />
Sipeed MaixSense is a development kit by Sipeed, utilizing their own Sipeed Maix IIA SoM.<br />
<br />
= Identification =<br />
On the baseboard, Sipeed logo, <pre>Sipeed</pre> and <pre>MaixSense</pre> is silkscreened, and on the SoM, <pre>Sipeed</pre> and <pre>M2A</pre>.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline support is WIP.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/u-boot/tree/r329-wip] and use the ''sipeed_maixsense_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/linux/tree/r329-wip] and use the ''sun50i-r329-maixsense.dtb'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== FEL mode ==<br />
<br />
By default no SPI Flash is soldered, that means just removing SD card makes the SoC to enter FEL.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
Just plug a cable connected to your PC to the port at the down side (next to the 4-pin connector, which provides another UART, not the debug one). An onboard CH340 USB-UART bridge is available for accessing the debug UART.<br />
<br />
= Pictures =<br />
<br />
Sipeed Maix IIA SoM:<br />
<br />
<gallery><br />
File:M2A front.png<br />
File:M2A back.png<br />
</gallery><br />
<br />
MaixSense Kit:<br />
<br />
<gallery><br />
File:MaixSense_front.jpg<br />
File:MaixSense_back.png<br />
</gallery><br />
<br />
= Schematic =<br />
<br />
{{Remove|List schematics, board layout, cad files, etc here.}}<br />
<br />
= See also =<br />
<br />
- [https://aijishu.com/a/1060000000214253 Official description at Jishu community]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:R329 Boards]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Sipeed_MaixSense&diff=24382
Sipeed MaixSense
2021-08-02T08:04:21Z
<p>Icenowy: Add images</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [http://sipeed.com/ Sipeed]<br />
| dimensions = width''mm'' x breadth''mm'' x height''mm''<br />
| release_date = Not fully released yet<br />
| website = [http://manufacturer/device Device Product Page]<br />
| soc = [[R329]] @ 1.512Ghz<br />
| dram = 256MiB co-packaged DDR3 @ 774MHz<br />
| power = DC 5V @ 3A, 3700mAh 3.7V Li-Ion battery<br />
| lcd = 240x240 (1.52" 1:1)<br />
| audio = on-board two microphonee and one speaker<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723BS/RTL8723DS]])<br />
| storage = µSD, SATA<br />
| usb = 1 USB2.0 OTG (In Type-C port with hack to generate an ID signal)<br />
| other = On-board USB2UART for debug UART<br />
| headers = two GPIO headers<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 />
Sipeed MaixSense is a development kit by Sipeed, utilizing their own Sipeed Maix IIA SoM.<br />
<br />
= Identification =<br />
On the baseboard, Sipeed logo, <pre>Sipeed</pre> and <pre>MaixSense</pre> is silkscreened, and on the SoM, <pre>Sipeed</pre> and <pre>M2A</pre>.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline support is WIP.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/u-boot/tree/r329-wip] and use the ''sipeed_maixsense_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/linux/tree/r329-wip] and use the ''sun50i-r329-maixsense.dtb'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== FEL mode ==<br />
<br />
By default no SPI Flash is soldered, that means just removing SD card makes the SoC to enter FEL.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
Just plug a cable connected to your PC to the port at the down side (next to the 4-pin connector, which provides another UART, not the debug one). An onboard CH340 USB-UART bridge is available for accessing the debug UART.<br />
<br />
= Pictures =<br />
<br />
Sipeed Maix IIA SoM:<br />
<br />
<gallery><br />
File:M2A front.png<br />
File:M2A back.png<br />
</gallery><br />
<br />
MaixSense Kit:<br />
<br />
<gallery><br />
File:MaixSense_front.jpg<br />
File:MaixSense_back.jpg<br />
</gallery><br />
<br />
= Schematic =<br />
<br />
{{Remove|List schematics, board layout, cad files, etc here.}}<br />
<br />
= See also =<br />
<br />
- [https://aijishu.com/a/1060000000214253 Official description at Jishu community]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:R329 Boards]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=File:MaixSense_back.png&diff=24381
File:MaixSense back.png
2021-08-02T08:02:58Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:MaixSense_front.jpg&diff=24380
File:MaixSense front.jpg
2021-08-02T07:58:28Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:M2A_front.png&diff=24379
File:M2A front.png
2021-08-02T07:56:30Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:M2A_back.png&diff=24378
File:M2A back.png
2021-08-02T07:56:05Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=Sipeed_MaixSense&diff=24370
Sipeed MaixSense
2021-07-26T00:56:12Z
<p>Icenowy: skeleton</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [http://sipeed.com/ Sipeed]<br />
| dimensions = width''mm'' x breadth''mm'' x height''mm''<br />
| release_date = Not fully released yet<br />
| website = [http://manufacturer/device Device Product Page]<br />
| soc = [[R329]] @ 1.512Ghz<br />
| dram = 256MiB co-packaged DDR3 @ 774MHz<br />
| power = DC 5V @ 3A, 3700mAh 3.7V Li-Ion battery<br />
| lcd = 240x240 (1.52" 1:1)<br />
| audio = on-board two microphonee and one speaker<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723BS/RTL8723DS]])<br />
| storage = µSD, SATA<br />
| usb = 1 USB2.0 OTG (In Type-C port with hack to generate an ID signal)<br />
| other = On-board USB2UART for debug UART<br />
| headers = two GPIO headers<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 />
Sipeed MaixSense is a development kit by Sipeed, utilizing their own Sipeed Maix IIA SoM.<br />
<br />
= Identification =<br />
On the baseboard, Sipeed logo, <pre>Sipeed</pre> and <pre>MaixSense</pre> is silkscreened, and on the SoM, <pre>Sipeed</pre> and <pre>M2A</pre>.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline support is WIP.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/u-boot/tree/r329-wip] and use the ''sipeed_maixsense_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Still being done. To try out the working-in-progress code, retrieve the code at [https://github.com/sipeed/linux/tree/r329-wip] and use the ''sun50i-r329-maixsense.dtb'' device-tree binary.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== FEL mode ==<br />
<br />
By default no SPI Flash is soldered, that means just removing SD card makes the SoC to enter FEL.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
Just plug a cable connected to your PC to the port at the down side (next to the 4-pin connector, which provides another UART, not the debug one). An onboard CH340 USB-UART bridge is available for accessing the debug UART.<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 />
= Schematic =<br />
<br />
{{Remove|List schematics, board layout, cad files, etc here.}}<br />
<br />
= See also =<br />
<br />
- [https://aijishu.com/a/1060000000214253 Official description at Jishu community]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:R329 Boards]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=D1&diff=24116
D1
2021-04-20T09:33:32Z
<p>Icenowy: Use my D1 package shot</p>
<hr />
<div>{{infobox SoC<br />
| image = [[File:D1.png|250px]]<br />
| manufacturer = Allwinner<br />
| process = 22nm<ref name="cnx_first_look_d1" /> <br />
| cpu = [https://occ.t-head.cn/vendor/cpu/index?id=3817197695983423488 XuanTie C906 RISC-V]<br /><ref name="laoyaoba_article" /> <br />
| extensions = RISC-V Vector extension (?)<br />
| memory = DDR2 / DDR3<br />Up to 2 GB<br /><ref name="laoyaoba_article" /><br />
| vpu = '''Decoding''': 4K @ 30 FPS<br />H265 / H264 / MPEG / JPEG / VC1 / MJPEG<br />'''Encoding''': 1080p @ 60 FPS<br />JPEG / MJPEG<br /><ref name="laoyaoba_article" /><br />
| video = Out: HDMI / MIPI / LVDS / LCD / CVBS<br />In: CSI / CVBS<br /><ref name="laoyaoba_article" /><br />
| audio = DAC / ADC / CODEC / I2S-PCM / DMIC <br /><ref name="laoyaoba_article" /><br />
| network = 10/100/1000M EMAC<ref name="cnx_first_look_d1" /><br />
| storage = SDIO 3.0, eMMC 5.0, SPI NOR/NAND Flash<ref name="cnx_first_look_d1" /><br />
| usb = USB2.0: 1x OTG + 1x Host<ref name="cnx_first_look_d1" /><br />
| other = [https://ip.cadence.com/ipportfolio/tensilica-ip/audio Tensilica HiFi4 DSP]<ref name="cnx_first_look_d1" /> <br />G2D<ref name="cnx_first_look_d1" /> <br />Display Engine<ref name="laoyaoba_article" /><br />SDIO, 2x SPI, 6x UART, 4x I<sup>2</sup>C, PWM, IR, LRADC, GPADC, TPADC<br />LFBGA, 337 pins<ref name="cnx_first_look_d1" /><br />
| release_date = April 2021<ref name="laoyaoba_article" /> <br />
}}<br />
<br />
{{Remove_only_when_finished|This page is still under construction.}}<br />
<br />
Allwinner [[D1]] (sun20iw1p1<ref name="d1_bsp_id_according_to_moeicenowy_on_irc" />) is the first SoC of Allwinner which is based on a RISC-V core. D1 features single RV64GCV<ref name="riscv_extensions" /> core [https://occ.t-head.cn/vendor/cpu/index?id=3817197695983423488 XuanTie C906] from [https://www.t-head.cn/ T-Head Semiconductor] (subsidiary of [https://alibabagroup.com Alibaba]) and an additional 600 MHz [https://ip.cadence.com/ipportfolio/tensilica-ip/audio Tensilica HiFi4 DSP].<br />
<br />
On August 2020, Allwinner announced a cooperation with T-Head (PingTou) to jointly produce a RISC-V SoC<ref name="allwinner_t-head_announcement" /> then CNX Software told about an upcoming RISC-V SoC and a SBC from Allwinner on November 2020<ref name="cnx_c906_sbc" />.<br />
<br />
== External Links ==<br />
* [https://riscv.org/staging-cores-list-cores/ STAGING - cores list - cores - RISC-V International]<br />
* [https://occ.t-head.cn/vendor/cpu/download?id=3817197695983423488#sticky Xuantie C906 R1S0 User Manual (玄铁C906_R1S0用户手册) (requires login)]<br />
<br />
== References ==<br />
<references><br />
<ref name="cnx_first_look_d1">[https://www.cnx-software.com/2021/04/13/allwinner-d1-linux-risc-v-sbc-processor/ A first look at Allwinner D1 Linux RISC-V SBC and Processor - CNX Software]</ref><br />
<ref name="laoyaoba_article">[https://laoyaoba.com/n/777955 全志科技发布首颗RISC-V应用处理器 (Allwinner Technology released the first RISC-V application processor)]</ref><br />
<ref name="d1_bsp_id_according_to_moeicenowy_on_irc">[https://freenode.irclog.whitequark.org/linux-sunxi/2021-04-16#29685476 #linux-sunxi on 2021-04-16 — irc logs at whitequark.org]</ref><br />
<ref name="riscv_extensions">[https://en.wikipedia.org/wiki/RISC-V#ISA_base_and_extensions RISC-V ISA base and extensions]</ref><br />
<ref name="allwinner_t-head_announcement">[https://www.allwinnertech.com/index.php?c=news&a=index&id=283 全志携手阿里平头哥,为RISC-V生态注入新动力! (Allwinner joins hands with Ali Pingtou to inject new impetus into the RISC-V ecosystem!)]</ref><br />
<ref name="cnx_c906_sbc">[https://www.cnx-software.com/2020/11/09/xuantie-c906-based-allwinner-risc-v-processor-to-power-12-linux-sbcs/ XuanTie C906 based Allwinner RISC-V processor to power $12+ Linux SBC’s]</ref><br />
<references /></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:D1.png&diff=24115
File:D1.png
2021-04-20T09:15:29Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:V833_V831_Datasheet_V1.1(For_SoChip).pdf&diff=23827
File:V833 V831 Datasheet V1.1(For SoChip).pdf
2020-12-12T07:17:22Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=User:Icenowy/Aw-el2-barebone&diff=23247
User:Icenowy/Aw-el2-barebone
2020-03-30T14:10:11Z
<p>Icenowy: Add a simple introduction for aw-el2-barebone.</p>
<hr />
<div>The aw-el2-barebone is a simple hypervisor which wraps buggy H6 PCIe bus by me (Icenowy). It runs before U-Boot (after ATF BL3-1).<br />
<br />
The hypervisor tries to be as simple as possible -- it only wraps SMC calls (wrapping PSCI CPU_ON operation, to let the hypervisor start on secondary cores) and access to the PCIe zone allocated in the BSP device tree.<br />
<br />
And it might be not efficient now, because page table is never updated, and access to the PCIe zone is totally emulated in software. (Fortunately for PCIe devices, to pass a huge amount of data, they should use DMA, which targets DRAM directly.)<br />
<br />
I had tried to run an Intel wireless card and an ASM1061 SATA AHCI card with it (a PCIe controller driver without quirks in the kernel is needed).<br />
<br />
The hypervisor is at https://github.com/Icenowy/aw-el2-barebone , the kernel fork I use now is at https://github.com/Icenowy/linux/tree/h6-pcie-wrapped .<br />
<br />
For loading and running the hypervisor, a U-Boot fork is at https://github.com/Icenowy/u-boot/tree/h6-load-hyp . This fork will try to include hyp.bin as a hypervisor at 0x40010000 (which is the address aw-el2-barebone expects) in FIT. ATF doesn't need to be forked, but it need to be built with PRELOADED_BL33_BASE=0x40010000 to set the EL2 entrypoint to the hypervisor.<br />
<br />
By the way, I think the project is no longer barebone, and a newer name is welcomed.</div>
Icenowy
https://linux-sunxi.org/index.php?title=PineTab&diff=22698
PineTab
2019-08-28T11:09:07Z
<p>Icenowy: add pmOS images</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://www.pine64.org/ Manufacturer]<br />
| dimensions = {{Edit|TODO}}<br />
| release_date = 2019<br />
| website = [https://www.pine64.org/pinetab/ Device Product Page]<br />
| soc = [[A64]] @ 1.152Ghz<br />
| dram = 2GiB LPDDR3 @ 554MHz<br />
| nand = 16GiB eMMC, upgradable<br />
| power = DC 5V @ 3A (barrel jack with unknown size), 5000mAh 3.7V Li-Ion battery, microUSB<br />
| lcd = 1280x800 (10" 8:5)<br />
| touchscreen = 10-finger capacitive ([[Touchscreen#GT9xx|Goodix GT9271]])<br />
| video = HDMI (Type C - micro)<br />
| audio = 3.5mm headphone plug, HDMI, internal stereo speakers internal microphone<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723CS]])<br />
| storage = µSD<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG<br />
| camera = 2MP (????x????) front, 5MP (????x????) rear<br />
| other = Accelerometer ([[Accelerometer#Bosch|Bosch BMA223]])<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 />
= 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 />
The PCB has the following silkscreened on it:<br />
<pre>PINE_TAB-V1_1-20190617</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 />
Currently supported by out-of-tree mainline Linux forks.<br />
<br />
== Images ==<br />
<br />
[http://images.postmarketos.org/pinetab/ Prebuilt postmarketOS images]<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
As we currently do not have any specific U-Boot config for this device, Use the ''pine64-lts_defconfig'' build target temporarily as a hack.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Currently not supported in mainline.<br />
<br />
Use the ''sun50i-a64-pinetab.dtb'' device-tree binary in the downstream forked kernel at [https://gitlab.com/pine64-org/linux/commits/pine64-kernel].<br />
<br />
== FEL mode ==<br />
<br />
Use the fel-sdboot.sunxi file in sunxi-tools to enter FEL mode.<br />
<br />
= Adding a serial port =<br />
<br />
PineTabs have the serial port multiplexed with the audio jack, see [http://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf] for the pinout.<br />
<br />
There's a switch to switch audio jack between headphone and UART, located near the microSD slot.<br />
<br />
= Device disassembly =<br />
Use [[Plastic_tool|Plastic tool]] to loose the plastic clips between the main body and the back cover. Finish this operation at the side that the keyboard pogo pins are located.<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 />
= See also =<br />
<br />
[[Pine Pinebook]]<br />
<br />
[[Category:Devices]]<br />
[[Category:A64 Tablets]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=User:Icenowy&diff=22697
User:Icenowy
2019-08-28T11:07:46Z
<p>Icenowy: add more devices, and add lend out info</p>
<hr />
<div>== My sunxi garden ==<br />
<br />
* [[F1C100s]]<br />
:* [[LicheePi Nano]] (Thanks to Lichee Pi)<br />
<br />
* [[A10]]<br />
:* [[Cubietech Cubieboard]]<br />
<br />
* [[A13]]<br />
:* [[LicheePi One]] (USB OTG broken)<br />
:* [[LicheePi One]] (Thanks to Lichee Pi)<br />
<br />
* [[R8]]<br />
:* [[NextThingCo CHIP]]<br />
<br />
* [[A31s]]<br />
:* [[Colorfly e708 q1]] (USB OTG broken)<br />
<br />
* [[A20]]<br />
:* [[Banana Pi M1]] Plus (Thanks to Sinovoip)<br />
<br />
* [[A33]]<br />
:* [[Aoson M751s]]<br />
:* [[Uniscom A2]]<br />
:* An unbranded iNet D978 rev02 board based tablet<br />
:* [[Sinovoip Banana Pi M2 Magic]] A33 version (Thanks to Sinovoip)<br />
<br />
* [[R16]]<br />
:* [[Sinovoip Banana Pi M2 Magic]] R16 version (Thanks to Sinovoip)<br />
<br />
* [[A83T]]<br />
:* [[Sinovoip Banana Pi M3]] (Thanks to Sinovoip)<br />
<br />
* [[H8]]<br />
:* Unkown VR headset device<br />
<br />
* [[H2+]]<br />
:* [[Xunlong Orange Pi Zero]] (indefintely lend out)<br />
:* [[Sinovoip Banana Pi M2 Zero]] a prototype (with Secure Boot eFUSE burned by me) and a product version board (Thanks to Sinovoip)<br />
<br />
* [[H3]]<br />
:* [[Xunlong Orange Pi One]]<br />
:* [[Xunlong Orange Pi PC]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] (Thanks to Sinovoip)<br />
:* [[Libre Computer Board ALL-H3-CC]] H3 ver (Thanks to Libre Computer)<br />
<br />
* [[V3s]]<br />
:* [[LicheePi Zero]] two prototypes and two product version boards (Thanks to Lichee Pi)<br />
<br />
* [[R40]]<br />
:* [[Sinovoip Banana Pi M2 Ultra]]<br />
<br />
* [[V40]]<br />
:* [[Sinovoip Banana Pi M2 Berry]]<br />
<br />
* [[A64]]<br />
:* [[Pine64]]+ 2GB version *2 (Thanks to Pine64 for one of them)<br />
::* Including 2 Wi-Fi modules and 1 MIPI-DSI LCD<br />
:* [[Sinovoip Banana Pi M64]] (Thanks to Sinovoip)<br />
:* [[Pine64#Variants|SoPine]] with the Baseboard Model A<br />
:* [[Pine Pinebook]]<br />
:* [[PineTab]]<br />
<br />
* [[R18]]<br />
:* [[Pine64]] A64-LTS 3GiB version (Specially customized, thanks to Pine64)<br />
<br />
* [[H5]]<br />
:* [[Xunlong Orange Pi PC 2]] (indefintely lend out)<br />
:* [[Xunlong Orange Pi Prime]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] H5 ver<br />
:* [[Libre Computer Board ALL-H3-CC]] H5 ver (Thanks to Libre Computer)<br />
<br />
* [[H6]]<br />
:* [[PineH64]] model A 2GiB version (very early prototype with multiple bugs) and 3GiB version<br />
:* [[PineH64]] model B 3GiB version</div>
Icenowy
https://linux-sunxi.org/index.php?title=Category:A64_Tablets&diff=22693
Category:A64 Tablets
2019-08-27T16:39:52Z
<p>Icenowy: Created page with "Category:A64 Devices"</p>
<hr />
<div>[[Category:A64 Devices]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=PineTab&diff=22684
PineTab
2019-08-27T14:08:41Z
<p>Icenowy: add stub page for PineTab</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://www.pine64.org/ Manufacturer]<br />
| dimensions = {{Edit|TODO}}<br />
| release_date = 2019<br />
| website = [https://www.pine64.org/pinetab/ Device Product Page]<br />
| soc = [[A64]] @ 1.152Ghz<br />
| dram = 2GiB LPDDR3 @ 554MHz<br />
| nand = 16GiB eMMC, upgradable<br />
| power = DC 5V @ 3A (barrel jack with unknown size), 5000mAh 3.7V Li-Ion battery, microUSB<br />
| lcd = 1280x800 (10" 8:5)<br />
| touchscreen = 10-finger capacitive ([[Touchscreen#GT9xx|Goodix GT9271]])<br />
| video = HDMI (Type C - micro)<br />
| audio = 3.5mm headphone plug, HDMI, internal stereo speakers internal microphone<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|Realtek RTL8723CS]])<br />
| storage = µSD<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG<br />
| camera = 2MP (????x????) front, 5MP (????x????) rear<br />
| other = Accelerometer ([[Accelerometer#Bosch|Bosch BMA223]])<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 />
= 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 />
The PCB has the following silkscreened on it:<br />
<pre>PINE_TAB-V1_1-20190617</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 />
Currently supported by out-of-tree mainline Linux forks.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Mainline U-Boot ====<br />
<br />
As we currently do not have any specific U-Boot config for this device, Use the ''pine64-lts_defconfig'' build target temporarily as a hack.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Currently not supported in mainline.<br />
<br />
Use the ''sun50i-a64-pinetab.dtb'' device-tree binary in the downstream forked kernel at [https://gitlab.com/pine64-org/linux/commits/pine64-kernel].<br />
<br />
== FEL mode ==<br />
<br />
Use the fel-sdboot.sunxi file in sunxi-tools to enter FEL mode.<br />
<br />
= Adding a serial port =<br />
<br />
PineTabs have the serial port multiplexed with the audio jack, see [http://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf] for the pinout.<br />
<br />
There's a switch to switch audio jack between headphone and UART, located near the microSD slot.<br />
<br />
= Device disassembly =<br />
Use [[Plastic_tool|Plastic tool]] to loose the plastic clips between the main body and the back cover. Finish this operation at the side that the keyboard pogo pins are located.<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 />
= See also =<br />
<br />
[[Pine Pinebook]]<br />
<br />
[[Category:Devices]]<br />
[[Category:A64 Tablets]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22413
Linux mainlining effort
2019-04-16T17:33:11Z
<p>Icenowy: add panfrost to 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=104511&archive=both&state=* Allwinner H6 SPDIF support ]<br />
** Watchdog WIP Clément Péron [https://lore.kernel.org/patchwork/project/lkml/list/?series=390118&archive=both&state= dt-bindings: watchdog: sunxi: Add H6 compatible patch-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 />
<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>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22372
Linux mainlining effort
2019-04-12T07:00:27Z
<p>Icenowy: fix format issue of Lima</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 />
* [[Mali|ARM Mali GPU]]<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] <br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=104511&archive=both&state=* Allwinner H6 SPDIF support ]<br />
** Watchdog WIP Clément Péron [https://lore.kernel.org/patchwork/project/lkml/list/?series=389321 dt-bindings: watchdog: sunxi: Add H6 compatible]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
** RTC WIP Jagan Teki [https://patchwork.kernel.org/patch/10663189/ Add RTC node]<br />
<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 />
=== 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 />
** [[Lima]]<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>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22371
Linux mainlining effort
2019-04-12T06:59:59Z
<p>Icenowy: Lima is 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 />
* [[Mali|ARM Mali GPU]]<br />
** T7xx [https://gitlab.freedesktop.org/panfrost Panfrost]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[H6]] <br />
** SPDIF WIP Clément Péron [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=104511&archive=both&state=* Allwinner H6 SPDIF support ]<br />
** Watchdog WIP Clément Péron [https://lore.kernel.org/patchwork/project/lkml/list/?series=389321 dt-bindings: watchdog: sunxi: Add H6 compatible]<br />
** DMA WIP Jernej Skrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=89011 Allwinner H6 DMA support ]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=383527 arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
** RTC WIP Jagan Teki [https://patchwork.kernel.org/patch/10663189/ Add RTC node]<br />
<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 />
=== 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 />
<br />
** [[Lima]]<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>
Icenowy
https://linux-sunxi.org/index.php?title=Rongpin_RP-H6B&diff=22312
Rongpin RP-H6B
2019-04-09T12:05:05Z
<p>Icenowy: add link to the schematics</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:RP-H6B Front.jpg|250px]]<br />
| manufacturer = [http://www.rpdzkj.com/ Shenzhen Rongpin Electronic Technology Co., Ltd.]<br />
| dimensions = 160''mm'' x 90''mm'' x 17''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 12V @ {{Edit|xxx}}A (Max36W)<br />
| video = HDMI 2.0a, CVBS OUT<br />
| audio = HDMI, PHONE OUT<br />
| network = 10/100Mbps Ethernet @ RJ45<br />
| storage = micro SD<br />
| usb = 4 HOST USB 2.0, 1 HOST USB 3.0<br />
| other = UART0(Debug)<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 />
Rongpin RP-H6B is H6 based development board produced by Rongpin.<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>RP-H6B</pre><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:RP-H6B Debug.jpg|thumb|240px|Rongpin RP-H6B 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 />
== 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:RP-H6B Front.jpg<br />
File:RP-H6B 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 />
[[File:RP-H6C-20180316_Schematics.pdf]]<br />
[[File:RP-H6B-20180423_Schematics.pdf]]<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>
Icenowy
https://linux-sunxi.org/index.php?title=File:RP-H6B-20180423_Schematics.pdf&diff=22311
File:RP-H6B-20180423 Schematics.pdf
2019-04-09T11:59:12Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:RP-H6C-20180316_Schematics.pdf&diff=22310
File:RP-H6C-20180316 Schematics.pdf
2019-04-09T11:58:49Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22225
Linux mainlining effort
2019-03-14T12:42:41Z
<p>Icenowy: add F1C100s to merged into 5.0</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.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 />
* 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>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22224
Linux mainlining effort
2019-03-14T12:41:53Z
<p>Icenowy: Add F1C100s to the status matrix</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=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.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 />
* 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>
Icenowy
https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=21794
Allwinner SoC Family
2018-12-03T03:17:20Z
<p>Icenowy: Add sun8iw12 (V5)</p>
<hr />
<div>= SoC series =<br />
A series processors are used for mobile applications, mainly referring to tablet application here;<br />
<br />
H for “Homlet”, mainly used in home entertainment applications, including smart OTT boxes, HDMI mini PCs, gaming boxes, etc;<br />
<br />
V for video-related applications, including video surveillance, automotive DVR, etc;<br />
<br />
F series are processors based on Allwinner’s melis OS, mainly used in smart video radios, video MP5, etc;<br />
<br />
== "A"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7, A8 and A15) targeted for high-end devices like digital media players, tablets, and netbooks:<br />
{| class="wikitable"<br />
| [[A10|Allwinner A10]] || <small>(sun4i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A13|Allwinner A13]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A10s|Allwinner A10s]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A20|Allwinner A20]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=45</ref> || <small>(sun7i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A23|Allwinner A23]] || <small>(sun8i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31|Allwinner A31]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31s|Allwinner A31s]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A33|Allwinner A33]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=23</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A80|Allwinner A80]] || <small>(sun9i)</small> || 4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores&nbsp;<br /><small>(using ARM big.LITTLE heterogeneous CPU architecture)</small><br />
|-<br />
| [[A83T|Allwinner A83T]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=24</ref> || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=9</ref> || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7/ARMv8 Cortex-A cores (A7/A53) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H2+|Allwinner H2+]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=62</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H3|Allwinner H3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=47</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=46</ref> || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[H5|Allwinner H5]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=57</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H6|Allwinner H6]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=66</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H64|Allwinner H64]]<ref>http://web.archive.org/web/20160425223052/http://www.allwinnertech.com/en/clq/H_series/6100.html</ref> || <small>(sun50i)</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>http://web.archive.org/web/20160510053338/http://www.allwinnertech.com/en/clq/R_series/2015/0514/R8.html</ref> || <small>(sun5i)</small>&nbsp; || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[R16|Allwinner R16]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=51</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R40|Allwinner R40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=56</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R58|Allwinner R58]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=49</ref>&nbsp; || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 is repackaged version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s [[NextThingCo CHIP|''C.H.I.P.'']] kickstarter project ("The $9 computer")<ref>http://nextthing.co/</ref>.<br />
<br />
By comparing the product pages the R16 seems to be a relabeled version of A33. This is somewhat confirmed by the (identical) SoC ID the BROM reports.<ref>https://groups.google.com/d/msg/linux-sunxi/vx6oQMy-nis/vgVc8d1KBAAJ</ref><br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[R18|Allwinner R18]]|| <small>sun50i</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "V"-series ==<br />
<br />
{| class="wikitable"<br />
| [[V3|Allwinner V3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=37</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V3s|Allwinner V3s]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=38</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V40|Allwinner V40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=36</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "F"-Series ==<br />
:'''{{note|The F series is not supported by the linux-sunxi community due to lack of developers and hardware. ''sun3i'' have only official linux support, ''sunii'' have no linux support, only Allwinner's "Melis" RTOS.}}'''<br />
<br />
Based on ARMv5 ARM926-EJS core and currently targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
F1C700 seems to be a remarked A13, and it's ARMv7.<br />
<br />
{| class="wikitable"<br />
| [[C100|Boxchip C100]] || <small>(sun3i)</small><br />
|-<br />
| [[E200|Boxchip E200]] || <small>(sun3i)</small><br />
|-<br />
| [[F20|Boxchip F20]] || <small>(sun3i)</small><br />
|-<br />
| [[F10|Boxchip F10]] <small>aka SoChip SC9800 aka Teclast T8100</small>&nbsp; || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F13]] || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F15]] <small>aka SoChip SC8600 aka Teclast T7200</small> || <small>(sunii)</small><br />
|-<br />
| [[F18|Boxchip F18]] || <small>(sunii)</small><br />
|-<br />
| [[F1C100s|Allwinner F1C100s]] || <small>(suniv)</small><br />
|-<br />
| [[F1C600|Allwinner F1C600]] || <small>(suniv)</small><br />
|-<br />
| [[F1C100A|Allwinner F1C100A]] || <small>(suniv)</small><br />
|-<br />
| [[F1C700|Allwinner F1C700]] || <small>(sun5i)</small><br />
|}<br />
<br />
= 2013 naming scheme change =<br />
<br />
Initially, Allwinner named their SoCs chronologically:<br />
* sun4i = A10<br />
* sun5i = A13/A10s<br />
* sun6i = A31<br />
* sun7i = A20<br />
<br />
But, somewhere in 2013, Allwinner decided to update their naming scheme to be based on the ARM core used instead: (taken from the A80 SDK kernel code). Note: SoCs with ? has never appeared on Allwinner's website. <ref>https://github.com/tinalinux/brandy/blob/r40-v1.y/SUNXI_README</ref><br />
<br />
{| class="wikitable"<br />
! sunxi (arm cores) !! sunxiwx (soc id) !! p !! soc name !! cores !! notes<br />
|-<br />
| suniv (arm926ejs) || sunivw1 (0x1663) || sunivw1p1 || [[F1C100s]], [[F1C100A]], [[F1C200s]], [[F1C500]], [[F1C600]], [[R6]] || 1xARM926EJ-S<br />
|-<br />
| style="text-align: left;" rowspan="4" | sun4i <br />
(cortex-a8) <br />
| sun4iw1 (0x1623) || sun4iw1p1 || [[A10]] || 1xCortex-A8<br />
|-<br />
| style="text-align: left;" rowspan="3" | sun4iw2 (0x1625)<br />
| sun4iw2p1 || [[A13]] || 1xCortex-A8<br />
|-<br />
| sun4iw2p2 || [[A12]] || ?<br />
|-<br />
| sun4iw2p3 || [[A10s]] || 1xCortex-A8<br />
|-<br />
| style="text-align: left;" rowspan="14" | sun8i <br />
(cortex-a7 smp)<br />
<br />
| style="text-align: left;" rowspan="2" | sun8iw1 (0x1633)<br />
<br />
| sun8iw1p1 || [[A31]] || 4xCortex-A7<br />
|-<br />
| sun8iw1p2 || [[A31s]] || 4xCortex-A7<br />
|-<br />
| style="text-align: left;" rowspan="2" | sun8iw2 (0x1651)<br />
<br />
| sun8iw2p1 || [[A20]] || 2xCortex-A7<br />
|-<br />
| sun8iw2p2 || ? || ?<br />
|-<br />
| style="text-align: left;" rowspan="2" | sun8iw3 (0x1650)<br />
<br />
| sun8iw3p1 || [[A23]] || 2xCortex-A7<br />
|-<br />
| sun8iw3p2 || ? || ?<br />
|-<br />
| sun8iw5 (0x1667) || sun8iw5p1 || [[A33]] || 4xCortex-A7<br />
|-<br />
| sun8iw6 (0x1673) || sun8iw6p1 || [[A83T]] || 8xCortex-A7<br />
|-<br />
| sun8iw7 (0x1680) || sun8iw7p1 || [[H3]], [[H2+]] || 4xCortex-A7<br />
|-<br />
| style="text-align: left;" rowspan="2" | sun8iw8 (0x1681)<br />
<br />
| sun8iw8p1 || [[V3]], [[V3s]] || 1xCortex-A7 || called V30 in allwinner's kernel source<br />
|-<br />
| sun8iw8p2 || ? || ? || called V33 in allwinner's kernel source<br />
|-<br />
| sun8iw10 (0x1699) || sun8iw10p1 || [[B288]], [[B100]] || ?<br />
|-<br />
| sun8iw11 (0x1701) || sun8iw11p1 || [[R40]], [[V40]], [[A20e]]? || 4xCortex-A7<br />
|-<br />
| sun8iw12 (?) || sun8iw12p1 || [[V5]] || 4xCortex-A7?<br />
|-<br />
| sun8iw17 (0x1708) || sun8iw17p1 || ? || ?<br />
|-<br />
| style="text-align: left;" rowspan="2" | sun9i <br />
(cortex-a15/cortex-a7 big.LITTLE) <br />
<br />
| style="text-align: left;" rowspan="2" | sun9iw1 (0x1639)<br />
| sun9iw1p1 || [[A80]] || 4xCortex-A7 + 4xCortex-A15<br />
|-<br />
| sun9iw1p2 || [[A80T]] || ?<br />
|-<br />
| style="text-align: left;" rowspan="4" | sun50i <br />
(cortex-a53 smp) <br />
| sun50iw1 (0x1689) || sun50iw1p1 || [[A64]] || 4xCortex-A53<br />
|-<br />
| sun50iw2 (0x1718) || sun50iw2p1 || [[H5]] || 4xCortex-A53<br />
|-<br />
| sun50iw3 (0x1719) || sun50iw3p1 || [[A63]] || 4xCortex-A53<br />
|-<br />
| sun50iw6 (0x1728) || sun50iw6p1 || [[H6]] || 4xCortex-A53<br />
|}<br />
<br />
This new naming scheme is of absolutely no value with respect to the rest of the SoC. The actual ARM core(s) used are usually the least important piece of information for SoC support. This table completely ignores the fact that A20 is an updated A10 and is pin compatible. It also ignores the fact that A31 introduced a lot of changes which were carried on to the A23/A33 and possibly A80 parts. It therefore is quite likely that this naming scheme was purely a marketing decision, and that Allwinner marketing will change its mind again.<br />
<br />
= Features =<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], [http://en.wikipedia.org/wiki/ARM_Cortex-A15 Cortex-A15] or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit with (co-)processor extensions:<br />
** Advanced SIMD: [http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** [[Vector Floating Point Unit]] ([http://en.wikipedia.org/wiki/ARM_architecture#Floating-point_.28VFP.29 VFPU]): ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7)<br />
** Security Extensions: <br />
*** [http://en.wikipedia.org/wiki/ARM_architecture#Security_extensions_.28TrustZone.29 TrustZone] secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2 Thumb-2] instruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400-MP2, SGX544 or PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES2.<br />
* VPU: [[Cedar Engine]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [http://en.wikipedia.org/wiki/HDMI#CEC HDMI CEC] (Consumer Electronics Control), with exception of A13 which lacks HDMI-transmitter and SATA-controller<ref>[http://olimex.wordpress.com/2012/04/24/cortex-a8-in-tqfp-sure-allwinner-a13/ "Cortex A8 in TQFP? sure Allwinner A13"] ''Retrieved 23 September 2012''</ref><br />
* Hardware virtualization capabilities (Cortex-A7 only).<br />
* Up to 4GB memory (Cortex-A8), Up to 1TB memory with LPAE (Cortex-A7 only).<br />
<br />
== Comparison table ==<br />
{| class="wikitable"<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun6i || sun8i || sun9i <br />
|-<br />
! scope="row" | CPU<br />
| Cortex-A8 || Cortex-A8 || Cortex-A8 || Cortex-A7 || Cortex-A7 ||Cortex-A7 || Cortex-A7 || Cortex-A7 || Cortex-A7 / A15 <br />
|-<br />
! scope="row" | CPU Maximum frequency<br />
| 1 GHz|| 1 GHz || 1 GHz|| 960 MHz|| 1.5 GHz || ? GHz || ? GHz || 1.5 GHz || 2 (??) GHz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2 x 4<br />
|-<br />
! scope="row" | Extensions<br />
| NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 ||NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || ? (A80)<br />
|-<br />
! scope="row" | Memory<br />
| DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 512MB @ DDR800) || LPDDR3, DDR3,</br>LPDDR2 || DDR3</br>(max 1GB) || 2-channel DDR3, LPDDR2, </br>2-channel DDR3L, DDR3U || DDR3, DDR3L, LPDDR2 || single-channel DDR3, DDR3L</br>(max 1GB) || 2-channel DDR3, DDR3L, LPDDR3, LPDDR2</br> up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]-MP2</br>350&nbsp;MHz || [[Mali400]]-MP2 || SGX544</br>200&nbsp;MHz || SGX544</br>200&nbsp;MHz || [[Mali400]]-MP2 || 64-core PowerVR G6230<br />
|-<br />
! scope="row" | GPU API<br />
| OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL 3.x, OpenGL ES Next,3.0,2.0, Open CL 1.x, DirectX 11 level 9_3/10_0<ref>http://www.imgtec.com/news/detail.asp?ID=845</ref><br />
|-<br />
! scope="row" | [[Cedar Engine|Video decoder]]<br />
| 2160p || 1080p || 1080p || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || 2160p, 1080p 3D || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[Cedar Engine|Video encoder]]<br />
| H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || 1080p@60fps || H.264 1080p@60fps, JPEG || H264 1080p@30fps, 720p@60fps || H.264 1080p@60fps, JPEG || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | Audio decoder<br />
| AC3, DTS || ? || ? || AC3, DTS || - || ? (A31) || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Video interfaces<br />
| HDMI 1.3, YPbPr, VGA, CPU/RGB/LVDS LCD || HDMI 1.3, RGB/LVDS LCD || RGB LCD, VGA|| HDMI 1.4, CVBS, YPbPr, VGA, CPU/RGB/LVDS LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || HDMI 1.4, LVDS, RGB LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 4K, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
|-<br />
! scope="row" | Audio interfaces<br />
| I2S, SPDIF, AC97 || I2S, AC97 || I2S, AC97 || I2S, PCM, AC97 || I2S, PCM || 2 I2S, 2 PCM || I2S, 2 PCM || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || 1 || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || 2 || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || GMAC || GMAC || - || GMAC<br />
|-<br />
! scope="row" | Storage<br />
| NAND (max 64GB), SATA II, SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND, MMC, [http://olimex.wordpress.com/2013/04/05/allwinners-a10-and-a20-are-they-really-pin-to-pin-compatible-and-drop-in-replacement/#comment-5452 SATA] || raw NAND, eMMC, SD card || 4 x SD Card, eMMC NAND, 2-channel raw NAND || 4 x SD Card, eMMC NAND, raw NAND || 3 x SD Card, eMMC NAND, raw NAND || 4 x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA336</br>14&nbsp;mm&nbsp;×&nbsp;14&nbsp;mm</br>0.65&nbsp;mm Pitch || eLQFP176</br>20&nbsp;mm&nbsp;×&nbsp;20&nbsp;mm ||BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || FBGA280</br>14&nbsp;mm&nbsp;x&nbsp;14&nbsp;mm&nbsp;x&nbsp;1.4&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA609</br>18&nbsp;mm&nbsp;×&nbsp;8&nbsp;mm</br>0.65&nbsp;mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Lithography<br />
| 55 nm || 55 nm|| 55 nm || 40 nm || 40 nm || 40 nm || 40 nm || 40 nm || 28 nm<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Olimex_Teres-A64&diff=21729
Olimex Teres-A64
2018-11-14T04:46:42Z
<p>Icenowy: add info that Pinebook debug cable works</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:teres-1.jpg|250px]]<br />
| manufacturer = [https://www.olimex.com/ Olimex]<br />
| release_date = 2017-10<br />
| website = [https://www.olimex.com/Products/DIY-Laptop/KITS/ Olimex]<br />
| soc = [[A64]] @ 1.2Ghz<br />
| dram = 2GiB DDR3L @ 672 MHz<br />
| nand = 16GB eMMC<br />
| power = DC 5V @ 3A, 9500mAh 3.7V Li-Ion battery<br />
| lcd = 157.5x168 (11")<br />
| video = HDMI (mini)<br />
| audio = 3.5mm headphone plug HDMI, internal stereo speakers, internal microphone<br />
| network = WiFi 802.11 b/g/n ([[http://www.realtek.com/products/productsView.aspx?Langid=1&PFid=59&Level=5&Conn=4&ProdID=375 RTL8723BS]])<br />
| storage = µSD, NAND<br />
| usb = 2 USB2.0 Host, X USB2.0 OTG<br />
| camera = VGA (640x480) front<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 />
Do it yourself laptop, hacker friendly. <br />
<br />
= Identification =<br />
<br />
The PCB has the following silkscreened on it:<br />
<br />
<pre>TERES<br />
PCB1-A64-MAIN <br />
REV. B</pre><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 />
It works with mainline kernel. There is a debian image with mainline u-boot and kernel:<br />
<br />
[[https://www.olimex.com/forum/index.php?topic=6092.0|olimex forum thread]]<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 =<br />
<br />
[[File:device_uart.jpg|thumb|240px|{{Remove|DEVICE}} UART pads]]<br />
<br />
On Revision C boards, a serial port is provided through the audio jack. It can be enabled via an analog switch controlled by<br />
bit 9 on Port L, which has to be set accordingly. Otherwise it will be a plain audio jack, as on Rev.B boards.<br />
You can find more information on [[https://github.com/d3v1c3nv11/teres1-debug Olimex github repo]].<br />
Olimex sell a specific cable: [[https://www.olimex.com/Products/DIY-Laptop/KITS/TERES-USB-DEBUG/ Teres usb debug]].<br />
The Pinebook debug cable also works.<br />
<br />
If you decide to build your adapter cable, connect the tx to the tip of the jack, rx to central ring, and ground to the sleeve. They must be 3.3V compatible.<br />
Rev.C boards protect the RX with a diode, so 5V should work as well, but I'd rather not rely on that. Never connect to a rs232 serial port directly.<br />
Usually usb serial adapters with 1/10" pin headers are 5v or 3.3v level compatible, but if in doubt, double check it.<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 />
[https://wiki.debian.org/InstallingDebianOn/Olimex/Teres-I TERES-I on Debian wiki]<br />
<br />
== Manufacturer images ==<br />
<br />
The Olimex image of Ubuntu Mate can be downloaded, using torrent. It uses allwinner provided linux kernel 3.10 and u-boot.<br />
<br />
[[https://www.olimex.com/wiki/images/1/15/Teres1_20171211-v1.3.torrent]]<br />
<br />
[[Category:Devices]]<br />
[[Category:A64 Boards]]<br />
[[Category:Devices with Wifi]]<br />
[[Category:Devices with HDMI port]]<br />
<br />
[[Category:Mainline_U-Boot]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=PineH64&diff=21706
PineH64
2018-11-03T13:49:11Z
<p>Icenowy: add ES infomation</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:pineh64_top.jpg|250px]]<br />
| manufacturer = [http://www.pine64.com Pine64]<br />
| dimensions = 133''mm'' x 80''mm'' x 19''mm''<br />
| release_date = January 2018<br />
| website = [http://wiki.pine64.org/index.php/PINE_H64_Main_Page Pine64 Wiki]<br />
| soc = [[H6]] @ 1.8GHz<br />
| dram = 1GiB/2GiB/3GiB LPDDR3 @ 800MHz<br />
| power = DC 5V@3A, 3.5mm/1.35mm barrel plug<br />
| video = HDMI (Type A - full)<br />
| audio = 3.5mm headphone/mic plug, HDMI, SPDIF, I2S<br />
| network = 10/100/1000Mbps Ethernet ([[Ethernet#Phyceiver|Realtek 8211E]])<br />
| storage = µSD, eMMC (module), 128Mbit SPI NOR flash<br />
| usb = 2 USB2.0 Host, 1 USB3.0 Host<br />
| other = miniPCIe, RTC battery connector<br />
| headers = RPi2 "compatible" connector, "Euler" connector, WiFi/BT connector, 2x5 pins "EXP" header<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 />
There is a pine cone like logo on the top silk screen, also it says "Pine H64" under the logo. Also on the SoC there is a quite prominent "H6" print.<br />
<br />
The board has two size variants, model A and model B. Model A has the same size with a Pine A64+ and is equipped with a PCIe slot, Model B dropped the slot, and has a size factor of RPi model B.<br />
<br />
The board has various revisions, many of them are engineering samples, only two revisions (and one is not done yet) will be the final edition, one model A and one model B.<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Designed in Silicon Valley, California. Built in Silicon Delta, China.</pre><br />
<br />
For the first ES revision of model A, The PCB has the following silkscreened on it (This revision is quite rare, and when you see it usually it will have a jumper wire because of a fault when designing the power circuit for LPDDR3.):<br />
<pre>PINE_H64_VER1.1<br />
2017-10-26</pre><br />
<br />
For the second ES revision of model A, The PCB has the following silkscreened on it:<br />
<pre>PINE_H64_VER1.1<br />
2018-01-09</pre><br />
<br />
For the first ES revision of model B, The PCB has the following silkscreened on it:<br />
<pre>PINE_H64_MODEL_B<br />
2018-05-26</pre><br />
<br />
For the (hopeful) final revision of model B, The PCB has the following silkscreened on it:<br />
<pre>PINE_H64_MODEL_B<br />
2018-10-17</pre><br />
<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Work on H6 has just started, basic support for H6 and PineH64 will be in Linux 4.17<br />
<br />
== BSP ==<br />
<br />
A beta version of the H6 BSP was released on 2018/01/30...<br />
<br />
* https://github.com/Allwinner-Homlet/H6-BSP4.9-brandy<br />
* https://github.com/Allwinner-Homlet/H6-BSP4.9-tools<br />
* https://github.com/Allwinner-Homlet/H6-BSP4.9-linux<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 '''pine_h64_defconfig''' (supported since v2018.09) 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 '''sun50i-h6-pine-h64.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 =<br />
<br />
[[File:Pine64_UART0.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 />
== 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 />
<gallery><br />
File:PineH64_Top.jpg<br />
PineH64_Bottom.jpg<br />
File:PineH64_1.jpg<br />
File:PineH64_2.jpg<br />
File:PineH64_3.jpg<br />
File:PineH64_4.jpg<br />
</gallery><br />
<br />
= See also =<br />
<br />
*[http://files.pine64.org/doc/Pine%20H64/Pine%20H64%20Ver1.1-20180104.pdf PineH64 Rev 1.1 Board Schematic]<br />
<br />
*[http://wiki.pine64.org/index.php/Main_Page Pine64 wiki]<br />
*[http://wiki.pine64.org/index.php/PINE_H64_Main_Page PineH64 wiki page]<br />
*[http://forum.pine64.org/ Pine64 Forum]<br />
<br />
<br />
== Manufacturer images ==<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]<br />
<br />
<br />
[[Category:Mainline_U-Boot]]<br />
[[Category:Mainline_Kernel]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=V3&diff=21376
V3
2018-05-17T07:56:49Z
<p>Icenowy: some fixes</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:V3.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = <br />
| cpu = ARM Cortex-A7 @ 1.2GHz<br />
| ltwo = 128KB<br />
| extensions = NEON, VFPv4<br />
| memory = DDR2, DDR3, DDR3L, LPDDR2, LPDDR3 up to 667MHz<br />
| gpu = <br />
| vpu = <br />
| apu = <br />
| video = <!-- 1080p@40fps / 1080p@30fps+VGA@30fps H.264 encoding<br>1080p@30fps H.264 decoding<br>1080@30fps MJPEG decoding --><br />
| audio = <!-- Mic, Headphone --><br />
| network = 10/100M Ethernet PHY<br />
| storage = NAND, NOR, SD/MMC, eMMC<br />
| usb = <!-- 1 OTG --><br />
| other = <!-- 3 UARTs, SPI, 2 TWIs --><br />
| release_date =<br />
| website = [http://allwinnertech.com/index.php?c=product&a=index&id=38 Product Page]<br />
}}<br />
<br />
[[Allwinner]] '''V3''' is SoC with build-in ARM Cortex A7 CPU designed for Car Digital Video Recording (DVR) and IP Camera (IPC) monitoring systems.<br />
<br />
=Overview=<br />
<br />
V3 SoC targets the Car Digital Video Record (DVR) and IP Camera (IPC) Monitor System market.<br />
<br />
==Main components of the V3:==<br />
<!--<br />
* CPU: [https://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7 1.2GHz (ARM v7-A) Processor] which have both [[Vector Floating Point Unit|VFPv3]] and [[NEON]] co-processors: <br />
** FPU: [[Vector Floating Point Unit]] (standard ARM VFPv4 FPU Floating Point Unit)<br />
** SIMD: [[NEON]] (ARM's extended general-purpose SIMD vector processing extension engine)<br />
--><br />
<br />
=V3 SoC Features=<br />
<!--<br />
* CPU<br />
**ARM Cortex TM -A7 MP1 Processor<br />
**Thumb-2 Technology<br />
**Support NEON Advanced SIMD(Single Instruction Multiple Data)instruction for acceleration of media and signal processing functions<br />
**Support Large Physical Address Extensions(LPAE)<br />
**VFPv4 Floating Point Unit<br />
**32KB L1 Instruction cache and 32KB L1 Data cache<br />
**128KB L2 cache<br />
<br />
*Boot ROM<br />
**Internal on-chip memory<br />
**Size:32KB<br />
**Support system boot from the following device:<br />
***SPI Nor flash<br />
***SPI Nand flash<br />
***SD/TF card<br />
***eMMC<br />
**Support system code download through USB OTG<br />
<br />
*SDRAM<br />
**Internal on-chip memory<br />
**Integrated a 512Mbit DDR2 in V3s processor<br />
**Support clock frequency up to 400MHz<br />
**Support Memory Dynamic Frequency Scale(MDFS)<br />
<br />
*SD/MMC Interface<br />
**External off-chip memory and storage device<br />
**Up to three SD/MMC controllers<br />
**1/4-bit SD,SDIO,MMC mode<br />
**Complies with eMMC standard specification V4.41, SD physical layer specification V2.0, SDIO card specification V2.0<br />
**Support hardware CRC generation and error detection<br />
**Support block size from 1 to 65535 bytes<br />
--><br />
= Documentation =<br />
* [[File:Allwinner V3 Datasheet V1.1.pdf|V3 Datasheet]]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
<br />
<!--<br />
* Archives, lichee/camdroid: [http://filez.zoobab.com/allwinner/v3s/], [https://drive.google.com/drive/folders/0BwAsAOITzQTGbnpRZ3lsSFJGb0U]<br />
* Github repository: [https://github.com/yeashen/v3s-linux-sdk]<br />
--><br />
= Links =<br />
<!-- * [http://allwinnertech.com/index.php?c=product&a=index&id=38 Product Page] <small>(Allwinner Tech)</small> --><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=File:Allwinner_V3_Datasheet_V1.1.pdf&diff=21372
File:Allwinner V3 Datasheet V1.1.pdf
2018-05-14T19:26:19Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=User:Icenowy&diff=21169
User:Icenowy
2018-03-28T09:14:29Z
<p>Icenowy: add link for SoPine to Pine64's Variants part</p>
<hr />
<div>== My sunxi garden ==<br />
<br />
* [[F1C100s]]<br />
:* [[LicheePi Nano]] (Thanks to Lichee Pi)<br />
<br />
* [[A10]]<br />
:* [[Cubietech Cubieboard]]<br />
<br />
* [[A13]]<br />
:* [[LicheePi One]] (USB OTG broken)<br />
:* [[LicheePi One]] (Thanks to Lichee Pi)<br />
<br />
* [[R8]]<br />
:* [[NextThingCo CHIP]]<br />
<br />
* [[A31s]]<br />
:* [[Colorfly e708 q1]] (USB OTG broken)<br />
<br />
* [[A20]]<br />
:* [[Banana Pi M1]] Plus (Thanks to Sinovoip)<br />
<br />
* [[A33]]<br />
:* [[Aoson M751s]]<br />
:* [[Uniscom A2]]<br />
:* An unbranded iNet D978 rev02 board based tablet<br />
:* [[Sinovoip Banana Pi M2 Magic]] A33 version (Thanks to Sinovoip)<br />
<br />
* [[R16]]<br />
:* [[Sinovoip Banana Pi M2 Magic]] R16 version (Thanks to Sinovoip)<br />
<br />
* [[A83T]]<br />
:* [[Sinovoip Banana Pi M3]] (Thanks to Sinovoip)<br />
<br />
* [[H8]]<br />
:* Unkown VR headset device<br />
<br />
* [[H2+]]<br />
:* [[Xunlong Orange Pi Zero]]<br />
:* [[Sinovoip Banana Pi M2 Zero]] a prototype (with Secure Boot eFUSE burned by me) and a product version board (Thanks to Sinovoip)<br />
<br />
* [[H3]]<br />
:* [[Xunlong Orange Pi One]]<br />
:* [[Xunlong Orange Pi PC]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] (Thanks to Sinovoip)<br />
<br />
* [[V3s]]<br />
:* [[LicheePi Zero]] two prototypes and two product version boards (Thanks to Lichee Pi)<br />
<br />
* [[R40]]<br />
:* [[Sinovoip Banana Pi M2 Ultra]]<br />
<br />
* [[V40]]<br />
:* [[Sinovoip Banana Pi M2 Berry]]<br />
<br />
* [[A64]]<br />
:* [[Pine64]]+ 2GB version *2 (Thanks to Pine64 for one of them)<br />
::* Including 2 Wi-Fi modules and 1 MIPI-DSI LCD<br />
:* [[Sinovoip Banana Pi M64]] (Thanks to Sinovoip)<br />
:* [[Pine64#Variants|SoPine]] with the Baseboard Model A<br />
<br />
* [[R18]]<br />
:* [[Pine64]] A64-LTS 3GiB version (Specially customized, thanks to Pine64)<br />
<br />
* [[H5]]<br />
:* [[Xunlong Orange Pi PC 2]]<br />
:* [[Xunlong Orange Pi Prime]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] H5 ver<br />
<br />
* [[H6]]<br />
:* [[PineH64]] 2GiB version (very early prototype with multiple bugs) and 3GiB version</div>
Icenowy
https://linux-sunxi.org/index.php?title=User:Icenowy&diff=21168
User:Icenowy
2018-03-28T09:12:40Z
<p>Icenowy: update device list</p>
<hr />
<div>== My sunxi garden ==<br />
<br />
* [[F1C100s]]<br />
:* [[LicheePi Nano]] (Thanks to Lichee Pi)<br />
<br />
* [[A10]]<br />
:* [[Cubietech Cubieboard]]<br />
<br />
* [[A13]]<br />
:* [[LicheePi One]] (USB OTG broken)<br />
:* [[LicheePi One]] (Thanks to Lichee Pi)<br />
<br />
* [[R8]]<br />
:* [[NextThingCo CHIP]]<br />
<br />
* [[A31s]]<br />
:* [[Colorfly e708 q1]] (USB OTG broken)<br />
<br />
* [[A20]]<br />
:* [[Banana Pi M1]] Plus (Thanks to Sinovoip)<br />
<br />
* [[A33]]<br />
:* [[Aoson M751s]]<br />
:* [[Uniscom A2]]<br />
:* An unbranded iNet D978 rev02 board based tablet<br />
:* [[Sinovoip Banana Pi M2 Magic]] A33 version (Thanks to Sinovoip)<br />
<br />
* [[R16]]<br />
:* [[Sinovoip Banana Pi M2 Magic]] R16 version (Thanks to Sinovoip)<br />
<br />
* [[A83T]]<br />
:* [[Sinovoip Banana Pi M3]] (Thanks to Sinovoip)<br />
<br />
* [[H8]]<br />
:* Unkown VR headset device<br />
<br />
* [[H2+]]<br />
:* [[Xunlong Orange Pi Zero]]<br />
:* [[Sinovoip Banana Pi M2 Zero]] a prototype (with Secure Boot eFUSE burned by me) and a product version board (Thanks to Sinovoip)<br />
<br />
* [[H3]]<br />
:* [[Xunlong Orange Pi One]]<br />
:* [[Xunlong Orange Pi PC]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] (Thanks to Sinovoip)<br />
<br />
* [[V3s]]<br />
:* [[LicheePi Zero]] two prototypes and two product version boards (Thanks to Lichee Pi)<br />
<br />
* [[R40]]<br />
:* [[Sinovoip Banana Pi M2 Ultra]]<br />
<br />
* [[V40]]<br />
:* [[Sinovoip Banana Pi M2 Berry]]<br />
<br />
* [[A64]]<br />
:* [[Pine64]]+ 2GB version *2 (Thanks to Pine64 for one of them)<br />
::* Including 2 Wi-Fi modules and 1 MIPI-DSI LCD<br />
:* [[Sinovoip Banana Pi M64]] (Thanks to Sinovoip)<br />
:* SoPine with the Baseboard Model A<br />
<br />
* [[R18]]<br />
:* [[Pine64]] A64-LTS 3GiB version (Specially customized, thanks to Pine64)<br />
<br />
* [[H5]]<br />
:* [[Xunlong Orange Pi PC 2]]<br />
:* [[Xunlong Orange Pi Prime]] (Thanks to Xunlong)<br />
:* [[Sinovoip Banana Pi M2+]] H5 ver<br />
<br />
* [[H6]]<br />
:* [[PineH64]] 2GiB version (very early prototype with multiple bugs) and 3GiB version</div>
Icenowy
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=21167
Linux mainlining effort
2018-03-28T07:05:57Z
<p>Icenowy: First black block in status matrix -- H6 PCIe</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 Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; 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: red;" | NO<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: red;" | NO<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 />
| 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<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: orange;" | [[Linux mainlining effort#Minor drivers|WIP]]<br />
| style="background: red;" | NO<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: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<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 />
(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<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: red;" | NO<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: 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: red;" | NO<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: red;" | NO<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: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<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: darkgreen;" | ?<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: darkgreen" rowspan="2" | ?<br />
| style="background: orange;" rowspan="2" | [[Linux_mainlining_effort#Major_drivers|WIP]]<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: red;" | NO<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: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<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.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<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: darkgreen;" | ?<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: red;" | NO<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: red;" | NO<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: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<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" | [[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: red;" | NO<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: 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 />
| 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 />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]]<br />
| style="background: red;" | NO<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<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: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<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 />
* 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 />
* [[A83T]] SMP support (WiP: Mylène Josserand (Mylene)) [https://www.spinics.net/lists/arm-kernel/msg625811.html patch-v2]<br />
<br />
* [[H6]] PRCM, R_PIO, USB, PMIC, Ethernet (WiP: Icenowy Zheng (icenowy)) [[https://github.com/Icenowy/linux/commits/h6-init branch]]<br />
<br />
=== Major drivers ===<br />
* [[A13]] Cedrus Video Decoder driver (WiP: Florent (kido) Revest) [http://www.mail-archive.com/linux-media@vger.kernel.org/msg101816.html patch-v1] [[Sunxi-cedrus | dedicated wiki page]]<br />
<br />
* [[R40]] Ethernet (WiP: Chen-Yu Tsai) [https://www.spinics.net/lists/arm-kernel/msg641932.html patch]<br />
<br />
* Audio codec support:<br />
** [[A20]] Audio Codec improvements (WiP: Danny Milosavljevic) [http://www.spinics.net/lists/arm-kernel/msg526574.html patch-v9]<br />
** [[AC100]] Audio codec support (WiP: Ondrej Jirma (megi)) [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* Display Engine driver<br />
** MIPI DSI support ([[A33]]/[[R16]]), (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2018-February/560872.html patch-v2]<br />
<br />
* CSI (camera sensor interface)<br />
** [[V3s]] CSI driver (WiP: Yong Deng) [https://www.spinics.net/lists/linux-media/msg130006.html patch-v9]<br />
** [[H3]] and [[H5]] CSI driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2018-March/563792.html patch-v1]<br />
** [[A83T]] CSI driver (WiP: Ondrej Jirman) [https://github.com/megous/linux/commits/linux-tbs] (based on V3s driver and [https://www.mail-archive.com/linux-media@vger.kernel.org/msg120239.html unified fwnode endpoint parser])<br />
<br />
* Security System/Crypto Engine<br />
** sun8i-ss/sun9i-ss/sun5i-ss (WIP: LABBE Corentin more info at http://sunxi.montjoie.ovh/)<br />
<br />
* ARM [[Mali400]]<br />
** [https://github.com/yuq/linux-lima/tree/lima-4.13/drivers/gpu/drm/lima Lima DRM driver] (WiP: Qiang Yu (yuq)), [https://github.com/yuq/mesa-lima mesa-lima] (open source) (WiP: Qiang Yu (yuq))<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] PWM (WiP: Andre Przywara [http://lists.infradead.org/pipermail/linux-arm-kernel/2018-March/567276.html]) <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 />
* [[H3]] DVFS support (WiP: Philipp Rossak (embed-3d), Ondřej Jirman - megi [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/438794.html patch-v1] - this is also available in these [https://github.com/megous/linux orange-pi-4.x branches])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A83T]] IR driver (WIP: Philipp Rossak (embed-3d) [https://lkml.org/lkml/2018/1/30/485 patch-v5])<br />
* [[A83T]] [[H3]] [[H5]] [[A80]] [[A64]] Thermal driver (WIP: Philipp Rossak (embed-3d) wipbranch: [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths sunxi-ths] patch v2: [https://lkml.org/lkml/2018/1/28/406 contains only a83t and h3])<br />
<br />
== Merged for 4.17 ==<br />
Driver changes<br />
* A80<br />
** SMP<br />
<br />
* A83T<br />
** HDMI support<br />
** PMIC ADC and Battery power supply support<br />
<br />
* H3 / H5<br />
** HDMI support<br />
<br />
* H6<br />
** Basic support<br />
** PIO pinctrl support (R_PIO not supported)<br />
** CCU clock/reset support (R_CCU/PRCM not supported)<br />
<br />
Device tree changes<br />
* SPI enabled for [[Orange Pi R1]]<br />
<br />
* SDIO WiFi enabled for [[FriendlyARM NanoPi NEO Air]]<br />
<br />
* eMMC enabled for [[FriendlyARM NanoPi M1 Plus]], [[FriendlyARM NanoPi NEO Air]]<br />
<br />
* HDMI video output enabled for [[Format MK802|MK802]], [[MK808C]], [[Mele I7]], [[Banana Pi M3]], [[Banana Pi]], [[Orange Pi Mini]], [[Banana Pi M2+]], [[Beelink X2]], Libre Computer ALL-H3-CC, [[FriendlyARM NanoPi M1]], [[Xunlong Orange Pi 2|Orange Pi 2]], [[Xunlong Orange Pi One & Lite|Xunlong Orange Pi Lite]], [[Xunlong Orange Pi One & Lite|Xunlong Orange Pi One]], [[Orange Pi PC]], [[Orange Pi PC 2]], [[Xunlong Orange Pi Prime|Orange Pi Prime]], [[Orange Pi Zero Plus 2]]<br />
<br />
* LEDs enabled for [[Banana Pi M3]]<br />
<br />
* VGA output enabled for [[Cubietech Cubieboard4|Cubieboard 4]]<br />
<br />
* Audio codec enabled for [[Olimex A33-OlinuXino]]<br />
<br />
* Power supplies enabled for [[Olimex A33-OlinuXino]], [[Q8|A23/A33 reference tablet design]], [[TBS A711]] (battery only)<br />
<br />
New devices supported<br />
* [[Olimex Teres-A64|Olimex TERES-I laptop]]<br />
* [[Xunlong Orange Pi Zero Plus]]<br />
* [[Olimex A20-SOM204]] EVB<br />
* [[PineH64]]<br />
<br />
== Merged into 4.16 ==<br />
Drivers:<br />
* Display<br />
** LVDS support<br />
** DE2 (multi-plane support, HW scaling)<br />
* [[A83T]]<br />
** Display (LCD) support<br />
** I2S support<br />
* [[H3]]/[[H5]]<br />
** SimpleFB support<br />
<br />
Device tree changes:<br />
* SoC specific<br />
** [[A83T]]<br />
*** [[I2C]], [[I2S]] added<br />
*** First display pipeline ([[LCD]]/LVDS)<br />
*** GPIO for AXP81x PMIC<br />
** [[H3]]/[[H5]]<br />
*** SimpleFB<br />
<br />
* Board specific<br />
** Audio codec enabled for [[A13-Olinuxino | Olimex A13-Olinuxino]]<br />
** WiFi/BT enabled for [[Xunlong Orangepi Zero Plus2]]<br />
** AXP803 regulators added for [[Xunlong Orangepi Win]]<br />
** EMAC enabled for [[FriendlyARM NanoPi NEO Plus2]], [[Cubietech Cubietruck Plus]], [[Sinovoip Banana Pi M3]], [[FriendlyARM NanoPi M1]]<br />
** USB OTG enabled for [[FriendlyARM NanoPi NEO]]<br />
** LEDs enabled for [[Sinovoip Banana Pi M64]]<br />
** HDMI enabled for [[LinkSprite pcDuino3 Nano]]<br />
<br />
New boards supported:<br />
* [[Xunlong Orange Pi Zero#Variants|Xunlong Orange Pi R1]]<br />
* [[Libre Computer Board ALL-H3-CC H3]]<br />
<br />
== Merged into 4.15 ==<br />
Drivers:<br />
* [[A10]]/[[A20]]/[[A31]]<br />
** display<br />
** HDMI controller<br />
* sunxi-ng clocks<br />
** audio PLL sigma-delta modulation support for accurate audio playback<br />
* [[A33]]<br />
** Audio codec fixes<br />
* [[A64]]<br />
** DMA controller<br />
<br />
Device tree changes:<br />
* SoC specific<br />
** [[A10]]/[[A20]]<br />
*** CCU sunxi-ng style clock conversion<br />
*** Display pipeline<br />
*** HDMI controller<br />
** [[A31]]<br />
*** HDMI controller<br />
*** I2S controllers<br />
** [[A64]]<br />
*** DMA controller<br />
*** EMAC<br />
*** SPI<br />
** [[H3]]/[[H5]]<br />
*** EMAC<br />
** [[R40]]<br />
*** Basic dtsi<br />
<br />
* Board specific<br />
** IR receiver for [[FriendlyARM NanoPi M1]]<br />
** WiFi, BT and IR receiver for [[FriendlyARM Nanopi M1 Plus]]<br />
** HDMI enabled on [[Merrii Hummingbird A31]], [[Sinlinx SinA31s]], [[MSI Primo81]], [[Cubietech Cubieboard]], [[Cubietech Cubieboard2]], [[Cubietech Cubietruck]], [[Banana Pi M1#Variants|Banana Pi M1+]], [[Olimex A10-OLinuXino-Lime]], [[Olimex A20-OLinuXino-Lime]], [[Olimex A20-OLinuXino-Lime2]], [[Olimex A20-OLinuXino-Micro]]<br />
** ACIN and Battery power supplies enabled on [[Lamobo R1]] and A13 reference design tablets<br />
** AXP803 PMIC regulators and WiFi enabled for [[Allwinner A83TDevBoard]], [[Banana Pi M3]], [[Cubietech Cubietruck Plus]]<br />
** AXP803 PMIC regulators and USB OTG enabled for [[TBS A711]]<br />
** EMAC re-enabled for various [[A64]]/[[H3]]/[[H5]] boards<br />
<br />
* Cleanups<br />
** Removal of GPIO pinmux settings for [[A10]] and [[A80]]<br />
<br />
New boards supported:<br />
* [[TBS A711]]<br />
* [[FriendlyARM NanoPi NEO Plus2]]<br />
* [[Olimex A20-OLinuXino-Micro]] eMMC variant<br />
* [[Banana Pi M2 Ultra]]<br />
* [[Banana Pi M2 Berry]]<br />
<br />
== Merged into 4.14 ==<br />
<br />
Drivers:<br />
<br />
* [[A10s]]<br />
** HDMI DDC I2C Adapter<br />
** HDMI CEC support<br />
* most of Allwinner SoC<br />
** sun4i-ss SecuritySystem PRNG driver<br />
* [[A10]]/[[A20]]<br />
** CCU Clock-ng support<br />
* [[A10]]/[[A20]]/[[A31]]/[[A33]]/[[H3]]<br />
** MUSB fixes [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=445ef61543da3db5b699f87fb0aa4f227165f6ed (commit)] [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6ed05c68cbcae42cd52b8e53b66952bfa9c002ce (commit)]<br />
* [[A64]]<br />
** SRAM controller driver<br />
* [[A83T]]<br />
** SD/MMC support <br />
** AXP813 PMIC<br />
** USB support<br />
* [[H3]]<br />
** [[I2S]] support<br />
* [[R40]]<br />
** CCU sunxi-ng style clock driver support<br />
** pinctrl support<br />
<br />
* AXP PMICs<br />
** PEK time fix for AXP22x<br />
<br />
Device tree changes:<br />
* SoC specific<br />
** [[A83T]] / [[A64]]<br />
*** R_INTC interrupt controller<br />
** [[A83T]]<br />
*** RSB support<br />
*** SD/MMC support<br />
*** AXP813 PMIC and codec<br />
*** USB host support<br />
<br />
* Board specific<br />
** AXP803 basic support and regulators for [[Pine64]] and [[Pine64#Variants|SoPine]]<br />
** USB and WiFi enabled for [[Sinovoip Banana Pi M64]]<br />
** <del>Ethernet for [[Beelink X2]]</del><br />
** USB OTG for [[Beelink X2]]<br />
** SD/MMC for [[Cubietech Cubietruck Plus]] and [[Allwinner A83TDevBoard]]<br />
** AXP813 PMIC for [[Cubietech Cubietruck Plus]] and [[Allwinner A83TDevBoard]]<br />
** AC100 chip for [[Cubietech Cubietruck Plus]] and [[Allwinner A83TDevBoard]]<br />
** USB hosts for [[Cubietech Cubietruck Plus]] and [[Allwinner A83TDevBoard]]<br />
<br />
New boards supported:<br />
<br />
*[[Sinovoip Banana Pi M2 Magic]]<br />
*[[Olimex A64-OLinuXino]]<br />
*[[FriendlyARM NanoPi A64]]<br />
*[[Sinovoip Banana Pi M3]]<br />
<br />
== Merged into 4.13 ==<br />
<br />
Drivers:<br />
<br />
* [[A10s]]<br />
** HDMI support<br />
<br />
* [[V3s]]<br />
** Clock driver for Display Engine 2.0<br />
** DRM/KMS display driver support for Display Engine 2.0<br />
** codec support<br />
<br />
* [[A64]] / [[A83T]] / [[H2+]] / [[H3]] / [[H5]]<br />
** <del>dwmac-sun8i ethernet driver</del> Unfinished due to unstable DT binding<br />
<br />
* [[A83T]]<br />
** Clock driver<br />
<br />
Device tree changes:<br />
<br />
* SoC Specific<br />
** LRADC, MMC1, SPI, Display Engine 2.0 for [[V3s]]<br />
<br />
* Board Specific<br />
** Enable AXP PMIC battery support on [[NextThingCo CHIP]], [[Sinlinx SinA33]]<br />
** Enable USB OTG on [[Banana Pi M2+]], [[Orange Pi PC]], [[Orange Pi PC#Variants| Orange Pi PC Plus]], [[Orange Pi Plus 2E]]<br />
** Enable dedicated USB hosts for USB OTG on [[Pine64]]<br />
** <del>Enable dwmac-sun8i for Ethernet on various boards</del> Removed due to unstable DT binding<br />
<br />
Added board support: [[FriendlyARM NanoPi NEO2]], [[Xunlong Orange Pi Prime]], [[LicheePi Zero]] dock board<br />
<br />
== Merged into 4.12 ==<br />
* [[H3]]<br />
** USB OTG support<br />
<br />
* [[H5]]<br />
** New SoC variant, similar to [[H3]], but ARM64 with Cortex-A53 cores.<br />
** pinctrl driver<br />
** CCU (sunxi-ng) driver<br />
** USB OTG support<br />
<br />
* [[A31]]/[[H3]] SPI<br />
** Support transfers larger than 64 bytes<br />
<br />
* AXP PMICs<br />
** AXP803 basic support<br />
** ACIN Power Supply driver<br />
** ADC IIO driver<br />
** Battery Power Supply driver<br />
<br />
Added board support: [[FriendlyARM NanoPi NEO Air]], [[Xunlong Orange Pi PC 2]]<br />
<br />
== Merged into 4.11 ==<br />
<br />
* [[A23]]<br />
** Audio codec device tree changes<br />
<br />
* [[A31]]<br />
** SPDIF output support<br />
<br />
* [[A33]]<br />
** cpufreq support<br />
** Audio codec support<br />
<br />
* [[A64]]<br />
** MMC Support<br />
** USB support<br />
<br />
* [[A80]]<br />
** sunxi-ng style clock support<br />
<br />
* [[H2+]]<br />
** New SoC variant, similar to [[H3]]<br />
<br />
* [[H3]]<br />
** Audio codec device tree changes<br />
** SPDIF output support<br />
<br />
* [[V3s]]<br />
** New SoC support<br />
** USB PHY driver<br />
** pinctrl driver<br />
** CCU driver<br />
<br />
Added board support: [[LicheePi One]], [[Xunlong Orange Pi Zero]], [[LicheePi Zero]], [[Sinovoip Banana Pi M64]]<br />
<br />
== Merged into 4.10 ==<br />
<br />
* [[A23]]<br />
** Audio Codec driver<br />
<br />
* [[A31]]/[[A31s]]<br />
** Display Driver (first pipeline)<br />
** Audio Codec support<br />
<br />
* [[A64]]<br />
** Clock driver<br />
<br />
* [[A80]]<br />
** External SDIO WiFi<br />
<br />
* [[H3]]<br />
** Audio Codec driver<br />
** SPI<br />
<br />
Added board support: NextThingCo CHIP Pro, [[Pine64]], [[FriendlyARM NanoPi M1]]<br />
<br />
== Merged into 4.9 ==<br />
* [[GR8]]<br />
** SoC Support<br />
<br />
* [[AXP209]]<br />
** GPIO support<br />
<br />
* [[A31]]<br />
** SPDIF support<br />
<br />
* [[A23]]/[[A33]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A31]]/[[A31s]]<br />
** sunxi-ng CCU driver<br />
<br />
* [[A33]]<br />
** Display Driver<br />
<br />
* [[A64]]<br />
** USB PHY support<br />
<br />
* [[H3]]<br />
** PWM support<br />
** I2C support<br />
<br />
* AXP806 PMIC<br />
** regulator support<br />
<br />
* AC100 RTC / codec IC<br />
** mfd driver<br />
** RTC driver<br />
<br />
Added board support: [[Xunlong Orange Pi PC#Variants | Orange Pi PC Plus]], [[Olimex A33-OLinuXino]], [[Xunlong Orange Pi Lite]], [[Inet q972]], [[Empire Electronix M712]], [[Xunlong Orange Pi Plus 2]], [[Xunlong Orange Pi Plus 2E]], [[FriendlyARM NanoPi NEO]],<br />
<br />
== Merged into 4.8 ==<br />
<br />
* [[A10]]/[[A20]]<br />
** Display engine clocks (TCON, FE, DE)<br />
** I2S audio interface driver<br />
<br />
* [[H3]]<br />
** Clocks (through sunxi-ng)<br />
** USB multi-reset lines support<br />
* AXP2xx driver:<br />
** External drivebus support<br />
** AXP223 USB power supply support<br />
** AXP809 PMIC support<br />
<br />
* [https://www.spinics.net/lists/arm-kernel/msg510602.html BCM53125 support]<br />
** This switch is used in [[Lamobo R1|Lamobo / Banana Pi R1]]<br />
<br />
== Merged into 4.7 ==<br />
<br />
* [[A13]]/[[R8]]<br />
** Display Engine support<br />
<br />
* [[A10]]/[[A20]]<br />
** SPDIF Support<br />
<br />
* [[A31]]/[[A23]]/[[H3]] DMAengine improvements for H3 audio support (WiP: Jean-Francois Moine) [http://lists.infradead.org/pipermail/linux-arm-kernel/2016-April/424280.html patch-v6]<br />
<br />
* [[H3]]<br />
** USB support (multi-reset line support delayed til 4.8)<br />
<br />
Added board support: Dserve DSRV9703C, Polaroid MID2809PXE4, colorfly e708 q1, Difrence DIT4350<br />
<br />
== Merged into 4.6 ==<br />
* {{note|For devices that use eMMC, old device trees may no longer work with this version (i.e. you have to rebuild your ''.dtb'' files). Expect eMMC I/O errors otherwise.}}<br />
<br />
* Allwinner [[A83T]] support<br />
** Initial bringup<br />
** timer, watchdog and reboot<br />
<br />
* [[H3]]<br />
** R_PIO support<br />
<br />
* [[A64]]<br />
** pinctrl driver<br />
** generic arm64 Allwinner platform (ARCH_SUNXI) support<br />
<br />
* NAND<br />
** ECC layout definition rework (partially) and randomizer support<br />
<br />
* A10/A20 SPDIF driver<br />
<br />
* AXP223 PMIC support<br />
<br />
* eMMC HS-DDR support for all currently supported SoCs except [[A80]]<br />
<br />
Added board support: [[Allwinner A83TDevBoard]], [[Cubietech Cubietruck Plus]]<br />
<br />
== Merged into 4.5 ==<br />
* Allwinner [[A80]] support<br />
** IR receiver driver<br />
** NMI controller<br />
** PRCM driver<br />
** R_PIO support<br />
** RSB driver<br />
<br />
* Allwinner H3 SoC support<br />
** H3 USB PHY clocks<br />
<br />
* A10/A20 Video Engine clocks<br />
<br />
* MIC1 capture for sun4i codec<br />
<br />
* Audio codec enabled on various boards<br />
<br />
Added board support: [[Xunlong Orange Pi Plus]]<br />
<br />
{{knownProblems|<br />
* Release tag v4.5 contains a change that broke ''stmmac'' networking on quite a few sunxi devices. The symptoms are<br />
<pre>[ 13.196778] libphy: PHY stmmac-0:ffffffff not found<br />
[ 13.204800] eth0: Could not attach to PHY<br />
[ 13.204809] stmmac_open: Cannot attach to PHY (error: -19)</pre>}}<br />
A quick fix is to revert commit '''88f8b1b''' which introduced the regression. See http://lists.infradead.org/pipermail/linux-arm-kernel/2016-March/415939.html, https://www.mail-archive.com/netdev@vger.kernel.org/msg104119.html, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823493.<br><br />
Version ''v4.5-rc7'' is known to be still okay, ''v4.6-rc2'' fixes stmmac again.<br />
<br />
== Changes merged up to 4.4 ==<br />
Changes up to 4.4 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 />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=20917
Allwinner SoC Family
2018-01-25T05:30:06Z
<p>Icenowy: arm926ejs is not v6, it's v5</p>
<hr />
<div>= SoC series =<br />
A series processors are used for mobile applications, mainly referring to tablet application here;<br />
<br />
H for “Homlet”, mainly used in home entertainment applications, including smart OTT boxes, HDMI mini PCs, gaming boxes, etc;<br />
<br />
V for video-related applications, including video surveillance, automotive DVR, etc;<br />
<br />
F series are processors based on Allwinner’s melis OS, mainly used in smart video radios, video MP5, etc;<br />
<br />
== "A"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7, A8 and A15) targeted for high-end devices like digital media players, tablets, and netbooks:<br />
{| class="wikitable"<br />
| [[A10|Allwinner A10]] || <small>(sun4i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A13|Allwinner A13]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A10s|Allwinner A10s]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A20|Allwinner A20]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=45</ref> || <small>(sun7i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A23|Allwinner A23]] || <small>(sun8i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31|Allwinner A31]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31s|Allwinner A31s]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A33|Allwinner A33]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=23</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A80|Allwinner A80]] || <small>(sun9i)</small> || 4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores&nbsp;<br /><small>(using ARM big.LITTLE heterogeneous CPU architecture)</small><br />
|-<br />
| [[A83T|Allwinner A83T]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=24</ref> || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=9</ref> || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7/ARMv8 Cortex-A cores (A7/A53) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H2+|Allwinner H2+]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=62</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H3|Allwinner H3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=47</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=46</ref> || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[H5|Allwinner H5]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=57</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H6|Allwinner H6]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=66</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H64|Allwinner H64]]<ref>http://web.archive.org/web/20160425223052/http://www.allwinnertech.com/en/clq/H_series/6100.html</ref> || <small>(sun50i)</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>http://web.archive.org/web/20160510053338/http://www.allwinnertech.com/en/clq/R_series/2015/0514/R8.html</ref> || <small>(sun5i)</small>&nbsp; || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[R16|Allwinner R16]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=51</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R40|Allwinner R40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=56</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R58|Allwinner R58]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=49</ref>&nbsp; || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 is repackaged version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s [[NextThingCo CHIP|''C.H.I.P.'']] kickstarter project ("The $9 computer")<ref>http://nextthing.co/</ref>.<br />
<br />
By comparing the product pages the R16 seems to be a relabeled version of A33. This is somewhat confirmed by the (identical) SoC ID the BROM reports.<ref>https://groups.google.com/d/msg/linux-sunxi/vx6oQMy-nis/vgVc8d1KBAAJ</ref><br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[R18|Allwinner R18]]|| <small>sun50i</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "V"-series ==<br />
<br />
{| class="wikitable"<br />
| [[V3|Allwinner V3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=37</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V3s|Allwinner V3s]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=38</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V40|Allwinner V40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=36</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "F"-Series ==<br />
:'''{{note|The F series is not supported by the linux-sunxi community due to lack of developers and hardware. ''sun3i'' have only official linux support, ''sunii'' have no linux support, only Allwinner's "Melis" RTOS.}}'''<br />
<br />
Based on ARMv5 ARM926-EJS core and currently targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
F1C700 seems to be a remarked A13, and it's ARMv7.<br />
<br />
{| class="wikitable"<br />
| [[C100|Boxchip C100]] || <small>(sun3i)</small><br />
|-<br />
| [[E200|Boxchip E200]] || <small>(sun3i)</small><br />
|-<br />
| [[F20|Boxchip F20]] || <small>(sun3i)</small><br />
|-<br />
| [[F10|Boxchip F10]] <small>aka SoChip SC9800 aka Teclast T8100</small>&nbsp; || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F13]] || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F15]] <small>aka SoChip SC8600 aka Teclast T7200</small> || <small>(sunii)</small><br />
|-<br />
| [[F18|Boxchip F18]] || <small>(sunii)</small><br />
|-<br />
| [[F1C100s|Allwinner F1C100s]] || <small>(suniv)</small><br />
|-<br />
| [[F1C600|Allwinner F1C600]] || <small>(suniv)</small><br />
|-<br />
| [[F1C100A|Allwinner F1C100A]] || <small>(suniv)</small><br />
|-<br />
| [[F1C700|Allwinner F1C700]] || <small>(sun5i)</small><br />
|}<br />
<br />
= 2013 naming scheme change =<br />
<br />
Initially, Allwinner named their SoCs chronologically:<br />
* sun4i = A10<br />
* sun5i = A13/A10s<br />
* sun6i = A31<br />
* sun7i = A20<br />
<br />
But, somewhere in 2013, Allwinner decided to update their naming scheme to be based on the ARM core used instead: (taken from the A80 SDK kernel code). Note: SoCs with ? has never appeared on Allwinner's website. <ref>https://github.com/tinalinux/brandy/blob/r40-v1.y/SUNXI_README</ref><br />
<br />
{| class="wikitable"<br />
! sunxi (arm cores) !! sunxiwx (soc id) !! p !! soc name !! cores !! notes<br />
|-<br />
| suniv (arm926ejs)<br />
|-<br />
| || sunivw1 (0x1663)<br />
|-<br />
| || || sunivw1p1 || [[F1C100s]], [[F1C100A]], [[F1C200s]], [[F1C500]], [[F1C600]], [[R6]] || 1xARM926EJ-S<br />
|-<br />
| sun4i (cortex-a8) <br />
|-<br />
| || sun4iw1 (0x1623)<br />
|-<br />
| || || sun4iw1p1 || [[A10]] || 1xCortex-A8<br />
|-<br />
| || sun4iw2 (0x1625)<br />
|-<br />
| || || sun4iw2p1 || [[A13]] || 1xCortex-A8<br />
|-<br />
| || || sun4iw2p2 || [[A12]]<br />
|-<br />
| || || sun4iw2p3 || [[A10s]] || 1xCortex-A8<br />
|-<br />
| sun8i (cortex-a7 smp)<br />
|-<br />
| || sun8iw1 (0x1633)<br />
|-<br />
| || || sun8iw1p1 || [[A31]] || 4xCortex-A7<br />
|-<br />
| || || sun8iw1p2 || [[A31s]] || 4xCortex-A7<br />
|-<br />
| || sun8iw2 (0x1651)<br />
|-<br />
| || || sun8iw2p1 || [[A20]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw2p2 ||<br />
|-<br />
| || sun8iw3 (0x1650)<br />
|-<br />
| || || sun8iw3p1 || [[A23]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw3p2 || <br />
|-<br />
| || sun8iw5 (0x1667)<br />
|-<br />
| || || sun8iw5p1 || [[A33]] || 4xCortex-A7<br />
|-<br />
| || sun8iw6 (0x1673)<br />
|-<br />
| || || sun8iw6p1 || [[A83T]] || 8xCortex-A7<br />
|-<br />
| || sun8iw7 (0x1680)<br />
|-<br />
| || || sun8iw7p1 || [[H3]], [[H2+]] || 4xCortex-A7<br />
|-<br />
| || sun8iw8 (0x1681)<br />
|-<br />
| || || sun8iw8p1 || [[V3]], [[V3s]] || 1xCortex-A7 || called V30 in allwinner's kernel source<br />
|-<br />
| || || sun8iw8p2 || ? || || called V33 in allwinner's kernel source<br />
|-<br />
| || sun8iw10 (0x1699)<br />
|-<br />
| || || sun8iw10p1 || [[B288]]<br />
|-<br />
| || sun8iw11 (0x1701)<br />
|-<br />
| || || sun8iw11p1 || [[R40]], [[V40]], [[A20e]]? || 4xCortex-A7<br />
|-<br />
| sun9i (cortex-a15.cortex-a7 big.LITTLE)<br />
|-<br />
| || sun9iw1 (0x1639)<br />
|-<br />
| || || sun9iw1p1 || [[A80]] || 4xCortex-A7 + 4xCortex-A15<br />
|-<br />
| || || sun9iw1p2 || [[A80T]]<br />
|-<br />
| sun50i (cortex-a53 smp)<br />
|-<br />
| || sun50iw1 (0x1689)<br />
|-<br />
| || || sun50iw1p1 || [[A64]] || 4xCortex-A53<br />
|-<br />
| || sun50iw2 (0x1718)<br />
|-<br />
| || || sun50iw2p1 || [[H5]] || 4xCortex-A53<br />
|-<br />
| || sun50iw6 (0x1728)<br />
|-<br />
| || || sun50iw6p1 || [[H6]] || 4xCortex-A53<br />
|}<br />
<br />
This new naming scheme is of absolutely no value with respect to the rest of the SoC. The actual ARM core(s) used are usually the least important piece of information for SoC support. This table completely ignores the fact that A20 is an updated A10 and is pin compatible. It also ignores the fact that A31 introduced a lot of changes which were carried on to the A23/A33 and possibly A80 parts. It therefore is quite likely that this naming scheme was purely a marketing decision, and that Allwinner marketing will change its mind again.<br />
<br />
= Features =<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], [http://en.wikipedia.org/wiki/ARM_Cortex-A15 Cortex-A15] or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit with (co-)processor extensions:<br />
** Advanced SIMD: [http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** [[Vector Floating Point Unit]] ([http://en.wikipedia.org/wiki/ARM_architecture#Floating-point_.28VFP.29 VFPU]): ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7)<br />
** Security Extensions: <br />
*** [http://en.wikipedia.org/wiki/ARM_architecture#Security_extensions_.28TrustZone.29 TrustZone] secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2 Thumb-2] instruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400-MP2, SGX544 or PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES2.<br />
* VPU: [[Cedar Engine]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [http://en.wikipedia.org/wiki/HDMI#CEC HDMI CEC] (Consumer Electronics Control), with exception of A13 which lacks HDMI-transmitter and SATA-controller<ref>[http://olimex.wordpress.com/2012/04/24/cortex-a8-in-tqfp-sure-allwinner-a13/ "Cortex A8 in TQFP? sure Allwinner A13"] ''Retrieved 23 September 2012''</ref><br />
* Hardware virtualization capabilities (Cortex-A7 only).<br />
* Up to 4GB memory (Cortex-A8), Up to 1TB memory with LPAE (Cortex-A7 only).<br />
<br />
== Comparison table ==<br />
{| class="wikitable"<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun6i || sun8i || sun9i <br />
|-<br />
! scope="row" | CPU<br />
| Cortex-A8 || Cortex-A8 || Cortex-A8 || Cortex-A7 || Cortex-A7 ||Cortex-A7 || Cortex-A7 || Cortex-A7 || Cortex-A7 / A15 <br />
|-<br />
! scope="row" | CPU Maximum frequency<br />
| 1 GHz|| 1 GHz || 1 GHz|| 960 MHz|| 1.5 GHz || ? GHz || ? GHz || 1.5 GHz || 2 (??) GHz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2 x 4<br />
|-<br />
! scope="row" | Extensions<br />
| NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 ||NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || ? (A80)<br />
|-<br />
! scope="row" | Memory<br />
| DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 512MB @ DDR800) || LPDDR3, DDR3,</br>LPDDR2 || DDR3</br>(max 1GB) || 2-channel DDR3, LPDDR2, </br>2-channel DDR3L, DDR3U || DDR3, DDR3L, LPDDR2 || single-channel DDR3, DDR3L</br>(max 1GB) || 2-channel DDR3, DDR3L, LPDDR3, LPDDR2</br> up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]-MP2</br>350&nbsp;MHz || [[Mali400]]-MP2 || SGX544</br>200&nbsp;MHz || SGX544</br>200&nbsp;MHz || [[Mali400]]-MP2 || 64-core PowerVR G6230<br />
|-<br />
! scope="row" | GPU API<br />
| OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL 3.x, OpenGL ES Next,3.0,2.0, Open CL 1.x, DirectX 11 level 9_3/10_0<ref>http://www.imgtec.com/news/detail.asp?ID=845</ref><br />
|-<br />
! scope="row" | [[Cedar Engine|Video decoder]]<br />
| 2160p || 1080p || 1080p || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || 2160p, 1080p 3D || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[Cedar Engine|Video encoder]]<br />
| H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || 1080p@60fps || H.264 1080p@60fps, JPEG || H264 1080p@30fps, 720p@60fps || H.264 1080p@60fps, JPEG || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | Audio decoder<br />
| AC3, DTS || ? || ? || AC3, DTS || - || ? (A31) || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Video interfaces<br />
| HDMI 1.3, YPbPr, VGA, CPU/RGB/LVDS LCD || HDMI 1.3, RGB/LVDS LCD || RGB LCD, VGA|| HDMI 1.4, CVBS, YPbPr, VGA, CPU/RGB/LVDS LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || HDMI 1.4, LVDS, RGB LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 4K, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
|-<br />
! scope="row" | Audio interfaces<br />
| I2S, SPDIF, AC97 || I2S, AC97 || I2S, AC97 || I2S, PCM, AC97 || I2S, PCM || 2 I2S, 2 PCM || I2S, 2 PCM || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || 1 || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || 2 || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || GMAC || GMAC || - || GMAC<br />
|-<br />
! scope="row" | Storage<br />
| NAND (max 64GB), SATA II, SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND, MMC, [http://olimex.wordpress.com/2013/04/05/allwinners-a10-and-a20-are-they-really-pin-to-pin-compatible-and-drop-in-replacement/#comment-5452 SATA] || raw NAND, eMMC, SD card || 4 x SD Card, eMMC NAND, 2-channel raw NAND || 4 x SD Card, eMMC NAND, raw NAND || 3 x SD Card, eMMC NAND, raw NAND || 4 x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA336</br>14&nbsp;mm&nbsp;×&nbsp;14&nbsp;mm</br>0.65&nbsp;mm Pitch || eLQFP176</br>20&nbsp;mm&nbsp;×&nbsp;20&nbsp;mm ||BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || FBGA280</br>14&nbsp;mm&nbsp;x&nbsp;14&nbsp;mm&nbsp;x&nbsp;1.4&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA609</br>18&nbsp;mm&nbsp;×&nbsp;8&nbsp;mm</br>0.65&nbsp;mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Lithography<br />
| 55 nm || 55 nm|| 55 nm || 40 nm || 40 nm || 40 nm || 40 nm || 40 nm || 28 nm<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=File:Allwinner_F1C600_User_Manual_V1.0.pdf&diff=20884
File:Allwinner F1C600 User Manual V1.0.pdf
2018-01-19T23:01:51Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=File:F1C100s_Datasheet_V1.0.pdf&diff=20872
File:F1C100s Datasheet V1.0.pdf
2018-01-18T05:39:03Z
<p>Icenowy: </p>
<hr />
<div></div>
Icenowy
https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=20871
Allwinner SoC Family
2018-01-18T05:38:01Z
<p>Icenowy: add F1C100{s,A}, F1C600, F1C700</p>
<hr />
<div>= SoC series =<br />
A series processors are used for mobile applications, mainly referring to tablet application here;<br />
<br />
H for “Homlet”, mainly used in home entertainment applications, including smart OTT boxes, HDMI mini PCs, gaming boxes, etc;<br />
<br />
V for video-related applications, including video surveillance, automotive DVR, etc;<br />
<br />
F series are processors based on Allwinner’s melis OS, mainly used in smart video radios, video MP5, etc;<br />
<br />
== "A"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7, A8 and A15) targeted for high-end devices like digital media players, tablets, and netbooks:<br />
{| class="wikitable"<br />
| [[A10|Allwinner A10]] || <small>(sun4i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A13|Allwinner A13]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A10s|Allwinner A10s]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A20|Allwinner A20]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=45</ref> || <small>(sun7i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A23|Allwinner A23]] || <small>(sun8i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31|Allwinner A31]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31s|Allwinner A31s]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A33|Allwinner A33]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=23</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A80|Allwinner A80]] || <small>(sun9i)</small> || 4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores&nbsp;<br /><small>(using ARM big.LITTLE heterogeneous CPU architecture)</small><br />
|-<br />
| [[A83T|Allwinner A83T]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=24</ref> || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=9</ref> || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7/ARMv8 Cortex-A cores (A7/A53) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H2+|Allwinner H2+]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=62</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H3|Allwinner H3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=47</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=46</ref> || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[H5|Allwinner H5]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=57</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H6|Allwinner H6]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=66</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H64|Allwinner H64]]<ref>http://web.archive.org/web/20160425223052/http://www.allwinnertech.com/en/clq/H_series/6100.html</ref> || <small>(sun50i)</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>http://web.archive.org/web/20160510053338/http://www.allwinnertech.com/en/clq/R_series/2015/0514/R8.html</ref> || <small>(sun5i)</small>&nbsp; || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[R16|Allwinner R16]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=51</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R40|Allwinner R40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=56</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R58|Allwinner R58]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=49</ref>&nbsp; || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 is repackaged version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s [[NextThingCo CHIP|''C.H.I.P.'']] kickstarter project ("The $9 computer")<ref>http://nextthing.co/</ref>.<br />
<br />
By comparing the product pages the R16 seems to be a relabeled version of A33. This is somewhat confirmed by the (identical) SoC ID the BROM reports.<ref>https://groups.google.com/d/msg/linux-sunxi/vx6oQMy-nis/vgVc8d1KBAAJ</ref><br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[R18|Allwinner R18]]|| <small>sun50i</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "V"-series ==<br />
<br />
{| class="wikitable"<br />
| [[V3|Allwinner V3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=37</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V3s|Allwinner V3s]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=38</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V40|Allwinner V40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=36</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "F"-Series ==<br />
:'''{{note|The F series is not supported by the linux-sunxi community due to lack of developers and hardware. ''sun3i'' have only official linux support, ''sunii'' have no linux support, only Allwinner's "Melis" RTOS.}}'''<br />
<br />
Based on ARMv6 ARM926-EJS core and currently targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
F1C700 seems to be a remarked A13, and it's ARMv7.<br />
<br />
{| class="wikitable"<br />
| [[C100|Boxchip C100]] || <small>(sun3i)</small><br />
|-<br />
| [[E200|Boxchip E200]] || <small>(sun3i)</small><br />
|-<br />
| [[F20|Boxchip F20]] || <small>(sun3i)</small><br />
|-<br />
| [[F10|Boxchip F10]] <small>aka SoChip SC9800 aka Teclast T8100</small>&nbsp; || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F13]] || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F15]] <small>aka SoChip SC8600 aka Teclast T7200</small> || <small>(sunii)</small><br />
|-<br />
| [[F18|Boxchip F18]] || <small>(sunii)</small><br />
|-<br />
| [[F1C100s|Allwinner F1C100s]] || <small>(suniv)</small><br />
|-<br />
| [[F1C600|Allwinner F1C600]] || <small>(suniv)</small><br />
|-<br />
| [[F1C100A|Allwinner F1C100A]] || <small>(suniv)</small><br />
|-<br />
| [[F1C700|Allwinner F1C700]] || <small>(sun5i)</small><br />
|}<br />
<br />
= 2013 naming scheme change =<br />
<br />
Initially, Allwinner named their SoCs chronologically:<br />
* sun4i = A10<br />
* sun5i = A13/A10s<br />
* sun6i = A31<br />
* sun7i = A20<br />
<br />
But, somewhere in 2013, Allwinner decided to update their naming scheme to be based on the ARM core used instead: (taken from the A80 SDK kernel code). Note: SoCs with ? has never appeared on Allwinner's website. <ref>https://github.com/tinalinux/brandy/blob/r40-v1.y/SUNXI_README</ref><br />
<br />
{| class="wikitable"<br />
! sunxi (arm cores) !! sunxiwx (soc id) !! p !! soc name !! cores !! notes<br />
|-<br />
| suniv (arm926ejs)<br />
|-<br />
| || sunivw1 (0x1663)<br />
|-<br />
| || || sunivw1p1 || [[F1C100s]], [[F1C100A]], [[F1C200s]], [[F1C500]], [[F1C600]], [[R6]] || 1xARM926EJ-S<br />
|-<br />
| sun4i (cortex-a8) <br />
|-<br />
| || sun4iw1 (0x1623)<br />
|-<br />
| || || sun4iw1p1 || [[A10]] || 1xCortex-A8<br />
|-<br />
| || sun4iw2 (0x1625)<br />
|-<br />
| || || sun4iw2p1 || [[A13]] || 1xCortex-A8<br />
|-<br />
| || || sun4iw2p2 || [[A12]]<br />
|-<br />
| || || sun4iw2p3 || [[A10s]] || 1xCortex-A8<br />
|-<br />
| sun8i (cortex-a7 smp)<br />
|-<br />
| || sun8iw1 (0x1633)<br />
|-<br />
| || || sun8iw1p1 || [[A31]] || 4xCortex-A7<br />
|-<br />
| || || sun8iw1p2 || [[A31s]] || 4xCortex-A7<br />
|-<br />
| || sun8iw2 (0x1651)<br />
|-<br />
| || || sun8iw2p1 || [[A20]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw2p2 ||<br />
|-<br />
| || sun8iw3 (0x1650)<br />
|-<br />
| || || sun8iw3p1 || [[A23]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw3p2 || <br />
|-<br />
| || sun8iw5 (0x1667)<br />
|-<br />
| || || sun8iw5p1 || [[A33]] || 4xCortex-A7<br />
|-<br />
| || sun8iw6 (0x1673)<br />
|-<br />
| || || sun8iw6p1 || [[A83T]] || 8xCortex-A7<br />
|-<br />
| || sun8iw7 (0x1680)<br />
|-<br />
| || || sun8iw7p1 || [[H3]], [[H2+]] || 4xCortex-A7<br />
|-<br />
| || sun8iw8 (0x1681)<br />
|-<br />
| || || sun8iw8p1 || [[V3]], [[V3s]] || 1xCortex-A7 || called V30 in allwinner's kernel source<br />
|-<br />
| || || sun8iw8p2 || ? || || called V33 in allwinner's kernel source<br />
|-<br />
| || sun8iw10 (0x1699)<br />
|-<br />
| || || sun8iw10p1 || [[B288]]<br />
|-<br />
| || sun8iw11 (0x1701)<br />
|-<br />
| || || sun8iw11p1 || [[R40]], [[V40]], [[A20e]]? || 4xCortex-A7<br />
|-<br />
| sun9i (cortex-a15.cortex-a7 big.LITTLE)<br />
|-<br />
| || sun9iw1 (0x1639)<br />
|-<br />
| || || sun9iw1p1 || [[A80]] || 4xCortex-A7 + 4xCortex-A15<br />
|-<br />
| || || sun9iw1p2 || [[A80T]]<br />
|-<br />
| sun50i (cortex-a53 smp)<br />
|-<br />
| || sun50iw1 (0x1689)<br />
|-<br />
| || || sun50iw1p1 || [[A64]] || 4xCortex-A53<br />
|-<br />
| || sun50iw2 (0x1718)<br />
|-<br />
| || || sun50iw2p1 || [[H5]] || 4xCortex-A53<br />
|-<br />
| || sun50iw6 (0x1728)<br />
|-<br />
| || || sun50iw6p1 || [[H6]] || 4xCortex-A53<br />
|}<br />
<br />
This new naming scheme is of absolutely no value with respect to the rest of the SoC. The actual ARM core(s) used are usually the least important piece of information for SoC support. This table completely ignores the fact that A20 is an updated A10 and is pin compatible. It also ignores the fact that A31 introduced a lot of changes which were carried on to the A23/A33 and possibly A80 parts. It therefore is quite likely that this naming scheme was purely a marketing decision, and that Allwinner marketing will change its mind again.<br />
<br />
= Features =<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], [http://en.wikipedia.org/wiki/ARM_Cortex-A15 Cortex-A15] or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit with (co-)processor extensions:<br />
** Advanced SIMD: [http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** [[Vector Floating Point Unit]] ([http://en.wikipedia.org/wiki/ARM_architecture#Floating-point_.28VFP.29 VFPU]): ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7)<br />
** Security Extensions: <br />
*** [http://en.wikipedia.org/wiki/ARM_architecture#Security_extensions_.28TrustZone.29 TrustZone] secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2 Thumb-2] instruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400-MP2, SGX544 or PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES2.<br />
* VPU: [[Cedar Engine]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [http://en.wikipedia.org/wiki/HDMI#CEC HDMI CEC] (Consumer Electronics Control), with exception of A13 which lacks HDMI-transmitter and SATA-controller<ref>[http://olimex.wordpress.com/2012/04/24/cortex-a8-in-tqfp-sure-allwinner-a13/ "Cortex A8 in TQFP? sure Allwinner A13"] ''Retrieved 23 September 2012''</ref><br />
* Hardware virtualization capabilities (Cortex-A7 only).<br />
* Up to 4GB memory (Cortex-A8), Up to 1TB memory with LPAE (Cortex-A7 only).<br />
<br />
== Comparison table ==<br />
{| class="wikitable"<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun6i || sun8i || sun9i <br />
|-<br />
! scope="row" | CPU<br />
| Cortex-A8 || Cortex-A8 || Cortex-A8 || Cortex-A7 || Cortex-A7 ||Cortex-A7 || Cortex-A7 || Cortex-A7 || Cortex-A7 / A15 <br />
|-<br />
! scope="row" | CPU Maximum frequency<br />
| 1 GHz|| 1 GHz || 1 GHz|| 960 MHz|| 1.5 GHz || ? GHz || ? GHz || 1.5 GHz || 2 (??) GHz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2 x 4<br />
|-<br />
! scope="row" | Extensions<br />
| NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 ||NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || ? (A80)<br />
|-<br />
! scope="row" | Memory<br />
| DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 512MB @ DDR800) || LPDDR3, DDR3,</br>LPDDR2 || DDR3</br>(max 1GB) || 2-channel DDR3, LPDDR2, </br>2-channel DDR3L, DDR3U || DDR3, DDR3L, LPDDR2 || single-channel DDR3, DDR3L</br>(max 1GB) || 2-channel DDR3, DDR3L, LPDDR3, LPDDR2</br> up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]-MP2</br>350&nbsp;MHz || [[Mali400]]-MP2 || SGX544</br>200&nbsp;MHz || SGX544</br>200&nbsp;MHz || [[Mali400]]-MP2 || 64-core PowerVR G6230<br />
|-<br />
! scope="row" | GPU API<br />
| OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL 3.x, OpenGL ES Next,3.0,2.0, Open CL 1.x, DirectX 11 level 9_3/10_0<ref>http://www.imgtec.com/news/detail.asp?ID=845</ref><br />
|-<br />
! scope="row" | [[Cedar Engine|Video decoder]]<br />
| 2160p || 1080p || 1080p || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || 2160p, 1080p 3D || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[Cedar Engine|Video encoder]]<br />
| H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || 1080p@60fps || H.264 1080p@60fps, JPEG || H264 1080p@30fps, 720p@60fps || H.264 1080p@60fps, JPEG || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | Audio decoder<br />
| AC3, DTS || ? || ? || AC3, DTS || - || ? (A31) || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Video interfaces<br />
| HDMI 1.3, YPbPr, VGA, CPU/RGB/LVDS LCD || HDMI 1.3, RGB/LVDS LCD || RGB LCD, VGA|| HDMI 1.4, CVBS, YPbPr, VGA, CPU/RGB/LVDS LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || HDMI 1.4, LVDS, RGB LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 4K, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
|-<br />
! scope="row" | Audio interfaces<br />
| I2S, SPDIF, AC97 || I2S, AC97 || I2S, AC97 || I2S, PCM, AC97 || I2S, PCM || 2 I2S, 2 PCM || I2S, 2 PCM || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || 1 || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || 2 || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || GMAC || GMAC || - || GMAC<br />
|-<br />
! scope="row" | Storage<br />
| NAND (max 64GB), SATA II, SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND, MMC, [http://olimex.wordpress.com/2013/04/05/allwinners-a10-and-a20-are-they-really-pin-to-pin-compatible-and-drop-in-replacement/#comment-5452 SATA] || raw NAND, eMMC, SD card || 4 x SD Card, eMMC NAND, 2-channel raw NAND || 4 x SD Card, eMMC NAND, raw NAND || 3 x SD Card, eMMC NAND, raw NAND || 4 x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA336</br>14&nbsp;mm&nbsp;×&nbsp;14&nbsp;mm</br>0.65&nbsp;mm Pitch || eLQFP176</br>20&nbsp;mm&nbsp;×&nbsp;20&nbsp;mm ||BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || FBGA280</br>14&nbsp;mm&nbsp;x&nbsp;14&nbsp;mm&nbsp;x&nbsp;1.4&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA609</br>18&nbsp;mm&nbsp;×&nbsp;8&nbsp;mm</br>0.65&nbsp;mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Lithography<br />
| 55 nm || 55 nm|| 55 nm || 40 nm || 40 nm || 40 nm || 40 nm || 40 nm || 28 nm<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=20870
Allwinner SoC Family
2018-01-18T05:33:42Z
<p>Icenowy: fix links in the previous commit</p>
<hr />
<div>= SoC series =<br />
A series processors are used for mobile applications, mainly referring to tablet application here;<br />
<br />
H for “Homlet”, mainly used in home entertainment applications, including smart OTT boxes, HDMI mini PCs, gaming boxes, etc;<br />
<br />
V for video-related applications, including video surveillance, automotive DVR, etc;<br />
<br />
F series are processors based on Allwinner’s melis OS, mainly used in smart video radios, video MP5, etc;<br />
<br />
== "A"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7, A8 and A15) targeted for high-end devices like digital media players, tablets, and netbooks:<br />
{| class="wikitable"<br />
| [[A10|Allwinner A10]] || <small>(sun4i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A13|Allwinner A13]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A10s|Allwinner A10s]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A20|Allwinner A20]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=45</ref> || <small>(sun7i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A23|Allwinner A23]] || <small>(sun8i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31|Allwinner A31]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31s|Allwinner A31s]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A33|Allwinner A33]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=23</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A80|Allwinner A80]] || <small>(sun9i)</small> || 4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores&nbsp;<br /><small>(using ARM big.LITTLE heterogeneous CPU architecture)</small><br />
|-<br />
| [[A83T|Allwinner A83T]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=24</ref> || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=9</ref> || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7/ARMv8 Cortex-A cores (A7/A53) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H2+|Allwinner H2+]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=62</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H3|Allwinner H3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=47</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=46</ref> || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[H5|Allwinner H5]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=57</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H6|Allwinner H6]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=66</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H64|Allwinner H64]]<ref>http://web.archive.org/web/20160425223052/http://www.allwinnertech.com/en/clq/H_series/6100.html</ref> || <small>(sun50i)</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>http://web.archive.org/web/20160510053338/http://www.allwinnertech.com/en/clq/R_series/2015/0514/R8.html</ref> || <small>(sun5i)</small>&nbsp; || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[R16|Allwinner R16]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=51</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R40|Allwinner R40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=56</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R58|Allwinner R58]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=49</ref>&nbsp; || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 is repackaged version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s [[NextThingCo CHIP|''C.H.I.P.'']] kickstarter project ("The $9 computer")<ref>http://nextthing.co/</ref>.<br />
<br />
By comparing the product pages the R16 seems to be a relabeled version of A33. This is somewhat confirmed by the (identical) SoC ID the BROM reports.<ref>https://groups.google.com/d/msg/linux-sunxi/vx6oQMy-nis/vgVc8d1KBAAJ</ref><br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[R18|Allwinner R18]]|| <small>sun50i</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "V"-series ==<br />
<br />
{| class="wikitable"<br />
| [[V3|Allwinner V3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=37</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V3s|Allwinner V3s]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=38</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V40|Allwinner V40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=36</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "F"-Series ==<br />
:'''{{note|The F series is not supported by the linux-sunxi community due to lack of developers and hardware. ''sun3i'' have only official linux support, ''sunii'' have no linux support, only Allwinner's "Melis" RTOS.}}'''<br />
<br />
Based on ARMv6 ARM926-EJS core and currently targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
{| class="wikitable"<br />
| [[C100|Boxchip C100]] || <small>(sun3i)</small><br />
|-<br />
| [[E200|Boxchip E200]] || <small>(sun3i)</small><br />
|-<br />
| [[F20|Boxchip F20]] || <small>(sun3i)</small><br />
|-<br />
| [[F10|Boxchip F10]] <small>aka SoChip SC9800 aka Teclast T8100</small>&nbsp; || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F13]] || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F15]] <small>aka SoChip SC8600 aka Teclast T7200</small> || <small>(sunii)</small><br />
|-<br />
| [[F18|Boxchip F18]] || <small>(sunii)</small><br />
|}<br />
<br />
= 2013 naming scheme change =<br />
<br />
Initially, Allwinner named their SoCs chronologically:<br />
* sun4i = A10<br />
* sun5i = A13/A10s<br />
* sun6i = A31<br />
* sun7i = A20<br />
<br />
But, somewhere in 2013, Allwinner decided to update their naming scheme to be based on the ARM core used instead: (taken from the A80 SDK kernel code). Note: SoCs with ? has never appeared on Allwinner's website. <ref>https://github.com/tinalinux/brandy/blob/r40-v1.y/SUNXI_README</ref><br />
<br />
{| class="wikitable"<br />
! sunxi (arm cores) !! sunxiwx (soc id) !! p !! soc name !! cores !! notes<br />
|-<br />
| suniv (arm926ejs)<br />
|-<br />
| || sunivw1 (0x1663)<br />
|-<br />
| || || sunivw1p1 || [[F1C100s]], [[F1C100A]], [[F1C200s]], [[F1C500]], [[F1C600]], [[R6]] || 1xARM926EJ-S<br />
|-<br />
| sun4i (cortex-a8) <br />
|-<br />
| || sun4iw1 (0x1623)<br />
|-<br />
| || || sun4iw1p1 || [[A10]] || 1xCortex-A8<br />
|-<br />
| || sun4iw2 (0x1625)<br />
|-<br />
| || || sun4iw2p1 || [[A13]] || 1xCortex-A8<br />
|-<br />
| || || sun4iw2p2 || [[A12]]<br />
|-<br />
| || || sun4iw2p3 || [[A10s]] || 1xCortex-A8<br />
|-<br />
| sun8i (cortex-a7 smp)<br />
|-<br />
| || sun8iw1 (0x1633)<br />
|-<br />
| || || sun8iw1p1 || [[A31]] || 4xCortex-A7<br />
|-<br />
| || || sun8iw1p2 || [[A31s]] || 4xCortex-A7<br />
|-<br />
| || sun8iw2 (0x1651)<br />
|-<br />
| || || sun8iw2p1 || [[A20]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw2p2 ||<br />
|-<br />
| || sun8iw3 (0x1650)<br />
|-<br />
| || || sun8iw3p1 || [[A23]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw3p2 || <br />
|-<br />
| || sun8iw5 (0x1667)<br />
|-<br />
| || || sun8iw5p1 || [[A33]] || 4xCortex-A7<br />
|-<br />
| || sun8iw6 (0x1673)<br />
|-<br />
| || || sun8iw6p1 || [[A83T]] || 8xCortex-A7<br />
|-<br />
| || sun8iw7 (0x1680)<br />
|-<br />
| || || sun8iw7p1 || [[H3]], [[H2+]] || 4xCortex-A7<br />
|-<br />
| || sun8iw8 (0x1681)<br />
|-<br />
| || || sun8iw8p1 || [[V3]], [[V3s]] || 1xCortex-A7 || called V30 in allwinner's kernel source<br />
|-<br />
| || || sun8iw8p2 || ? || || called V33 in allwinner's kernel source<br />
|-<br />
| || sun8iw10 (0x1699)<br />
|-<br />
| || || sun8iw10p1 || [[B288]]<br />
|-<br />
| || sun8iw11 (0x1701)<br />
|-<br />
| || || sun8iw11p1 || [[R40]], [[V40]], [[A20e]]? || 4xCortex-A7<br />
|-<br />
| sun9i (cortex-a15.cortex-a7 big.LITTLE)<br />
|-<br />
| || sun9iw1 (0x1639)<br />
|-<br />
| || || sun9iw1p1 || [[A80]] || 4xCortex-A7 + 4xCortex-A15<br />
|-<br />
| || || sun9iw1p2 || [[A80T]]<br />
|-<br />
| sun50i (cortex-a53 smp)<br />
|-<br />
| || sun50iw1 (0x1689)<br />
|-<br />
| || || sun50iw1p1 || [[A64]] || 4xCortex-A53<br />
|-<br />
| || sun50iw2 (0x1718)<br />
|-<br />
| || || sun50iw2p1 || [[H5]] || 4xCortex-A53<br />
|-<br />
| || sun50iw6 (0x1728)<br />
|-<br />
| || || sun50iw6p1 || [[H6]] || 4xCortex-A53<br />
|}<br />
<br />
This new naming scheme is of absolutely no value with respect to the rest of the SoC. The actual ARM core(s) used are usually the least important piece of information for SoC support. This table completely ignores the fact that A20 is an updated A10 and is pin compatible. It also ignores the fact that A31 introduced a lot of changes which were carried on to the A23/A33 and possibly A80 parts. It therefore is quite likely that this naming scheme was purely a marketing decision, and that Allwinner marketing will change its mind again.<br />
<br />
= Features =<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], [http://en.wikipedia.org/wiki/ARM_Cortex-A15 Cortex-A15] or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit with (co-)processor extensions:<br />
** Advanced SIMD: [http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** [[Vector Floating Point Unit]] ([http://en.wikipedia.org/wiki/ARM_architecture#Floating-point_.28VFP.29 VFPU]): ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7)<br />
** Security Extensions: <br />
*** [http://en.wikipedia.org/wiki/ARM_architecture#Security_extensions_.28TrustZone.29 TrustZone] secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2 Thumb-2] instruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400-MP2, SGX544 or PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES2.<br />
* VPU: [[Cedar Engine]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [http://en.wikipedia.org/wiki/HDMI#CEC HDMI CEC] (Consumer Electronics Control), with exception of A13 which lacks HDMI-transmitter and SATA-controller<ref>[http://olimex.wordpress.com/2012/04/24/cortex-a8-in-tqfp-sure-allwinner-a13/ "Cortex A8 in TQFP? sure Allwinner A13"] ''Retrieved 23 September 2012''</ref><br />
* Hardware virtualization capabilities (Cortex-A7 only).<br />
* Up to 4GB memory (Cortex-A8), Up to 1TB memory with LPAE (Cortex-A7 only).<br />
<br />
== Comparison table ==<br />
{| class="wikitable"<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun6i || sun8i || sun9i <br />
|-<br />
! scope="row" | CPU<br />
| Cortex-A8 || Cortex-A8 || Cortex-A8 || Cortex-A7 || Cortex-A7 ||Cortex-A7 || Cortex-A7 || Cortex-A7 || Cortex-A7 / A15 <br />
|-<br />
! scope="row" | CPU Maximum frequency<br />
| 1 GHz|| 1 GHz || 1 GHz|| 960 MHz|| 1.5 GHz || ? GHz || ? GHz || 1.5 GHz || 2 (??) GHz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2 x 4<br />
|-<br />
! scope="row" | Extensions<br />
| NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 ||NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || ? (A80)<br />
|-<br />
! scope="row" | Memory<br />
| DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 512MB @ DDR800) || LPDDR3, DDR3,</br>LPDDR2 || DDR3</br>(max 1GB) || 2-channel DDR3, LPDDR2, </br>2-channel DDR3L, DDR3U || DDR3, DDR3L, LPDDR2 || single-channel DDR3, DDR3L</br>(max 1GB) || 2-channel DDR3, DDR3L, LPDDR3, LPDDR2</br> up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]-MP2</br>350&nbsp;MHz || [[Mali400]]-MP2 || SGX544</br>200&nbsp;MHz || SGX544</br>200&nbsp;MHz || [[Mali400]]-MP2 || 64-core PowerVR G6230<br />
|-<br />
! scope="row" | GPU API<br />
| OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL 3.x, OpenGL ES Next,3.0,2.0, Open CL 1.x, DirectX 11 level 9_3/10_0<ref>http://www.imgtec.com/news/detail.asp?ID=845</ref><br />
|-<br />
! scope="row" | [[Cedar Engine|Video decoder]]<br />
| 2160p || 1080p || 1080p || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || 2160p, 1080p 3D || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[Cedar Engine|Video encoder]]<br />
| H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || 1080p@60fps || H.264 1080p@60fps, JPEG || H264 1080p@30fps, 720p@60fps || H.264 1080p@60fps, JPEG || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | Audio decoder<br />
| AC3, DTS || ? || ? || AC3, DTS || - || ? (A31) || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Video interfaces<br />
| HDMI 1.3, YPbPr, VGA, CPU/RGB/LVDS LCD || HDMI 1.3, RGB/LVDS LCD || RGB LCD, VGA|| HDMI 1.4, CVBS, YPbPr, VGA, CPU/RGB/LVDS LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || HDMI 1.4, LVDS, RGB LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 4K, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
|-<br />
! scope="row" | Audio interfaces<br />
| I2S, SPDIF, AC97 || I2S, AC97 || I2S, AC97 || I2S, PCM, AC97 || I2S, PCM || 2 I2S, 2 PCM || I2S, 2 PCM || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || 1 || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || 2 || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || GMAC || GMAC || - || GMAC<br />
|-<br />
! scope="row" | Storage<br />
| NAND (max 64GB), SATA II, SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND, MMC, [http://olimex.wordpress.com/2013/04/05/allwinners-a10-and-a20-are-they-really-pin-to-pin-compatible-and-drop-in-replacement/#comment-5452 SATA] || raw NAND, eMMC, SD card || 4 x SD Card, eMMC NAND, 2-channel raw NAND || 4 x SD Card, eMMC NAND, raw NAND || 3 x SD Card, eMMC NAND, raw NAND || 4 x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA336</br>14&nbsp;mm&nbsp;×&nbsp;14&nbsp;mm</br>0.65&nbsp;mm Pitch || eLQFP176</br>20&nbsp;mm&nbsp;×&nbsp;20&nbsp;mm ||BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || FBGA280</br>14&nbsp;mm&nbsp;x&nbsp;14&nbsp;mm&nbsp;x&nbsp;1.4&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA609</br>18&nbsp;mm&nbsp;×&nbsp;8&nbsp;mm</br>0.65&nbsp;mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Lithography<br />
| 55 nm || 55 nm|| 55 nm || 40 nm || 40 nm || 40 nm || 40 nm || 40 nm || 28 nm<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=20869
Allwinner SoC Family
2018-01-18T05:32:55Z
<p>Icenowy: add new suniv</p>
<hr />
<div>= SoC series =<br />
A series processors are used for mobile applications, mainly referring to tablet application here;<br />
<br />
H for “Homlet”, mainly used in home entertainment applications, including smart OTT boxes, HDMI mini PCs, gaming boxes, etc;<br />
<br />
V for video-related applications, including video surveillance, automotive DVR, etc;<br />
<br />
F series are processors based on Allwinner’s melis OS, mainly used in smart video radios, video MP5, etc;<br />
<br />
== "A"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7, A8 and A15) targeted for high-end devices like digital media players, tablets, and netbooks:<br />
{| class="wikitable"<br />
| [[A10|Allwinner A10]] || <small>(sun4i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A13|Allwinner A13]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A10s|Allwinner A10s]] || <small>(sun5i)</small> || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[A20|Allwinner A20]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=45</ref> || <small>(sun7i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A23|Allwinner A23]] || <small>(sun8i)</small> || 2 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31|Allwinner A31]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A31s|Allwinner A31s]] || <small>(sun6i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A33|Allwinner A33]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=23</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-cores<br />
|-<br />
| [[A80|Allwinner A80]] || <small>(sun9i)</small> || 4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores&nbsp;<br /><small>(using ARM big.LITTLE heterogeneous CPU architecture)</small><br />
|-<br />
| [[A83T|Allwinner A83T]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=24</ref> || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=9</ref> || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7/ARMv8 Cortex-A cores (A7/A53) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H2+|Allwinner H2+]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=62</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H3|Allwinner H3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=47</ref> || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=46</ref> || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[H5|Allwinner H5]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=57</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H6|Allwinner H6]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=66</ref>&nbsp; || <small>(sun50i)</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|-<br />
| [[H64|Allwinner H64]]<ref>http://web.archive.org/web/20160425223052/http://www.allwinnertech.com/en/clq/H_series/6100.html</ref> || <small>(sun50i)</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>http://web.archive.org/web/20160510053338/http://www.allwinnertech.com/en/clq/R_series/2015/0514/R8.html</ref> || <small>(sun5i)</small>&nbsp; || 1 x Cortex-A8 CPU-core<br />
|-<br />
| [[R16|Allwinner R16]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=51</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R40|Allwinner R40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=56</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R58|Allwinner R58]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=49</ref>&nbsp; || <small>(sun8i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 is repackaged version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s [[NextThingCo CHIP|''C.H.I.P.'']] kickstarter project ("The $9 computer")<ref>http://nextthing.co/</ref>.<br />
<br />
By comparing the product pages the R16 seems to be a relabeled version of A33. This is somewhat confirmed by the (identical) SoC ID the BROM reports.<ref>https://groups.google.com/d/msg/linux-sunxi/vx6oQMy-nis/vgVc8d1KBAAJ</ref><br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[R18|Allwinner R18]]|| <small>sun50i</small> || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "V"-series ==<br />
<br />
{| class="wikitable"<br />
| [[V3|Allwinner V3]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=37</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V3s|Allwinner V3s]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=38</ref> || <small>(sun8i)</small> || 1 x Cortex-A7 CPU-core<br />
|-<br />
| [[V40|Allwinner V40]]<ref>http://allwinnertech.com/index.php?c=product&a=index&id=36</ref> || <small>(sun8i)</small> || 4 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "F"-Series ==<br />
:'''{{note|The F series is not supported by the linux-sunxi community due to lack of developers and hardware. ''sun3i'' have only official linux support, ''sunii'' have no linux support, only Allwinner's "Melis" RTOS.}}'''<br />
<br />
Based on ARMv6 ARM926-EJS core and currently targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
{| class="wikitable"<br />
| [[C100|Boxchip C100]] || <small>(sun3i)</small><br />
|-<br />
| [[E200|Boxchip E200]] || <small>(sun3i)</small><br />
|-<br />
| [[F20|Boxchip F20]] || <small>(sun3i)</small><br />
|-<br />
| [[F10|Boxchip F10]] <small>aka SoChip SC9800 aka Teclast T8100</small>&nbsp; || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F13]] || <small>(sunii)</small><br />
|-<br />
| [[F13|Boxchip F15]] <small>aka SoChip SC8600 aka Teclast T7200</small> || <small>(sunii)</small><br />
|-<br />
| [[F18|Boxchip F18]] || <small>(sunii)</small><br />
|}<br />
<br />
= 2013 naming scheme change =<br />
<br />
Initially, Allwinner named their SoCs chronologically:<br />
* sun4i = A10<br />
* sun5i = A13/A10s<br />
* sun6i = A31<br />
* sun7i = A20<br />
<br />
But, somewhere in 2013, Allwinner decided to update their naming scheme to be based on the ARM core used instead: (taken from the A80 SDK kernel code). Note: SoCs with ? has never appeared on Allwinner's website. <ref>https://github.com/tinalinux/brandy/blob/r40-v1.y/SUNXI_README</ref><br />
<br />
{| class="wikitable"<br />
! sunxi (arm cores) !! sunxiwx (soc id) !! p !! soc name !! cores !! notes<br />
|-<br />
| suniv (arm926ejs)<br />
|-<br />
| || sunivw1 (0x1663)<br />
|-<br />
| || || sunivw1p1 || [F1C100s], [F1C100A], [F1C200s], [F1C500], [F1C600], [R6] || 1xARM926EJ-S<br />
|-<br />
| sun4i (cortex-a8) <br />
|-<br />
| || sun4iw1 (0x1623)<br />
|-<br />
| || || sun4iw1p1 || [[A10]] || 1xCortex-A8<br />
|-<br />
| || sun4iw2 (0x1625)<br />
|-<br />
| || || sun4iw2p1 || [[A13]] || 1xCortex-A8<br />
|-<br />
| || || sun4iw2p2 || [[A12]]<br />
|-<br />
| || || sun4iw2p3 || [[A10s]] || 1xCortex-A8<br />
|-<br />
| sun8i (cortex-a7 smp)<br />
|-<br />
| || sun8iw1 (0x1633)<br />
|-<br />
| || || sun8iw1p1 || [[A31]] || 4xCortex-A7<br />
|-<br />
| || || sun8iw1p2 || [[A31s]] || 4xCortex-A7<br />
|-<br />
| || sun8iw2 (0x1651)<br />
|-<br />
| || || sun8iw2p1 || [[A20]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw2p2 ||<br />
|-<br />
| || sun8iw3 (0x1650)<br />
|-<br />
| || || sun8iw3p1 || [[A23]] || 2xCortex-A7<br />
|-<br />
| || || sun8iw3p2 || <br />
|-<br />
| || sun8iw5 (0x1667)<br />
|-<br />
| || || sun8iw5p1 || [[A33]] || 4xCortex-A7<br />
|-<br />
| || sun8iw6 (0x1673)<br />
|-<br />
| || || sun8iw6p1 || [[A83T]] || 8xCortex-A7<br />
|-<br />
| || sun8iw7 (0x1680)<br />
|-<br />
| || || sun8iw7p1 || [[H3]], [[H2+]] || 4xCortex-A7<br />
|-<br />
| || sun8iw8 (0x1681)<br />
|-<br />
| || || sun8iw8p1 || [[V3]], [[V3s]] || 1xCortex-A7 || called V30 in allwinner's kernel source<br />
|-<br />
| || || sun8iw8p2 || ? || || called V33 in allwinner's kernel source<br />
|-<br />
| || sun8iw10 (0x1699)<br />
|-<br />
| || || sun8iw10p1 || [[B288]]<br />
|-<br />
| || sun8iw11 (0x1701)<br />
|-<br />
| || || sun8iw11p1 || [[R40]], [[V40]], [[A20e]]? || 4xCortex-A7<br />
|-<br />
| sun9i (cortex-a15.cortex-a7 big.LITTLE)<br />
|-<br />
| || sun9iw1 (0x1639)<br />
|-<br />
| || || sun9iw1p1 || [[A80]] || 4xCortex-A7 + 4xCortex-A15<br />
|-<br />
| || || sun9iw1p2 || [[A80T]]<br />
|-<br />
| sun50i (cortex-a53 smp)<br />
|-<br />
| || sun50iw1 (0x1689)<br />
|-<br />
| || || sun50iw1p1 || [[A64]] || 4xCortex-A53<br />
|-<br />
| || sun50iw2 (0x1718)<br />
|-<br />
| || || sun50iw2p1 || [[H5]] || 4xCortex-A53<br />
|-<br />
| || sun50iw6 (0x1728)<br />
|-<br />
| || || sun50iw6p1 || [[H6]] || 4xCortex-A53<br />
|}<br />
<br />
This new naming scheme is of absolutely no value with respect to the rest of the SoC. The actual ARM core(s) used are usually the least important piece of information for SoC support. This table completely ignores the fact that A20 is an updated A10 and is pin compatible. It also ignores the fact that A31 introduced a lot of changes which were carried on to the A23/A33 and possibly A80 parts. It therefore is quite likely that this naming scheme was purely a marketing decision, and that Allwinner marketing will change its mind again.<br />
<br />
= Features =<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], [http://en.wikipedia.org/wiki/ARM_Cortex-A15 Cortex-A15] or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit with (co-)processor extensions:<br />
** Advanced SIMD: [http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** [[Vector Floating Point Unit]] ([http://en.wikipedia.org/wiki/ARM_architecture#Floating-point_.28VFP.29 VFPU]): ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7)<br />
** Security Extensions: <br />
*** [http://en.wikipedia.org/wiki/ARM_architecture#Security_extensions_.28TrustZone.29 TrustZone] secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2 Thumb-2] instruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400-MP2, SGX544 or PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES2.<br />
* VPU: [[Cedar Engine]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [http://en.wikipedia.org/wiki/HDMI#CEC HDMI CEC] (Consumer Electronics Control), with exception of A13 which lacks HDMI-transmitter and SATA-controller<ref>[http://olimex.wordpress.com/2012/04/24/cortex-a8-in-tqfp-sure-allwinner-a13/ "Cortex A8 in TQFP? sure Allwinner A13"] ''Retrieved 23 September 2012''</ref><br />
* Hardware virtualization capabilities (Cortex-A7 only).<br />
* Up to 4GB memory (Cortex-A8), Up to 1TB memory with LPAE (Cortex-A7 only).<br />
<br />
== Comparison table ==<br />
{| class="wikitable"<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun6i || sun8i || sun9i <br />
|-<br />
! scope="row" | CPU<br />
| Cortex-A8 || Cortex-A8 || Cortex-A8 || Cortex-A7 || Cortex-A7 ||Cortex-A7 || Cortex-A7 || Cortex-A7 || Cortex-A7 / A15 <br />
|-<br />
! scope="row" | CPU Maximum frequency<br />
| 1 GHz|| 1 GHz || 1 GHz|| 960 MHz|| 1.5 GHz || ? GHz || ? GHz || 1.5 GHz || 2 (??) GHz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2 x 4<br />
|-<br />
! scope="row" | Extensions<br />
| NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 ||NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || NEON, VFPv3 / VFPv4, Thumb-2 || ? (A80)<br />
|-<br />
! scope="row" | Memory<br />
| DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 2GB @ DDR800) || DDR2, DDR3</br> (max 512MB @ DDR800) || LPDDR3, DDR3,</br>LPDDR2 || DDR3</br>(max 1GB) || 2-channel DDR3, LPDDR2, </br>2-channel DDR3L, DDR3U || DDR3, DDR3L, LPDDR2 || single-channel DDR3, DDR3L</br>(max 1GB) || 2-channel DDR3, DDR3L, LPDDR3, LPDDR2</br> up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]</br>320&nbsp;MHz || [[Mali400]]-MP2</br>350&nbsp;MHz || [[Mali400]]-MP2 || SGX544</br>200&nbsp;MHz || SGX544</br>200&nbsp;MHz || [[Mali400]]-MP2 || 64-core PowerVR G6230<br />
|-<br />
! scope="row" | GPU API<br />
| OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1, OpenCL 1.1, and DirectX 9.3 || OpenGL ES 2.0, OpenVG 1.1 || OpenGL 3.x, OpenGL ES Next,3.0,2.0, Open CL 1.x, DirectX 11 level 9_3/10_0<ref>http://www.imgtec.com/news/detail.asp?ID=845</ref><br />
|-<br />
! scope="row" | [[Cedar Engine|Video decoder]]<br />
| 2160p || 1080p || 1080p || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || 2160p, 1080p 3D || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[Cedar Engine|Video encoder]]<br />
| H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || H.264 1080p@30fps, JPEG || 1080p@60fps || H.264 1080p@60fps, JPEG || H264 1080p@30fps, 720p@60fps || H.264 1080p@60fps, JPEG || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | Audio decoder<br />
| AC3, DTS || ? || ? || AC3, DTS || - || ? (A31) || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Video interfaces<br />
| HDMI 1.3, YPbPr, VGA, CPU/RGB/LVDS LCD || HDMI 1.3, RGB/LVDS LCD || RGB LCD, VGA|| HDMI 1.4, CVBS, YPbPr, VGA, CPU/RGB/LVDS LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || HDMI 1.4, LVDS, RGB LCD || CPU/RGB/LVDS LCD, MIPI DSI || HDMI 4K, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
|-<br />
! scope="row" | Audio interfaces<br />
| I2S, SPDIF, AC97 || I2S, AC97 || I2S, AC97 || I2S, PCM, AC97 || I2S, PCM || 2 I2S, 2 PCM || I2S, 2 PCM || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || 1 || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || 2 || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || GMAC || GMAC || - || GMAC<br />
|-<br />
! scope="row" | Storage<br />
| NAND (max 64GB), SATA II, SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND (max 64GB), SD Card 3.0 || NAND, MMC, [http://olimex.wordpress.com/2013/04/05/allwinners-a10-and-a20-are-they-really-pin-to-pin-compatible-and-drop-in-replacement/#comment-5452 SATA] || raw NAND, eMMC, SD card || 4 x SD Card, eMMC NAND, 2-channel raw NAND || 4 x SD Card, eMMC NAND, raw NAND || 3 x SD Card, eMMC NAND, raw NAND || 4 x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA336</br>14&nbsp;mm&nbsp;×&nbsp;14&nbsp;mm</br>0.65&nbsp;mm Pitch || eLQFP176</br>20&nbsp;mm&nbsp;×&nbsp;20&nbsp;mm ||BGA441</br>19&nbsp;mm&nbsp;×&nbsp;19&nbsp;mm</br>0.80&nbsp;mm Pitch || FBGA280</br>14&nbsp;mm&nbsp;x&nbsp;14&nbsp;mm&nbsp;x&nbsp;1.4&nbsp;mm</br>0.80&nbsp;mm Pitch || BGA609</br>18&nbsp;mm&nbsp;×&nbsp;8&nbsp;mm</br>0.65&nbsp;mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Lithography<br />
| 55 nm || 55 nm|| 55 nm || 40 nm || 40 nm || 40 nm || 40 nm || 40 nm || 28 nm<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
= References =<br />
<references /><br />
<br />
[[Category:System on Chip]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=SID_Register_Guide&diff=20867
SID Register Guide
2018-01-17T04:20:32Z
<p>Icenowy: Add info of NV2 and CHIP_CONFIG</p>
<hr />
<div>= Security ID =<br />
So far, all Allwinner A-series SoC come with a bit of memory called 'SID'. So far, for all chips this is 128 bits of freely? usable memory, with a catch. These 128 bits of memory, are not in RAM or ROM, they are so called [http://en.wikipedia.org/wiki/EFUSE e-fuses].<br />
<br />
By default, the chip ID or revision is written to these fusions and possibly some form of serial number. While modifying is untested at this moment, it is possible to read the fuses.<br />
<br />
A few use cases for the SID are, but not limited to:<br />
* Generate per-device unique MAC address<br />
* Store/use as an RSA etc key<br />
* Write in-house serial numbers<br />
<br />
== Info ==<br />
SID Base address: '''0x01c23800'''<br />
<br />
For Allwinner [[A83T]] and [[H3]] the SID address space starts at 0x01c14000, and the e-fuses are at offset 0x200 - so the address to use for these SoCs is '''0x01c14200'''.<br />
<br />
==== SID Registers ====<br />
{| class="wikitable" |<br />
! Register Name<br />
! Offset<br />
! Size<br />
! Description<br />
! Note<br />
|-<br />
| <tt>SID_KEY0</tt><br />
| <tt>0x00</tt><br />
| <tt>4 B</tt><br />
| Key0 [0:31]<br />
|<br />
|-<br />
| <tt>SID_KEY1</tt><br />
| <tt>0x04</tt><br />
| <tt>4 B</tt><br />
| Key1 [32:63]<br />
|<br />
|-<br />
| <tt>SID_KEY2</tt><br />
| <tt>0x08</tt><br />
| <tt>4 B</tt><br />
| Key2 [64:95]<br />
|<br />
|-<br />
| <tt>SID_KEY3</tt><br />
| <tt>0x0c</tt><br />
| <tt>4 B</tt><br />
| Key3 [96:127]<br />
|<br />
|-<br />
| <tt>SID_WRITE_DATA</tt><br />
| <tt>0x40</tt><br />
| <tt>4 B</tt><br />
| Data [0:31]<br />
| NOT VERIFIED<br />
|-<br />
| <tt>SID_WRITE_CTRL</tt><br />
| <tt>0x44</tt><br />
| <tt>4 B</tt><br />
| SID Program Control register<br />
|<br />
|}<br />
<br />
<br />
===== SID_KEY[0-3] =====<br />
Default value: undefined<br /><br />
Offset: 0x0{0, 4, 8, c}<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>KEY[0-3]</tt><br />
| <tt>0:31</tt><br />
| <tt>Read</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| 32 bits for SID<br />
|}<br />
<br />
<br />
===== SID_WRITE_DATA =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x40<br />
<br />
<p>We think this is the data register used when programming the SID efuses. <br />
<br />
<p>There is also a EFUSE_VDDQ pin (pin T9 on A10) which is normally tied to GND but which we guess needs to have suitable power to enable efuse programming. Details unknown.<br />
<br />
===== SID_WRITE_CTRL =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x44<br />
<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>SID_WRITE_START</tt><br />
| <tt>0</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = done writing<br />
0x01 = start writing<br />
</tt><br />
| Writes when enabled, returns to 0 after writing.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>1:3</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|-<br />
| <tt>SID_WRITE_POS</tt><br />
| <tt>4:7</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = macrocell 0<br />
0x01 = macrocell 1<br />
0x02 = macrocell 2<br />
0x03 = macrocell 3<br />
</tt><br />
| Index of which of the 4 hardware macrocell fuses to burn. It is currently unknown where to obtain said value from but a guess is register 0x40.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>8:31</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|}<br />
<br />
= A83T, H3, A64, ... =<br />
<br />
Newer SoCs have a 2 kbit eFUSE area with a new controller.<br />
<br />
== Registers ==<br />
<br />
Base address: <tt>0x01c14000</tt><br />
<br />
{| class="wikitable" |<br />
! Register Name !! Offset !! Size !! Description<br />
|-<br />
| [[#SID_PRCTL|SID_PRCTL]] || 0x40 || 4B || Control register<br />
|-<br />
| [[#SID_PRKEY|SID_PRKEY]] || 0x50 || 4B || Program data<br />
|-<br />
| [[#SID_RDKEY|SID_RDKEY]] || 0x60 || 4B || Read data<br />
|}<br />
<br />
=== SID_PRCTL ===<br />
<br />
{{REG|SID_PRCTL|offset=0x40|<br />
{{REG/FIELD|31:24| <br />
|description=''reserved''}}<br />
{{REG/FIELD|23:16| SID_PRCTL_OFFSET<br />
|description=eFUSE offset}}<br />
{{REG/FIELD|15:8 | SID_PRCTL_OP_LOCK<br />
|mode=W|values=<pre>0xac</pre><br />
|description=magic value to prevent accidental programming}}<br />
{{REG/FIELD| 7:2 | <br />
|description=''reserved''}}<br />
{{REG/FIELD| 1 | SID_PRCTL_READ<br />
|description=write 1 to read eFUSE, clears after finish}}<br />
{{REG/FIELD| 0 | SID_PRCTL_WRITE<br />
|description=write 1 to program eFUSE, clears after finish}}<br />
}}<br />
<br />
=== SID_PRKEY ===<br />
<br />
{{REG|SID_PRKEY|offset=0x50|<br />
{{REG/FIELD|31:0 | SID_PRKEY<br />
|description=data to program to eFUSE}}<br />
}}<br />
<br />
=== SID_RDKEY ===<br />
<br />
{{REG|SID_RDKEY|offset=0x60|<br />
{{REG/FIELD| 31:0 | SID_RDKEY<br />
|description=data read from eFUSE}}<br />
}}<br />
<br />
== eFUSE ==<br />
<br />
{| class="wikitable" |<br />
! Name !! Offset !! Size !! Description<br />
|-<br />
| CHIPID || 0x00 || 128 bit || Chip-ID, also known as SID<br />
|-<br />
| OEM_PROGRAM || 0x10 || 32 bit || ''unknown''<br />
|-<br />
| NV1 || 0x14 || 32 bit || ''unknown''<br />
|-<br />
| NV2 || 0x18 || 64 bit || BSP Wi-Fi MAC address (according to SDK)<br />
|-<br />
| RSAKEY_HASH || 0x20 || 160 bit || ''unknown''<br />
|-<br />
| THERMAL_SENSOR || 0x34 || 64 bit || Thermal sensor calibration data<br />
|-<br />
| RENEWABILITY || 0x3c || 64 bit || ''unknown''<br />
|-<br />
| HUK || 0x44 || 256 bit || ''unknown, later split in IN(192), IDENTIFI(32), ID(32)''<br />
|-<br />
| [[#ROTPK_HASH|ROTPK_HASH]] || 0x64 || 256 bit || SHA256 hash of the "Root of Trust" public key<br />
|-<br />
| SSK || 0x84 || 128 bit || ''unknown''<br />
|-<br />
| RSSK || 0x94 || 256 bit || ''unknown''<br />
|-<br />
| HDCP_HASH || 0xb4 || 128 bit || ''unknown''<br />
|-<br />
| EK_HASH || 0xc4 || 128 bit || ''unknown''<br />
|-<br />
| SN || 0xd4 || 192 bit || ''unknown, RESERVED before A64''<br />
|-<br />
| NV2_BACKUP || 0xec || ? bit || ''unknown, RESERVED before A64''<br />
|-<br />
| [[#LCJS|LCJS]] || 0xf4 || 32 bit || Flags (secure boot mode, ...)<br />
|-<br />
| DEBUG || 0xf8 || 32 bit || ''unknown''<br />
|-<br />
| CHIP_CONFIG || 0xfc || 32 bit || Status of the keys (already written, read allowed, etc)<br />
|}<br />
<br />
=== ROTPK_HASH ===<br />
<br />
Contains the SHA256 hash of the 2048-bit public key used to verify the signature of the first code executed after BROM, the so-called [[TOC0]].<br />
<br />
ROTPK_HASH = SHA256([Byte 0-255] = RSA modulus || [Byte 256-x] = RSA public exponent || [Byte x-511] filled with 0x91)<br />
<br />
The hash isn't checked as long as all 32-bit words in this eFUSE have the same value. This means, only the signature is verified, but not the key used to sign, so any key can be used.<br />
<br />
=== LCJS ===<br />
<br />
{| class="wikitable" |<br />
! Name !! Bits !! Values !! Description<br />
|-<br />
| LCJS_CUSTOM_DMA_WAIT || 31:30<br />
| <pre><br />
0x2 = custom wait cycles (para0 * para1)<br />
other = fixed wait cycles (32)<br />
</pre><br />
| BROM flag: DMA wait cycles<br />
|-<br />
| LCJS_CE_CLK_SRC || 29:28<br />
| <pre><br />
0x2 = PLL_PERIPH0/4<br />
other = OSC24M<br />
</pre><br />
| SBROM flag: CE clock source<br />
|-<br />
| LCJS_DMA_WAIT_PARA1 || 27:24<br />
|<br />
| BROM param: DMA wait cycles<br />
|-<br />
| LCJS_DMA_WAIT_PARA0 || 23:20<br />
|<br />
| BROM param: DMA wait cycles<br />
|-<br />
| LCJS_SW_SHA256 || 19:18<br />
| <pre><br />
0x2 = software SHA256<br />
other = CE hardware SHA256<br />
</pre><br />
| SBROM flag: use software SHA256 instead of CE<br />
|-<br />
| LCJS_MAGIC_FEL_FLAG || 17:16<br />
| <pre><br />
0x2 = set flag<br />
other = don't set flag<br />
</pre><br />
| SBROM flag: write magic value at 0x2800, which is checked by FEL code (what does FEL do with it?)<br />
|-<br />
| LCJS_SECURE_BOOT || 11 || <pre><br />
0x1 = secure boot<br />
0x0 = normal boot<br />
</pre><br />
|}<br />
<br />
= Currently known SID's =<br />
<br />
You may try to retrieve the SID value via our [[sunxi-tools]] (<code>./sunxi-fel sid</code>) - or dump it from within U-Boot using the corresponding, SoC-specific address (e.g. <code>md.l 0x01c23800 4</code>). If running a mainline kernel hexdump should be sufficient.<br />
<pre>hexdump -C /sys/devices/platform/soc@01c00000/1c23800.eeprom/eeprom<br />
00000000 16 51 66 c6 80 51 77 89 54 53 48 48 0a 40 f2 67 |.Qf..Qw.TSHH.@.g|<br />
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|<br />
</pre><br />
<br />
Simple script to run on legacy kernel with devmem2:<br />
<pre>d0=`./devmem2 0x01c14200 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d1=`./devmem2 0x01c14204 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d2=`./devmem2 0x01c14208 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d3=`./devmem2 0x01c1420c w|grep Value|sed 's/^.*: 0x/ /'`<br />
echo $d0 $d1 $d2 $d3<br />
</pre><br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Board !! eeprom !! package batch !! notes<br />
|-<br />
|colspan="4" style="text-align:center;"|'''A10'''<br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236747 80728452 50574848 064163D5</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367C7 80778052 50554848 0201DDC3</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236750 80758352 52574848 08025081</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236745 80778052 50554848 07C171AD</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 0642d3e9</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236790 80758952 54544848 03c21c4e</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367d9 80758952 54544848 08c21483</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236798 80758952 54544848 0781186a</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623674c 80758952 54544848 0a02c845</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623670f 80758952 54544848 0981e268</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623678b 80778251 54534848 0a4285d6</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 06410f3d</tt><br />
|-<br />
| Gemei G9 (A10) || <tt>16236712 80726652 57524848 04c29968</tt><br />
|-<br />
| Mele A1000 (A10) early version || <tt>00000000 00000000 00000000 00000000</tt><br />
|-<br />
| pcDuino (A10) || <tt>16236755 80758952 53554848 0a41e8c9 </tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A10s'''<br />
|-<br />
| R7 hdmi-stick (A10s) || <tt>16254157 504B4133 30397030 0A41FA85</tt><br />
|-<br />
| mk802 hdmi-stick (A10s) || <tt>16254115 50484E39 35397030 0D02F6E8</tt><br />
|-<br />
| OlinuXino (A10S) || <tt>162541d3 50485937 30357030 04020663</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A13''' / '''R8'''<br />
|-<br />
| A13B tablet (A13) || <tt>16254216 504E4837 39313030 06819C58</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254147 50475838 36313030 0341B75D</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254159 50475838 36313030 0B4181E9</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254158 504B4E39 35303030 0A0185F5</tt><br />
|-<br />
| OlinuXIno Micro (A13) || <tt>16254187 504b4e39 35303030 094313f2</tt><br />
|-<br />
| NextThingCo CHIP v1.0 (R8) || <tt>1625420f 50303647 36363030 0400b0b0</tt><br />
|-<br />
| NextThingCo CHIP v1.0 (R8) || <tt>16254293 50303858 31333030 0282919a</tt><br />
|-<br />
| Nolimbook (A13) || <tt>162542c1 50525039 30313030 06420e6b</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A20'''<br />
|-<br />
| EOMA68-A20 (A20) || <tt>165165c7 80807552 55564848 0842c7fb</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516683 80485172 49514848 0940e0da </tt> || || [[User:plaes|plaes]], via sunxi-fel<br />
|-<br />
| Cubietruck (A20) || <tt>16516507 80808952 56524848 03c18168</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516581 80808952 56524848 0583548e </tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516587 80808952 56524848 0b81d536 </tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651664f 80485686 53504848 0702dde9</tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651668a 80485788 51484848 02825172</tt><br />
|-<br />
| Banana Pi M1 (A20) || <tt>165166cc 80485666 53564848 09c255a3</tt> || || kc's<br />
|-<br />
| Banana Pi R1 (A20) || <tt>16516604 80485686 52524848 0641E864</tt> || || kc's bpi-r1 (using devmem2)<br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>16516608 80485172 49484848 0800ccfc</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>165166c6 80517789 54534848 0a40f267</tt><br />
|-<br />
| A20-OLinuXino-MICRO (A20) || <tt>00000000 00000000 00000000 00000000 </tt> || || (2 verified)<br />
|-<br />
| Cubieboard 2.0 1024 (A20) || <tt>00000000 00000000 00000000 00000000 </tt> || || (3 verified)<br />
|-<br />
|colspan="4" style="text-align:center;"|'''A31s''', sid in AXP221<br />
|-<br />
| CSQ CS908 (A31s) || <tt>16524251 434e3038 34010088 080d81eb</tt><br />
|-<br />
| Mele A1000G quad (A31) || <tt>16524251 43423635 32000045 060a7a38</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A33'''/'''R16'''<br />
|-<br />
| Aoson M751S (A33) || <tt>0461872a 034c0106 9b486765 00000000</tt><br />
|-<br />
| iNet D978 Rev02 (A33) || <tt>0461872a 03386006 1846b855 00000000</tt><br />
|-<br />
| Nintendo NES Classic (R16) || <tt>0461872a 86583185 9ae7d847 6c118000</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''H2+'''<br />
|-<br />
| Orange Pi Zero || <tt>02004620 3435c614 5030034e 58000032</tt><br />
|-<br />
| Orange Pi Zero || <tt>02c00042 34004620 5035c614 0439098e</tt> || <tt>G6079BA 67B1</tt><br />
|-<br />
| Banana Pi M2 Zero (early sample without VDD-CPUX regulation) || <tt>02c00042 44004620 78674320 041e044e</tt> || <tt>G9035BA 6CD5</tt><br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''H3'''<br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 502d05ce 5800006c</tt><br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 50350a8e 4c000022</tt><br />
|-<br />
| HYH-TBH3 || <tt>02C00081 00004620 51900618 a058e187</tt> || || BroderTuck's 'Smart Android Box' (using devmem2)<br />
|-<br />
| NanoPi NEO || <tt>02004620 24358810 502405ce 2800000a</tt><br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 2c2e0c4e</tt> || G5071BA 65L3 || Lion's batch -- #1<br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 2417068e</tt> || G5071BA 65L3 || Lion's batch -- #2<br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 242301ce</tt> || G5071BA 65L3 || Lion's batch -- #3<br />
|-<br />
| NanoPi M1 || <tt>02004620 64358720 50320c8e 40000069</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 5040068e 54000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 502b0a8e 24000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 24340408 50330d0e 60000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 34344314 503a04ce 80000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 34344314 503b0c0e 80000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02c00081 94004620 50340508 3035080e</tt> || <tt>F7008BA 68E3</tt>|| kc's opipc#1<br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50354520 1033080e</tt> || <tt>G2064BA 62T3</tt>|| kc's opipc#2<br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50354520 1c34020e</tt> || || NiteHawk's OPiPC, (incorrect) value before was<br><tt>02004620 54354520 5034020e 1c000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50358720 4c1c058e</tt> || <tt>G4075BA 64P3</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 50340a0e 4c00006f</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 5024010e 5c000080</tt><br />
|-<br />
| Orange Pi Plus || <tt>02004620 94340508 501a050e 4000006d</tt><br />
|-<br />
| Orange Pi Plus 2 || <tt>02004620 34344314 5021034e 5c000000</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 501d078e 4c000060</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 503f050e 48000085</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02c00081 14004620 5035811c 4423098e</tt> || <tt>G4060BA-64H3</tt> || kc's opi+2e<br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5022018e 64000022</tt><br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5018050e 3c000011</tt><br />
|-<br />
| Orange Pi Lite || <tt>02c00081 14004620 50354718 3422048e</tt><br />
|-<br />
| Orange Pi One || <tt>02004620 9435430c 502e034e 58000000</tt><br />
|-<br />
| Orange Pi One || <tt>02004620 4435c204 502404ce 20000065</tt><br />
|-<br />
| Orange Pi One || <tt>02c00081 74004620 50358720 3c27048e</tt> || <tt>G5039BA 6593</tt><br />
|-<br />
| Orange Pi 2 || <tt>02004620 34900700 51360a0c 0c000050</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''H5'''<br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 24004704 5035c120 303403cc</tt><br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 44004704 5035c120 2c2d07cc</tt><br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 34004704 5035c120 1c2d02cc</tt> || <tt>G7015AA 67E1</tt><br />
|-<br />
| Orange Pi Prime || <tt>82800001 34004704 5035c200 382f020c</tt> || <tt>G8112AA 6AU2</tt><br />
|-<br />
| NanoPi NEO2 || <tt>82800001 34004704 5035c200 3c2b068c</tt> || <tt>G8112AA 6AU2</tt> || FriendlyELEC sent to Icenowy, #1<br />
|-<br />
| NanoPi NEO2 || <tt>82800001 34004704 5035c200 303a080c</tt> || <tt>G8112AA 6AU2</tt> || FriendlyELEC sent to Icenowy, #2, in the same order with #1<br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''A64'''<br />
|-<br />
| Pine64 sample (green LED) || <tt>92c000ba 24104620 51900808 14160acb</tt><br />
|-<br />
| Pine64+ sample (green LED) || <tt>92c000ba 24004620 51900808 141709cb</tt><br />
|-<br />
| Pine64+ (red LED) || <tt>92c000ba 04004620 51900804 0805070b</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 04004620 51900804 040905cb</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 54104620 51900808 581802cb</tt> || <tt>F8059BA 4977</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 54104620 51900808 280c094b</tt> || <tt>F8059BA 4977</tt><br />
|-<br />
| SoPine RevC || <tt>92c000ba 84004620 50344424 141908cd</tt> || <tt>F9192BA 4967</tt><br />
|-<br />
| Banana Pi M64 || <tt>92c000ba 84104620 51900800 6020024b</tt><br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''H64'''<br />
|-<br />
| Jide Remix Mini || <tt>92c000bb 44004620 51900808 1011028b</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''R40'''<br />
|-<br />
| Banana Pi M2 Ultra || <tt>12c00017 14104700 5190410c 2417088c</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''V3s'''<br />
|-<br />
| Lichee Pi Zero || <tt>12c00000 44104620 5033c810 5c23118d</tt><br />
|}<br />
<br />
:{{note|The H3 SIDs starting with 02004620 are likely wrong due to a quirk of H3.}} A silicon bug manifests itself in a way that returns a garbled SID (root key) when reading the values solely via memory access. Accessing the SID ''once'' via register access seems to fix this, even for subsequent memory reading - see the [https://groups.google.com/forum/#!topic/linux-sunxi/ynyIP8c61Qs discussion on the mailing list]. Corresponding entries in the table above therefore cannot be trusted, and need to be refreshed. A [https://github.com/linux-sunxi/sunxi-tools/commit/a3ce5f9f76a371e54eb51445720682a35d7fa8a2 fix for sunxi-fel] is now available.<br />
<br />
Newer SoC families no longer seem to follow the above pattern of containing the SoC ID within the first value.<br><br />
However, the leading 32 bits still appear to be consistent among the same SoCs:<br />
<br />
{| class="wikitable" |<br />
! SoC !! ID !! SID key<br />
|-<br />
| A33 (R16) || 0x1667 || <tt>0461872a [...]</tt><br />
|-<br />
| A64 || 0x1689 || <tt>92c000ba [...]</tt><br />
|-<br />
| A83T || 0x1673 || <tt>32c00401 [...]</tt><br />
|-<br />
| H3 || 0x1680 || <tt>02c00081 [...]</tt><br />
|-<br />
| H5 || 0x1718 || <tt>82800001 [...]</tt><br />
|-<br />
| H64 || 0x1689 || <tt>92c000bb [...]</tt><br />
|-<br />
| R40 || 0x1701 || <tt>12c00017 [...]</tt><br />
|}<br />
<br />
[[Category:A10 Register guide]]<br />
[[Category:A13 Register guide]]<br />
[[Category:A20 Register guide]]<br />
<br />
[[Category:Hardware]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=SID_Register_Guide&diff=20854
SID Register Guide
2018-01-07T14:54:36Z
<p>Icenowy: add SID of my early sample bpi m2 zero</p>
<hr />
<div>= Security ID =<br />
So far, all Allwinner A-series SoC come with a bit of memory called 'SID'. So far, for all chips this is 128 bits of freely? usable memory, with a catch. These 128 bits of memory, are not in RAM or ROM, they are so called [http://en.wikipedia.org/wiki/EFUSE e-fuses].<br />
<br />
By default, the chip ID or revision is written to these fusions and possibly some form of serial number. While modifying is untested at this moment, it is possible to read the fuses.<br />
<br />
A few use cases for the SID are, but not limited to:<br />
* Generate per-device unique MAC address<br />
* Store/use as an RSA etc key<br />
* Write in-house serial numbers<br />
<br />
== Info ==<br />
SID Base address: '''0x01c23800'''<br />
<br />
For Allwinner [[A83T]] and [[H3]] the SID address space starts at 0x01c14000, and the e-fuses are at offset 0x200 - so the address to use for these SoCs is '''0x01c14200'''.<br />
<br />
==== SID Registers ====<br />
{| class="wikitable" |<br />
! Register Name<br />
! Offset<br />
! Size<br />
! Description<br />
! Note<br />
|-<br />
| <tt>SID_KEY0</tt><br />
| <tt>0x00</tt><br />
| <tt>4 B</tt><br />
| Key0 [0:31]<br />
|<br />
|-<br />
| <tt>SID_KEY1</tt><br />
| <tt>0x04</tt><br />
| <tt>4 B</tt><br />
| Key1 [32:63]<br />
|<br />
|-<br />
| <tt>SID_KEY2</tt><br />
| <tt>0x08</tt><br />
| <tt>4 B</tt><br />
| Key2 [64:95]<br />
|<br />
|-<br />
| <tt>SID_KEY3</tt><br />
| <tt>0x0c</tt><br />
| <tt>4 B</tt><br />
| Key3 [96:127]<br />
|<br />
|-<br />
| <tt>SID_WRITE_DATA</tt><br />
| <tt>0x40</tt><br />
| <tt>4 B</tt><br />
| Data [0:31]<br />
| NOT VERIFIED<br />
|-<br />
| <tt>SID_WRITE_CTRL</tt><br />
| <tt>0x44</tt><br />
| <tt>4 B</tt><br />
| SID Program Control register<br />
|<br />
|}<br />
<br />
<br />
===== SID_KEY[0-3] =====<br />
Default value: undefined<br /><br />
Offset: 0x0{0, 4, 8, c}<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>KEY[0-3]</tt><br />
| <tt>0:31</tt><br />
| <tt>Read</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| 32 bits for SID<br />
|}<br />
<br />
<br />
===== SID_WRITE_DATA =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x40<br />
<br />
<p>We think this is the data register used when programming the SID efuses. <br />
<br />
<p>There is also a EFUSE_VDDQ pin (pin T9 on A10) which is normally tied to GND but which we guess needs to have suitable power to enable efuse programming. Details unknown.<br />
<br />
===== SID_WRITE_CTRL =====<br />
Default value: 0x00000000<br /><br />
Offset: 0x44<br />
<br />
{| class="wikitable" |<br />
! Name<br />
! Bit<br />
! Read/Write<br />
! Default (Hex)<br />
! Values<br />
! Description<br />
|-<br />
| <tt>SID_WRITE_START</tt><br />
| <tt>0</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = done writing<br />
0x01 = start writing<br />
</tt><br />
| Writes when enabled, returns to 0 after writing.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>1:3</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|-<br />
| <tt>SID_WRITE_POS</tt><br />
| <tt>4:7</tt><br />
| <tt>Read/Write</tt><br />
| <tt>0x00</tt><br />
| <tt><br />
0x00 = macrocell 0<br />
0x01 = macrocell 1<br />
0x02 = macrocell 2<br />
0x03 = macrocell 3<br />
</tt><br />
| Index of which of the 4 hardware macrocell fuses to burn. It is currently unknown where to obtain said value from but a guess is register 0x40.<br />
|-<br />
| <tt>no operation</tt><br />
| <tt>8:31</tt><br />
| <tt></tt><br />
| <tt></tt><br />
| <tt></tt><br />
|<br />
|}<br />
<br />
= A83T, H3, A64, ... =<br />
<br />
Newer SoCs have a 2 kbit eFUSE area with a new controller.<br />
<br />
== Registers ==<br />
<br />
Base address: <tt>0x01c14000</tt><br />
<br />
{| class="wikitable" |<br />
! Register Name !! Offset !! Size !! Description<br />
|-<br />
| [[#SID_PRCTL|SID_PRCTL]] || 0x40 || 4B || Control register<br />
|-<br />
| [[#SID_PRKEY|SID_PRKEY]] || 0x50 || 4B || Program data<br />
|-<br />
| [[#SID_RDKEY|SID_RDKEY]] || 0x60 || 4B || Read data<br />
|}<br />
<br />
=== SID_PRCTL ===<br />
<br />
{{REG|SID_PRCTL|offset=0x40|<br />
{{REG/FIELD|31:24| <br />
|description=''reserved''}}<br />
{{REG/FIELD|23:16| SID_PRCTL_OFFSET<br />
|description=eFUSE offset}}<br />
{{REG/FIELD|15:8 | SID_PRCTL_OP_LOCK<br />
|mode=W|values=<pre>0xac</pre><br />
|description=magic value to prevent accidental programming}}<br />
{{REG/FIELD| 7:2 | <br />
|description=''reserved''}}<br />
{{REG/FIELD| 1 | SID_PRCTL_READ<br />
|description=write 1 to read eFUSE, clears after finish}}<br />
{{REG/FIELD| 0 | SID_PRCTL_WRITE<br />
|description=write 1 to program eFUSE, clears after finish}}<br />
}}<br />
<br />
=== SID_PRKEY ===<br />
<br />
{{REG|SID_PRKEY|offset=0x50|<br />
{{REG/FIELD|31:0 | SID_PRKEY<br />
|description=data to program to eFUSE}}<br />
}}<br />
<br />
=== SID_RDKEY ===<br />
<br />
{{REG|SID_RDKEY|offset=0x60|<br />
{{REG/FIELD| 31:0 | SID_RDKEY<br />
|description=data read from eFUSE}}<br />
}}<br />
<br />
== eFUSE ==<br />
<br />
{| class="wikitable" |<br />
! Name !! Offset !! Size !! Description<br />
|-<br />
| CHIPID || 0x00 || 128 bit || Chip-ID, also known as SID<br />
|-<br />
| OEM_PROGRAM || 0x10 || 32 bit || ''unknown''<br />
|-<br />
| NV1 || 0x14 || 32 bit || ''unknown''<br />
|-<br />
| NV2 || 0x18 || 64 bit || ''unknown''<br />
|-<br />
| RSAKEY_HASH || 0x20 || 160 bit || ''unknown''<br />
|-<br />
| THERMAL_SENSOR || 0x34 || 64 bit || Thermal sensor calibration data<br />
|-<br />
| RENEWABILITY || 0x3c || 64 bit || ''unknown''<br />
|-<br />
| HUK || 0x44 || 256 bit || ''unknown, later split in IN(192), IDENTIFI(32), ID(32)''<br />
|-<br />
| [[#ROTPK_HASH|ROTPK_HASH]] || 0x64 || 256 bit || SHA256 hash of the "Root of Trust" public key<br />
|-<br />
| SSK || 0x84 || 128 bit || ''unknown''<br />
|-<br />
| RSSK || 0x94 || 256 bit || ''unknown''<br />
|-<br />
| HDCP_HASH || 0xb4 || 128 bit || ''unknown''<br />
|-<br />
| EK_HASH || 0xc4 || 128 bit || ''unknown''<br />
|-<br />
| SN || 0xd4 || 192 bit || ''unknown, RESERVED before A64''<br />
|-<br />
| NV2_BACKUP || 0xec || ? bit || ''unknown, RESERVED before A64''<br />
|-<br />
| [[#LCJS|LCJS]] || 0xf4 || 32 bit || Flags (secure boot mode, ...)<br />
|-<br />
| DEBUG || 0xf8 || 32 bit || ''unknown''<br />
|-<br />
| CHIP_CONFIG || 0xfc || 32 bit || ''unknown''<br />
|}<br />
<br />
=== ROTPK_HASH ===<br />
<br />
Contains the SHA256 hash of the 2048-bit public key used to verify the signature of the first code executed after BROM, the so-called [[TOC0]].<br />
<br />
ROTPK_HASH = SHA256([Byte 0-255] = RSA modulus || [Byte 256-x] = RSA public exponent || [Byte x-511] filled with 0x91)<br />
<br />
The hash isn't checked as long as all 32-bit words in this eFUSE have the same value. This means, only the signature is verified, but not the key used to sign, so any key can be used.<br />
<br />
=== LCJS ===<br />
<br />
{| class="wikitable" |<br />
! Name !! Bits !! Values !! Description<br />
|-<br />
| LCJS_CUSTOM_DMA_WAIT || 31:30<br />
| <pre><br />
0x2 = custom wait cycles (para0 * para1)<br />
other = fixed wait cycles (32)<br />
</pre><br />
| BROM flag: DMA wait cycles<br />
|-<br />
| LCJS_CE_CLK_SRC || 29:28<br />
| <pre><br />
0x2 = PLL_PERIPH0/4<br />
other = OSC24M<br />
</pre><br />
| SBROM flag: CE clock source<br />
|-<br />
| LCJS_DMA_WAIT_PARA1 || 27:24<br />
|<br />
| BROM param: DMA wait cycles<br />
|-<br />
| LCJS_DMA_WAIT_PARA0 || 23:20<br />
|<br />
| BROM param: DMA wait cycles<br />
|-<br />
| LCJS_SW_SHA256 || 19:18<br />
| <pre><br />
0x2 = software SHA256<br />
other = CE hardware SHA256<br />
</pre><br />
| SBROM flag: use software SHA256 instead of CE<br />
|-<br />
| LCJS_MAGIC_FEL_FLAG || 17:16<br />
| <pre><br />
0x2 = set flag<br />
other = don't set flag<br />
</pre><br />
| SBROM flag: write magic value at 0x2800, which is checked by FEL code (what does FEL do with it?)<br />
|-<br />
| LCJS_SECURE_BOOT || 11 || <pre><br />
0x1 = secure boot<br />
0x0 = normal boot<br />
</pre><br />
|}<br />
<br />
= Currently known SID's =<br />
<br />
You may try to retrieve the SID value via our [[sunxi-tools]] (<code>./sunxi-fel sid</code>) - or dump it from within U-Boot using the corresponding, SoC-specific address (e.g. <code>md.l 0x01c23800 4</code>). If running a mainline kernel hexdump should be sufficient.<br />
<pre>hexdump -C /sys/devices/platform/soc@01c00000/1c23800.eeprom/eeprom<br />
00000000 16 51 66 c6 80 51 77 89 54 53 48 48 0a 40 f2 67 |.Qf..Qw.TSHH.@.g|<br />
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|<br />
</pre><br />
<br />
Simple script to run on legacy kernel with devmem2:<br />
<pre>d0=`./devmem2 0x01c14200 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d1=`./devmem2 0x01c14204 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d2=`./devmem2 0x01c14208 w|grep Value|sed 's/^.*: 0x/ /'`<br />
d3=`./devmem2 0x01c1420c w|grep Value|sed 's/^.*: 0x/ /'`<br />
echo $d0 $d1 $d2 $d3<br />
</pre><br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Board !! eeprom !! package batch !! notes<br />
|-<br />
|colspan="4" style="text-align:center;"|'''A10'''<br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236747 80728452 50574848 064163D5</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367C7 80778052 50554848 0201DDC3</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236750 80758352 52574848 08025081</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236745 80778052 50554848 07C171AD</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 0642d3e9</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236790 80758952 54544848 03c21c4e</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>162367d9 80758952 54544848 08c21483</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236798 80758952 54544848 0781186a</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623674c 80758952 54544848 0a02c845</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623670f 80758952 54544848 0981e268</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>1623678b 80778251 54534848 0a4285d6</tt><br />
|-<br />
| Cubieboard 1.0 1024 (A10) || <tt>16236743 80758952 54544848 06410f3d</tt><br />
|-<br />
| Gemei G9 (A10) || <tt>16236712 80726652 57524848 04c29968</tt><br />
|-<br />
| Mele A1000 (A10) early version || <tt>00000000 00000000 00000000 00000000</tt><br />
|-<br />
| pcDuino (A10) || <tt>16236755 80758952 53554848 0a41e8c9 </tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A10s'''<br />
|-<br />
| R7 hdmi-stick (A10s) || <tt>16254157 504B4133 30397030 0A41FA85</tt><br />
|-<br />
| mk802 hdmi-stick (A10s) || <tt>16254115 50484E39 35397030 0D02F6E8</tt><br />
|-<br />
| OlinuXino (A10S) || <tt>162541d3 50485937 30357030 04020663</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A13''' / '''R8'''<br />
|-<br />
| A13B tablet (A13) || <tt>16254216 504E4837 39313030 06819C58</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254147 50475838 36313030 0341B75D</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254159 50475838 36313030 0B4181E9</tt><br />
|-<br />
| OlinuXIno (A13) || <tt>16254158 504B4E39 35303030 0A0185F5</tt><br />
|-<br />
| OlinuXIno Micro (A13) || <tt>16254187 504b4e39 35303030 094313f2</tt><br />
|-<br />
| NextThingCo CHIP v1.0 (R8) || <tt>1625420f 50303647 36363030 0400b0b0</tt><br />
|-<br />
| NextThingCo CHIP v1.0 (R8) || <tt>16254293 50303858 31333030 0282919a</tt><br />
|-<br />
| Nolimbook (A13) || <tt>162542c1 50525039 30313030 06420e6b</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A20'''<br />
|-<br />
| EOMA68-A20 (A20) || <tt>165165c7 80807552 55564848 0842c7fb</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516683 80485172 49514848 0940e0da </tt> || || [[User:plaes|plaes]], via sunxi-fel<br />
|-<br />
| Cubietruck (A20) || <tt>16516507 80808952 56524848 03c18168</tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516581 80808952 56524848 0583548e </tt><br />
|-<br />
| Cubietruck (A20) || <tt>16516587 80808952 56524848 0b81d536 </tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651664f 80485686 53504848 0702dde9</tt><br />
|-<br />
| Banana Pi (A20) || <tt>1651668a 80485788 51484848 02825172</tt><br />
|-<br />
| Banana Pi M1 (A20) || <tt>165166cc 80485666 53564848 09c255a3</tt> || || kc's<br />
|-<br />
| Banana Pi R1 (A20) || <tt>16516604 80485686 52524848 0641E864</tt> || || kc's bpi-r1 (using devmem2)<br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>16516608 80485172 49484848 0800ccfc</tt><br />
|-<br />
| A20-OLinuXIno-LIME2: (A20) || <tt>165166c6 80517789 54534848 0a40f267</tt><br />
|-<br />
| A20-OLinuXino-MICRO (A20) || <tt>00000000 00000000 00000000 00000000 </tt> || || (2 verified)<br />
|-<br />
| Cubieboard 2.0 1024 (A20) || <tt>00000000 00000000 00000000 00000000 </tt> || || (3 verified)<br />
|-<br />
|colspan="4" style="text-align:center;"|'''A31s''', sid in AXP221<br />
|-<br />
| CSQ CS908 (A31s) || <tt>16524251 434e3038 34010088 080d81eb</tt><br />
|-<br />
| Mele A1000G quad (A31) || <tt>16524251 43423635 32000045 060a7a38</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''A33'''/'''R16'''<br />
|-<br />
| Aoson M751S (A33) || <tt>0461872a 034c0106 9b486765 00000000</tt><br />
|-<br />
| iNet D978 Rev02 (A33) || <tt>0461872a 03386006 1846b855 00000000</tt><br />
|-<br />
| Nintendo NES Classic (R16) || <tt>0461872a 86583185 9ae7d847 6c118000</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''H2+'''<br />
|-<br />
| Orange Pi Zero || <tt>02004620 3435c614 5030034e 58000032</tt><br />
|-<br />
| Orange Pi Zero || <tt>02c00042 34004620 5035c614 0439098e</tt> || <tt>G6079BA 67B1</tt><br />
|-<br />
| Banana Pi M2 Zero (early sample without VDD-CPUX regulation) || <tt>02c00042 44004620 78674320 041e044e</tt> || <tt>G9035BA 6CD5</tt><br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''H3'''<br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 502d05ce 5800006c</tt><br />
|-<br />
| Banana Pi M2+ || <tt>02004620 94358000 50350a8e 4c000022</tt><br />
|-<br />
| HYH-TBH3 || <tt>02C00081 00004620 51900618 a058e187</tt> || || BroderTuck's 'Smart Android Box' (using devmem2)<br />
|-<br />
| NanoPi NEO || <tt>02004620 24358810 502405ce 2800000a</tt><br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 2c2e0c4e</tt> || G5071BA 65L3 || Lion's batch -- #1<br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 2417068e</tt> || G5071BA 65L3 || Lion's batch -- #2<br />
|-<br />
| NanoPi NEO || <tt>02c00081 44004620 5035c204 242301ce</tt> || G5071BA 65L3 || Lion's batch -- #3<br />
|-<br />
| NanoPi M1 || <tt>02004620 64358720 50320c8e 40000069</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 5040068e 54000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 94340508 502b0a8e 24000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 24340408 50330d0e 60000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 34344314 503a04ce 80000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02004620 34344314 503b0c0e 80000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02c00081 94004620 50340508 3035080e</tt> || <tt>F7008BA 68E3</tt>|| kc's opipc#1<br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50354520 1033080e</tt> || <tt>G2064BA 62T3</tt>|| kc's opipc#2<br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50354520 1c34020e</tt> || || NiteHawk's OPiPC, (incorrect) value before was<br><tt>02004620 54354520 5034020e 1c000000</tt><br />
|-<br />
| Orange Pi PC || <tt>02c00081 54004620 50358720 4c1c058e</tt> || <tt>G4075BA 64P3</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 50340a0e 4c00006f</tt><br />
|-<br />
| Orange Pi PC Plus || <tt>02004620 1435811c 5024010e 5c000080</tt><br />
|-<br />
| Orange Pi Plus || <tt>02004620 94340508 501a050e 4000006d</tt><br />
|-<br />
| Orange Pi Plus 2 || <tt>02004620 34344314 5021034e 5c000000</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 501d078e 4c000060</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02004620 1435811c 503f050e 48000085</tt><br />
|-<br />
| Orange Pi Plus 2E || <tt>02c00081 14004620 5035811c 4423098e</tt> || <tt>G4060BA-64H3</tt> || kc's opi+2e<br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5022018e 64000022</tt><br />
|-<br />
| Orange Pi Lite || <tt>02004620 1435811c 5018050e 3c000011</tt><br />
|-<br />
| Orange Pi Lite || <tt>02c00081 14004620 50354718 3422048e</tt><br />
|-<br />
| Orange Pi One || <tt>02004620 9435430c 502e034e 58000000</tt><br />
|-<br />
| Orange Pi One || <tt>02004620 4435c204 502404ce 20000065</tt><br />
|-<br />
| Orange Pi One || <tt>02c00081 74004620 50358720 3c27048e</tt> || <tt>G5039BA 6593</tt><br />
|-<br />
| Orange Pi 2 || <tt>02004620 34900700 51360a0c 0c000050</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''H5'''<br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 24004704 5035c120 303403cc</tt><br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 44004704 5035c120 2c2d07cc</tt><br />
|-<br />
| Orange Pi PC 2 || <tt>82800001 34004704 5035c120 1c2d02cc</tt> || <tt>G7015AA 67E1</tt><br />
|-<br />
| Orange Pi Prime || <tt>82800001 34004704 5035c200 382f020c</tt> || <tt>G8112AA 6AU2</tt><br />
|-<br />
| NanoPi NEO2 || <tt>82800001 34004704 5035c200 3c2b068c</tt> || <tt>G8112AA 6AU2</tt> || FriendlyELEC sent to Icenowy, #1<br />
|-<br />
| NanoPi NEO2 || <tt>82800001 34004704 5035c200 303a080c</tt> || <tt>G8112AA 6AU2</tt> || FriendlyELEC sent to Icenowy, #2, in the same order with #1<br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''A64'''<br />
|-<br />
| Pine64 sample (green LED) || <tt>92c000ba 24104620 51900808 14160acb</tt><br />
|-<br />
| Pine64+ sample (green LED) || <tt>92c000ba 24004620 51900808 141709cb</tt><br />
|-<br />
| Pine64+ (red LED) || <tt>92c000ba 04004620 51900804 0805070b</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 04004620 51900804 040905cb</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 54104620 51900808 581802cb</tt> || <tt>F8059BA 4977</tt><br />
|-<br />
| Pine64+ 2GB (red LED) || <tt>92c000ba 54104620 51900808 280c094b</tt> || <tt>F8059BA 4977</tt><br />
|-<br />
| SoPine RevC || <tt>92c000ba 84004620 50344424 141908cd</tt> || <tt>F9192BA 4967</tt><br />
|-<br />
| Banana Pi M64 || <tt>92c000ba 84104620 51900800 6020024b</tt><br />
|-|-<br />
|colspan="4" style="text-align:center;"|'''H64'''<br />
|-<br />
| Jide Remix Mini || <tt>92c000bb 44004620 51900808 1011028b</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''R40'''<br />
|-<br />
| Banana Pi M2 Ultra || <tt>12c00017 14104700 5190410c 2417088c</tt><br />
|-<br />
|colspan="4" style="text-align:center;"|'''V3s'''<br />
|-<br />
| Lichee Pi Zero || <tt>12c00000 44104620 5033c810 5c23118d</tt><br />
|}<br />
<br />
:{{note|The H3 SIDs starting with 02004620 are likely wrong due to a quirk of H3.}} A silicon bug manifests itself in a way that returns a garbled SID (root key) when reading the values solely via memory access. Accessing the SID ''once'' via register access seems to fix this, even for subsequent memory reading - see the [https://groups.google.com/forum/#!topic/linux-sunxi/ynyIP8c61Qs discussion on the mailing list]. Corresponding entries in the table above therefore cannot be trusted, and need to be refreshed. A [https://github.com/linux-sunxi/sunxi-tools/commit/a3ce5f9f76a371e54eb51445720682a35d7fa8a2 fix for sunxi-fel] is now available.<br />
<br />
Newer SoC families no longer seem to follow the above pattern of containing the SoC ID within the first value.<br><br />
However, the leading 32 bits still appear to be consistent among the same SoCs:<br />
<br />
{| class="wikitable" |<br />
! SoC !! ID !! SID key<br />
|-<br />
| A33 (R16) || 0x1667 || <tt>0461872a [...]</tt><br />
|-<br />
| A64 || 0x1689 || <tt>92c000ba [...]</tt><br />
|-<br />
| A83T || 0x1673 || <tt>32c00401 [...]</tt><br />
|-<br />
| H3 || 0x1680 || <tt>02c00081 [...]</tt><br />
|-<br />
| H5 || 0x1718 || <tt>82800001 [...]</tt><br />
|-<br />
| H64 || 0x1689 || <tt>92c000bb [...]</tt><br />
|-<br />
| R40 || 0x1701 || <tt>12c00017 [...]</tt><br />
|}<br />
<br />
[[Category:A10 Register guide]]<br />
[[Category:A13 Register guide]]<br />
[[Category:A20 Register guide]]<br />
<br />
[[Category:Hardware]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=FEL/USBBoot&diff=20850
FEL/USBBoot
2018-01-04T01:39:24Z
<p>Icenowy: add info for H6</p>
<hr />
<div>On [[FEL/USBBoot#SoC support status|supported Allwinner SoCs]] it is possible to boot over USB OTG. This requires only minimal changes compared to the build steps in [[Manual_build_howto | the manual build howto]], and these changes are explained on this wiki page.<br />
<br />
By booting over USB OTG, it is possible to forgo the SD-Card entirely, and it is especially useful for devices where no [[UART]] can be found, or where the UART is multiplexed with the SD-Card. You can then use [[MicroSD_Breakout | a micro-SD breakout adapter]] to access the serial port.<br />
<br />
= Install the tools =<br />
<br />
There is a utility in [[Sunxi-tools | the sunxi-tools repository]] called 'sunxi-fel'. This utility is used for booting the system over USB and it needs to be installed first.<br />
<br />
The command line syntax of the <code>sunxi-fel</code> utility:<br />
<pre><br />
Usage: sunxi-fel [options] command arguments... [command...]<br />
-v, --verbose Verbose logging<br />
-p, --progress "write" transfers show a progress bar<br />
-l, --list Enumerate all (USB) FEL devices and exit<br />
-d, --dev bus:devnum Use specific USB bus and device number<br />
--sid SID Select device by SID key (exact match)<br />
<br />
spl file Load and execute U-Boot SPL<br />
If file additionally contains a main U-Boot binary<br />
(u-boot-sunxi-with-spl.bin), this command also transfers that<br />
to memory (default address from image), but won't execute it.<br />
<br />
uboot file-with-spl like "spl", but actually starts U-Boot<br />
U-Boot execution will take place when the fel utility exits.<br />
This allows combining "uboot" with further "write" commands<br />
(to transfer other files needed for the boot).<br />
<br />
hex[dump] address length Dumps memory region in hex<br />
dump address length Binary memory dump<br />
exe[cute] address Call function address<br />
reset64 address RMR request for AArch64 warm boot<br />
readl address Read 32-bit value from device memory<br />
writel address value Write 32-bit value to device memory<br />
read address length file Write memory contents into file<br />
write address file Store file contents into memory<br />
write-with-progress addr file "write" with progress bar<br />
write-with-gauge addr file Output progress for "dialog --gauge"<br />
write-with-xgauge addr file Extended gauge output (updates prompt)<br />
multi[write] # addr file ... "write-with-progress" multiple files,<br />
sharing a common progress status<br />
multi[write]-with-gauge ... like their "write-with-*" counterpart,<br />
multi[write]-with-xgauge ... but following the 'multi' syntax:<br />
<#> addr file [addr file [...]]<br />
echo-gauge "some text" Update prompt/caption for gauge output<br />
ver[sion] Show BROM version<br />
sid Retrieve and output 128-bit SID key<br />
clear address length Clear memory<br />
fill address length value Fill memory<br />
</pre><br />
<br />
{{warn|some Linux distributions are already providing packaging for sunxi-tools. However they are also removing certain tools and renaming executables at their discretion. If you encounter troubles with the sunxi-tools package from your distro, then getting sunxi-tools directly from the [https://github.com/linux-sunxi/sunxi-tools github repository] is always an option.}}<br />
<br />
= Switch your device into FEL mode =<br />
<br />
Before the 'sunxi-fel' tool can actually talk to your device, the device needs to be connected to your PC using a "USB A to USB mini/micro B" cable.<br />
<br />
And then the device needs to be switched into FEL mode. Please refer to the [[FEL | FEL howto]] for information on how to boot to FEL mode. Device pages should mention the button which triggers FEL mode as well.<br />
<br />
If you run:<br />
<pre> sunxi-fel version </pre><br />
<br />
and it returns something like:<br />
<pre> AWUSBFEX soc=00162500(A13) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000 </pre><br />
<br />
Then you have successfully switched the device into FEL mode and it is ready to accept commands or load the system over USB.<br />
<br />
= Boot the system over USB =<br />
<br />
== Mainline U-Boot (v2015.04 and newer versions) ==<br />
<br />
=== Getting the mainline U-Boot sources ===<br />
To obtain the U-Boot sources, clone the current U-Boot master branch:<br />
<br />
<pre><br />
git clone git://git.denx.de/u-boot.git<br />
cd u-boot<br />
</pre><br />
<br />
Or alternatively the 'next' branch from the sunxi custodian tree:<br />
<br />
<pre><br />
git clone -b next git://git.denx.de/u-boot-sunxi.git<br />
cd u-boot-sunxi<br />
</pre><br />
<br />
Both of these branches are bleeding edge and may contain bugs from time to time. If you encounter troubles, try a tarball with the latest formal U-Boot release before giving up.<br />
<br />
=== Booting U-Boot over USB ===<br />
<br />
Then just do a regular u-boot build:<br />
<pre><br />
make CROSS_COMPILE=arm-linux-gnueabihf- Cubietruck_defconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)<br />
</pre><br />
<br />
And boot it over USB (the 'sunxi-fel uboot' command requires an up to date version of sunxi-tools):<br />
<pre><br />
sunxi-fel uboot u-boot-sunxi-with-spl.bin<br />
</pre><br />
<br />
This boots U-Boot over USB. And after U-Boot takes control, it starts scanning various default locations for the boot.scr file in order to boot the rest of the system.<br />
<br />
=== Booting the whole system over USB (U-Boot + kernel + initramfs) ===<br />
<br />
This needs to be used with <b>U-Boot v2015.10</b> or newer (which can automatically find the 'boot.scr' blob in RAM after it had been uploaded there by 'sunxi-fel').<br />
<br />
Assuming that you have a kernel image, a correct dtb blob for your hardware, a [[Mainline U-Boot#Install_U-Boot|boot script blob]] and an initrd image, booting all of this can be done with just a single 'sunxi-fel' invocation:<br />
<pre><br />
sunxi-fel -v uboot u-boot-sunxi-with-spl.bin \<br />
write 0x42000000 uImage \<br />
write 0x43000000 sun7i-a20-cubietruck.dtb \<br />
write 0x43100000 boot.scr \<br />
write 0x43300000 rootfs.cpio.lzma.uboot<br />
</pre><br />
<br />
If you wonder about all the magic addresses used in the command line above, the right values can be found in the [http://git.denx.de/?p=u-boot.git;a=blob;f=include/configs/sunxi-common.h U-Boot sources] in <tt>MEM_LAYOUT_ENV_SETTINGS</tt> definition:<br />
<pre><br />
bootm_size = 0xf000000<br />
kernel_addr_r = 0x42000000<br />
fdt_addr_r = 0x43000000<br />
scriptaddr = 0x43100000<br />
pxefile_addr_r = 0x43200000<br />
ramdisk_addr_r = 0x43300000<br />
</pre><br />
<br />
Somewhere between U-Boot v2017.03 and v2017.07, U-Boot switched to a new SPL format, which is not compatible with sunxi-tools release <=1.4.2 provided by some distros. The tool will print error message such as<br />
<pre><br />
sunxi SPL version mismatch: found 0x02 > maximum supported 0x01.<br />
You need a more recent version of this (sunxi-tools) fel utility.<br />
</pre><br />
You will need a later sunxi-tools from git to avoid this problem.<br />
<br />
=== Overriding environment variables with uEnv-style data ===<br />
<br />
With v1.4 and above, the <tt>sunxi-fel</tt> utility has gained the ability to pass environment data to U-Boot via FEL.<br />
<br />
''key=<value>'' pairs from a textual representation will get '''merged with the default environment''';<br />
similar to U-Boot's <code>import -t</code> command, or what older U-Boot did with the ''uEnv.txt'' file on autoboot.<br />
<br />
:{{note|{{red|This requires an up-to-date U-Boot (v2016.09 or later), plus you need to start your data with a special 'magic' signature:}}}}<br />
:<pre>#=uEnv</pre><br />
<br />
The signature will allow the sunxi-fel "write" command to detect uEnv-style data - and will cause it to flag this transfer accordingly, in turn requesting U-Boot v2016.09+ to import it afterwards. You may override arbitrary environment variables this way, including the <code>bootcmd</code>.<br />
<br />
==== Example ====<br />
<br />
Use your text editor to save a ''my.env'' file with<br />
<pre><br />
#=uEnv<br />
myvar=world<br />
bootcmd=echo "Hello $myvar."<br />
</pre><br />
<br />
and then test it with<br />
<pre>./sunxi-fel uboot u-boot-sunxi-with-spl.bin write 0x43100000 my.env</pre><br />
<br />
You should see U-Boot's autoboot print the corresponding message and drop you to the prompt, proving that you have successfully overwritten the default "bootcmd".<br />
<br />
=== Early kernel development for new SoCs ===<br />
<br />
Because FEL boot is supported by the BROM code, it is readily available out of the box. The 'sunxi-fel' tool only needs to be patched to add the SRAM layout information, but this is [https://github.com/linux-sunxi/sunxi-tools/commit/65bcc0501382db606ab5a5b5eb39f6f1c06b2df8 usually very simple] and also extensively documented on this wiki page. A relatively challenging task is the U-Boot support, because it needs the DRAM initialization code for the SPL. But assuming that the U-Boot bootloader is already available, FEL boot can be used for kernel development even when there is no Ethernet or MMC support in the kernel yet. For the sake of convenience, it is best to write [https://github.com/linux-sunxi/sunxi-tools/blob/master/bin/fel-sdboot.sunxi fel-sdboot.sunxi] to the SD card (substitute /dev/sdX with the appropriate block device of your card reader):<br />
<pre><br />
wget https://github.com/linux-sunxi/sunxi-tools/raw/master/bin/fel-sdboot.sunxi<br />
dd if=fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8<br />
</pre><br />
<br />
Then just use the instructions from the previous section [[FEL/USBBoot#Booting_the_whole_system_over_USB_.28U-Boot_.2B_kernel_.2B_initramfs.29|about U-Boot + kernel + initramfs]]. And after the MMC support is implemented in the kernel, it becomes possible to move the rootfs to the SD card and get rid of the initrd image. But FEL USB boot is still useful until either Ethernet or USB becomes good enough for booting over network.<br />
<br />
== Legacy mainline U-Boot (v2015.04 and older versions) ==<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
<span style="color:red">'''Is here for historical reference only (click on the 'Expand' link to see it):'''</span><br />
<div class="mw-collapsible-content"><br />
<br />
The U-Boot had to be configured using "*_'''felconfig'''" option before compiling (instead of "*_defconfig", as that builds a SPL only suitable for MMC boot). For example, in the case of a Cubietruck board, that would be:<br />
<pre><br />
make CROSS_COMPILE=arm-linux-gnueabihf- Cubietruck_felconfig<br />
make CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)<br />
</pre><br />
<br />
Then just use the 'sunxi-fel' tool to upload various pieces to certain magic addresses (the magic CONFIG_SPL_TEXT_BASE=0x2000 and CONFIG_SYS_TEXT_BASE=0x4a000000 values can be found in the [http://git.denx.de/?p=u-boot.git;a=blob;f=include/configs/sunxi-common.h;h=6cfd7e148900 U-Boot sources]). And execute them in a certain order:<br />
<br />
<pre><br />
echo == upload the SPL to SRAM and execute it ==<br />
sunxi-fel write 0x2000 spl/u-boot-spl.bin<br />
sunxi-fel exe 0x2000<br />
<br />
sleep 1 # wait for DRAM initialization to complete<br />
<br />
echo == upload the main u-boot binary to DRAM ==<br />
sunxi-fel write 0x4a000000 u-boot.bin<br />
<br />
echo == execute the main u-boot binary ==<br />
sunxi-fel exe 0x4a000000<br />
</pre><br />
<br />
This boots U-Boot over USB. And after U-Boot takes control, it starts scanning various default locations for the boot.scr file in order to boot the rest of the system.<br />
</div><br />
</div><br />
<br />
== Legacy u-boot-sunxi ==<br />
<div class="mw-collapsible mw-collapsed"><br />
<span style="color:red">'''Is here for historical reference only (click on the 'Expand' link to see it):'''</span><br />
<div class="mw-collapsible-content"><br />
<br />
=== Preparing U-Boot ===<br />
<br />
U-boot needs to be built specifically for booting over USB. This is called FEL mode, and enabling this disables the full SD card (for u-boot, script.bin and the kernel might re-enable it later on).<br />
<br />
Just follow the [[U-Boot#Compile_U-Boot | guide to compile u-boot]], but [[U-Boot#Determine_build_target | select a target]] whose name has '''_FEL'''.<br />
<br />
=== Manual loading ===<br />
<br />
While the script from the next section is perhaps better, you can now choose to load u-boot manually:<br />
<br />
<pre><br />
sunxi-fel write 0x2000 ../u-boot/spl/u-boot-spl.bin<br />
sunxi-fel exe 0x2000<br />
sleep 1 # Wait for DRAM initialization to complete<br />
sunxi-fel write 0x4a000000 ../u-boot/u-boot.bin<br />
sunxi-fel exe 0x4a000000<br />
</pre><br />
<br />
=== usb-boot script ===<br />
<br />
There was a script in the older releases of [[Sunxi-tools]] called [[Sunxi-tools#usb-boot | usb-boot]]. You can download this script from github using the tag for an old version 1.2:<br />
<br />
<pre><br />
wget https://raw.githubusercontent.com/linux-sunxi/sunxi-tools/v1.2/usb-boot<br />
chmod +x usb-boot<br />
</pre><br />
<br />
And then use it as follows:<br />
<br />
<pre>Usage: ./usb-boot u-boot-spl.bin u-boot.bin [boot.scr] [kernel script.bin [initramfs]]</pre><br />
<br />
u-boot-spl.bin and u-boot.bin are the [[U-Boot|u-boot binaries]] which are [[FEL/USBBoot#Preparing_U-Boot | FEL enabled]].<br />
<br />
[[Manual_build_howto#boot.cmd | boot.scr]] is the u-boot script. If you do not specify a file ending with .scr the default is used.<br />
<br />
uImage is your [[Linux_Kernel#Compilation | compiled kernel image]].<br />
<br />
[[Manual_build_howto#Building_script.bin | script.bin]] is your hw configuration converted to binary from .fex.<br />
<br />
initramfs is an optional initramfs/initrd image in u-boot mkimage format.<br />
</div><br />
</div><br />
<br />
== Using sunxi-fel on Windows ==<br />
<br />
* https://github.com/linux-sunxi/sunxi-tools/tree/windows#using-sunxi-tools-under-windows<br />
* Prebuilt Win32 binaries: https://ci.appveyor.com/project/linuxsunxi/sunxi-tools/build/artifacts - ''Experimental, use at your own risk!''<br />
<br />
=== Mandatory USB driver ===<br />
<br />
Under Windows (unlike Linux) every USB device that an application program wishes to access '''must have a suitable USB driver installed'''.<br />
<br />
This means that ''any device that shows up as "unknown" in your Device Manager will be {{red|inaccessible}}'' - typical symptoms would be an <tt>ERROR: Allwinner USB FEL device not found!</tt> message, or even<br />
<pre>libusb_open() ERROR -12: Operation not supported or unimplemented on this platform</pre><br />
when trying to enforce the specific device with the <code>--dev</code> option.<br />
<br />
=== Zadig to the rescue ===<br />
<br />
Fortunately, there's a very convenient utility to help with the USB driver setup. Grab your copy from http://zadig.akeo.ie/.<br />
<br />
Before launching it, make sure your Allwinner device is connected and in [[FEL]] mode.<br />
<br />
[[File:Zadig-fel-winusb-instructions.png]]<br />
<br />
<br>Initially, the Zadig utility should only present you a single "Unknown Device #1". If it happens to actually list multiple devices, make sure you pick the correct one by verifying the '''USB ID''', shown as "'''1F3A:EFE8'''" in above picture.<br />
<br />
# ''(Optional, but recommended)'' Tick the "Edit" checkbox on the right hand side, and enter a more descriptive name for the USB ID in question. This helps a lot later, to distinguish your Allwinner device from other USB entries in the Device Manager.<br />
# Select the desired USB driver. This depends on the Windows executables you intend to use; namely the specific version of ''libusb'' that those binaries were compiled with. If your <tt>sunxi-fel.exe</tt> has special driver requirements, those should be stated in the accompanying documentation. When in doubt, select [http://windows.libusb.info/ '''WinUSB'''] for a "generic" driver (available from Win XP SP3 onwards).<br />
# Click "Install Driver". Voilà - from now on your device should no longer be "unknown" in Device Manager, and <tt>sunxi-fel</tt> is expected to work with it.<br />
<br />
:[[File:Sunxi-fel_win32.png|500px]]<br />
<br />
<br>'''Troubleshooting:'''<br />
* If you have <tt>listdevs.exe</tt> available in your package, you may use it to check that Windows detects your device at all, and to determine the ''libusb'' bus/device numbers.<br />
* In case you selected the wrong driver, you may simply re-run Zadig to install another. Use "''Options''", "''List All Devices''" and pick the desired one (keeping an eye on the USB ID once more). Alternatively you can use the Windows Device Manager to remove/uninstall the driver (effectively rendering the device "unknown" again), and then start from scratch.<br />
----<br />
<br />
= Adding support for new SoC variants =<br />
<br />
If everything is already working fine for you, then you can stop reading here :-) But sometimes you may get messages like '''"SPL: Unsupported SoC type"''' or '''"Warning: no 'soc_sram_info' data for your SoC"''' when trying to use the instructions from the previous sections. In this case, doing some work to add support for your SoC may be required. It is also a good idea to first check the [[FEL/USBBoot#SoC support status|SoC support status]] table below.<br />
<br />
== SoC support status ==<br />
<br />
{| class="wikitable"<br />
! SoC name<br />
! SoC support status in sunxi-tools <ref name="uboot"><br />
Basic FEL commands like "read", "write" and "exe" are already supported in a generic way on every SoC. This table column only shows support status for advanced commands like "spl" and "uboot".<br />
</ref><br />
! SoC support status in U-Boot<br />
! "sunxi-fel write" speed <ref name="speed"><br />
The transfer speed can be measured by running the following commands:<br />
<pre><br />
# Execute only the SPL part of the U-Boot image in order to initialize DRAM<br />
sunxi-fel spl u-boot-sunxi-with-spl.bin<br />
<br />
# Upload a file to DRAM ('-p' enables a progress display, which includes transfer speed)<br />
sunxi-fel -p write 0x42000000 uImage<br />
</pre><br />
You can use any file instead of "uImage". Larger file size means better speed measurement accuracy, so pick something that has size of at least several megabytes. Please note that the devices, which have MMU disabled, are currently expected to show slow transfer speeds (this can be probably improved later).<br />
</ref><br />
! USB DFU speed<br />
! MMU setup<br />
! Stack pointers <ref name="stack"><br />
There are two stacks in FEL mode:<br />
* 'sp_irq' is the value of the IRQ stack pointer register. The IRQ stack is typically empty, which means that the 'sp_irq' is pointing to both top and bottom of this stack (unless the processor is currently handling an IRQ).<br />
* 'sp' is the value of the normal stack pointer register, also available to your code when it is executed via "sunxi-fel exe" command. This stack typically contains quite a bit of data between 'sp' and 0x7000 (which was written there by the FEL code from BROM).<br />
When uploading data via "sunxi-fel write" command, be sure not to overwrite these stacks (don't touch the data in SRAM below 'sp_irq' and above 'sp').<br />
</ref><br />
! Notes<br />
|-<br />
| Allwinner [[A10]] || Supported || Supported || ~600 KB/s || ~3.2 MB/s || Enabled by BROM, ttbr0=0x20000 || sp_irq=0x02000, sp=0x05DF8 || <br />
|-<br />
| Allwinner [[A13]] || Supported || Supported || ~570 KB/s (win7 laptop), ~940kB/s (linux opipc) || || Enabled by BROM, ttbr0=0x08000 || sp_irq=0x02000, sp=0x05DF8 || <br />
|-<br />
| Allwinner [[A20]] || Supported || Supported || ~960 KB/s || ~3.7 MB/s|| Enabled by BROM, ttbr0=0x20000 || sp_irq=0x02000, sp=0x05E08 || <br />
|-<br />
| Allwinner [[A23]] || Supported || Supported || || || Enabled by BROM, ttbr0=0x08000 || ||<br />
|-<br />
| Allwinner [[A31s]] || Supported || Supported || ~510 KB/s || || Enabled by BROM, ttbr0=0x20000 || sp_irq=0x02000, sp=0x05E08 || <br />
|-<br />
| Allwinner [[A33]] || Supported || Supported || ~191 KB/s || || Not enabled by BROM || ||<br />
|-<br />
| Allwinner [[A64]] || Supported in a [https://github.com/ssvb/sunxi-tools/commits/20160123-allwinner-a64-support wip branch] || Supported in a [https://github.com/ssvb/u-boot-sunxi/commits/20160126-wip-a64-experimental wip branch] || ~510 KB/s || || Not needed <ref name="goodspeed">The BROM in A64 is not [https://github.com/ssvb/sunxi-tools/commit/b4116008efe28016ca85de83a7e1d453a1d7e745 troublesome] anymore and "sunxi-fel hexdump 0x1c14200 16" works fine for retrieving SID. This indicates somewhat better implementation and the MMU speed boosting workaround is not needed.</ref> || sp_irq=0x12000, sp=0x15E08 || SPL needs to be loaded at 0x10000 (instead of 0x0)<br />
|-<br />
| Allwinner [[A80]] || Supported || Supported || ~930 KB/s (boot0) || || Not enabled by BROM || sp_irq=0x12000, sp=0x15AD0 || SPL needs to be loaded at 0x10000 (instead of 0x0)<br />
|-<br />
| Allwinner [[A83T]] || Supported || Supported || ~510 KB/s (~191 KB/s if MMU not enabled) || || Enabled by sunxi-fel, ttbr0=0x44000 || sp_irq=0x00002000, sp=0x00005E08 ||<br />
|-<br />
| Allwinner [[H3]] || Supported || Supported || ~960 KB/s || || Enabled by sunxi-fel, ttbr0=0x44000 || sp_irq=0x00002000, sp=0x00005E08 ||<br />
|-<br />
| Allwinner [[H6]] || WIP || Not Supported || ~177 KB/s || || Not enabled by BROM || sp_irq=0x00022000, sp=0x00025E08 ||<br />
|-<br />
| Allwinner [[R8]] || Supported || Supported || ~500 KB/s || || Enabled by BROM, ttbr0=0x08000 || sp_irq=0x02000, sp=0x05DF8 || basically like A13,<br>handled by same ''soc_id''<br />
|-<br />
| Allwinner [[R40]] || WiP || Not Supported || N/A || || Not enabled by BROM || sp_irq=0x02000, sp=0x05E08 ||<br />
|}<br />
<br />
<references/><br />
<br />
== General description of the "sunxi-fel uboot" command implementation ==<br />
Allwinner is treating booting over USB in a special way, and this behaviour is unfortunately hardcoded in the [[BROM]]. The main differences between booting from MMC/NAND and booting from USB are:<br />
* For booting from the SD card or NAND, the BROM code is searching for a special eGON signature on a bootable media and loading up to 32K (in fact a bit less than that) of the initial code to the address 0x0 in SRAM (that's typically the SRAM section A1) and then executes it. This initial code (known as "SPL" in U-Boot or "boot0" in the Allwinner's bootloader) configures the DRAM to get access to more storage space, then loads the main part of the bootloader and the rest of the system there.<br />
* For booting via FEL, the Allwinner's idea is that we are supposed to upload only something like up to ~15K of code at the address 0x2000 in SRAM and execute it.<br />
This is at least inconsistent and definitely not good for us. U-Boot used to require a special size-optimized variant of the SPL specifically for booting via FEL, which also had the base address changed from 0x0 to 0x2000 as an additional inconvenience. Having a special variant of the SPL means an extra configuration to maintain. And the code size limitation is also a nasty problem because a certain set of features has to be disabled. But the "spl" and "uboot" commands, which are implemented by the "sunxi-fel" tool, can work-around this limitation by smuggling just the ordinary MMC or NAND variant of the U-Boot SPL into SRAM. More technical details are provided below.<br />
<br />
The reason why we have ~15K code size limitation when booting via FEL is illustrated on the picture below. When we are booting the device in FEL mode, a special code is activated in the BROM and starts communicating over USB using FEL protocol. The USB driver code from the BROM allocates two stacks at rather inconvenient locations inside of the first 32K of SRAM. The IRQ handler stack is set at the address 0x2000 and grows down. And the ordinary application stack is set at the address 0x7000 and also grows down. These stacks make the SRAM space fragmented, and the largest usable contiguous ~15K area is sandwiched between these two stacks. Overwriting either of these stacks via the "sunxi-fel write" crashes the device and it just stops responding to further FEL commands. So uploading a normal U-Boot SPL (which typically has size slightly larger than 20K) to the address 0x0 via "sunxi-fel write" command with the intention to execute it via "sunxi-fel exe" command does not work as expected.<br />
<br />
[[File:FEL uboot memory map.jpg]]<br />
<br />
So, how do we solve this problem? Allwinner devices typically have more than 32K of SRAM (the smallest total amount of SRAM among all devices is 48K in Allwinner A13). And we can use extra SRAM locations as a backup storage for the FEL stacks (shown as "backup area 1" and "backup area 2" on the picture above). We also upload a special [https://github.com/linux-sunxi/sunxi-tools/blob/1627b13718bae612a2cb14bb03de5bfd578280be/fel-to-spl-thunk.S thunk code], which is responsible for swapping the content of the FEL stacks with the content of these backup areas before jumping to the address 0x0. Now in order to execute a full-fledged SPL from U-Boot, we only need to split the SPL into chunks and upload it to SRAM, writing the parts which are supposed to overlap the FEL stacks to the backup areas. Executing the thunk code saves the FEL stacks to the backup areas, reassembles the SPL together and passes control to the SPL.<br />
<br />
Why do we need to backup the original FEL stacks? The reason is that just uploading and executing the SPL alone is not enough to boot the system. The SPL code is very small and its primary task is to setup clocks and initialize the DRAM. After the DRAM is initialized, all the storage space problems are resolved and we want to load the main U-Boot code to the device. And for this we still need the BROM FEL code alive and getting control back, so that it can still talk with the 'sunxi-fel' tool over USB and execute FEL commands. Hence the SPL returns control back to the thunk code. The thunk code swaps FEL stacks with backup areas again and finally passes control back to the FEL code in the BROM, which is able to happily resume its work because it has all the original data back in its stacks.<br />
<br />
== The SoC-specific mandatory thing ==<br />
<br />
The previous section describes how the "sunxi-fel spl" and "sunxi-fel uboot" commands work. But not everything is perfect. One inconvenient thing is that the SRAM address space layout (and the location of the backup areas) may be different for different SoC variants. Hence we need to provide the [https://github.com/linux-sunxi/sunxi-tools/blob/01f9972842085f6dea59c64fca39f0107678af4a/fel.c#L325 SRAM layout description information] for each SoC in the source code of the 'sunxi-fel' program. The comments in the source code should provide reasonable explanations. And here is an example of such SRAM layout information for A31:<br />
<pre><br />
/*<br />
* A31 is very similar to A10/A13/A20, except that it has no SRAM at 0x8000.<br />
* So we use the SRAM section at 0x44000 instead. This is the memory, which<br />
* is normally shared with the OpenRISC core (should we do an extra check to<br />
* ensure that this core is powered off and can't interfere?).<br />
*/<br />
sram_swap_buffers a31_sram_swap_buffers[] = {<br />
{ .buf1 = 0x01800, .buf2 = 0x44000, .size = 0x800 },<br />
{ .buf1 = 0x05C00, .buf2 = 0x44800, .size = 0x8000 - 0x5C00 },<br />
{ 0 } /* End of the table */<br />
};<br />
<br />
soc_sram_info soc_sram_info_table[] = {<br />
{<br />
.soc_id = 0x1633, /* Allwinner A31 */<br />
.thunk_addr = 0x46E00, .thunk_size = 0x200,<br />
.swap_buffers = a31_sram_swap_buffers,<br />
},<br />
{ 0 } /* End of the table */<br />
};<br />
</pre><br />
Basically, the first backup area for A31 is set at 0x44000 and covers the IRQ stack (0x1800-0x2000). The second backup area is set at 0x44800 and covers the normal FEL stack plus also some extra area above it (0x5C00-0x8000). The thunk code is placed at 0x46E00.<br />
<br />
== The SoC-specific bonus features ==<br />
<br />
* While this is not strictly required, we can [https://github.com/linux-sunxi/sunxi-tools/commit/e4b3da2b17ee9d7c5cab9b80e708b3a309fc4c96 tweak the cacheability attributes of the memory sections by modifying the MMU translation table]. This improves the performance of the "sunxi-fel write" command and helps to significantly reduce the time needed to upload large chunks of data to DRAM.<br />
<br />
* The Cortex-A8 based SoC variants need [https://github.com/linux-sunxi/sunxi-tools/commit/f6a1382b4a2337f34ff5c52b83c3666c2f57247d a tweak for the AUXCR L2EN bit]. Without this, the L2 cache ends up disabled in Linux after booting over FEL.<br />
<br />
== Testing ==<br />
<br />
After adding the support for a new SoC variant to the 'sunxi-fel' tool, it makes sense to actually test whether it works. In the case if U-Boot already has support for this particular SoC variant, the testing is simple and can be done by just running '''"sunxi-fel uboot u-boot-sunxi-with-spl.bin"''' command and confirming that U-Boot starts properly on the device.<br />
<br />
In the case if U-Boot still does not have full support for this particular SoC variant yet, testing still can be done using the Allwinner's boot0 bootloader. If you have some boot0-based bootable SD card image (let's call it 'sdcard-image.bin'), then you can:<br />
* write this image to an SD card<br />
* extract the boot0 part from this image via running '''"dd if=sdcard-image.bin of=boot0.bin bs=1024 skip=8 count=32"'''<br />
* switch the device into FEL mode<br />
* insert the SD card<br />
* run '''"sunxi-fel spl boot0.bin"'''<br />
If the system boots normally, in the same way as just doing a normal boot from the SD card, then the 'sunxi-fel' tool is working fine. Please note that you may get error messages from the 'sunxi-fel' tool while doing this. This is normal and expected (boot0 does not return control back to the FEL code in BROM but instead does its usual booting of the system from the SD card).<br />
<references/><br />
<br />
= Potential future improvements =<br />
<br />
There is quite a lot of room for improvement:<br />
* Allow the 'sunxi-fel spl' command to also use raw SD card images in addition to just recognizing 'u-boot-sunxi-with-spl.bin' format.<br />
* Store the magic addresses (CONFIG_SYS_TEXT_BASE, kernel_addr_r, fdt_addr_r, scriptaddr, ramdisk_addr_r) in the [[EGON]] header extension in order to avoid the need of passing them to the 'sunxi-fel' tool as command line parameters.<br />
* Single U-Boot binary for both the regular UART serial console and the UART over the [[MicroSD Breakout]] configurations. The configuration option can be provided to the 'sunxi-fel' tool in a command line argument and handed over to to U-Boot in the eGON header extension.<br />
<br />
The exact eGON header extension format needs to be formalized. We should also check whether it can provide backwards/forward compatibility with the Allwinner's BOOT0 bootloader.<br />
<br />
= Known issues =<br />
<br />
Please report problems to https://github.com/linux-sunxi/sunxi-tools/issues<br />
<br />
= See also =<br />
<br />
* [[FEL]]<br />
* [[miniroot]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Boot]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=DRAM_Controller&diff=20803
DRAM Controller
2017-12-30T16:58:25Z
<p>Icenowy: </p>
<hr />
<div>Several different families of DRAM controllers exist:<br />
<br />
== sun4i (Allwinner [[A10]]), sun5i (Allwinner [[A13]]) and sun7i (Allwinner [[A20]]) hardware ==<br />
<br />
No accurate documentation for this particular DRAM controller exists in public access. But it is suspected that Allwinner uses one of the revisions of Synopsys DesignWare [http://www.synopsys.com/dw/ipdir.php?ds=dwc_ddr2-lite_mem DDR2/3-Lite Memory Controller IP (MCTL)] combined with [http://www.synopsys.com/dw/ipdir.php?ds=dwc_ddr2-lite_phy DDR2/3-Lite PHY IP] in A10/A13/A20. Also this DRAM controller apparently has siblings in Rockchip RK29XX, RK30XX and TI KeyStone2 hardware, which have some documentation and some bits of kernel and bootloader sources available in the Internet. Not to mention the original Allwinner boot0 bootloader sources and the suspend support code from the linux-sunxi kernel. This provides enough hints for finding out how the DRAM controller actually works by checking various bits of information via the trial and error method.<br />
<br />
As a result, we have a reasonably usable reconstructed [[A10 DRAM Controller Register Guide]].<br />
<br />
[[A10 DRAM Controller Performance]]<br />
<br />
[[A10 DRAM Controller Calibration]]<br />
<br />
[[DRAM Calibration Results]]<br />
<br />
----<br />
See also: [[DRAM Controller/Quirks|DRAM controller quirks]]<br />
<br />
== sun6i (Allwinner [[A31]]) hardware ==<br />
<br />
The sun6i DRAM controller is very similar to the one found in public Rockchip RK30xx documentation.<br />
<br />
A31 boot0/boot1 source:<br />
[http://dl.linux-sunxi.org/SDK/A31/unpacked-stripped/a31_v4.5_hummingbird_kfb_ok/lichee/boot-v1.0/boot/source/init_dram/]<br />
<br />
A31 u-boot support:<br />
[http://git.rhombus-tech.net/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/sunxi/dram.c;hb=refs/heads/allwinner-sunxi-a31 A31 dram.c]<br />
[http://git.rhombus-tech.net/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/sunxi/dram_sun6i.c;hb=refs/heads/allwinner-sunxi-a31 dram_sun6i.c]<br />
<br />
[[A31 DRAM Controller Register Guide]]<br />
<br />
== sun9i (Allwinner [[A80]]) and early sun8i (Allwinner [[A23]]) hardware ==<br />
<br />
This DRAM controller generation is similar to the one found in Xilinx Zynq UltraScale+ SoCs, but with reduced features, maybe an older version. The PHY has more differences, some parts are still similar to RK30xx and TI KeyStone2.<br />
<br />
Some initial register dumps from [[A23]] reveal that there are significant differences between the A31 and A23 dram controllers. There are dram controller register defines in the [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/board/sunxi/sun8iw3/standby/dram/mctl_reg.h a23 suspend code] in [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/board/sunxi/sun8iw3/sun8iw3.c this code (dram_init)] the SPL parameters are read and stored into structure defined [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/arch/arm/include/asm/arch-sun8iw3/dram.h here] without using the definition.<br />
<br />
== sun8i (Allwinner [[A33]], [[A83T]], [[H3]]) and sun50i (Allwinner [[A64]], [[H5]]) hardware ==<br />
<br />
The latest DRAM controller is similar to the previous sun9i generation, but with completely different register layout and some features removed. Controller and PHY registers got combined into a single block, with no particular or meaningful order.<br />
<br />
There are some small differences between the various SoCs, especially in the PHYs, but overall it looks like they all use the same generation of DRAM controller.<br />
It seems like H5 doesn't have a BIST anymore, also some data training regsiters vanished.<br />
<br />
== sun50i (Allwinner [[H6]]) hardware ==<br />
<br />
This generation of DRAM controller has DDR4 memory support, and still being mysterious now.<br />
<br />
According to disassembly of auto_set_timing_para function of the libdram of H6, the PHY/controller seems to be similar to the one found in Xilinx Zynq UltraScale+ SoCs.<br />
<br />
[[Category:Hardware]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=DRAM_Controller&diff=20800
DRAM Controller
2017-12-30T16:27:14Z
<p>Icenowy: add info of H6 DRAM PHY</p>
<hr />
<div>Several different families of DRAM controllers exist:<br />
<br />
== sun4i (Allwinner [[A10]]), sun5i (Allwinner [[A13]]) and sun7i (Allwinner [[A20]]) hardware ==<br />
<br />
No accurate documentation for this particular DRAM controller exists in public access. But it is suspected that Allwinner uses one of the revisions of Synopsys DesignWare [http://www.synopsys.com/dw/ipdir.php?ds=dwc_ddr2-lite_mem DDR2/3-Lite Memory Controller IP (MCTL)] combined with [http://www.synopsys.com/dw/ipdir.php?ds=dwc_ddr2-lite_phy DDR2/3-Lite PHY IP] in A10/A13/A20. Also this DRAM controller apparently has siblings in Rockchip RK29XX, RK30XX and TI KeyStone2 hardware, which have some documentation and some bits of kernel and bootloader sources available in the Internet. Not to mention the original Allwinner boot0 bootloader sources and the suspend support code from the linux-sunxi kernel. This provides enough hints for finding out how the DRAM controller actually works by checking various bits of information via the trial and error method.<br />
<br />
As a result, we have a reasonably usable reconstructed [[A10 DRAM Controller Register Guide]].<br />
<br />
[[A10 DRAM Controller Performance]]<br />
<br />
[[A10 DRAM Controller Calibration]]<br />
<br />
[[DRAM Calibration Results]]<br />
<br />
----<br />
See also: [[DRAM Controller/Quirks|DRAM controller quirks]]<br />
<br />
== sun6i (Allwinner [[A31]]) hardware ==<br />
<br />
The sun6i DRAM controller is very similar to the one found in public Rockchip RK30xx documentation.<br />
<br />
A31 boot0/boot1 source:<br />
[http://dl.linux-sunxi.org/SDK/A31/unpacked-stripped/a31_v4.5_hummingbird_kfb_ok/lichee/boot-v1.0/boot/source/init_dram/]<br />
<br />
A31 u-boot support:<br />
[http://git.rhombus-tech.net/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/sunxi/dram.c;hb=refs/heads/allwinner-sunxi-a31 A31 dram.c]<br />
[http://git.rhombus-tech.net/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/sunxi/dram_sun6i.c;hb=refs/heads/allwinner-sunxi-a31 dram_sun6i.c]<br />
<br />
[[A31 DRAM Controller Register Guide]]<br />
<br />
== sun9i (Allwinner [[A80]]) and early sun8i (Allwinner [[A23]]) hardware ==<br />
<br />
This DRAM controller generation is similar to the one found in Xilinx Zynq UltraScale+ SoCs, but with reduced features, maybe an older version. The PHY has more differences, some parts are still similar to RK30xx and TI KeyStone2.<br />
<br />
Some initial register dumps from [[A23]] reveal that there are significant differences between the A31 and A23 dram controllers. There are dram controller register defines in the [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/board/sunxi/sun8iw3/standby/dram/mctl_reg.h a23 suspend code] in [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/board/sunxi/sun8iw3/sun8iw3.c this code (dram_init)] the SPL parameters are read and stored into structure defined [http://dl.linux-sunxi.org/SDK/A23-v1.0/unpacked/A23/lichee/brandy/u-boot-2011.09/arch/arm/include/asm/arch-sun8iw3/dram.h here] without using the definition.<br />
<br />
== sun8i (Allwinner [[A33]], [[A83T]], [[H3]]) and sun50i (Allwinner [[A64]], [[H5]]) hardware ==<br />
<br />
The latest DRAM controller is similar to the previous sun9i generation, but with completely different register layout and some features removed. Controller and PHY registers got combined into a single block, with no particular or meaningful order.<br />
<br />
There are some small differences between the various SoCs, especially in the PHYs, but overall it looks like they all use the same generation of DRAM controller.<br />
It seems like H5 doesn't have a BIST anymore, also some data training regsiters vanished.<br />
<br />
== sun50i (Allwinner [[H6]]) hardware ==<br />
<br />
This generation of DRAM controller has DDR4 memory support, and still being mysterious now.<br />
<br />
According to disassembly of auto_set_timing_para function of the libdram of H6, the PHY seems to be similar to the one found in Xilinx Zynq UltraScale+ SoCs.<br />
<br />
[[Category:Hardware]]</div>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20771
Used IP cores
2017-12-24T11:37:05Z
<p>Icenowy: added DDR lines, split A23 and A33</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>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20770
Used IP cores
2017-12-24T11:30:19Z
<p>Icenowy: change IRQ-related lines</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<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[GIC-400]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[IRQ]] || Unknown || Mainline, Allwinner || Y || Y || 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<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Mainline, Allwinner || Y || Y || Y || Y || Y<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare || Same as Rockchip rk2918 DMC || Y || Y || N || Y<br />
|-<br />
| [[DDR]] || Allwinner AW1633? || Allwinner U-Boot || N || N || Y || N<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<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>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20769
Used IP cores
2017-12-24T11:28:25Z
<p>Icenowy: remove PLL line as it's part of CCM</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<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[GIC]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Mainline, Allwinner || Y || Y || Y || Y || Y<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare || Same as Rockchip rk2918 DMC || Y || Y || N || Y<br />
|-<br />
| [[DDR]] || Allwinner AW1633? || Allwinner U-Boot || N || N || Y || N<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[IRQ]] || Unknown || Allwinner || Y || Y || N || N <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<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>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20768
Used IP cores
2017-12-24T11:28:00Z
<p>Icenowy: fix CCM line</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<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[GIC]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Mainline, Allwinner || Y || Y || Y || Y || Y<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare || Same as Rockchip rk2918 DMC || Y || Y || N || Y<br />
|-<br />
| [[DDR]] || Allwinner AW1633? || Allwinner U-Boot || N || N || Y || N<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[PLL]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[IRQ]] || Unknown || Allwinner || Y || Y || N || N <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<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>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20767
Used IP cores
2017-12-24T11:27:10Z
<p>Icenowy: Removed DVFS as it's part of CCM</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<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[GIC]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare || Same as Rockchip rk2918 DMC || Y || Y || N || Y<br />
|-<br />
| [[DDR]] || Allwinner AW1633? || Allwinner U-Boot || N || N || Y || N<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[PLL]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[IRQ]] || Unknown || Allwinner || Y || Y || N || N <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<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>
Icenowy
https://linux-sunxi.org/index.php?title=Used_IP_cores&diff=20766
Used IP cores
2017-12-24T11:26:04Z
<p>Icenowy: add Y of GIC to A23/A33</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<br />
|-<br />
| [[Cortex A7]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[GIC]] || ARM ltd. || Mainline || N || N || Y || Y || Y<br />
|-<br />
| [[DVFS]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[CCM]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[SRAM]] Controller || Most likely Allwinner || Allwinner || Y || Y || Y || Y<br />
|-<br />
| [[DDR]] || Synopsys DesignWare || Same as Rockchip rk2918 DMC || Y || Y || N || Y<br />
|-<br />
| [[DDR]] || Allwinner AW1633? || Allwinner U-Boot || N || N || Y || N<br />
|-<br />
| [[JTAG]] || ARM CoreSight? || Limited by JTAG on/off in Fex system<br />
|-<br />
| [[PLL]] || Most likely Allwinner || Allwinner<br />
|-<br />
| [[IRQ]] || Unknown || Allwinner || Y || Y || N || N <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<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>
Icenowy