https://linux-sunxi.org/api.php?action=feedcontributions&user=Rose28357&feedformat=atomlinux-sunxi.org - User contributions [en]2024-03-28T19:18:29ZUser contributionsMediaWiki 1.35.8https://linux-sunxi.org/index.php?title=Kodi&diff=16227Kodi2016-02-01T10:03:28Z<p>Rose28357: Minor typo</p>
<hr />
<div>'''[http://www.kodi.tv Kodi]''' (formerly ''XBMC'') is a popular free and open source (GPL) software media center for playing videos, music, pictures, games and more.<br /><br />
<br />
This article contains some background you need to know, when you are planning to get Kodi running on your Allwinner SoC.<br /><br />
'''It's important to be aware of the history of XBMC on sunxi devices and the history of CedarX code in general, as well as the position of Allwinner, Team-Kodi and the linux-sunxi community.'''<br />
<br />
=History=<br />
In history (since 2012), there have been a bunch of solutions (e.g. empat0, gimli) to get Kodi running on Allwinner SoCs using the closed sourced libraries from Allwinner (provided via the initial makers of cubieboard) for hardware accelerated video decoding. One problem of these implementation is, that these closed source libs have bugs in their linux version. Using the android version via libhybris solves this bug. The GPL issue still remaines.<br /><br />
<br />
'''Team-Kodi''', the official development team of Kodi, negotiated support due to lack of resources and - the more important reason - the fact, that Allwinner was [[GPL_Violations|violating the GPL]] with these binaries. It is prooved, that they are still [[GPL_Violations|violating the GPL]] with the binaries they shipped at the beginning, because they never released the source for them. Team-Kodi does currently not recommend that any end-user buy Allwinner A1x or A2x based hardware for the specific purpose of only running Kodi. There are a few threads in the kodi forum that one can read to get the whole story regarding Allwinner and their support to Team-Kodi. Team-Kodi in fact did not get effective Allwinner support in the end.<ref>http://forum.kodi.tv/showthread.php?tid=126995 Allwinner A10 : Is XBMC ported to MALI-400MP ?</ref><br /><br />
<br />
Due to massive pressure of the '''linux-sunxi community''' (in fact that have only been a few designated developers), Allwinner tried to solve the CedarX GPL violation issue with releasing a rewrite of their CedarX code, summarized as their "media-codec". This new media-codec provides the source for direct register access of the video decoding engine within the SoC. Codecs are now included via plugins. The basic decoder and MPEG2, MJPEG, MPEG4 and H246 codecs implementation are available as GPL'ed source, while the encoder and the other codecs are includeable only via a closed source library still. It's not prooved, that these closed source library is GPL compliant.<br /><br />
<br />
In the meantime, many parts of the video decoding engine have been reverse engineered by a few developers of the linux-sunxi community, so that the hardware can be accessed via real open source code, independent of any code which was released by Allwinner. The working name of this community based piece of software is [[Cedrus]].<br />
The sad thing about the media-codec release of Allwinner is the fact, that it does not provide any other funtionality with it's open source part, that was not known already due to the [[CedarX/Reverse_Engineering|reverse engineering effort]].<br /><br />
<br />
=Linux-sunxi community=<br />
While all these efforts have been done by the linux-sunxi community, there has been nearly '''NO''' support from Allwinner since now, helping the community to do a open source driver for their video engine, which is [[VE_Planning|able to be merged into the mainline kernel]] in the end. Even though it was possible to figure out the [[VE_Register_guide|register's usage]] of the video engine and to build a [[Cedrus#Installing_sunxi-vdpau_library|vdpau backend]] which demonstrates the usage of the sunxi video decoding/encoding engine. With this [[Cedrus#Installing_sunxi-vdpau_library|libvdpau-sunxi backend]] it's possible to support hardware accelerated video decoding on common media players which support VDPAU. Even though linux-sunxi community does get no help from Allwinner in these task (and nearly zero in all the others btw.), a small group of developers has started to think about a v4l2 kernel driver. Main goal for the community is to support the sunxi video decoding/encoding engine within the mainline kernel.<br /><br />
<br />
=Technical overview=<br />
To run Kodi on sunxi devices without GPL violating code and the official linux kernel, we basically need a few things:<br />
===Video engine kernel driver===<br />
The existing kernel module is not mainlineable, so there has work been started to create a [[VE_Planning|kernel driver based on a v4l2 mem2mem device]]. (not finished)<br /><br />
<br />
{{redbox|'''Important:''' Many people are interested in quick and dirty solutions to get things to work. They do not care about GPL violance, binary usage, Allwinner ignorating the community ... So this ends up in self-baked vendor adjusted solutions which base on GPL violating binaries or the 'dubious' Allwinner media-codec. This can mainly be recognized in the "kodi-sunxi" dedicated forum threads of the different vendors (OrangePi, BananaPi - naming two examples). It's obvious, that motivation for such a driver is still very low, when neither the 'USER' nor the 'VENDORS' are interested in a free open source driver and go on preferring Allwinner code. Allwinner, the company that does not support the linux-sunxi community, which is responsible for their whole mainlining task.}}<br />
<br />
===Sunxi display driver===<br />
Work for the other important part (display driver), which is needed for (open source) Kodi on sunxi devices and [[Mainlining_Effort|mainline kernel]], has been started, too. (not finished)<br />
<br />
===Mali (3D) kernel driver + userspace library===<br />
It's possible to use the provided [[Mali_binary_driver|mali userspace libraries]] together with the out-of-tree third party kernel driver.<br />
<br /><br />
<br />
===Support for sunxi in Kodi===<br />
As soon as there are kernel drivers for display and the video engine, which are useable with the mainline kernel (in-kernel or out-of-tree), Kodi integration can be started. Everybody, especially Team-Kodi developers, is very welcome to support the linux-sunxi community with this task. <br />
<br />
=Kodi via libvdpau-sunxi=<br />
The main goals will take some time. Fortunately [https://github.com/mosterta github user mosterta] has announced a [https://github.com/mosterta/xbmc kodi fork], which already uses open source community code. Video decoding is done hardware accelerated via an adapted libvdpau-sunxi version, which makes OpenGL/ES integration (via Mali) and zero-copy possible. It's recommended to support this version while waiting for the final solution. In order to get that fork of kodi working, you have to patch a lot. See the [http://forum.kodi.tv/showthread.php?tid=254202 Kodi forum thread] for building instructions.<br />
<br />
=Alternativ media players=<br />
Alternativ media players (such as mpv or mplayer) or [http://tvdr.de/index.htm VDR] are supported via [https://github.com/linux-sunxi/libvdpau-sunxi libvdpau-sunxi]. They do not depend on mali, but still require the legacy sunxi-3.4 kernel due to lack of display and video engine support in the mainline kernel. They work pretty stable, though libvdpau-sunxi is just proof-of-concept code.<br />
<br />
=Conclusion=<br />
It's obvious again, that the main goal must be to bring this media related drivers into the mainline kernel. It's the only solution, if one seriously wants to run media apps, especially Kodi, on a sunxi device. But this all will not happen, if interest in open source drivers seems to be that small, as it seems to be at the moment.<br />
<br />
=References=<br />
<references /><br />
<br />
[[Category:Software]]<br />
[[Category:Cedrus]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=15552Allwinner SoC Family2015-11-29T22:36:17Z<p>Rose28357: /* "A"-Series */</p>
<hr />
<div>= SoC series =<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]] || <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]] || <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]]&nbsp; || <small>(sun8i)</small>&nbsp; || 8 x Cortex-A7 CPU-cores<br />
|}<br />
<br />
'''64-bit'''<br />
{| class="wikitable"<br />
| [[A64|Allwinner A64]]&nbsp; || <small>(sun{{Edit|?}})</small>&nbsp; || 4 x Cortex-A53 CPU-core<br />
|}<br />
<br />
== "H"-Series ==<br />
Based on ARMv7 Cortex-A cores (Cortex-A7) targeted for video OTT (over-the-top) boxes and high-end gaming consoles:<br />
{| class="wikitable"<br />
| [[H3|Allwinner H3]]&nbsp; || <small>(sun8i)</small>&nbsp; || 4 x Cortex-A7 CPU-core&nbsp;<br />
|-<br />
| [[H8|Allwinner H8]] || <small>(sun9i)</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
== "R"-Series ==<br />
<br />
{| class="wikitable"<br />
| [[R8|Allwinner R8]]<ref>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://www.allwinnertech.com/en/clq/R_series/2015/0514/R16.html</ref> || <small>{{Edit|?}}</small> || 4 x Cortex-A7 CPU-core<br />
|-<br />
| [[R16|Allwinner R58]]<ref>http://www.allwinnertech.com/en/clq/R_series/2015/0514/R58.html</ref>&nbsp; || <small>{{Edit|?}}</small> || 8 x Cortex-A7 CPU-core<br />
|}<br />
<br />
The Allwinner R8 seems to be a low-cost (and probably trimmed-down) version of the A13. This SoC gets used in the minicomputer presented in Next Thing Co.'s ''C.H.I.P.'' kickstarter project ("The $9 computer").<ref>http://nextthing.co/</ref><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)<br />
<pre>sunxi<br />
|-- sun4i ----------------------------- : cortex-a8<br />
| |-- sun4iw1 --------------- wafer1<br />
| | `-- sun4iw1p1 ----- a10<br />
| `-- sun4iw2 --------------- wafer2<br />
| |-- sun4iw2p1 ----- a13<br />
| |-- sun4iw2p2 ----- a12<br />
| `-- sun4iw2p3 ----- a10s<br />
|-- sun8i ----------------------------- : cortex-a7 smp<br />
| |-- sun8iw1 --------------- wafer1<br />
| | |-- sun8iw1p1 ----- a31<br />
| | `-- sun8iw1p2 ----- a31s<br />
| |-- sun8iw2 --------------- wafer2<br />
| | |-- sun8iw2p1 ----- a20<br />
| | `-- sun8iw2p2<br />
| |-- sun8iw3 --------------- wafer3<br />
| | |-- sun8iw3p1 ----- a23<br />
| | `-- sun8iw3p2<br />
| |-- sun8iw5<br />
| | `-- sun8iw5p1 ----- a33<br />
| `-- sun8iw6<br />
| `-- sun8iw6p1 ----- a83t<br />
| `-- sun8iw7<br />
| `-- sun8iw7p1 ----- h3<br />
`-- sun9i<br />
`-- sun9iw1<br />
|-- sun9iw1p1 ----- a80<br />
`-- sun9iw1p2 ----- a80t</pre><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: [[CedarX]] (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 || sun?i (A33) || 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 || ?.? 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 || ? (A33) || 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" | [[CedarX|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" | [[CedarX|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 || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|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 || ? (A33) || 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 || ? (A33) || 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 || ? (A33) || 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 /></div>Rose28357https://linux-sunxi.org/index.php?title=A64&diff=15551A642015-11-29T22:33:29Z<p>Rose28357: /* Devices */ added link to Pine64</p>
<hr />
<div>{{Infobox SoC<br />
| manufacturer = Allwinner<br />
| process = ?<br />
| cpu = Quad-Core ARM Cortex-A53<br />
| memory = LPDDR2/ LPDDR3/ DDR3 / DDR3L<br />
| gpu = [[Mali400]] MP2<br />
| video = MIPI DSI 1920x1200@60fps, LVDS 1366x768@60fps, RGB 1920x1200@60fps, HDMI v1.4 4k@30fps<br />
| audio = <br />
| network = <br />
| storage = NAND, NOR, MMC<br />
| usb = OTG, 2x Host<br />
| other = <br />
| release_date = ?<br />
| website = [http://www.allwinnertech.com/en/clq/processora/6053.html Product Page]<br />
}}<br />
<br />
Allwinner [[A64]] (sun?) SoC features a Quad-Core Cortex-A53 ARM CPU, and a [[Mali400]] MP2 GPU from ARM.<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available. <br />
<br />
=A64 SoC Features=<br />
<br />
* CPU<br />
** ARM Cortex-A53 Quad-Core<br />
** 512KiB L2-Cache<br />
** 32KiB (Instruction) / 32KiB (Data) L1-Cache per core<br />
** SIMD NEON, VFP4<br />
** Large Physical Address Extensions (LPAE)<br />
* GPU<br />
** ARM Mali400 MP2<br />
** Featuring 1 vertex shader (GP) and 2 fragment shaders (PP).<br />
** Complies with OpenGL ES 2.0<br />
* Memory<br />
** DDR2/DDR3/DDR3L/LPDDR2/LPDDR3 controller (up to 667MHz(DDR-1333))<br />
** NAND Flash controller and 64-bit ECC<br />
* Video<br />
** H.265 4k@30fps, 1080p@120fps decoding<br />
** H.264 1080p@fps decoding<br />
** MPEG 1/2/4: 1080p@60fps<br />
** VC1 1080p@30fps<br />
** VP8 1080p@60fps<br />
** AVS/AVS+ 1080p@60fps<br />
** JPEG/MJPEG 1080p@30fps<br />
** H.264 1080P@60fps encoding<br />
* Display<br />
** LVDS single link up to 1366x768@60fps<br />
** RBG with DE/SYNC up to 1920x1200@60fps<br />
** MIPI DSI 4-lanes up to 1920x1200@60fps<br />
** HDMI1.4 with HDCP1.2 up to 4k@30fps<br />
* Camera<br />
** Supports parallel 8-bit YUV422 sensor<br />
** Support CCIR656 protocol for NTSC and PAL<br />
** Maximum still capture resolution 5M<br />
** Maximum video capture resolution up to 1080p@30fps<br />
* PMIC<br />
** X-Powers [[AXP803]], as seen used with A64 in Olimex Olinuxino A64 design<br />
<br />
= Documentation =<br />
<br />
* [https://github.com/OLIMEX/OLINUXINO/blob/master/HARDWARE/A64-OLinuXino/PDF/A64_Datasheet_V1.1.pdf A64 Datasheet v1.1]<br />
* [https://github.com/OLIMEX/OLINUXINO/blob/master/HARDWARE/A64-OLinuXino/PDF/Allwinner%20A64%20User%20Manual%20v1.0.pdf A64 User Manual v1.0]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
<br />
== Boot0 ==<br />
== U-boot ==<br />
<br />
=== Allwinner ===<br />
<br />
=== Sunxi Community ===<br />
=== Mainline U-Boot ===<br />
<br />
== Kernel code ==<br />
=== Allwinner ===<br />
=== Sunxi Community ===<br />
<br />
= Devices =<br />
<br />
Some devices are announced:<br />
* [https://olimex.wordpress.com/2015/11/24/a64-olinuxino-oshw-linux-laptop-idea-becomes-more-real/ Olimex A64 Linux Laptop]<br />
* [https://olimex.wordpress.com/2015/11/20/a64-olinuxino-update-2/ Olimex A64 Olinuxino]<br />
* [http://pine64.com Pine64]<br />
<br />
= See also =<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/6053.html Product Page]<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cedrus&diff=15505Cedrus2015-11-26T06:18:41Z<p>Rose28357: /* Overview */ a simple word replacement for better reading</p>
<hr />
<div>== Overview ==<br />
Cedrus is a project intended for fully open source hardware video-decoding stack, replacing the proprietary, GPL violating CedarX library shipped with sunxi devices. The name is derived from the Cedrus tree, which commonly is known as [http://en.wikipedia.org/wiki/Cedrus Cedar].<br />
<br />
Cedrus support is currently implemented as a vdpau driver backend for the [https://en.wikipedia.org/wiki/VDPAU vdpau framework].<br />
<br />
The main project is located on Github: https://github.com/linux-sunxi/libvdpau-sunxi<br />
<br />
=== Current status ===<br />
<br />
Currently the driver is in alpha status or Proof of Concept (PoC) phase. The driver is quite useable, but does by far not possess production quality and is a security risk. It's confirmed to work with A10, A13 and A20.<br />
<br />
'''SECURITY NOTE:''' Currently the open source driver is implemented as replacement of the blob. Blob and current open source replacement driver (libvdpau-sunxi) use Allwinner's kernel driver that remaps registers for use in userspace, with Allwinner's display driver used for hardware overlay. Together with access to physical memory, and dangerous VE DMA ability it makes a serious security problem. <br />
<br />
That should be replaced in a proper way in ongoing mainline process.<br />
<br />
=== Supported codec matrix ===<br />
{|class="wikitable" style="text-align: center;"<br />
|-<br />
!Codec<br />
!libvdpau-sunxi<br />
!Cedrus open source PoC <br />
!CedarX blob decoder<br />
|-<br />
!colspan="4"|Decoding support<br />
|-<br />
|style="background: #22CC22;"|MPEG1<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|MPEG2<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MPEG4<br />
|style="background: #EEEE22;"|Limited<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MS-MPEG<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|VP6<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported">[https://en.wikipedia.org/wiki/VDPAU#Nvidia_VDPAU_Feature_Sets VDPAU] does not support this codec</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #22CC22;"|MJPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|XDIV<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|DIVX<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|Sorenson<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|WMV9<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|RMVB<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|H264<br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|AVS<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|VP8<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
!colspan="4"|Encoding support<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note">VDPAU API doesn't have support for encoding.</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EE2222;"|MJPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|H264<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EEEE22;"|(Only I-frames)<br />
|style="background: #DDDDDD;"|Yes<br />
|}<br />
<references /><br />
<br />
=== Tasks ===<br />
[[ Cedrus/libvdpau_integration_matrix ]] gives an overview about the VDPAU API functions currently supported in libvdpau-sunxi.<br />
It also lists the required functions for various programs.<br />
<br />
== Installation ==<br />
<br />
=== Prerequisites ===<br />
Various things are required to get cedrus to play back video. This list can act as a quick start.<br />
* [http://linux-sunxi.org/Kernel_arguments Proper memory reservation]<br />
* cedarX module either compiled in or the module loaded<br />
* write access permissions on /dev/disp and /dev/cedar_dev<br />
* libvdpau-sunxi library installed<br />
* enviroment variable telling libvdpau which library to use<br />
<br />
=== Reserve memory for the VPU ===<br />
The VE needs a block of memory to store (de)coded frames in. The kernel needs to be informed about this before booting.<br />
To do so, the kernel command line needs to be modified. This can be done at compiletime or by modifying the bootloaders [[Kernel_arguments]]. By default Allwinner reserves 80 Megabytes but depending on the player being used and video being decoded, less can suffice or more can be necessary. Feel free to experiment with the amount, but if available, 128 MiB is a nice number to test things with. This can be set by the following kernel argument.<br />
<pre>sunxi_ve_mem_reserve=128</pre><br />
<br />
'''NOTE:''' This kernel parameter is ignored in recent linux-sunxi 3.4 kernels, if CMA is enabled in kernel configuration.<br />
If CONFIG_CMA=y, ve_size is hardcoded to 80MB in sunxi_cedar kernel module.<br />
<br />
=== CedarX module ===<br />
Depending on where the kernel came from, the CedarX kernel driver is either available as module or built in. To see whether it is available, check whether /dev/cedar_dev exists. If not, run ''modprobe sun4i_cedar_dev'' (in future versions this should be called sunxi_cedar_dev). There should now be a /dev/cedar_dev.<br />
<br />
==== Write access persmissions ====<br />
To be able to pass data to the VE, proper permission to /dev/cedar_dev is required.<br />
<br />
For testing, manually setting permissions is fine.<br />
<pre>chown <username>:<usergroup> /dev/cedar_dev<br />
chmod 666 /dev/cedar_dev</pre><br />
The VE only decodes the video codec. To have it appear on the display, write access permission to /dev/disp is required.<br />
<pre>chown <username>:<usergroup> /dev/disp<br />
chmod 666 /dev/disp</pre><br />
<br />
To do this properly with udev rules, create files for each under /etc/udev/rules.d/<br />
<br />
50-disp.rules<br />
<pre>KERNEL=="disp", MODE="0660", GROUP="video"</pre><br />
50-cedar.rules<br />
<pre>KERNEL=="cedar_dev", MODE="0660", GROUP="video"</pre><br />
<br />
=== Installing sunxi-vdpau library ===<br />
There are currently no pre-compiled binaries available and have to be compiled from source. This most likely has to be performed on the target device, while possible to be cross compiled.<br />
==== Prerequisites ====<br />
* git (yum install git | apt-get install git | emerge git)<br />
* gcc (yum group-install "Development Tools" | apt-get install build-essential)<br />
* libvdpau-dev (yum install libvdpau-dev | apt-get install libvdpau-dev | emerge libvdpau)<br />
<br />
==== Compiling source ====<br />
The current libvdpau-sunxi code is stored on github.<br />
<pre>git clone https://github.com/linux-sunxi/libvdpau-sunxi.git<br />
cd libvdpau-sunxi<br />
make<br />
sudo make install</pre><br />
Pay close attention as to where these libraries get installed. Depending on the distro in use, it's most likely they will need to be put in '''/usr/lib/vdpau'''. If they are not put there, manually copy them there.<br />
With the driver now installed, it is important to tell vdpau to use this library. By default it will try to load and use the nVidia vdpau implementation.<br />
<pre>export VDPAU_DRIVER=sunxi</pre><br />
The latest git version of [[Xorg#fbturbo_driver]] can report the DRI2 VDPAU name as 'sunxi', if 'sunxi_cedar_mod' kernel module loaded successfully. See [https://github.com/ssvb/xf86-video-fbturbo/commit/4c7313c6db9ee770f39740c735268c88fcd136cf commit]<br />
<br />
=== Playing video ===<br />
With everything setup properly, it should now be possible to playback hardware accelerated media!<br />
<br />
The best test file would be one of the well known sample media's. The big buck bunny is an often used one.<br />
http://samplemedia.linaro.org/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4<br />
<br />
Depending if you use mpv or mplayer2, the following options are required.<br />
For mplayer2:<br />
<pre> mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau, [filename]</pre><br />
For mpv:<br />
<pre> mpv --vo=vdpau --hwdec=vdpau --hwdec-codecs=all [filename]</pre><br />
<br />
Note: There have been reports that some mplayer versions in certain repositories are not compiled with vdpau support.<br />
<br />
Now you can also try to use other files, but note it has to be mpeg1, mpeg2 or h264 encoded!<br />
<br />
=== OSD support ===<br />
Now we have simple OSD implementation, using g2d hardware.<br />
<br />
Access to g2d (as xorg turbo driver) is also required.<br />
<pre>chmod 666 /dev/g2d</pre><br />
<br />
To do this properly with udev rules, create a file under /etc/udev/rules.d/<br />
<br />
50-g2d.rules<br />
<pre>KERNEL=="g2d", MODE="0660", GROUP="video"</pre><br />
and make sure that the user wanting to decode video is in the video group!<br />
<br />
To turn on OSD support during runtime:<br />
<br />
<pre>export VDPAU_OSD=1</pre><br />
<br />
<br />
Note: mplayer's "-ass" osd not currently supported, due to lack of 'alpha only' surfaces support in current g2d driver<br />
<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Video Engine]]<br />
[[Category:Cedrus]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=11988A802014-11-23T13:28:18Z<p>Rose28357: /* Rumours */ remove outdated information</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, WMV9/VC-1, VP8<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available. We only just got our hands on an SDK, and devices are slowly becoming available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
** 33bit address bus with theoretical 7.5G usable RAM (evb has 4G memory)<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback (by '''GPU compute''', to be verified)<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** ARM Cortex-M3 (to be verified)<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Rumours =<br />
* empty<br />
<br />
= Documentation =<br />
* [http://dl.linux-sunxi.org/A80/A80_Datasheet_Revision_1.0_0404.pdf A80 Datasheet v1.0] <small>(PDF, 43 pages, 2014-03-17)</small><br />
* [[File:A80 Datasheet Revision 1.0 0404.pdf|original A80 Datasheet Rev 1.0]] <small>(same as the previous file)</small><br />
<br />
= Register guide =<br />
<categorytree mode=pages hideroot=on depth=1>A80_Register_guide</categorytree><br />
<br />
== Wiki ==<br />
These pages have been put together by scraping information from the SDK.<br />
* [[A80/Memory map]]<br />
* [[A80/Clock Control Module]]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_lichee.tar.gz SDK (2GB full tarball)]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped.tar.gz SDK (300MB reduced tarball)]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/ SDK (unpacked)]<br />
<br />
The SDK contains customized sources for U-boot, Linux, Android and buildroot.<br />
<br />
=== SDK Content ===<br />
* Linux Kernel: A80/lichee/linux-3.4<br />
* Buildroot: A80/lichee/buildroot<br />
* U-boot: A80/lichee/brandy/u-boot-2011.09<br />
* Various Allwinner tools: A80/lichee/tools<br />
<br />
<br />
=== Building images with the SDK ===<br />
<br />
On Debian the following 32bit packages have to be installed.<br />
<pre><br />
sudo apt-get install lib32stdc++6 lib32z1<br />
</pre><br />
<br />
To build an image use<br />
<pre><br />
wget http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_lichee.tar.gz<br />
tar -xzf A80_SDK_20140728_lichee.tar.gz<br />
cd lichee/<br />
./build.sh config<br />
./build<br />
</pre><br />
<br />
== Boot0 ==<br />
[[BROM|Boot0]] initializes the DRAM, basic clocks and loads U-boot from NAND or MMC.<br />
There is no boot1 on A80. Boot0 directly loads U-boot. So far we do not have the source.<br />
<br />
Binaries of boot0 can be found in the SDK under lichee/tools/pack/chips/sun9iw1p1/bin/<br />
<br />
== Android ==<br />
[http://dl.cubieboard.org/software/a80/ Preliminary link to a Cubitech download for A80 kernel including a Android sun9i image]<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== fastboot (under windows) ===<br />
The optimus/pcduino8 board has the fastboot feature in its bootloader. Once booted into it, the device will identify itself as:<br />
<pre>VID:1F3A PID:1010</pre><br />
Under windows, no driver can be found, but it is however possible to force the installation of the fastboot driver.<br />
<br />
To make fastboot work from a PC, we need to change the fastboot code because Google hard-coded its partners [https://github.com/android/platform_system_core/blob/master/fastboot/fastboot.c#L205-217 into the fastboot source code]. To be able to use fastboot we need to add 0x1F3A as Allwinner and compile this. A prebuilt windows binary is available [https://dl.dropboxusercontent.com/u/16440367/a80/fastboot.exe here].<br />
<br />
=Android device repository=<br />
https://github.com/skoperst/android_device_sunxi_kylincommon<br />
https://github.com/skoperst/android_device_sunxi_kylinoptimus<br />
== U-boot ==<br />
<br />
=== Allwinner ===<br />
<br />
=== Sunxi Community ===<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
<br />
=== Sunxi Community ===<br />
<br />
=== Cubietech Kernel ===<br />
<br />
The cubietech guys [https://github.com/cubieboard/CC-A80-kernel-source/ have a kernel available].<br />
<br />
== GPL violations ==<br />
<br />
As is usual, there are the libnand and libisp violations. But with A80, Allwinner decided to step this up a notch, or two, or all the way to 11.<br />
<br />
=== Kernel ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/nand/sun8iw1p1/libnand_sun8iw1p1 modules/nand/sun8iw1p1/libnand_sun8iw1p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/nand/sun8iw3p1/libnand_sun8iw3p1 modules/nand/sun8iw3p1/libnand_sun8iw3p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/nand/sun8iw5p1 modules/nand/sun8iw5p1/libnand_sun8iw5p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/nand/sun8iw6p1/libnand_sun8iw6p1 modules/nand/sun8iw6p1/libnand_sun8iw6p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/nand/sun9iw1p1/libnand_sun9iw1p1 modules/nand/sun9iw1p1/libnand_sun9iw1p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw3p1.code] Dram frequency scaling binary, run from SRAM while SDRAM is inaccessible.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw6p1.code] Dram frequency scaling binary, run from SRAM while SDRAM is inaccessible.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v1] <br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v2]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/libisp]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/media/video/sunxi-fd/lib/ drivers/media/video/sunxi-fd/lib/libfd] Face detector.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/usb/sunxi_usb/usb3/ drivers/usb/sunxi_usb/usb3/libusb300] USB3.0 support.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/arisc/binary/ drivers/arisc/binary/arisc_sun9iw1p1.bin] Cortex-M3 core for deep power save modes.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libdsi] DSI support for display.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libedp] eDP support for display.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/video/sunxi/hdmi/aw/ drivers/video/sunxi/hdmi/aw/libhdcp] HDCP support for HDMI.<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/input/touchscreen/aw5x06/ drivers/input/touchscreen/aw5x06/libAW5306]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/input/touchscreen/gslx680new/ drivers/input/touchscreen/gslx680new/gsl_point_id_20131111]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/modules/aw_schw/libschw modules/aw_schw/libschw]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/arch/arm/mach-sunxi/pm/standby/super/resume/resume1.code arch/arm/mach-sunxi/pm/standby/super/resume/resume1.code]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/arch/arm/mach-sunxi/pm/standby/standby.code arch/arm/mach-sunxi/pm/standby/standby.code]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/linux-3.4/drivers/net/ethernet/sunxi/eth/sunxi_libgeth drivers/net/ethernet/sunxi/eth/sunxi_libgeth]<br />
<br />
=== U-boot ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun5i/ nand_sunxi/sun5i/libnand-sun5i]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw7/ nand_sunxi/sun8iw7/libnand-sun8iw7]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw8/ nand_sunxi/sun8iw8/libnand-sun8iw8]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw6/ nand_sunxi/sun8iw6/libnand-sun8iw6]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun7i/ nand_sunxi/sun7i/libnand-sun7i]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun9iw1/ nand_sunxi/sun9iw1/libnand-sun9iw1]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw9/ nand_sunxi/sun8iw9/libnand-sun8iw9]<br />
* [http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728_stripped/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw1/ nand_sunxi/sun8iw1/libnand-sun8iw1]<br />
<br />
= Devices =<br />
<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
<br />
Devices are slowly becoming available, here are some of the announced ones:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)].<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cedrus&diff=11949Cedrus2014-11-19T15:14:23Z<p>Rose28357: /* Supported codec matrix */</p>
<hr />
<div>== Overview ==<br />
Cedrus is a project intended for fully opensource hardware video-decoding stack, replacing the proprietary, GPL violating CedarX shipped with sunxi devices. The name stems from the Cedrus tree, which commonly is known as [http://en.wikipedia.org/wiki/Cedrus Cedar].<br />
<br />
Cedrus support is currently implemented as a vdpau driver for the [https://en.wikipedia.org/wiki/VDPAU vdpau framework].<br />
<br />
Main project is located on Github: https://github.com/linux-sunxi/libvdpau-sunxi<br />
<br />
=== Current status ===<br />
<br />
Currently the driver is in alpha status or Proof of Concept (PoC) phase. The driver is quite usable, but by far not production quality and a security risk. Confirmed work with A10, A13 and A20.<br />
<br />
'''SECURITY NOTE:''': Currently opensource driver implemented as replacement of blob. Blob and current opensource replacement driver (vdpau-sunxi) use allwinner's kernel driver that remap registers for use in userspace, with allwinner disp driver used for hardware overlay. Together with access to physical memory, and dangerous VE DMA ability it makes serious security problem. <br />
<br />
That should be replaced proper way in ongoing mainline process.<br />
<br />
=== Supported codec matrix ===<br />
{|class="wikitable" style="text-align: center;"<br />
|-<br />
!Codec<br />
!vdpau-sunxi<br />
!Cedrus Opensource PoC <br />
!CedarX Blob decoder<br />
|-<br />
!colspan="4"|Decoding support<br />
|-<br />
|style="background: #22CC22;"|MPEG1<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|MPEG2<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MPEG4<br />
|style="background: #EEEE22;"|Limited<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MS-MPEG<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|VP6<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported">[https://en.wikipedia.org/wiki/VDPAU#Nvidia_VDPAU_Feature_Sets VDPAU] does not support this codec</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #22CC22;"|MJPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|XDIV<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|DIVX<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|Sorenson<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|WMV9<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|RMVB<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|H264<br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|AVS<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|VP8<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
!colspan="4"|Encoding support<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note">VDPAU API doesn't have support for encoding.</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EE2222;"|MJPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|H264<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EEEE22;"|(Only I-frames)<br />
|style="background: #DDDDDD;"|Yes<br />
|}<br />
<references /><br />
<br />
=== Tasks ===<br />
[[ Cedrus/libvdpau_integration_matrix ]] gives an overview about the functions provided via the VDPAU API and their integration in libvdpau-sunxi.<br />
It also lists the required functions for various programs.<br />
<br />
== Installation ==<br />
<br />
=== Prerequisites ===<br />
Various things are required to get cedrus to play back video. This list can act as a quick start.<br />
* [http://linux-sunxi.org/Kernel_arguments Proper memory reservation]<br />
* cedarX module either compiled in or the module loaded<br />
* write access permissions on /dev/disp and /dev/cedar_dev<br />
* sunxi-vdpau library installed<br />
* enviroment variable telling libvdpau which library to use<br />
<br />
=== Reserve memory for the VPU ===<br />
The VPU needs a block of memory to store (de)coded frames in. The kernel needs to be informed about this before booting.<br />
To do so, the kernel command line needs to be modified. This can be done at compiletime or by modifying the bootloaders [[Kernel_arguments]]. By default Allwinner reserves 80 Megabytes but depending on the player being used and video being decoded, less can suffice or more can be necessary. Feel free to experiment with the amount, but if available, 128 MiB is a nice number to test things with. This can be set by the following kernel argument.<br />
<pre>sunxi_ve_mem_reserve=128</pre><br />
<br />
This kernel parameter is ignored in recent 3.4 kernels, if CMA is enabled in kernel configuration.<br />
If CONFIG_CMA=y, ve_size is hardcoded to 80MB in sunxi_cedar kernel module.<br />
<br />
=== CedarX module ===<br />
Depending on where the kernel came from, the cedarX kernel is either available as module or built in. To see whether it is available, check whether /dev/cedar_dev exists. If not, run ''modprobe sun4i_cedar_dev'' (in future versions this should be called sunxi_cedar_dev). There should now be a /dev/cedar_dev<br />
<br />
==== Write access persmissions ====<br />
To be able to pass data to the VPU, proper permission to /dev/cedar_dev is required.<br />
<br />
For testing, manually setting permissions is fine.<br />
<pre>chown <username>:<usergroup> /dev/cedar_dev<br />
chmod 666 /dev/cedar_dev</pre><br />
The VPU only decodes the video codec. To have it appear on the display, write access permission to /dev/disp is required.<br />
<pre>chown <username>:<usergroup> /dev/disp<br />
chmod 666 /dev/disp</pre><br />
<br />
To do this properly with udev rules, create files for each under /etc/udev/rules.d/<br />
<br />
50-disp.rules<br />
<pre>KERNEL=="disp", MODE="0660", GROUP="video"</pre><br />
50-cedar.rules<br />
<pre>KERNEL=="cedar_dev", MODE="0660", GROUP="video"</pre><br />
<br />
=== Installing sunxi-vdpau library ===<br />
There are currently no pre-compiled binaries available and have to be compiled from source. This most likely has to be performed on the target device, while possible to be cross compiled.<br />
==== Prerequisites ====<br />
* git (yum install git | apt-get install git | emerge git)<br />
* gcc (yum group-install "Development Tools" | apt-get install build-essential)<br />
* libvdpau-dev (yum install libvdpau-dev | apt-get install libvdpau-dev | emerge libvdpau)<br />
<br />
==== Compiling source ====<br />
The current libvdpau code is stored on github and gitorious.<br />
<pre>git clone https://github.com/linux-sunxi/libvdpau-sunxi.git<br />
cd libvdpau-sunxi<br />
make<br />
sudo make install</pre><br />
Pay close attention as to where these libraries get installed. Depending on the distro in use, it's most likely they will need to be put in '''/usr/lib/vdpau'''. If they are not put there, manually copy them there.<br />
With the driver now installed, it is important to tell vdpau to use this library. By default it will try to load and use the nVidia vdpau implementation.<br />
<pre>export VDPAU_DRIVER=sunxi</pre><br />
The latest git version of [[Xorg#fbturbo_driver]] can report the DRI2 VDPAU name as 'sunxi', if 'sunxi_cedar_mod' kernel module loaded successfully. See [https://github.com/ssvb/xf86-video-fbturbo/commit/4c7313c6db9ee770f39740c735268c88fcd136cf commit]<br />
<br />
=== Playing video ===<br />
With everything setup properly, it should now be possible to playback accelerated media!<br />
<br />
The best test file would be one of the well known sample media's. The big buck bunny is an often used one.<br />
http://samplemedia.linaro.org/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4<br />
<br />
Depending if you use mpv or mplayer2, the following options are required.<br />
For mplayer2:<br />
<pre> mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau, [filename]</pre><br />
For mpv:<br />
<pre> mpv --vo=vdpau --hwdec=vdpau --hwdec-codecs=all [filename]</pre><br />
<br />
Note: There have been reports that some mplayer versions in certain repositories are not compiled with vdpau support.<br />
<br />
Now you can also try to use other files, but note it has to be mpeg1, mpeg2 or h264 encoded!<br />
<br />
=== OSD support ===<br />
Now we have simple OSD implementation, using g2d hardware.<br />
<br />
Access to g2d (as xorg turbo driver) is also required.<br />
<pre>chmod 666 /dev/g2d</pre><br />
<br />
To do this properly with udev rules, create a file under /etc/udev/rules.d/<br />
<br />
50-g2d.rules<br />
<pre>KERNEL=="g2d", MODE="0660", GROUP="video"</pre><br />
and make sure that the user wanting to decode video is in the video group!<br />
<br />
To turn on OSD support during runtime<br />
<br />
<pre>export VDPAU_OSD=1</pre><br />
<br />
<br />
Note: mplayer's "-ass" osd not currently supported, due to lack of 'alpha only' surfaces support in current g2d driver<br />
<br />
<br />
[[Category:Tutorial]]<br />
[[Category:CedarX]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cedrus&diff=11948Cedrus2014-11-19T15:13:49Z<p>Rose28357: /* Supported codec matrix */</p>
<hr />
<div>== Overview ==<br />
Cedrus is a project intended for fully opensource hardware video-decoding stack, replacing the proprietary, GPL violating CedarX shipped with sunxi devices. The name stems from the Cedrus tree, which commonly is known as [http://en.wikipedia.org/wiki/Cedrus Cedar].<br />
<br />
Cedrus support is currently implemented as a vdpau driver for the [https://en.wikipedia.org/wiki/VDPAU vdpau framework].<br />
<br />
Main project is located on Github: https://github.com/linux-sunxi/libvdpau-sunxi<br />
<br />
=== Current status ===<br />
<br />
Currently the driver is in alpha status or Proof of Concept (PoC) phase. The driver is quite usable, but by far not production quality and a security risk. Confirmed work with A10, A13 and A20.<br />
<br />
'''SECURITY NOTE:''': Currently opensource driver implemented as replacement of blob. Blob and current opensource replacement driver (vdpau-sunxi) use allwinner's kernel driver that remap registers for use in userspace, with allwinner disp driver used for hardware overlay. Together with access to physical memory, and dangerous VE DMA ability it makes serious security problem. <br />
<br />
That should be replaced proper way in ongoing mainline process.<br />
<br />
=== Supported codec matrix ===<br />
{|class="wikitable" style="text-align: center;"<br />
|-<br />
!Codec<br />
!vdpau-sunxi<br />
!Cedrus Opensource PoC <br />
!Blob decoder<br />
|-<br />
!colspan="4"|Decoding support<br />
|-<br />
|style="background: #22CC22;"|MPEG1<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|MPEG2<br />
|style="background: #22CC22;"|Yes(only progressive)<br />
|style="background: #22CC22;"|Yes <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MPEG4<br />
|style="background: #EEEE22;"|Limited<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|MS-MPEG<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|VP6<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported">[https://en.wikipedia.org/wiki/VDPAU#Nvidia_VDPAU_Feature_Sets VDPAU] does not support this codec</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #22CC22;"|MJPEG<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|XDIV<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|DIVX<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|Sorenson<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|WMV9<br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|RMVB<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #22CC22;"|H264<br />
|style="background: #22CC22;"|Yes<br />
|style="background: #EE2222;"|No <br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EEEE22;"|AVS<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|VP8<br />
|style="background: #DDDDDD;"|No<ref name="vdpau-unsupported" /><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
!colspan="4"|Encoding support<br />
|-<br />
|style="background: #22CC22;"|JPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note">VDPAU API doesn't have support for encoding.</ref><br />
|style="background: #22CC22;"|Yes<br />
|style="background: #DDDDDD;"|Yes<br />
|-<br />
|style="background: #EE2222;"|MJPEG<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EE2222;"|No<br />
|style="background: #EE2222;"|No<br />
|-<br />
|style="background: #EEEE22;"|H264<br />
|style="background: #EE2222;"|No<ref name="vdpau-encoding-note" /><br />
|style="background: #EEEE22;"|(Only I-frames)<br />
|style="background: #DDDDDD;"|Yes<br />
|}<br />
<references /><br />
<br />
=== Tasks ===<br />
[[ Cedrus/libvdpau_integration_matrix ]] gives an overview about the functions provided via the VDPAU API and their integration in libvdpau-sunxi.<br />
It also lists the required functions for various programs.<br />
<br />
== Installation ==<br />
<br />
=== Prerequisites ===<br />
Various things are required to get cedrus to play back video. This list can act as a quick start.<br />
* [http://linux-sunxi.org/Kernel_arguments Proper memory reservation]<br />
* cedarX module either compiled in or the module loaded<br />
* write access permissions on /dev/disp and /dev/cedar_dev<br />
* sunxi-vdpau library installed<br />
* enviroment variable telling libvdpau which library to use<br />
<br />
=== Reserve memory for the VPU ===<br />
The VPU needs a block of memory to store (de)coded frames in. The kernel needs to be informed about this before booting.<br />
To do so, the kernel command line needs to be modified. This can be done at compiletime or by modifying the bootloaders [[Kernel_arguments]]. By default Allwinner reserves 80 Megabytes but depending on the player being used and video being decoded, less can suffice or more can be necessary. Feel free to experiment with the amount, but if available, 128 MiB is a nice number to test things with. This can be set by the following kernel argument.<br />
<pre>sunxi_ve_mem_reserve=128</pre><br />
<br />
This kernel parameter is ignored in recent 3.4 kernels, if CMA is enabled in kernel configuration.<br />
If CONFIG_CMA=y, ve_size is hardcoded to 80MB in sunxi_cedar kernel module.<br />
<br />
=== CedarX module ===<br />
Depending on where the kernel came from, the cedarX kernel is either available as module or built in. To see whether it is available, check whether /dev/cedar_dev exists. If not, run ''modprobe sun4i_cedar_dev'' (in future versions this should be called sunxi_cedar_dev). There should now be a /dev/cedar_dev<br />
<br />
==== Write access persmissions ====<br />
To be able to pass data to the VPU, proper permission to /dev/cedar_dev is required.<br />
<br />
For testing, manually setting permissions is fine.<br />
<pre>chown <username>:<usergroup> /dev/cedar_dev<br />
chmod 666 /dev/cedar_dev</pre><br />
The VPU only decodes the video codec. To have it appear on the display, write access permission to /dev/disp is required.<br />
<pre>chown <username>:<usergroup> /dev/disp<br />
chmod 666 /dev/disp</pre><br />
<br />
To do this properly with udev rules, create files for each under /etc/udev/rules.d/<br />
<br />
50-disp.rules<br />
<pre>KERNEL=="disp", MODE="0660", GROUP="video"</pre><br />
50-cedar.rules<br />
<pre>KERNEL=="cedar_dev", MODE="0660", GROUP="video"</pre><br />
<br />
=== Installing sunxi-vdpau library ===<br />
There are currently no pre-compiled binaries available and have to be compiled from source. This most likely has to be performed on the target device, while possible to be cross compiled.<br />
==== Prerequisites ====<br />
* git (yum install git | apt-get install git | emerge git)<br />
* gcc (yum group-install "Development Tools" | apt-get install build-essential)<br />
* libvdpau-dev (yum install libvdpau-dev | apt-get install libvdpau-dev | emerge libvdpau)<br />
<br />
==== Compiling source ====<br />
The current libvdpau code is stored on github and gitorious.<br />
<pre>git clone https://github.com/linux-sunxi/libvdpau-sunxi.git<br />
cd libvdpau-sunxi<br />
make<br />
sudo make install</pre><br />
Pay close attention as to where these libraries get installed. Depending on the distro in use, it's most likely they will need to be put in '''/usr/lib/vdpau'''. If they are not put there, manually copy them there.<br />
With the driver now installed, it is important to tell vdpau to use this library. By default it will try to load and use the nVidia vdpau implementation.<br />
<pre>export VDPAU_DRIVER=sunxi</pre><br />
The latest git version of [[Xorg#fbturbo_driver]] can report the DRI2 VDPAU name as 'sunxi', if 'sunxi_cedar_mod' kernel module loaded successfully. See [https://github.com/ssvb/xf86-video-fbturbo/commit/4c7313c6db9ee770f39740c735268c88fcd136cf commit]<br />
<br />
=== Playing video ===<br />
With everything setup properly, it should now be possible to playback accelerated media!<br />
<br />
The best test file would be one of the well known sample media's. The big buck bunny is an often used one.<br />
http://samplemedia.linaro.org/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4<br />
<br />
Depending if you use mpv or mplayer2, the following options are required.<br />
For mplayer2:<br />
<pre> mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau, [filename]</pre><br />
For mpv:<br />
<pre> mpv --vo=vdpau --hwdec=vdpau --hwdec-codecs=all [filename]</pre><br />
<br />
Note: There have been reports that some mplayer versions in certain repositories are not compiled with vdpau support.<br />
<br />
Now you can also try to use other files, but note it has to be mpeg1, mpeg2 or h264 encoded!<br />
<br />
=== OSD support ===<br />
Now we have simple OSD implementation, using g2d hardware.<br />
<br />
Access to g2d (as xorg turbo driver) is also required.<br />
<pre>chmod 666 /dev/g2d</pre><br />
<br />
To do this properly with udev rules, create a file under /etc/udev/rules.d/<br />
<br />
50-g2d.rules<br />
<pre>KERNEL=="g2d", MODE="0660", GROUP="video"</pre><br />
and make sure that the user wanting to decode video is in the video group!<br />
<br />
To turn on OSD support during runtime<br />
<br />
<pre>export VDPAU_OSD=1</pre><br />
<br />
<br />
Note: mplayer's "-ass" osd not currently supported, due to lack of 'alpha only' surfaces support in current g2d driver<br />
<br />
<br />
[[Category:Tutorial]]<br />
[[Category:CedarX]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10678A802014-08-25T12:32:17Z<p>Rose28357: Undo revision 10677 by Rose28357 (talk)</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
[[File:A80 Datasheet Revision 1.0 0404.pdf|original A80 Datasheet Rev 1.0]]<br /><br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/ SDK (tarball) {{Remove|Uploading!}}]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/ SDK (unpacked) {{Remove|TODO!}}]<br />
<br />
The SDK contains customized sources for U-boot, Linux, Android and buildroot.<br />
<br />
=== SDK Content ===<br />
* Linux Kernel: A80/lichee/linux-3.4<br />
* Buildroot: A80/lichee/buildroot<br />
* U-boot: A80/lichee/brandy/u-boot-2011.09<br />
* Various Allwinner tools: A80/lichee/tools<br />
<br />
== Boot0 ==<br />
[[BROM|Boot0]] initializes the DRAM, basic clocks and loads U-boot from NAND or MMC.<br />
There is no boot1 on A80. Boot0 directly loads U-boot. So far we do not have the source.<br />
<br />
Binaries of boot0 can be found in the SDK under lichee/tools/pack/chips/sun9iw1p1/bin/<br />
<br />
<br />
== Android ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== fastboot ===<br />
The optimus/pcduino8 board has the fastboot feature in its bootloader, once booted into it, the device will identify itself as: VID:1F3A PID:1010, which has no driver to be found.<br />
However Its possible to make it work by force-installing fastboot driver(In Windows), In linux it need not to be done.<br />
<br />
To make fastboot work from PC, we need to change the fastboot binary because Google hard-coded its partners to the fastboot source code: https://github.com/android/platform_system_core/blob/master/fastboot/fastboot.c#L205-217<br />
<br />
To be able to use fastboot we need to add 0x1F3A as Allwinner and compile it. <br />
Here is a prebuilt binary for windows with the change: https://dl.dropboxusercontent.com/u/16440367/a80/fastboot.exe<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
The cubietech guys [https://github.com/cubie8/linux-3.4/tree/linux-dev/ made a kernel available for a while], but then Allwinner told them to take it down again. So much for playing nice.<br />
<br />
== GPL violations ==<br />
<br />
As is usual, there are the libnand and libisp violations. But with A80, Allwinner decided to step this up a notch, or two, or all the way to 11.<br />
<br />
=== Kernel ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/modules/nand/sun8iw5p1/ modules/nand/sun8iw5p1/libnand_sun8iw5p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw3p1.code] Dram frequency scaling binary.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw6p1.code] Dram frequency scaling binary.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v1] <br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v2]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/libisp]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-fd/lib/ drivers/media/video/sunxi-fd/lib/libfd] Face detector.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/usb/sunxi_usb/usb3/ drivers/usb/sunxi_usb/usb3/libusb300] USB3.0 support.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/arisc/binary/ drivers/arisc/binary/arisc_sun9iw1p1.bin] Openrisc ar100 core for deep power save modes.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libdsi] DSI support for display.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libedp] eDP support for display<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/input/touchscreen/aw5x06/ drivers/input/touchscreen/aw5x06/libAW5306]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/input/touchscreen/gslx680new/ drivers/input/touchscreen/gslx680new/gsl_point_id_20131111]<br />
<br />
=== U-boot ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun5i/ nand_sunxi/sun5i/libnand-sun5i]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw7/ nand_sunxi/sun8iw7/libnand-sun8iw7]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw8/ nand_sunxi/sun8iw8/libnand-sun8iw8]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw6/ nand_sunxi/sun8iw6/libnand-sun8iw6]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun7i/ nand_sunxi/sun7i/libnand-sun7i]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun9iw1/ nand_sunxi/sun9iw1/libnand-sun9iw1]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw9/ nand_sunxi/sun8iw9/libnand-sun8iw9]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw1/ nand_sunxi/sun8iw1/libnand-sun8iw1]<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10677A802014-08-25T12:31:32Z<p>Rose28357: </p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, WMV9/VC-1, no H.265 !<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
[[File:A80 Datasheet Revision 1.0 0404.pdf|original A80 Datasheet Rev 1.0]]<br /><br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/ SDK (tarball) {{Remove|Uploading!}}]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/ SDK (unpacked) {{Remove|TODO!}}]<br />
<br />
The SDK contains customized sources for U-boot, Linux, Android and buildroot.<br />
<br />
=== SDK Content ===<br />
* Linux Kernel: A80/lichee/linux-3.4<br />
* Buildroot: A80/lichee/buildroot<br />
* U-boot: A80/lichee/brandy/u-boot-2011.09<br />
* Various Allwinner tools: A80/lichee/tools<br />
<br />
== Boot0 ==<br />
[[BROM|Boot0]] initializes the DRAM, basic clocks and loads U-boot from NAND or MMC.<br />
There is no boot1 on A80. Boot0 directly loads U-boot. So far we do not have the source.<br />
<br />
Binaries of boot0 can be found in the SDK under lichee/tools/pack/chips/sun9iw1p1/bin/<br />
<br />
<br />
== Android ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== fastboot ===<br />
The optimus/pcduino8 board has the fastboot feature in its bootloader, once booted into it, the device will identify itself as: VID:1F3A PID:1010, which has no driver to be found.<br />
However Its possible to make it work by force-installing fastboot driver(In Windows), In linux it need not to be done.<br />
<br />
To make fastboot work from PC, we need to change the fastboot binary because Google hard-coded its partners to the fastboot source code: https://github.com/android/platform_system_core/blob/master/fastboot/fastboot.c#L205-217<br />
<br />
To be able to use fastboot we need to add 0x1F3A as Allwinner and compile it. <br />
Here is a prebuilt binary for windows with the change: https://dl.dropboxusercontent.com/u/16440367/a80/fastboot.exe<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
The cubietech guys [https://github.com/cubie8/linux-3.4/tree/linux-dev/ made a kernel available for a while], but then Allwinner told them to take it down again. So much for playing nice.<br />
<br />
== GPL violations ==<br />
<br />
As is usual, there are the libnand and libisp violations. But with A80, Allwinner decided to step this up a notch, or two, or all the way to 11.<br />
<br />
=== Kernel ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/modules/nand/sun8iw5p1/ modules/nand/sun8iw5p1/libnand_sun8iw5p1]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw3p1.code] Dram frequency scaling binary.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/devfreq/dramfreq/mdfs/ drivers/devfreq/dramfreq/mdfs/mdfs_sun8iw6p1.code] Dram frequency scaling binary.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v1] <br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v2]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-vfe/lib/ drivers/media/video/sunxi-vfe/lib/libisp]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/media/video/sunxi-fd/lib/ drivers/media/video/sunxi-fd/lib/libfd] Face detector.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/usb/sunxi_usb/usb3/ drivers/usb/sunxi_usb/usb3/libusb300] USB3.0 support.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/arisc/binary/ drivers/arisc/binary/arisc_sun9iw1p1.bin] Openrisc ar100 core for deep power save modes.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libdsi] DSI support for display.<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun9iw1/ drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libedp] eDP support for display<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/input/touchscreen/aw5x06/ drivers/input/touchscreen/aw5x06/libAW5306]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/linux-3.4/drivers/input/touchscreen/gslx680new/ drivers/input/touchscreen/gslx680new/gsl_point_id_20131111]<br />
<br />
=== U-boot ===<br />
<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun5i/ nand_sunxi/sun5i/libnand-sun5i]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw7/ nand_sunxi/sun8iw7/libnand-sun8iw7]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw8/ nand_sunxi/sun8iw8/libnand-sun8iw8]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw6/ nand_sunxi/sun8iw6/libnand-sun8iw6]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun7i/ nand_sunxi/sun7i/libnand-sun7i]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun9iw1/ nand_sunxi/sun9iw1/libnand-sun9iw1]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw9/ nand_sunxi/sun8iw9/libnand-sun8iw9]<br />
* [http://dl.linux-sunxi.org/SDK/A80_SDK/unpacked/lichee/brandy/u-boot-2011.09/nand_sunxi/sun8iw1/ nand_sunxi/sun8iw1/libnand-sun8iw1]<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=MTD_Driver&diff=10664MTD Driver2014-08-24T18:27:01Z<p>Rose28357: </p>
<hr />
<div>Overview<br />
<br />
Kernel<br />
*bbrezillon patch<br />
<br />
Booting<br />
:from MMC<br />
*dtb<br />
:from NAND<br />
*u-boot<br />
<br />
Vocabulary<br />
*erase blocks<br />
*pages<br />
*oob<br />
*bbt</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10578A802014-08-22T09:07:59Z<p>Rose28357: /* Documentation */</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
[[File:A80 Datasheet Revision 1.0 0404.pdf|original A80 Datasheet Rev 1.0]]<br /><br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
== Logs ==<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
https://github.com/cubie8/linux-3.4/tree/linux-dev/<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10577A802014-08-22T09:04:59Z<p>Rose28357: /* Documentation */ Added Datasheet from Allwinner. I am not sure if this is allowed in our wiki. otherwise undo my change</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
[[File:A80 Datasheet Revision 1.0 0404.pdf|original A80 Datasheet Rev 1.0]]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
== Logs ==<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
https://github.com/cubie8/linux-3.4/tree/linux-dev/<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10576A802014-08-22T08:57:49Z<p>Rose28357: /* Documentation */</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
A80 Datasheet Rev 1.0 [[Media:A80 Datasheet Revision 1.0 0404.pdf]]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
== Logs ==<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
https://github.com/cubie8/linux-3.4/tree/linux-dev/<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=10575A802014-08-22T08:55:47Z<p>Rose28357: /* Documentation */</p>
<hr />
<div>{{Infobox SoC<br />
| image = [[File:A80_soc.jpg|250px]]<br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun9i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
A80 Datasheet Rev 1.0 [[File:A80 Datasheet Revision 1.0 0404.pdf]]<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
== Logs ==<br />
[http://pastebin.com/Eq0Xriwp OptimusBoard Boot Log (Android)]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
https://github.com/cubie8/linux-3.4/tree/linux-dev/<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
* [http://armdevices.net/2014/01/22/allwinner-a80-optimusboard-big-little-octa-core-a15a7/ Board OptimusBoard (created by Merrii for Allwinner, is sent to selected users by Allwinner to test the A80)]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=File:A80_Datasheet_Revision_1.0_0404.pdf&diff=10574File:A80 Datasheet Revision 1.0 0404.pdf2014-08-22T08:53:30Z<p>Rose28357: A80 Datasheet 1.0</p>
<hr />
<div>A80 Datasheet 1.0</div>Rose28357https://linux-sunxi.org/index.php?title=User_talk:H3ndrik/Mainline_Debian_HowTo&diff=10102User talk:H3ndrik/Mainline Debian HowTo2014-07-31T06:54:00Z<p>Rose28357: /* Prerequisites */</p>
<hr />
<div>This page describes bootstrapping debian with it's default (mainline) linux kernel (>= 3.15 / 3.16) to create a SD-card with a clean (official) install.<br />
Based on the instructions on the official debian wiki [https://wiki.debian.org/InstallingDebianOn/Allwinner]<br />
<br />
To summarize the process: Most work is the normal debian bootstrapping procedure. Apart from that we need to get the kernel package from the experimental repository and it is necessary to compile a patched version of u-boot.<br />
<br />
== Caveats ==<br />
* The kernel comes without display drivers, so '''you won't get any display-output with this guide'''! Use [[UART]] or ssh to login<br />
* We need at least Linux 3.16 for MMC (SD-Card) support (the debian folks also backported this patch to their version of 3.15)<br />
* We will use a recent version of u-boot and device tree. The Allwinner-specific ''script.bin'' isn't needed anymore.<br />
* ''linux-image-3.16-rc6-armmp-lpae'' is the current version at the time of writing. You'll have to modify these instructions if there is a new version [https://packages.debian.org/experimental/kernel/]<br />
<br />
= Prerequisites =<br />
What do we need (of hardware) to do the build prozess ?<br />
Which Hardware will be supported ?<br />
<br />
= Getting a cross toolchain =<br />
Refer to [[Toolchain]].<br />
<br />
In short (and if you're using Debian):<br />
apt-get install emdebian-archive-keyring<br />
echo "deb http://www.emdebian.org/debian/ unstable main" >> /etc/apt/sources.list.d/emdebian.list<br />
apt-get update<br />
apt-get install gcc-4.7-arm-linux-gnueabihf<br />
for i in /usr/bin/arm-linux-gnueabihf*-4.7 ; do ln -s $i ${i%%-4.7} ; done<br />
apt-get install build-essential git binfmt-support qemu-user-static debootstrap<br />
<br />
= Building u-boot =<br />
Mainline u-boot seems yet to be missing a few sunxi-specific patches, so we have to use uboot-sunxi. Hans de Goede's version has working PCSI support for SMP (to enable all CPU cores).<br />
git clone https://github.com/jwrdegoede/u-boot-sunxi.git -b sunxi-next<br />
cd u-boot-sunxi<br />
make CROSS_COMPILE=arm-linux-gnueabihf Cubietruck_config<br />
make -j4 CROSS_COMPILE=arm-linux-gnueabihf-<br />
<br />
(Also refer to [[U-Boot#Compile U-Boot]])<br />
<br />
= Setting up the sd card =<br />
${card} is the SD device (ie ''/dev/sdc''). ${partition} is the partition number (ie. ''1'').<br />
Warning: This will delete the content. <br />
dd if=/dev/zero of=${card} bs=1M count=1<br />
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8<br />
Create partition(s). ie one big partition beginning with sector 2048, type 83 (Linux)<br />
fdisk ${card}<br />
<br />
mkfs.ext4 ${card}${partition}<br />
mount ${card}${partition} /mnt<br />
<br />
This will first clean the card (at least the first 1M), install the u-boot bootloader you compiled in the step before,<br />
and then you can create -for example- one partition, format it, and mount it to ''/mnt/'' for use in the next steps.<br />
<br />
(Also refer to [[Bootable_SD_card]])<br />
<br />
= Bootstrapping Debian =<br />
This will bootstrap Debian testing (aka ''Jessie'').<br />
debootstrap --foreign --arch=armhf testing /mnt/<br />
cp /usr/bin/qemu-arm-static /mnt/usr/bin/<br />
mount chproc /mnt/proc -t proc<br />
mount chsys /mnt/sys -t sysfs<br />
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot /mnt /debootstrap/debootstrap --second-stage<br />
<br />
I'm not sure if the mounts of ''proc'' and ''sys'' are necessary. If in doubt, have a look at the debian wiki [https://wiki.debian.org/Debootstrap] or the official documentation.<br />
<br />
(Furthermore, when linux >=3.15 migrates to testing, we can ''--include=linux-image-armmp-lpae'' it in the first debootstrap instead of doing it later)<br />
<br />
= Configuring the system =<br />
== flash-kernel ==<br />
We are going to use flash-kernel to generate the ''boot.src''. Tell it which hardware we're aiming for. (Devices listed in: ''/usr/share/flash-kernel/db/all.db'')<br />
mkdir /mnt/etc/flash-kernel/<br />
echo "Cubietech Cubietruck" >> /mnt/etc/flash-kernel/machine<br />
<br />
Kernel arguments:<br />
echo 'LINUX_KERNEL_CMDLINE="console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p1 rootwait panic=10 ${extra}"' >> /mnt/etc/default/flash-kernel<br />
<br />
== Kernel modules ==<br />
Write extra modules that should be loaded at boot time to ''/mnt/etc/modules''.<br />
echo "rtc_sunxi" >> /etc/initramfs-tools/modules<br />
<br />
== Base configuration files ==<br />
echo "/dev/mmcblk0p1 / ext4 relatime,errors=remount-ro 0 1" > /mnt/etc/fstab<br />
echo "HOSTNAME" > /mnt/etc/hostname<br />
<br />
Hint: Please consider using your favorite debian-mirror instead of ''ftp.debian.org''.<br />
<pre>cat <<EOF > /mnt/etc/apt/sources.list<br />
# <br />
<br />
deb http://ftp.debian.org/debian/ testing main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ testing main non-free contrib<br />
<br />
deb http://security.debian.org/ testing/updates main contrib non-free<br />
deb-src http://security.debian.org/ testing/updates main contrib non-free<br />
<br />
# testing-updates, previously known as 'volatile'<br />
deb http://ftp.debian.org/debian/ testing-updates main contrib non-free<br />
deb-src http://ftp.debian.org/debian/ testing-updates main contrib non-free<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/apt/sources.list.d/experimental.list<br />
deb http://ftp.debian.org/debian/ unstable main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ unstable main non-free contrib<br />
<br />
deb http://ftp.debian.org/debian/ experimental main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ experimental main non-free contrib<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/apt/preferences.d/experimental<br />
Package: *<br />
Pin: release o=Debian,a=unstable<br />
Pin-Priority: 150<br />
<br />
Package: *<br />
Pin: release a=experimental<br />
Pin-Priority: -10<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/network/interfaces<br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
allow-hotplug eth0<br />
iface eth0 inet dhcp<br />
EOF</pre><br />
<br />
== Prepare Login ==<br />
Remember: We won't have any display output, so we can eiter:<br />
spawn a login on the serial console:<br />
echo "T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100" >> /mnt/etc/inittab<br />
and/or use ssh. Since debian disabled root password-login in jessie, re-enable it or copy your key:<br />
sed -i "s/^PermitRootLogin without-password/PermitRootLogin yes/" <br />
umask 077; mkdir /mnt/root/.ssh/ cat ~/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys<br />
<br />
== chroot and setup ==<br />
Now ''chroot'' in to the new system, install kernel and set everything up.<br />
mount -t proc chproc /mnt/proc<br />
mount chsys /mnt/sys -t sysfs<br />
mount -t devtmpfs chdev /mnt/dev || mount --bind /dev /mnt/dev<br />
mount -t devpts chpts /mnt/dev/pts<br />
echo -e '#!/bin/sh\nexit 101' > /mnt/usr/sbin/policy-rc.d<br />
chmod 755 /mnt/usr/sbin/policy-rc.d<br />
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot /mnt dpkg --configure -a<br />
<br />
LC_ALL=C LANGUAGE=C LANG=C chroot /mnt<br />
The next steps are executed inside the chroot:<br />
apt-get update<br />
apt-get install locales && dpkg-reconfigure locales<br />
dpkg-reconfigure tzdata<br />
Install the kernel and u-boot (u-boot from debian is not used, but it does no harm and i'll include it for future reference)<br />
apt-get -t experimental install linux-image-3.16-rc6-armmp-lpae u-boot u-boot-tools<br />
Install non-free firmware and add one currently missing file to the wifi-firmware:<br />
apt-get install firmware-linux firmware-brcm80211 sunxi-tools flash-kernel<br />
wget -O /lib/firmware/brcm/brcmfmac43362-sdio.txt http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/nvram_ap6210.txt<br />
Install a few other things:<br />
apt-get install console-setup keyboard-configuration systemd systemd-sysv openssh-server ntp<br />
<br />
At this point, debian should have generated a kernel image ''/boot/vmlinuz-???'' and an initrd ''/boot/initrd.img-???'' for you.<br />
Generate the ''/boot/boot.scr'', set a password and after a little cleanup you're set:<br />
flash-kernel<br />
passwd root<br />
exit<br />
<br />
= Cleanup =<br />
rm /mnt/usr/sbin/policy-rc.d<br />
rm /mnt/usr/bin/qemu-arm-static<br />
umount /mnt/dev/pts && umount /mnt/dev && umount /mnt/sys && umount /mnt/proc && umount /mnt<br />
sync<br />
<br />
= Boot =<br />
Now you should be able to boot your brand new debian installation.<br />
Hopefully it'll boot, pull up networking and you're able to login via ssh.<br />
<br />
== Manual boot (serial console) ==<br />
If it doesn't boot, you'll want an 3,3V USB [[UART]] module to debug. u-boot seems to be powerful and gives helpful error messages.<br />
If it says something like 'CRC error' 'loading default environment', that's okay, we want default. (Side note: use the filesize variable or give the size in hexadecimal)<br />
<br />
setenv bootargs console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p1 rootwait panic=10 ${extra}<br />
ext4load mmc 0:1 0x47000000 boot/dtb-3.16-rc6-armmp-lpae<br />
ext4load mmc 0:1 0x46000000 boot/vmlinuz-3.16-rc6-armmp-lpae<br />
ext4load mmc 0:1 0x48000000 boot/initrd.img-3.16-rc6-armmp-lpae<br />
bootz 0x46000000 0x48000000:${filesize} 0x47000000<br />
<br />
= Conclusion =<br />
As of now it is possible to run Debian with a recent mainline kernel and only few changes to the system. We can throw away some of the crude, device-specific things like the modifications to the kernel, 'script.bin'...<br />
U-boot is on the right track and Debian-installer will be usable on various sunxi-based systems, once a recent kernel arrives in the installer builds.<br />
<br />
What's left to be done is:<br />
* Optimizing the system<br />
* Getting some/any graphics support<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
= External Links =<br />
* [https://wiki.debian.org/InstallingDebianOn/Allwinner https://wiki.debian.org/InstallingDebianOn/Allwinner]<br />
* [https://github.com/igorpecovnik/Cubietruck-Debian/blob/master/build.sh https://github.com/igorpecovnik/Cubietruck-Debian/blob/master/build.sh]<br />
<br />
[[Category:Tutorial]]</div>Rose28357https://linux-sunxi.org/index.php?title=User_talk:H3ndrik/Mainline_Debian_HowTo&diff=10101User talk:H3ndrik/Mainline Debian HowTo2014-07-31T06:52:58Z<p>Rose28357: /* Getting a cross toolchain */</p>
<hr />
<div>This page describes bootstrapping debian with it's default (mainline) linux kernel (>= 3.15 / 3.16) to create a SD-card with a clean (official) install.<br />
Based on the instructions on the official debian wiki [https://wiki.debian.org/InstallingDebianOn/Allwinner]<br />
<br />
To summarize the process: Most work is the normal debian bootstrapping procedure. Apart from that we need to get the kernel package from the experimental repository and it is necessary to compile a patched version of u-boot.<br />
<br />
== Caveats ==<br />
* The kernel comes without display drivers, so '''you won't get any display-output with this guide'''! Use [[UART]] or ssh to login<br />
* We need at least Linux 3.16 for MMC (SD-Card) support (the debian folks also backported this patch to their version of 3.15)<br />
* We will use a recent version of u-boot and device tree. The Allwinner-specific ''script.bin'' isn't needed anymore.<br />
* ''linux-image-3.16-rc6-armmp-lpae'' is the current version at the time of writing. You'll have to modify these instructions if there is a new version [https://packages.debian.org/experimental/kernel/]<br />
<br />
= Prerequisites =<br />
What do we need (of hardware) to do the build prozess ?<br />
<br />
= Getting a cross toolchain =<br />
Refer to [[Toolchain]].<br />
<br />
In short (and if you're using Debian):<br />
apt-get install emdebian-archive-keyring<br />
echo "deb http://www.emdebian.org/debian/ unstable main" >> /etc/apt/sources.list.d/emdebian.list<br />
apt-get update<br />
apt-get install gcc-4.7-arm-linux-gnueabihf<br />
for i in /usr/bin/arm-linux-gnueabihf*-4.7 ; do ln -s $i ${i%%-4.7} ; done<br />
apt-get install build-essential git binfmt-support qemu-user-static debootstrap<br />
<br />
= Building u-boot =<br />
Mainline u-boot seems yet to be missing a few sunxi-specific patches, so we have to use uboot-sunxi. Hans de Goede's version has working PCSI support for SMP (to enable all CPU cores).<br />
git clone https://github.com/jwrdegoede/u-boot-sunxi.git -b sunxi-next<br />
cd u-boot-sunxi<br />
make CROSS_COMPILE=arm-linux-gnueabihf Cubietruck_config<br />
make -j4 CROSS_COMPILE=arm-linux-gnueabihf-<br />
<br />
(Also refer to [[U-Boot#Compile U-Boot]])<br />
<br />
= Setting up the sd card =<br />
${card} is the SD device (ie ''/dev/sdc''). ${partition} is the partition number (ie. ''1'').<br />
Warning: This will delete the content. <br />
dd if=/dev/zero of=${card} bs=1M count=1<br />
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8<br />
Create partition(s). ie one big partition beginning with sector 2048, type 83 (Linux)<br />
fdisk ${card}<br />
<br />
mkfs.ext4 ${card}${partition}<br />
mount ${card}${partition} /mnt<br />
<br />
This will first clean the card (at least the first 1M), install the u-boot bootloader you compiled in the step before,<br />
and then you can create -for example- one partition, format it, and mount it to ''/mnt/'' for use in the next steps.<br />
<br />
(Also refer to [[Bootable_SD_card]])<br />
<br />
= Bootstrapping Debian =<br />
This will bootstrap Debian testing (aka ''Jessie'').<br />
debootstrap --foreign --arch=armhf testing /mnt/<br />
cp /usr/bin/qemu-arm-static /mnt/usr/bin/<br />
mount chproc /mnt/proc -t proc<br />
mount chsys /mnt/sys -t sysfs<br />
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot /mnt /debootstrap/debootstrap --second-stage<br />
<br />
I'm not sure if the mounts of ''proc'' and ''sys'' are necessary. If in doubt, have a look at the debian wiki [https://wiki.debian.org/Debootstrap] or the official documentation.<br />
<br />
(Furthermore, when linux >=3.15 migrates to testing, we can ''--include=linux-image-armmp-lpae'' it in the first debootstrap instead of doing it later)<br />
<br />
= Configuring the system =<br />
== flash-kernel ==<br />
We are going to use flash-kernel to generate the ''boot.src''. Tell it which hardware we're aiming for. (Devices listed in: ''/usr/share/flash-kernel/db/all.db'')<br />
mkdir /mnt/etc/flash-kernel/<br />
echo "Cubietech Cubietruck" >> /mnt/etc/flash-kernel/machine<br />
<br />
Kernel arguments:<br />
echo 'LINUX_KERNEL_CMDLINE="console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p1 rootwait panic=10 ${extra}"' >> /mnt/etc/default/flash-kernel<br />
<br />
== Kernel modules ==<br />
Write extra modules that should be loaded at boot time to ''/mnt/etc/modules''.<br />
echo "rtc_sunxi" >> /etc/initramfs-tools/modules<br />
<br />
== Base configuration files ==<br />
echo "/dev/mmcblk0p1 / ext4 relatime,errors=remount-ro 0 1" > /mnt/etc/fstab<br />
echo "HOSTNAME" > /mnt/etc/hostname<br />
<br />
Hint: Please consider using your favorite debian-mirror instead of ''ftp.debian.org''.<br />
<pre>cat <<EOF > /mnt/etc/apt/sources.list<br />
# <br />
<br />
deb http://ftp.debian.org/debian/ testing main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ testing main non-free contrib<br />
<br />
deb http://security.debian.org/ testing/updates main contrib non-free<br />
deb-src http://security.debian.org/ testing/updates main contrib non-free<br />
<br />
# testing-updates, previously known as 'volatile'<br />
deb http://ftp.debian.org/debian/ testing-updates main contrib non-free<br />
deb-src http://ftp.debian.org/debian/ testing-updates main contrib non-free<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/apt/sources.list.d/experimental.list<br />
deb http://ftp.debian.org/debian/ unstable main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ unstable main non-free contrib<br />
<br />
deb http://ftp.debian.org/debian/ experimental main non-free contrib<br />
deb-src http://ftp.debian.org/debian/ experimental main non-free contrib<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/apt/preferences.d/experimental<br />
Package: *<br />
Pin: release o=Debian,a=unstable<br />
Pin-Priority: 150<br />
<br />
Package: *<br />
Pin: release a=experimental<br />
Pin-Priority: -10<br />
EOF</pre><br />
<pre>cat <<EOF > /mnt/etc/network/interfaces<br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
allow-hotplug eth0<br />
iface eth0 inet dhcp<br />
EOF</pre><br />
<br />
== Prepare Login ==<br />
Remember: We won't have any display output, so we can eiter:<br />
spawn a login on the serial console:<br />
echo "T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100" >> /mnt/etc/inittab<br />
and/or use ssh. Since debian disabled root password-login in jessie, re-enable it or copy your key:<br />
sed -i "s/^PermitRootLogin without-password/PermitRootLogin yes/" <br />
umask 077; mkdir /mnt/root/.ssh/ cat ~/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys<br />
<br />
== chroot and setup ==<br />
Now ''chroot'' in to the new system, install kernel and set everything up.<br />
mount -t proc chproc /mnt/proc<br />
mount chsys /mnt/sys -t sysfs<br />
mount -t devtmpfs chdev /mnt/dev || mount --bind /dev /mnt/dev<br />
mount -t devpts chpts /mnt/dev/pts<br />
echo -e '#!/bin/sh\nexit 101' > /mnt/usr/sbin/policy-rc.d<br />
chmod 755 /mnt/usr/sbin/policy-rc.d<br />
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot /mnt dpkg --configure -a<br />
<br />
LC_ALL=C LANGUAGE=C LANG=C chroot /mnt<br />
The next steps are executed inside the chroot:<br />
apt-get update<br />
apt-get install locales && dpkg-reconfigure locales<br />
dpkg-reconfigure tzdata<br />
Install the kernel and u-boot (u-boot from debian is not used, but it does no harm and i'll include it for future reference)<br />
apt-get -t experimental install linux-image-3.16-rc6-armmp-lpae u-boot u-boot-tools<br />
Install non-free firmware and add one currently missing file to the wifi-firmware:<br />
apt-get install firmware-linux firmware-brcm80211 sunxi-tools flash-kernel<br />
wget -O /lib/firmware/brcm/brcmfmac43362-sdio.txt http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/nvram_ap6210.txt<br />
Install a few other things:<br />
apt-get install console-setup keyboard-configuration systemd systemd-sysv openssh-server ntp<br />
<br />
At this point, debian should have generated a kernel image ''/boot/vmlinuz-???'' and an initrd ''/boot/initrd.img-???'' for you.<br />
Generate the ''/boot/boot.scr'', set a password and after a little cleanup you're set:<br />
flash-kernel<br />
passwd root<br />
exit<br />
<br />
= Cleanup =<br />
rm /mnt/usr/sbin/policy-rc.d<br />
rm /mnt/usr/bin/qemu-arm-static<br />
umount /mnt/dev/pts && umount /mnt/dev && umount /mnt/sys && umount /mnt/proc && umount /mnt<br />
sync<br />
<br />
= Boot =<br />
Now you should be able to boot your brand new debian installation.<br />
Hopefully it'll boot, pull up networking and you're able to login via ssh.<br />
<br />
== Manual boot (serial console) ==<br />
If it doesn't boot, you'll want an 3,3V USB [[UART]] module to debug. u-boot seems to be powerful and gives helpful error messages.<br />
If it says something like 'CRC error' 'loading default environment', that's okay, we want default. (Side note: use the filesize variable or give the size in hexadecimal)<br />
<br />
setenv bootargs console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p1 rootwait panic=10 ${extra}<br />
ext4load mmc 0:1 0x47000000 boot/dtb-3.16-rc6-armmp-lpae<br />
ext4load mmc 0:1 0x46000000 boot/vmlinuz-3.16-rc6-armmp-lpae<br />
ext4load mmc 0:1 0x48000000 boot/initrd.img-3.16-rc6-armmp-lpae<br />
bootz 0x46000000 0x48000000:${filesize} 0x47000000<br />
<br />
= Conclusion =<br />
As of now it is possible to run Debian with a recent mainline kernel and only few changes to the system. We can throw away some of the crude, device-specific things like the modifications to the kernel, 'script.bin'...<br />
U-boot is on the right track and Debian-installer will be usable on various sunxi-based systems, once a recent kernel arrives in the installer builds.<br />
<br />
What's left to be done is:<br />
* Optimizing the system<br />
* Getting some/any graphics support<br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
<br />
= External Links =<br />
* [https://wiki.debian.org/InstallingDebianOn/Allwinner https://wiki.debian.org/InstallingDebianOn/Allwinner]<br />
* [https://github.com/igorpecovnik/Cubietruck-Debian/blob/master/build.sh https://github.com/igorpecovnik/Cubietruck-Debian/blob/master/build.sh]<br />
<br />
[[Category:Tutorial]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=9956A802014-07-23T07:55:08Z<p>Rose28357: /* Kernel code */ moved Allwinner Kernel link to Cubietech Kernel</p>
<hr />
<div>{{Infobox SoC<br />
| image = <br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun??i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
.<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
=== Cubietech Kernel ===<br />
<br />
https://github.com/cubie8/linux-3.4/tree/linux-dev/<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]<br />
[[Category:Allwinner]]<br />
[[Category:A80]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=9954A802014-07-23T07:26:22Z<p>Rose28357: /* Devices */ Move to devices</p>
<hr />
<div>{{Infobox SoC<br />
| image = <br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun??i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
Diveces have been announced but are not available yet:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ Board CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ Board pcDuino pcDuino8]<br />
* [http://www.onda-tablet.com/onda-v989-octa-core-a80t-9-7-inch-retina-screen-ram-2gb-android-tablet-pc-32gb.html Tablet Onda Onda V989 Octa Core A80T 9.7 Inch Retina Screen RAM 2GB Android Tablet PC 32GB]<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]<br />
[[Category:Allwinner]]<br />
[[Category:A80]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=9953A802014-07-23T07:24:01Z<p>Rose28357: /* Overview */ Move list to devices</p>
<hr />
<div>{{Infobox SoC<br />
| image = <br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun??i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
== GPL violations ==<br />
<br />
= Devices =<br />
<categorytree mode=pages hideroot=on depth=1>A80 Devices</categorytree><br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]<br />
[[Category:Allwinner]]<br />
[[Category:A80]]</div>Rose28357https://linux-sunxi.org/index.php?title=Talk:A10_DRAM_Controller_Calibration&diff=9883Talk:A10 DRAM Controller Calibration2014-07-21T06:08:43Z<p>Rose28357: </p>
<hr />
<div>Rose28357> how will we collect the board specific results ? Here insunxi wiki ?<br />
<br />
ssvb> please be patient :) the complete solution includes:<br />
* a bunch of bugfixes for the dram initialization code in u-boot (they are really necessary)<br />
* a set of tools to assist finding the optimal dram configuration<br />
* and the documentation, which explains everything<br />
ssvb> everything else is ready (running the last tests in the background), right now I'm preparing the documentation part<br><br />
ssvb> when the documentation is ready, I will post an announcement to the linux-sunxi mailing list and submit the patches to the mainline u-boot<br />
Rose28357> i am very patient but also curious ;-) Thanks for your good and well structured work. Physicists love that !</div>Rose28357https://linux-sunxi.org/index.php?title=A10_DRAM_Controller_Calibration&diff=9882A10 DRAM Controller Calibration2014-07-21T06:04:27Z<p>Rose28357: /* The bootloader */ Typo</p>
<hr />
<div>=Overview of the DRAM controller features affecting the clock speed limit and reliability=<br />
<br />
This section provides information about DDR3 memory in general and an overview of the relevant configuration features of the A10/A13/A20 DRAM controller.<br />
<br />
==DQS gate training==<br />
<br />
The DQ data lines and DQS/DQS# strobe lines are used both for sending data to the DRAM chips and also for receiving data back. As a result, the DRAM controller must switch between reading and writing at appropriate times. After sending a read command to the DRAM chip, we are expecting a response with a certain delay. At the time when this response arrives, we need to have the DQS gate open to let the data in. Then after the data is fully received and we need to switch back to writing, the DQS gate has to be closed. To allow a certain level of tolerance to the timing skew, every batch of read operations is surrounded by 0.9 cycle long "preamble" and the 0.3 cycle long "postamble". The gate needs to be open during "preamble" and closed during "postamble".<br />
<br />
An important parameter to be configured is the delay between submitting read commands and opening the DQS gate for getting the responses. It is written to the [[A10_DRAM_Controller_Register_Guide#SDR_RSLRn|SDR_RSLR0/SDR_RSLR1]] and the [[A10_DRAM_Controller_Register_Guide#SDR_RDGRn|SDR_RDGR0/SDR_RDGR1]] registers, which configure it with 1/4 cycle granularity. Luckily, '''this delay can be automatically detected by the hardware''' (triggered by setting the [[A10_DRAM_Controller_Register_Guide#SDR_CCR|CCR_DATA_TRAINING]] bit in the SDR_CCR register). Unluckily, <span style="color:red">'''the automatic detection is a bit flaky and sometimes ends up with unreliable settings'''</span>, especially on cold system start (this is a problem only for high DRAM clock frequencies, low frequencies are reasonably safe). So it makes a lot of sense to just identify the optimal DQS gating delay for each board and override the hardware detection with a pre-defined delay in the 'dram_para' struct.<br />
<br />
Other than the delay value itself, we have two types of windowing to select from:<br />
* passive (the DQS gate close time is calculated as the gate open time plus the duration of the read operation added)<br />
* active (the DQS gate is auto-closing, internally implemented by watching for the last rising edge on the DQS line)<br />
<br />
The passive windowing mode is activated by setting the [[A10_DRAM_Controller_Register_Guide#SDR_CCR|CCR_DQS_GATE]] bit in the SDR_CCR register. However accurately hitting the 0.3 cycle long "postamble" is a bit difficult in the passive mode with just 1/4 cycle delay granularity. The active windowing mode exists to address this particular problem and should be preferred. Still there is one good use for the passive windowing mode: that's the process of hardware DQS gate training itself. Since the passive mode has more strict timing requirements, the gating delay value obtained by the hardware DQS gate training is more accurate in passive mode.<br />
<br />
Also the hardware supports DQS gating delay drift compensation (the [[A10_DRAM_Controller_Register_Guide#SDR_CCR|CCR_DQS_DRIFT_COMP]] bit in the SDR_CCR register) for automatically adjusting it at runtime if necessary. But in reality, experiments show that enabling the drift compensation feature just makes reliability worse and we should avoid it.<br />
<br />
==Impedance settings, ODT and ZQ calibration==<br />
<br />
The tracks on the PCB connect the DRAM controller with the DDR3 chip(s) and behave like any other wires. Signal integrity may vary really a lot depending on whether the [http://en.wikipedia.org/wiki/Impedance_matching impedance matching] has been done properly. Both output drive and termination impedance can (and should) be adjusted on both ends of the track. For the memory write operations, we deal with the DRAM controller output drive impedance and the DDR3 termination impedance. And vice versa, for the memory read operations, we deal with the DRAM controller termination impedance and the DDR3 output drive impedance.<br />
<br />
The [http://en.wikipedia.org/wiki/On-die_termination ODT] abbreviation means on-die termination. The internal resistors for implementing configurable impedance are located on-die both in the SoC (for the DRAM controller) and in the DDR3 chips. But because the accuracy of the on-die resistors is not so great, they are calibrated against external high precision 240 ohm resistors at the initialization time (both on the DRAM controller side and on the DDR3 chip side) and optionally periodically re-calibrated at run time (on the DDR3 chip side, coupled with the refresh operation). This calibration process against the external resistor is called ZQ calibration. When looking at the device schematics, one can normally find at least two high precision 240 ohm resistors: one connected to the SoC and one connected to the DRAM chip. For example, [https://github.com/OLIMEX/OLINUXINO/blob/master/HARDWARE/A13-OLinuXino-MICRO/A13-OLinuXino-MICRO_Rev_B.pdf?raw=true A13-OLinuXino-MICRO] has these resistors connected to the DZQ and the ZQ pins.<br />
<br />
The purpose of the ZQ calibration is only to ensure that the configured impedance settings are applied accurately. For example, if we configure the 240/4 ohm termination impedance, then we want to be sure that it is really 60 ohm on every board, regardless of the PVT (process-voltage-temperature) differences. ZQ calibration solves this. <span style="color:red">'''But the selection of optimal impedance divisors is still the responsibility of the user, because they are not configured automatically by the hardware'''</span>. For Allwinner A10/A13/A20 based devices, the impedance divisors are specified in the 'dram_para' struct in the u-boot bootloader via the following parameters:<br />
* the ''''zq'''' and the ''''odt_en'''' variables (see the [[A10_DRAM_Controller_Register_Guide#SDR_ZQCR0|SDR_ZQCR0]] register) for the impedance on the DRAM controller end of the wire <br />
* the ''''emr1'''' variable (see the description of the MR1 configuration register bits in the DDR3 spec or the DRAM datasheet) for the impedance on the DDR3 chip end of the wire<br />
<br />
<br />
Additional references:<br />
* [http://www.micron.com/-/media/Documents/Products/Technical%20Note/DRAM/TN4104.pdf DDR3 Dynamic On-Die Termination]<br />
* [http://www.micron.com/~/media/Documents/Products/Technical%20Note/DRAM/TN4102.pdf DDR3 ZQ Calibration]<br />
* [http://www.altera.com/literature/hb/external-memory/emi_plan_board_ddr2.pdf Altera - DDR2, DDR3, and DDR4 SDRAM Board Design Guidelines]<br />
<br />
==CLK-DQS timing de-skew, read and write leveling==<br />
<br />
In the case of PCB tracks length mismatch, there may be some timing skew between the CMD/ADD/CLK, DQ and/or DQS/DQS# signals. Some general overview can be found in the [http://www.micron.com/-/media/Documents/Products/Technical%20Note/DRAM/E1503E10.pdf New Features of DDR3 SDRAM] pdf. Also the [http://www.altera.com/literature/wp/wp-01034-Utilizing-Leveling-Techniques-in-DDR3-SDRAM.pdf Altera - Utilizing Leveling Techniques in DDR3 SDRAM Memory Interfaces] pdf is quite interesting even though it talks about a different DRAM controller and is not directly applicable.<br />
<br />
The A10/A13/A20 DRAM controller has a lot of knobs to configure various delays, even up to an individual bit level. <span style="color:red">'''However, the DRAM controller does not implement any hardware assistance for automatic read/write leveling at all.'''</span> So we are up to using some other method for exploring the vast space of possible configurations to find the one, which works the best. If a good configuration for the delay adjustments is identified, then we can hardcode it into the 'dram_para' struct in the u-boot bootloader for each board type.<br />
<br />
Right now, all the delays related configuration is exposed as the ''''tpr3'''' variable in the 'dram_para' struct. This variable is a hexadecimal number, composed of the following bit-fields:<br />
* bits [22:20] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|MFWDLY]] bits of the command lane<br />
* bits [18:16] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|MFBDLY]] bits of the command lane<br />
* bits [15:12] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|SDPHASE]] bits of the byte lane 3<br />
* bits [11:8] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|SDPHASE]] bits of the byte lane 2<br />
* bits [7:4] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|SDPHASE]] bits of the byte lane 1<br />
* bits [3:0] - mapped to [[A10_DRAM_Controller_Register_Guide#SDR_DLLCRn|SDPHASE]] bits of the byte lane 0<br />
<br />
Basically, adjusting bits 22:16 in the 'tpr3' parameter tweaks delays on the command lane. Because the relative delay between the signals on the command lane and the signals on the byte lanes changes, this also effectively adjusts the delays for both '''write''' and read operations. Also adjusting bits 15:0 in the 'tpr3' parameter allows to postpone or move forward the sampling of incoming data for '''read''' operations (relative to the default 90 degrees phase). Since we can control both read and write delays almost independently from each other, the 'tpr3' parameter is good enough for simple de-skew adjustments. There are also other delay related knobs in the DRAM controller, but they are not exposed in the 'dram_para' struct yet.<br />
<br />
==DDR3 timing parameters==<br />
<br />
The description of DDR3 DRAM modules sometimes includes a sequence of 4 numbers separated by dashes, for example DDR3-1333 9-9-9-24. These four numbers are the values of tCAS-tRCD-tRP-tRAS parameters, which are most important for performance (lower is better). But there are more parameters than just these four. A complete list of timing parameters and their possible values can be found in the DDR3 spec (for the standard speed bins) and also in the datasheet of each DRAM chip in the case if the chip can support tighter timings than required by the DDR3 standard. The A10/A13/A20 DRAM controller registers [[A10_DRAM_Controller_Register_Guide#SDR_TPR0|SDR_TPR0]], [[A10_DRAM_Controller_Register_Guide#SDR_TPR1|SDR_TPR1]] and [[A10_DRAM_Controller_Register_Guide#SDR_TPR2|SDR_TPR2]] are used to configure these timing parameters. Please note that the DRAM controller expects these parameters in cycles, and DRAM datasheets usually provide them in nanoseconds. So a conversion is necessary to configure this right.<br />
<br />
This configuration is provided by the ''''tpr0'''', ''''tpr1'''', ''''tpr2'''' parameters in the u-boot 'dram_para' struct, which are directly written to the corresponding hardware registers on DRAM initialization.<br />
<br />
=Finding optimal DRAM settings for your board or device=<br />
<br />
The DRAM controller overview in the previous chapters contains some parts of text, which are highlighted in red. Basically, they say that the A10/A13/A20 DRAM controller is missing decent automatic DDR3 configuration features, enjoyed by the high-end ARM or x86 desktop systems. And using a bad configuration or just keeping the defaults does not allow reaching really high DDR3 clock speeds.<br />
<br />
To overcome this hardware limitation and in order to allow significantly faster DRAM clock speeds, we essentially [http://en.wikipedia.org/wiki/Brute-force_search brute-force search] for a good configuration using the [https://github.com/ssvb/lima-memtester/ lima-memtester] program as a tool to evaluate and compare reliability of different settings. This method can be used by anyone and does not require any special lab equipment, simulation software or anything else. However hardcoding the impedance and delays is not a perfectly universal solution. <span style="color:red">'''The optimal DRAM settings, found with this method, can be only used just for a single device model (and even limited to a single PCB revision in some cases).'''</span><br />
<br />
The next chapters contain the description of the exact step by step procedure. Be warned that it is a very long iterative process and may take up to a week to find something useful! But the results typically pay off and reward you with much better memory performance.<br />
<br />
==The software setup and the required tools==<br />
<br />
===The kernel, rootfs and installing the necessary userland tools===<br />
<br />
It is required to have the '''sunxi-3.4 kernel''' (specifically for for the mali kernel module). The mainline kernel is not supported yet because it is lacking in the graphics department. Also the process of probing different dram setting involves a lot of watchdog triggered reboots, which may corrupt the file system pretty fast. So it is strongly recommended to setup '''boot over the network''' [[How_to_boot_the_A10_or_A20_over_the_network|using the NFS root file system]]. <span style="color:red">'''Any other configurations are only going to bring unnecessary troubles and are completely unsupported by this guide.'''</span><br />
<br />
Once the system is up and running, we need to install some prerequisites: '''git''', '''cmake''' and the '''ruby''' scripting language interpreter. For example, on a Debian/Ubuntu distro it would be:<br />
<br />
apt-get install git cmake ruby<br />
<br />
And then compile and install the [https://github.com/ssvb/lima-memtester/ lima-memtester] and [https://github.com/ssvb/a10-dram-tools a10-dram-tools]:<br />
<br />
cd /tmp<br />
git clone https://github.com/ssvb/lima-memtester.git<br />
cd lima-memtester<br />
cmake -DCMAKE_INSTALL_PREFIX=/usr .<br />
make -j2 install<br />
<br />
cd /tmp<br />
git clone https://github.com/ssvb/a10-dram-tools.git<br />
cd a10-dram-tools<br />
cmake -DCMAKE_INSTALL_PREFIX=/usr .<br />
make -j2 install<br />
<br />
Installing into /usr is not very nice, because it is the place, where software is usually installed by the distro package managers. Anyway, this whole setup is primarily intended just for the DRAM calibration process, so not a big deal.<br />
<br />
===The bootloader===<br />
<br />
The DRAM settings are configured in u-boot. And we are going to use the '''mainline u-boot''' with some extra [https://github.com/ssvb/u-boot-sunxi-dram/tree/sunxi-dram-fixes DRAM patches]. Or a more complete [https://github.com/ssvb/u-boot-sunxi-dram/commits/highspeedtruck-sunxi-3.4 branch with extra sunxi-3.4 compatibility tweaks]. The normal [[U-boot|u-boot compilation instructions]] work fine, just the repository is different:<br />
<br />
git clone -b highspeedtruck-sunxi-3.4 https://github.com/ssvb/u-boot-sunxi-dram.git<br />
# edit the dram settings for the relevant board in the 'board/sunxi' subdirectory<br />
# do the usual u-boot compilation<br />
<br />
Inside of the u-boot source tree, the most interesting part is the 'board/sunxi' subdirectory and the source files with 'dram_para' settings for different boards. That's where the settings are and can be changed. After changing the settings, recompiling u-boot and rebooting, be sure that the changes have taken effect by running<br />
<br />
a10-meminfo<br />
<br />
===General workflow===<br />
<br />
After all the tools are installed, network boot configured, u-boot built with some preliminary DRAM settings and the system is booted, we want to assess the reliability of the resulting configuration. Just running the lima-memtester tool for some reasonable period of time can provide only a PASS or FAIL verdict. Having just two possible states is not enough to grade the reliability of many different DRAM configurations, and this makes it difficult to select the best one.<br />
<br />
To provide a better insight about the reliability of the current DRAM configuration, a special '''a10-tpr3-scan''' script had been developed. It exploits the fact that some of the configuration knobs (the '''tpr3''' parameter) can be actually changed at runtime without resetting the DRAM controller, and this configuration adjustment can be done from the userspace via /dev/mem (this is actually not completely reliable, but works in most cases and is good enough for the DRAM calibration purposes). Essentially, this script needs to be set to run automatically after reboot. So that it can start probing different 'tpr3' settings, and using the lima-memtester program to verify reliability of each of these settings. This can be done by adding a shell script into some special distribution dependent place ([https://www.debian.org/doc/manuals/debian-faq/ch-customizing.en.html#s-custombootscripts Debian], [http://wiki.gentoo.org/wiki/Local.d Gentoo], ...). This script may contain something like this (assuming that 192.168.1.123 is the ip address of the device):<br />
<br />
if [ "`ifconfig | grep 192.168.1.123`" ] ; then<br />
mkdir /var/tpr3_results<br />
a10-tpr3-scan /var/tpr3_results "Cubietruck"<br />
fi<br />
<br />
The /var/tpr3_results is a directory for storing the collected data. After several hours and many automatic reboots, the data should be there. This data can be then processed by another script '''a10-tpr3-html-report''' to get a nicely formatted html report:<br />
<br />
a10-tpr3-html-report /var/tpr3_results > /var/tpr3_results/report.html<br />
<br />
The html report can also generated even for the partially collected data, so there it is possible to watch the progress in real time from your desktop PC (where the data is actually stored):<br />
<br />
while sleep 15 ; do a10-tpr3-html-report /nfs/exported/var/tpr3_results > /nfs/exported/var/tpr3_results/tmp.html ; mv /nfs/exported/var/tpr3_results/tmp.html /nfs/exported/var/tpr3_results/report.html ; done;<br />
<br />
Just be sure to set the permissions right for it to work. Then open /nfs/exported/var/tpr3_results/report.html in your favourite browser and keep refreshing. Here is an example of a generated report:<br />
<br />
<b>Cubietruck, (zq=0x2c, emr1=0x42), 648MHz DRAM and 600MHz MBUS, needs at least 1.325V dcdc3</b><br />
<table border=1 style='border-collapse: collapse; empty-cells: show; font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; font-size: small; white-space: nowrap; background: #F0F0F0;'><br />
<tr><td><table border=0 style='border-collapse: collapse; empty-cells: show; font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; font-size: small; white-space: nowrap; background: #F0F0F0;'><br />
<tr><td>dcdc3_vol = 1325<br>dram_clk = 648<br>mbus_clk = 600<br>dram_type = 3<br>dram_rank_num = 1<br>dram_chip_density = 4096<br>dram_io_width = 8<br>dram_bus_width = 32<br>dram_cas = 9<br>dram_zq = 0x2c<br>dram_odt_en = 3<br>dram_tpr0 = 0x429899b4<br>dram_tpr1 = 0xa0a0<br>dram_tpr2 = 0x2c200<br>dram_tpr3 = 0x182222<br>dram_emr1 = 0x42<br>dram_emr2 = 0x10<br>dram_emr3 = 0x0<br>dqs_gating_delay = 0x07070707<br>active_windowing = 1</table><td><table border=1 style='border-collapse: collapse; empty-cells: show; font-family: arial; font-size: small; white-space: nowrap; background: #F0F0F0;'><br />
<tr><th>mfxdly<th>phase=36<th>phase=54<th>phase=72<th>phase=90<th>phase=108<th>phase=126<tr><th><b>0x07</b><td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x073333<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x072222<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x071111<td bgcolor=#FF1111 title='<br />
'>0x070000<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x07EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x07DDDD<tr><th><b>0x06</b><td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x063333<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x062222<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x061111<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x060000<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x06EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x06DDDD<tr><th><b>0x05</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00000100 != 0x00000000 at offset 0x00103168 (solidbits).<br />
'>0x0533<b>3</b>3<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x052222<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x051111<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x050000<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x05EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x05DDDD<tr><th><b>0x04</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00000100 != 0x00000000 at offset 0x0011f378 (solidbits).<br />
'>0x0433<b>3</b>3<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x042222<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x041111<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xffffffff != 0xfffffeff at offset 0x00027e08 (bitflip).<br />
'>0x0400<b>0</b>0<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x04EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x04DDDD<tr><th><b>0x03</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00000000 != 0x00000100 at offset 0x0054c334 (solidbits).<br />
'>0x0333<b>3</b>3<td bgcolor=#FF3232 title='memtester success rate: 4/4<br />
'>0x032222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x031111<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00000200 != 0x00000000 at offset 0x0038f684 (bitflip).<br />
'>0x0300<b>0</b>0<td bgcolor=#FF1111 title='FINISHED, memtester success rate: 0/1<br />
'>0x03EEEE<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x03DDDD<tr><th><b>0x02</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00000100 != 0x00000000 at offset 0x002c4920 (solidbits).<br />
'>0x0233<b>3</b>3<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x022222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x021111<td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0xfffff7ff != 0xffffffff at offset 0x00489404 (bitflip).<br />
'>0x0200<b>0</b>0<td bgcolor=#FF1111 title='FINISHED, memtester success rate: 0/1<br />
'>0x02EEEE<td bgcolor=#FF1111 title='FINISHED, memtester success rate: 0/1<br />
'>0x02DDDD<tr><th><b>0x01</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00080100 != 0x00080000 at offset 0x0044e478 (bitflip).<br />
'>0x0133<b>3</b>3<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x012222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x011111<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x010000<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfffff7ff != 0xffffffff at offset 0x0001be84 (bitflip).<br />
'>0x01EE<b>E</b>E<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x01DDDD<tr><th><b>0x00</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0x00080000 != 0x00080100 at offset 0x00156964 (bitflip).<br />
'>0x0033<b>3</b>3<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x002222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x001111<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x000000<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfffffdff != 0xffffffff at offset 0x003a59c4 (bitflip).<br />
'>0x00EE<b>E</b>E<td bgcolor=#FF1111 title='FINISHED, memtester success rate: 0/1<br />
'>0x00DDDD<tr><th><b>0x08</b><td bgcolor=#FF8100 title='FINISHED, memtester success rate: 1/2<br />
READ FAILURE: 0x02000000 != 0x02000100 at offset 0x0057a1e4 (bitflip).<br />
'>0x0833<b>3</b>3<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x082222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x081111<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x080000<td bgcolor=#FF8F00 title='FINISHED, memtester success rate: 2/3<br />
READ FAILURE: 0xfeffffff != 0xffffffff at offset 0x0000b5d8 (bitflip).<br />
'>0x08<b>E</b>EEE<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfffffffe != 0xffffffff at offset 0x005f1318 (bitflip).<br />
'>0x08DDD<b>D</b><tr><th><b>0x10</b><td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x103333<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x102222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x101111<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x100000<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfeffffff != 0xffffffff at offset 0x005fd568 (bitflip).<br />
'>0x10<b>E</b>EEE<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x10DDDD<tr><th><b>0x18</b><td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x183333<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x182222<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x181111<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x180000<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xffffffff != 0xfffff7ff at offset 0x0026d1e4 (bitflip).<br />
'>0x18EE<b>E</b>E<td bgcolor=#FF1111 title='FINISHED, memtester success rate: 0/1<br />
Failed to 'modprobe mali'.<br />
'>0x18DDDD<tr><th><b>0x20</b><td bgcolor=#FF00C5 title='FINISHED, memtester success rate: 8/9<br />
WRITE FAILURE: 0xfffff7ff != 0x00fff7ff at offset 0x004c6ab8 (bitflip).<br />
'>0x20<b>3</b>333<td bgcolor=#FF00A5 title='FINISHED, memtester success rate: 4/5<br />
WRITE FAILURE: 0xffffffef != 0xff00ffef at offset 0x002a7838 (bitflip).<br />
'>0x202<b>2</b>22<td bgcolor=#40C040 title='FINISHED, memtester success rate: 10/10<br />
'>0x201111<td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfeffffff != 0xffffffff at offset 0x004513b0 (bitflip).<br />
'>0x20<b>0</b>000<td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x20EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x20DDDD<tr><th><b>0x28</b><td bgcolor=#FF0081 title='FINISHED, memtester success rate: 1/2<br />
WRITE FAILURE: 0xffffff00 != 0xffffffff at offset 0x000837c8 (solidbits).<br />
'>0x28333<b>3</b><td bgcolor=#FF0081 title='FINISHED, memtester success rate: 1/2<br />
WRITE FAILURE: 0x000000ef != 0x00000010 at offset 0x005a57c4 (bitflip).<br />
'>0x28222<b>2</b><td bgcolor=#FF00A5 title='FINISHED, memtester success rate: 4/5<br />
WRITE FAILURE: 0x008000ff != 0x00800000 at offset 0x00195704 (bitflip).<br />
'>0x28111<b>1</b><td bgcolor=#FF6C00 title='FINISHED, memtester success rate: 0/1<br />
READ FAILURE: 0xfffffffb != 0xffffffff at offset 0x004073a8 (bitflip).<br />
'>0x28000<b>0</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0xfffffffe != 0xffffffff at offset 0x0004fce8 (bitflip).<br />
'>0x28EEE<b>E</b><td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x28DDDD<tr><th><b>0x30</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x002f3bf4 (solidbits).<br />
'>0x30333<b>3</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0xffff0000 != 0xffffffff at offset 0x005e10c8 (solidbits).<br />
'>0x3022<b>2</b><b>2</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x0013fdf4 (solidbits).<br />
'>0x30111<b>1</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x005fda74 (solidbits).<br />
'>0x30000<b>0</b><td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x30EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x30DDDD<tr><th><b>0x38</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x005bf1b4 (solidbits).<br />
'>0x38333<b>3</b><td bgcolor=#FF1111 title='after configuring tpr3 and before running memtester<br />
'>0x382222<td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x005801b4 (solidbits).<br />
'>0x38111<b>1</b><td bgcolor=#FF006C title='FINISHED, memtester success rate: 0/1<br />
WRITE FAILURE: 0x00000000 != 0x000000ff at offset 0x005ff534 (solidbits).<br />
'>0x38000<b>0</b><td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x38EEEE<td bgcolor=#FF1111 title='before configuring tpr3, try2<br />
'>0x38DDDD</table><br />
<td>Lane phase adjustments: [0, 0, 0, 0]<br>Error statistics from memtester: [bitflip=19, solidbits=12]<br><br>Total number of successful memtester runs: 235<br><br>Best luminance at the height 0.5 is above 0x081111, score = 0.742<br>Best luminance at the height 1.0 is above 0x081111, score = 0.634<br>Best luminance at the height 2.0 is above 0x081111, score = 0.512<br>Best luminance at the height 3.0 is above 0x081111, score = 0.440<br><br>Read errors per lane: [3, 0, 12, 2]. Lane 1 is the most noisy/problematic.<br>Errors from the lane 0 are not intersecting with the errors from the worst line 1.<br>Errors from the lane 3 are not intersecting with the errors from the worst line 1.<br><br>Write errors per lane: [1, 1, 2, 11]. Lane 0 is the most noisy/problematic.<br>Errors from the lane 1 are 50.0% eclipsed by the worst lane 0.<br>Errors from the lane 2 are not intersecting with the errors from the worst line 0.<br>Errors from the lane 3 are not intersecting with the errors from the worst line 0.<br></table></p><br />
<br />
Collecting a few of such reports for different dram settings, we can select a more reliable configuration among them (with larger 'green' areas and higher scores).<br />
<br />
==Finding good DQS gating delay settings==<br />
==Finding good impedance settings==<br />
<br />
=Other links=<br />
<br />
Some links, which are not directly describing sunxi hardware, but may be useful for grasping the general concept:<br />
* [http://www.altera.com/literature/wp/wp-01034-Utilizing-Leveling-Techniques-in-DDR3-SDRAM.pdf Altera - Utilizing Leveling Techniques in DDR3 SDRAM Memory Interfaces]<br />
* [http://freescale.com/files/32bit/doc/app_note/AN4467.pdf Freescale - i.MX 6 Series DDR Calibration]<br />
* [http://www.slideshare.net/itzjishnu/ddr3 DDR3 introduction slides]<br />
* [http://www.samsung.com/global/business/semiconductor/file/product/Mobile_DRAM_app_note_for_Frequently_Violated_parameters_rev0-1.pdf Samsung - Mobile DRAM’s Frequently violated parameters Application Note]</div>Rose28357https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=9862Mainline Kernel Howto2014-07-17T06:01:17Z<p>Rose28357: /* Compilation */ minor typos</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel. For work done and a TODO list, read [[Linux mainlining effort]].<br />
<br />
== Warning ==<br />
<br />
Please note that this page might be outdated. Please refer to the [[Linux mainlining effort]] page for detailed status of mainlining effort and supported drivers. The upstream code does not support various drivers and lacks sound, display, 3D, 2D and media support.<br />
<br />
If you simply want a more-or-less usable device for multimedia support, then use [[Linux_Kernel|our own 3.4 branch]].<br />
<br />
== Prerequisites ==<br />
<br />
* An initramfs image (for example generated using [[buildroot]])<br />
* An ARM [[Toolchain|toolchain]]<br />
* [[U-Boot]] supporting device tree (if unsure, use a fresh build from the sunxi branch of u-boot-sunxi)<br />
<br />
== Supported boards ==<br />
<br />
As of 3.12, the boards and SoC supported are:<br />
* A10<br />
:* Cubieboard<br />
:* Melee A1000<br />
:* Mini X-plus<br />
:* Hackberry<br />
:* LinkSprite pcDuino<br />
:* Inet 97f<br />
:* A10-olinuxino-Lime<br />
* A10s<br />
:* A10s-olinuxino<br />
* A13<br />
:* A13-olinuxino<br />
:* A13-olinuxino-Micro<br />
* A20<br />
:* A20-olinuxino<br />
:* Cubieboard2<br />
:* Cubietruck<br />
* A31<br />
:* A31 EVK<br />
<br />
For boards using these SoCs, adding a new device tree should be trivial.<br />
<br />
== Downloading the kernel source code ==<br />
=== Stable releases ===<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually. It is still quite sparse, but we are making good progress. This is probably what you should choose if you are looking for stability.<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git<br />
<br />
=== Patches merged in the next stable release ===<br />
<br />
There is also a sunxi-next branch maintained with all the inclusions that have been accepted, merged and will included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
git clone [http://github.com/mripard/linux/tree/sunxi-next git://github.com/mripard/linux.git] -b sunxi-next<br />
<br />
=== Patches not yet merged in the next release ===<br />
<br />
You can find a sunxi-devel branch on linux-sunxi. This branch contains functional patches that are currently being reviewed on the kernel lists. If you want to do bleeding-edge mainline testing, this should probably be your pick. Please do not use this branch for development, as it is frequently rebased and the code is likely to change.<br />
<br />
git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-devel git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-devel<br />
<br />
== Configuration ==<br />
<br />
ARCH=arm make sunxi_defconfig<br />
ARCH=arm make menuconfig<br />
<br />
Once there, fill the option '''General Setup / Initramfs source file(s)''' with a path to your initramfs image.<br />
<br />
== Compilation ==<br />
<br />
ARCH=arm CROSS_COMPILE=<toolchain-prefix> LOADADDR=0x40008000 make uImage dtbs<br />
<br />
After the compilation ended, you should have generated both the uImage in arch/arm/boot, and a device tree blob in arch/arm/boot/dts.<br />
<br />
This device tree blob (or simply dtb) gives to the kernel the description of the hardware it's currently running on. In its goal, it's pretty similar to the FEX scripts that Allwinner uses, yet far more generic. It allows to compile a single kernel image that will run on several platforms.<br />
<br />
Identify the dtb file for you board in arch/arm/boot/dts, you will need it in the next step. The name of the file is constructed in <family>-<soc>-<board>.dtb form, so the dtb filename of your board should start with it's SoC family (for example sun5i, sun6i or sun7i).<br />
<br />
== Kernel Loading ==<br />
<br />
Now copy the relevant dtb and uImage somewhere that you can load it from on your board, like a tftp server, a SD Card, etc.<br />
<br />
Once you get to the U-boot prompt, stop the autoboot, and load the kernel image and device tree into memory making sure the will not overlap.<br />
<br />
Depending on where you store it, you will have something like<br />
fatload mmc 0 0x46000000 uImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
'''Warning''': Before giving control to the kernel the U-Boot will move the loaded binaries to some different addresses and ignore the fact, the kernel needs much more space for extracting itselt. This causes a dtb to be overwritten and failure to boot. This of course should be fixed in U-Boot but a workaround for now is to set fdt_high:<br />
env set fdt_high ffffffff<br />
Once it's loaded into memory, you only need to tell U-Boot to boot the kernel using<br />
bootm 0x<kernel-address> 0x<initramfs-address> 0x<dtb-address><br />
if initramfs is built into the uImage, you just use "-" as a placeholder for its address. Taking all this into account your bootm might look like<br />
bootm 0x46000000 - 0x49000000<br />
<br />
You might also need to modify kernel boot arguments to enable serial console:<br />
<br />
setenv bootargs console=ttyS0,115200<br />
<br />
The kernel should start booting up to a shell.<br />
<br />
Have fun.<br />
<br />
=See also=<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietech_Cubietruck&diff=9850Cubietech Cubietruck2014-07-16T11:04:58Z<p>Rose28357: /* Vendor images */ minor replacement of "current" to "up-to-date"</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:CT overview.jpg|250px]]<br />
| manufacturer = [http://www.cubietech.com/ Cubietech], [http://cubieboard.org Cubieboard]<br />
| dimensions = 110''mm''x80''mm''x??''mm''<br />
| release_date = October 2013<br />
| website = [http://docs.cubieboard.org/products/start#cubietruck_cubieboard3 Cubietruck Product Page]<br />
| soc = [[A20]] @ 1Ghz<br />
| dram = 2GiB DDR3 @ 480MHz<br />
| nand = 8GB<br />
| power = DC 5&nbsp;V @ 2&nbsp;A (3A with SATA drive), Battery connector<br />
| video = HDMI (Type A - full), VGA<br />
| audio = 3.5&nbsp;mm headphone plug, HDMI, SPDIF<br />
| network = WiFi 802.11 b/g/n (Ampak AP6210), 10/100/1000Mbps Ethernet (Realtek RTL8211E)<br />
| storage = µSD, SATA 2.0<br />
| usb = 2 USB 2.0 Host, 1 USB2.0 OTG<br />
| other = Bluetooth (Ampak AP6210), IRDA, RTC<br />
| headers = UART, I2S, I2C, SPI, CVBS, LRADC (2x),UART, PS2, PWM (2x), TS/CSI, IRDA, LINE-IN, FM-IN, MIC-IN, TV-IN (4x), ...<br />
}}<br />
<br />
Cubietruck is the third generation of the famous [[Cubieboard]], and is the most full-featured board to date.<br />
<br />
= Identification =<br />
<br />
The board helpfully states "CUBIETRUCK".<br />
<br />
There are two revisions of the A20. Since Feb 2014 it is RevB. The Rev state is not printed on the board and is not retrievable from the SoC. There is also no information regarding the differences of these revisions. There is evidence of different behavior and boot problems with older kernel on RevB cubietrucks.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mostly supported. See [[#Tips, Tricks, Caveats|Tips, Tricks, Caveats]] below for more details.<br />
<br />
== Images ==<br />
<br />
== HW-Pack ==<br />
<br />
== BSP ==<br />
<br />
== Manual build ==<br />
<br />
* For building u-boot, use the "Cubietruck" target.<br />
* The .fex file can be found in sunxi-boards as [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/a20/cubietruck.fex cubietruck.fex]<br />
<br />
Everything else is the same as the [[manual build howto]].<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== Fel mode ==<br />
<br />
There is a button marked 'FEL' next to the full-size usb ports, which triggers [[FEL | FEL mode]].<br />
<br />
== VGA ==<br />
<br />
The Cubietruck is the only board to date that has a properly implemented VGA connector with DDC. Load-detection is also reliable. In future kernel versions (with [[sunxi-kms]]), VGA and the attached monitor will be detected properly and will require no intervention.<br />
<br />
For now though, you need to [[Fex_Guide#disp_init_configuration | edit the FEX file]] still.<br />
<br />
There is one issue with VGA though. Due to bad PCB placement, there is some crosstalk between Wifi and VGA in certain videomodes.<br />
<br />
== DRAM frequency ==<br />
<br />
<pre><br />
<tomee^> arokux: 432MHz. that's the speed at which my board runs with sunxi bootloader, too. but look here:http://dl.cubieboard.org/software/a20-cubietruck/common/ct-v101_sys_config.fex<br />
<tomee^> arokux: I simply do not know why 432MHz if the hardware can do 480... they downclocked it for security purposes in the first batch?<br />
<arokux> tomee^: sorry, I have no idea.<br />
<tomee^> arokux: I've heard somewhere that someone complained about overheating of the prototype<br />
<arokux> tomee^: Turl may know.<br />
<Turl> dunno, we should ask benn<br />
</pre><br />
<br />
See [http://thread.gmane.org/gmane.comp.hardware.netbook.arm.sunxi/4115 this] conversation on memory frequency problems.<br />
<br />
== Wifi ==<br />
<br />
There is an AMPAK AP6210 Wifi+BT chip on board with PCB antenna, but it is not clear what exactly is inside:<br />
:* Broadcom BCM43362 + BCM20710<br />
:* Broadcom BCM4330 / BCM40183 Based Chipset<br />
:* Cubietech says it is BCM4329/BCM40181<br />
<br />
If your're using the Cubietech's kernel, you can enable the module with <br />
<br />
modprobe bcmdhd<br />
<br />
There is a parameter op_mode, which allows you to enable AP mode, for example<br />
<br />
modprobe bcmdhd op_mode=2<br />
<br />
For the linux-sunxi's 3.4 kernel, you will need a special driver, instructions to integrate and compile the driver with the sunxi-3.4 source code are avalable [[Cubietruck/AP6210 | here]].<br />
<br />
=== Networkmanager ===<br />
<br />
The Lubuntu Desktop images has NetworkManager running. It spawns its own wpa_supplicant, which is respawned once you kill it. This wpa_supplicant will also interfere with yours, if you want to configure WLAN Adapter by yourself. I have removed NetworkManager and was able to successfully configure WiFi.<br />
<br />
wpa_supplicant -D nl80211 -B -i wlan0 -c <(wpa_passphrase YOUR_SSID YOUR_PASSWORD)<br />
<br />
== Bluetooth ==<br />
<br />
This is a new or differently wired chip, status UNKNOWN, please test it!<br />
<br />
Huang Benn said [https://groups.google.com/forum/m/?fromgroups#!topic/linux-sunxi/X75nghXpOkU here] (the cubietruck chipset AMPAK) ap6210 is a combo of wifi(bcm40181) and bt(bcm20710). the firmwares can be found here:<br />
[http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/ wifi/bluetooth driver]<br />
<br />
:Here is some info on how to get the bcmdhd compiled with workarounds / ideas how to overcome problems<br />
<br />
<pre><br />
<tomee^> arokux: CC [M] drivers/net/wireless/bcmdhd/dhd_linux.o drivers/net/wireless/bcmdhd/dhd_linux.c: In function ‘dhd_os_prealloc’: drivers/net/wireless/bcmdhd/dhd_linux.c:5192:2: error: implicit declaration of function ‘wl_android_prealloc’ [-Werror=implicit-function-declaration]<br />
<tomee^> arokux: I guess you should ifdef the DHD_OS_PREALLOC option for non-android builds... or I did something wrong<br />
<tomee^> arokux: it comes from the bcmdhd driver compilation<br />
<tomee^> arokux: when I disabled buffer preallocation for it, it went through<br />
<tomee^> arokux: CONFIG_DHD_USE_STATIC_BUF=y broke the compilation. CONFIG_DHD_USE_STATIC_BUF=n made it work. maybe this flag should depend on android or some other build environment<br />
</pre><br />
<br />
== Battery ==<br />
<br />
Tha battery backups the power supply. It alows an uninterruptible operation. Depending on the battery capacity sveral hours of operation are possible. <br />
<br />
The battery will be charged during operation. A 3.7 Volt Lithium polymer battery is needed. The connector is near the ethernet port (see frontside board pictures).<br />
<br />
For kernel 3.4:<br />
<br />
* The battery capacity in mA has to be set in the fex file.<br />
* The current voltage can be read here /sys/class/power_supply/battery/voltage_now<br />
* The current status charging/discharging can be read here /sys/class/power_supply/battery/status<br />
<br />
== Cubietech Kernel source ==<br />
<br />
There are kernels developed by Cubietech, they are supposed to have all features workin.<br />
<br />
* Kernel: https://github.com/cubieboard/linux-sunxi<br />
* fex and kernel config: https://github.com/cubieboard/cubie_configs<br />
<br />
Reportedly AP mode does not work with the WiFi driver in this kernel.<br />
<br />
This kernel is abandoned by Cubietech, but can still have something interesting, such as: https://github.com/cubieboard2/linux-sunxi/tree/sunxi-3.4-ct-dev/drivers/net/ethernet/allwinner/gmac<br />
<br />
== Expansion Ports ==<br />
<br />
The cubietruck exposes 2 2.0&nbsp;mm pitch connectors with lots of expansion possibilities.<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN8 (Near Ethernet connector)<br />
|-<br />
! colspan=4 | 2x15 Header<br />
|-<br />
| 1 || ''GND''<br />
| 2 || ''3.3V'' <br />
|-<br />
| 3 || ''AVCC''<br />
| 4 || ''RESET#'' <br />
|-<br />
| 5 || [[A20/PIO#PC19|PC19]] <small>(SPI2-CS0/EINT12)</small><br />
| 6 || [[A20/PIO#PC21|PC21]] <small>(SPI2-MOSI/EINT14)</small><br />
|-<br />
| 7 || [[A20/PIO#PC20|PC20]] <small>(SPI2-CLK/EINT13)</small><br />
| 8 || [[A20/PIO#PC22|PC22]] <small>(SPI2-MISO/EINT15)</small><br />
|-<br />
| 9 || [[A20/PIO#PB14|PB14]] <small>(SPI2-CS0/JTAG_MS0)</small><br />
| 10 || [[A20/PIO#PB16|PB16]] <small>(SPI2-MOSI/JTAG_DO0)</small><br />
|-<br />
| 11 || [[A20/PIO#PB15|PB15]] <small>(SPI2-CLK/JTAG_CK0)</small><br />
| 12 || [[A20/PIO#PB17|PB17]] <small>(SPI2-MISO/JTAG_DI0)</small><br />
|-<br />
| 13 || ''GND''<br />
| 14 || ''GND''<br />
|-<br />
| 15 || [[A20/PIO#PI20|PI20]] <small>(FMIN-L/PS2SCLK0/UART7-TX/HSCL)</small><br />
| 16 || [[A20/PIO#PI14|PI14]] <small>(PS2SCLK1/EINT26)</small><br />
|-<br />
| 17 || [[A20/PIO#PI21|PI21]] <small>(FMIN-R/PS2SDA0/UART7-RX/HSDA)</small><br />
| 18 || [[A20/PIO#PI15|PI15]] <small>(PS2SDA1/EINT27)</small><br />
|-<br />
| 19 || [[A20/PIO#PI3|PI3]] <small>(PWM1)</small><br />
| 20 || [[A20/PIO#PB3|PB3]] <small>(IR0-TX)</small><br />
|-<br />
| 21 || [[A20/PIO#PB2|PB2]] <small>(PWM0)</small><br />
| 22 || [[A20/PIO#PB4|PB4]] <small>(IR0-RX)</small><br />
|-<br />
| 23 || [[A20/PIO#PB18|PB18]] <small>(TWI1-SCK)</small><br />
| 24 || ''LINEIN-L''<br />
|-<br />
| 25 || [[A20/PIO#PB19|PB19]] <small>(TWI1-SDA)</small><br />
| 26 || ''LINEIN-R''<br />
|-<br />
| 27 || ''CVBS''<br />
| 28 || ''LRADC0''<br />
|-<br />
| 29 || ''VCC-5V''<br />
| 30 || ''LRADC1''<br />
|}<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN9 (Near USB Ports)<br />
|-<br />
! colspan=4 | CSI1/TS/TP/TVIN<br />
|-<br />
| 1 || 3.3V<br />
| 2 || 3.3V<br />
|-<br />
| 3 || [[A20/PIO#PG0|PG0]] <small>(TS1_CLK/CSI1-PCLK)</small><br />
| 4 || [[A20/PIO#PG3|PG3]] <small>(TS1_ERR/CSI1-VSYNC)</small><br />
|-<br />
| 5 || [[A20/PIO#PG2|PG2]] <small>(TS1_SYNC/CSI1-HSYNC)</small><br />
| 6 || [[A20/PIO#PG1|PG1]] <small>(TS1_DVLD/CSI1-MCLK)</small><br />
|-<br />
| 7 || [[A20/PIO#PG4|PG4]] <small>(TS1_D0/CSI1-D0)</small><br />
| 8 || [[A20/PIO#PG5|PG5]] <small>(TS1_D1/CSI1-D1)</small><br />
|-<br />
| 9 || [[A20/PIO#PG6|PG6]] <small>(TS1_D2/CSI1-D2/UART3-TX)</small><br />
| 10 || [[A20/PIO#PG7|PG7]] <small>(TS1_D3/CSI1-D3/UART3-RX)</small><br />
|-<br />
| 11 || [[A20/PIO#PG8|PG8]] <small>(TS1_D4/CSI1-D4/UART3-RTS)</small><br />
| 12 || [[A20/PIO#PG9|PG9]] <small>(TS1_D5/CSI1-D5/UART3-CTS)</small><br />
|-<br />
| 13 || [[A20/PIO#PG10|PG10]] <small>(TS1_D6/CSI1-D6/UART4-TX)</small><br />
| 14 || [[A20/PIO#PG11|PG11]] <small>(TS1_D7/CSI1-D7/UART4-RX)</small><br />
|-<br />
| 15 || ''GND''<br />
| 16 || ''GND''<br />
|-<br />
! colspan=4 | Analog<br />
|-<br />
| 17 || ''XP-I2SDO1''<br />
| 18 || ''TVIN0-I2SMCLK''<br />
|-<br />
| 19 || ''XN-I2SDO2''<br />
| 20 || ''TVIN1-BTPCMCLK''<br />
|-<br />
| 21 || ''YP-I2SDO3''<br />
| 22 || ''TVIN2-BTPCMSYNC''<br />
|-<br />
| 23 || ''XN-BTPCMIN''<br />
| 24 || ''TVIN3-BTPCMOUT''<br />
|}<br />
<br />
= Adding a serial port =<br />
[[File:Cubietruck-6 UART0 RevA.jpg|thumb|240px|UART pins in green circle]]<br />
There is a nice 0.1" connector behind the USB ports, just plug in your [[UART]] adapter.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:CT_overview.jpg<br />
File:Cubietruck-7 Frontside RevA.JPG<br />
File:Cubietruck-3 Backside RevA.JPG<br />
File:CT_disk_assembly.jpg<br />
File:Cubietruck-2 SSD-Mount RevA.JPG<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
The cubieboards are a well known brandname nowadays and there are no rebadgers.<br />
<br />
=See also=<br />
<br />
* [[Cubieboard/FAQ|FAQ]]<br />
* [[Cubieboard]]<br />
* [[Cubieboard2]]<br />
<br />
* [http://cubieboard.org/ cubieboard.org - official homepage]<br />
* [http://docs.cubieboard.org/ docs.cubieboard.org - cubie's user manual]<br />
* [http://dl.cubieboard.org/hardware/A20_Cubietruck_HW_V10_130606.pdf Cubietruck schematic]<br />
<br />
== Vendor images ==<br />
<br />
* [http://docs.cubieboard.org/tutorials/cb3/installation/cubietruck_android-4.2.2_releases Android images]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_desktop_releases Lubuntu desktop]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_server_releases Lubuntu server]<br />
* [http://dl.cubieboard.org/software/a20-cubietruck/ Downloads for all up-to-date images for cubietruck]<br />
<br />
[[Category:Devices]]<br />
[[Category:A20 Boards]]<br />
<br />
[[Category:Community_Devices]]<br />
<br />
[[Category:Cubieboard]]<br />
[[Category:Devices with HDMI port]]<br />
[[Category:Devices with SATA port]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Mainline U-boot]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietech_Cubietruck&diff=9845Cubietech Cubietruck2014-07-16T05:43:36Z<p>Rose28357: /* See also */ remove link to cubie images download</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:CT overview.jpg|250px]]<br />
| manufacturer = [http://www.cubietech.com/ Cubietech], [http://cubieboard.org Cubieboard]<br />
| dimensions = 110''mm''x80''mm''x??''mm''<br />
| release_date = October 2013<br />
| website = [http://docs.cubieboard.org/products/start#cubietruck_cubieboard3 Cubietruck Product Page]<br />
| soc = [[A20]] @ 1Ghz<br />
| dram = 2GiB DDR3 @ 480MHz<br />
| nand = 8GB<br />
| power = DC 5&nbsp;V @ 2&nbsp;A (3A with SATA drive), Battery connector<br />
| video = HDMI (Type A - full), VGA<br />
| audio = 3.5&nbsp;mm headphone plug, HDMI, SPDIF<br />
| network = WiFi 802.11 b/g/n (Ampak AP6210), 10/100/1000Mbps Ethernet (Realtek RTL8211E)<br />
| storage = µSD, SATA 2.0<br />
| usb = 2 USB 2.0 Host, 1 USB2.0 OTG<br />
| other = Bluetooth (Ampak AP6210), IRDA, RTC<br />
| headers = UART, I2S, I2C, SPI, CVBS, LRADC (2x),UART, PS2, PWM (2x), TS/CSI, IRDA, LINE-IN, FM-IN, MIC-IN, TV-IN (4x), ...<br />
}}<br />
<br />
Cubietruck is the third generation of the famous [[Cubieboard]], and is the most full-featured board to date.<br />
<br />
= Identification =<br />
<br />
The board helpfully states "CUBIETRUCK".<br />
<br />
There are two revisions of the A20. Since Feb 2014 it is RevB. The Rev state is not printed on the board and is not retrievable from the SoC. There is also no information regarding the differences of these revisions. There is evidence of different behavior and boot problems with older kernel on RevB cubietrucks.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mostly supported. See [[#Tips, Tricks, Caveats|Tips, Tricks, Caveats]] below for more details.<br />
<br />
== Images ==<br />
<br />
== HW-Pack ==<br />
<br />
== BSP ==<br />
<br />
== Manual build ==<br />
<br />
* For building u-boot, use the "Cubietruck" target.<br />
* The .fex file can be found in sunxi-boards as [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/a20/cubietruck.fex cubietruck.fex]<br />
<br />
Everything else is the same as the [[manual build howto]].<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== Fel mode ==<br />
<br />
There is a button marked 'FEL' next to the full-size usb ports, which triggers [[FEL | FEL mode]].<br />
<br />
== VGA ==<br />
<br />
The Cubietruck is the only board to date that has a properly implemented VGA connector with DDC. Load-detection is also reliable. In future kernel versions (with [[sunxi-kms]]), VGA and the attached monitor will be detected properly and will require no intervention.<br />
<br />
For now though, you need to [[Fex_Guide#disp_init_configuration | edit the FEX file]] still.<br />
<br />
There is one issue with VGA though. Due to bad PCB placement, there is some crosstalk between Wifi and VGA in certain videomodes.<br />
<br />
== DRAM frequency ==<br />
<br />
<pre><br />
<tomee^> arokux: 432MHz. that's the speed at which my board runs with sunxi bootloader, too. but look here:http://dl.cubieboard.org/software/a20-cubietruck/common/ct-v101_sys_config.fex<br />
<tomee^> arokux: I simply do not know why 432MHz if the hardware can do 480... they downclocked it for security purposes in the first batch?<br />
<arokux> tomee^: sorry, I have no idea.<br />
<tomee^> arokux: I've heard somewhere that someone complained about overheating of the prototype<br />
<arokux> tomee^: Turl may know.<br />
<Turl> dunno, we should ask benn<br />
</pre><br />
<br />
See [http://thread.gmane.org/gmane.comp.hardware.netbook.arm.sunxi/4115 this] conversation on memory frequency problems.<br />
<br />
== Wifi ==<br />
<br />
There is an AMPAK AP6210 Wifi+BT chip on board with PCB antenna, but it is not clear what exactly is inside:<br />
:* Broadcom BCM43362 + BCM20710<br />
:* Broadcom BCM4330 / BCM40183 Based Chipset<br />
:* Cubietech says it is BCM4329/BCM40181<br />
<br />
If your're using the Cubietech's kernel, you can enable the module with <br />
<br />
modprobe bcmdhd<br />
<br />
There is a parameter op_mode, which allows you to enable AP mode, for example<br />
<br />
modprobe bcmdhd op_mode=2<br />
<br />
For the linux-sunxi's 3.4 kernel, you will need a special driver, instructions to integrate and compile the driver with the sunxi-3.4 source code are avalable [[Cubietruck/AP6210 | here]].<br />
<br />
=== Networkmanager ===<br />
<br />
The Lubuntu Desktop images has NetworkManager running. It spawns its own wpa_supplicant, which is respawned once you kill it. This wpa_supplicant will also interfere with yours, if you want to configure WLAN Adapter by yourself. I have removed NetworkManager and was able to successfully configure WiFi.<br />
<br />
wpa_supplicant -D nl80211 -B -i wlan0 -c <(wpa_passphrase YOUR_SSID YOUR_PASSWORD)<br />
<br />
== Bluetooth ==<br />
<br />
This is a new or differently wired chip, status UNKNOWN, please test it!<br />
<br />
Huang Benn said [https://groups.google.com/forum/m/?fromgroups#!topic/linux-sunxi/X75nghXpOkU here] (the cubietruck chipset AMPAK) ap6210 is a combo of wifi(bcm40181) and bt(bcm20710). the firmwares can be found here:<br />
[http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/ wifi/bluetooth driver]<br />
<br />
:Here is some info on how to get the bcmdhd compiled with workarounds / ideas how to overcome problems<br />
<br />
<pre><br />
<tomee^> arokux: CC [M] drivers/net/wireless/bcmdhd/dhd_linux.o drivers/net/wireless/bcmdhd/dhd_linux.c: In function ‘dhd_os_prealloc’: drivers/net/wireless/bcmdhd/dhd_linux.c:5192:2: error: implicit declaration of function ‘wl_android_prealloc’ [-Werror=implicit-function-declaration]<br />
<tomee^> arokux: I guess you should ifdef the DHD_OS_PREALLOC option for non-android builds... or I did something wrong<br />
<tomee^> arokux: it comes from the bcmdhd driver compilation<br />
<tomee^> arokux: when I disabled buffer preallocation for it, it went through<br />
<tomee^> arokux: CONFIG_DHD_USE_STATIC_BUF=y broke the compilation. CONFIG_DHD_USE_STATIC_BUF=n made it work. maybe this flag should depend on android or some other build environment<br />
</pre><br />
<br />
== Battery ==<br />
<br />
Tha battery backups the power supply. It alows an uninterruptible operation. Depending on the battery capacity sveral hours of operation are possible. <br />
<br />
The battery will be charged during operation. A 3.7 Volt Lithium polymer battery is needed. The connector is near the ethernet port (see frontside board pictures).<br />
<br />
For kernel 3.4:<br />
<br />
* The battery capacity in mA has to be set in the fex file.<br />
* The current voltage can be read here /sys/class/power_supply/battery/voltage_now<br />
* The current status charging/discharging can be read here /sys/class/power_supply/battery/status<br />
<br />
== Cubietech Kernel source ==<br />
<br />
There are kernels developed by Cubietech, they are supposed to have all features workin.<br />
<br />
* Kernel: https://github.com/cubieboard/linux-sunxi<br />
* fex and kernel config: https://github.com/cubieboard/cubie_configs<br />
<br />
Reportedly AP mode does not work with the WiFi driver in this kernel.<br />
<br />
This kernel is abandoned by Cubietech, but can still have something interesting, such as: https://github.com/cubieboard2/linux-sunxi/tree/sunxi-3.4-ct-dev/drivers/net/ethernet/allwinner/gmac<br />
<br />
== Expansion Ports ==<br />
<br />
The cubietruck exposes 2 2.0&nbsp;mm pitch connectors with lots of expansion possibilities.<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN8 (Near Ethernet connector)<br />
|-<br />
! colspan=4 | 2x15 Header<br />
|-<br />
| 1 || ''GND''<br />
| 2 || ''3.3V'' <br />
|-<br />
| 3 || ''AVCC''<br />
| 4 || ''RESET#'' <br />
|-<br />
| 5 || [[A20/PIO#PC19|PC19]] <small>(SPI2-CS0/EINT12)</small><br />
| 6 || [[A20/PIO#PC21|PC21]] <small>(SPI2-MOSI/EINT14)</small><br />
|-<br />
| 7 || [[A20/PIO#PC20|PC20]] <small>(SPI2-CLK/EINT13)</small><br />
| 8 || [[A20/PIO#PC22|PC22]] <small>(SPI2-MISO/EINT15)</small><br />
|-<br />
| 9 || [[A20/PIO#PB14|PB14]] <small>(SPI2-CS0/JTAG_MS0)</small><br />
| 10 || [[A20/PIO#PB16|PB16]] <small>(SPI2-MOSI/JTAG_DO0)</small><br />
|-<br />
| 11 || [[A20/PIO#PB15|PB15]] <small>(SPI2-CLK/JTAG_CK0)</small><br />
| 12 || [[A20/PIO#PB17|PB17]] <small>(SPI2-MISO/JTAG_DI0)</small><br />
|-<br />
| 13 || ''GND''<br />
| 14 || ''GND''<br />
|-<br />
| 15 || [[A20/PIO#PI20|PI20]] <small>(FMIN-L/PS2SCLK0/UART7-TX/HSCL)</small><br />
| 16 || [[A20/PIO#PI14|PI14]] <small>(PS2SCLK1/EINT26)</small><br />
|-<br />
| 17 || [[A20/PIO#PI21|PI21]] <small>(FMIN-R/PS2SDA0/UART7-RX/HSDA)</small><br />
| 18 || [[A20/PIO#PI15|PI15]] <small>(PS2SDA1/EINT27)</small><br />
|-<br />
| 19 || [[A20/PIO#PI3|PI3]] <small>(PWM1)</small><br />
| 20 || [[A20/PIO#PB3|PB3]] <small>(IR0-TX)</small><br />
|-<br />
| 21 || [[A20/PIO#PB2|PB2]] <small>(PWM0)</small><br />
| 22 || [[A20/PIO#PB4|PB4]] <small>(IR0-RX)</small><br />
|-<br />
| 23 || [[A20/PIO#PB18|PB18]] <small>(TWI1-SCK)</small><br />
| 24 || ''LINEIN-L''<br />
|-<br />
| 25 || [[A20/PIO#PB19|PB19]] <small>(TWI1-SDA)</small><br />
| 26 || ''LINEIN-R''<br />
|-<br />
| 27 || ''CVBS''<br />
| 28 || ''LRADC0''<br />
|-<br />
| 29 || ''VCC-5V''<br />
| 30 || ''LRADC1''<br />
|}<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN9 (Near USB Ports)<br />
|-<br />
! colspan=4 | CSI1/TS/TP/TVIN<br />
|-<br />
| 1 || 3.3V<br />
| 2 || 3.3V<br />
|-<br />
| 3 || [[A20/PIO#PG0|PG0]] <small>(TS1_CLK/CSI1-PCLK)</small><br />
| 4 || [[A20/PIO#PG3|PG3]] <small>(TS1_ERR/CSI1-VSYNC)</small><br />
|-<br />
| 5 || [[A20/PIO#PG2|PG2]] <small>(TS1_SYNC/CSI1-HSYNC)</small><br />
| 6 || [[A20/PIO#PG1|PG1]] <small>(TS1_DVLD/CSI1-MCLK)</small><br />
|-<br />
| 7 || [[A20/PIO#PG4|PG4]] <small>(TS1_D0/CSI1-D0)</small><br />
| 8 || [[A20/PIO#PG5|PG5]] <small>(TS1_D1/CSI1-D1)</small><br />
|-<br />
| 9 || [[A20/PIO#PG6|PG6]] <small>(TS1_D2/CSI1-D2/UART3-TX)</small><br />
| 10 || [[A20/PIO#PG7|PG7]] <small>(TS1_D3/CSI1-D3/UART3-RX)</small><br />
|-<br />
| 11 || [[A20/PIO#PG8|PG8]] <small>(TS1_D4/CSI1-D4/UART3-RTS)</small><br />
| 12 || [[A20/PIO#PG9|PG9]] <small>(TS1_D5/CSI1-D5/UART3-CTS)</small><br />
|-<br />
| 13 || [[A20/PIO#PG10|PG10]] <small>(TS1_D6/CSI1-D6/UART4-TX)</small><br />
| 14 || [[A20/PIO#PG11|PG11]] <small>(TS1_D7/CSI1-D7/UART4-RX)</small><br />
|-<br />
| 15 || ''GND''<br />
| 16 || ''GND''<br />
|-<br />
! colspan=4 | Analog<br />
|-<br />
| 17 || ''XP-I2SDO1''<br />
| 18 || ''TVIN0-I2SMCLK''<br />
|-<br />
| 19 || ''XN-I2SDO2''<br />
| 20 || ''TVIN1-BTPCMCLK''<br />
|-<br />
| 21 || ''YP-I2SDO3''<br />
| 22 || ''TVIN2-BTPCMSYNC''<br />
|-<br />
| 23 || ''XN-BTPCMIN''<br />
| 24 || ''TVIN3-BTPCMOUT''<br />
|}<br />
<br />
= Adding a serial port =<br />
[[File:Cubietruck-6 UART0 RevA.jpg|thumb|240px|UART pins in green circle]]<br />
There is a nice 0.1" connector behind the USB ports, just plug in your [[UART]] adapter.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:CT_overview.jpg<br />
File:Cubietruck-7 Frontside RevA.JPG<br />
File:Cubietruck-3 Backside RevA.JPG<br />
File:CT_disk_assembly.jpg<br />
File:Cubietruck-2 SSD-Mount RevA.JPG<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
The cubieboards are a well known brandname nowadays and there are no rebadgers.<br />
<br />
=See also=<br />
<br />
* [[Cubieboard/FAQ|FAQ]]<br />
* [[Cubieboard]]<br />
* [[Cubieboard2]]<br />
<br />
* [http://cubieboard.org/ cubieboard.org - official homepage]<br />
* [http://docs.cubieboard.org/ docs.cubieboard.org - cubie's user manual]<br />
* [http://dl.cubieboard.org/hardware/A20_Cubietruck_HW_V10_130606.pdf Cubietruck schematic]<br />
<br />
== Vendor images ==<br />
<br />
* [http://docs.cubieboard.org/tutorials/cb3/installation/cubietruck_android-4.2.2_releases Android images]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_desktop_releases Lubuntu desktop]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_server_releases Lubuntu server]<br />
* [http://dl.cubieboard.org/software/a20-cubietruck/ Downloads for all current images for cubietruck]<br />
<br />
[[Category:Devices]]<br />
[[Category:A20 Boards]]<br />
<br />
[[Category:Community_Devices]]<br />
<br />
[[Category:Cubieboard]]<br />
[[Category:Devices with HDMI port]]<br />
[[Category:Devices with SATA port]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Mainline U-boot]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietech_Cubietruck&diff=9844Cubietech Cubietruck2014-07-16T05:42:11Z<p>Rose28357: /* Vendor images */ added link to all current image download</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:CT overview.jpg|250px]]<br />
| manufacturer = [http://www.cubietech.com/ Cubietech], [http://cubieboard.org Cubieboard]<br />
| dimensions = 110''mm''x80''mm''x??''mm''<br />
| release_date = October 2013<br />
| website = [http://docs.cubieboard.org/products/start#cubietruck_cubieboard3 Cubietruck Product Page]<br />
| soc = [[A20]] @ 1Ghz<br />
| dram = 2GiB DDR3 @ 480MHz<br />
| nand = 8GB<br />
| power = DC 5&nbsp;V @ 2&nbsp;A (3A with SATA drive), Battery connector<br />
| video = HDMI (Type A - full), VGA<br />
| audio = 3.5&nbsp;mm headphone plug, HDMI, SPDIF<br />
| network = WiFi 802.11 b/g/n (Ampak AP6210), 10/100/1000Mbps Ethernet (Realtek RTL8211E)<br />
| storage = µSD, SATA 2.0<br />
| usb = 2 USB 2.0 Host, 1 USB2.0 OTG<br />
| other = Bluetooth (Ampak AP6210), IRDA, RTC<br />
| headers = UART, I2S, I2C, SPI, CVBS, LRADC (2x),UART, PS2, PWM (2x), TS/CSI, IRDA, LINE-IN, FM-IN, MIC-IN, TV-IN (4x), ...<br />
}}<br />
<br />
Cubietruck is the third generation of the famous [[Cubieboard]], and is the most full-featured board to date.<br />
<br />
= Identification =<br />
<br />
The board helpfully states "CUBIETRUCK".<br />
<br />
There are two revisions of the A20. Since Feb 2014 it is RevB. The Rev state is not printed on the board and is not retrievable from the SoC. There is also no information regarding the differences of these revisions. There is evidence of different behavior and boot problems with older kernel on RevB cubietrucks.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mostly supported. See [[#Tips, Tricks, Caveats|Tips, Tricks, Caveats]] below for more details.<br />
<br />
== Images ==<br />
<br />
== HW-Pack ==<br />
<br />
== BSP ==<br />
<br />
== Manual build ==<br />
<br />
* For building u-boot, use the "Cubietruck" target.<br />
* The .fex file can be found in sunxi-boards as [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/a20/cubietruck.fex cubietruck.fex]<br />
<br />
Everything else is the same as the [[manual build howto]].<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== Fel mode ==<br />
<br />
There is a button marked 'FEL' next to the full-size usb ports, which triggers [[FEL | FEL mode]].<br />
<br />
== VGA ==<br />
<br />
The Cubietruck is the only board to date that has a properly implemented VGA connector with DDC. Load-detection is also reliable. In future kernel versions (with [[sunxi-kms]]), VGA and the attached monitor will be detected properly and will require no intervention.<br />
<br />
For now though, you need to [[Fex_Guide#disp_init_configuration | edit the FEX file]] still.<br />
<br />
There is one issue with VGA though. Due to bad PCB placement, there is some crosstalk between Wifi and VGA in certain videomodes.<br />
<br />
== DRAM frequency ==<br />
<br />
<pre><br />
<tomee^> arokux: 432MHz. that's the speed at which my board runs with sunxi bootloader, too. but look here:http://dl.cubieboard.org/software/a20-cubietruck/common/ct-v101_sys_config.fex<br />
<tomee^> arokux: I simply do not know why 432MHz if the hardware can do 480... they downclocked it for security purposes in the first batch?<br />
<arokux> tomee^: sorry, I have no idea.<br />
<tomee^> arokux: I've heard somewhere that someone complained about overheating of the prototype<br />
<arokux> tomee^: Turl may know.<br />
<Turl> dunno, we should ask benn<br />
</pre><br />
<br />
See [http://thread.gmane.org/gmane.comp.hardware.netbook.arm.sunxi/4115 this] conversation on memory frequency problems.<br />
<br />
== Wifi ==<br />
<br />
There is an AMPAK AP6210 Wifi+BT chip on board with PCB antenna, but it is not clear what exactly is inside:<br />
:* Broadcom BCM43362 + BCM20710<br />
:* Broadcom BCM4330 / BCM40183 Based Chipset<br />
:* Cubietech says it is BCM4329/BCM40181<br />
<br />
If your're using the Cubietech's kernel, you can enable the module with <br />
<br />
modprobe bcmdhd<br />
<br />
There is a parameter op_mode, which allows you to enable AP mode, for example<br />
<br />
modprobe bcmdhd op_mode=2<br />
<br />
For the linux-sunxi's 3.4 kernel, you will need a special driver, instructions to integrate and compile the driver with the sunxi-3.4 source code are avalable [[Cubietruck/AP6210 | here]].<br />
<br />
=== Networkmanager ===<br />
<br />
The Lubuntu Desktop images has NetworkManager running. It spawns its own wpa_supplicant, which is respawned once you kill it. This wpa_supplicant will also interfere with yours, if you want to configure WLAN Adapter by yourself. I have removed NetworkManager and was able to successfully configure WiFi.<br />
<br />
wpa_supplicant -D nl80211 -B -i wlan0 -c <(wpa_passphrase YOUR_SSID YOUR_PASSWORD)<br />
<br />
== Bluetooth ==<br />
<br />
This is a new or differently wired chip, status UNKNOWN, please test it!<br />
<br />
Huang Benn said [https://groups.google.com/forum/m/?fromgroups#!topic/linux-sunxi/X75nghXpOkU here] (the cubietruck chipset AMPAK) ap6210 is a combo of wifi(bcm40181) and bt(bcm20710). the firmwares can be found here:<br />
[http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/ wifi/bluetooth driver]<br />
<br />
:Here is some info on how to get the bcmdhd compiled with workarounds / ideas how to overcome problems<br />
<br />
<pre><br />
<tomee^> arokux: CC [M] drivers/net/wireless/bcmdhd/dhd_linux.o drivers/net/wireless/bcmdhd/dhd_linux.c: In function ‘dhd_os_prealloc’: drivers/net/wireless/bcmdhd/dhd_linux.c:5192:2: error: implicit declaration of function ‘wl_android_prealloc’ [-Werror=implicit-function-declaration]<br />
<tomee^> arokux: I guess you should ifdef the DHD_OS_PREALLOC option for non-android builds... or I did something wrong<br />
<tomee^> arokux: it comes from the bcmdhd driver compilation<br />
<tomee^> arokux: when I disabled buffer preallocation for it, it went through<br />
<tomee^> arokux: CONFIG_DHD_USE_STATIC_BUF=y broke the compilation. CONFIG_DHD_USE_STATIC_BUF=n made it work. maybe this flag should depend on android or some other build environment<br />
</pre><br />
<br />
== Battery ==<br />
<br />
Tha battery backups the power supply. It alows an uninterruptible operation. Depending on the battery capacity sveral hours of operation are possible. <br />
<br />
The battery will be charged during operation. A 3.7 Volt Lithium polymer battery is needed. The connector is near the ethernet port (see frontside board pictures).<br />
<br />
For kernel 3.4:<br />
<br />
* The battery capacity in mA has to be set in the fex file.<br />
* The current voltage can be read here /sys/class/power_supply/battery/voltage_now<br />
* The current status charging/discharging can be read here /sys/class/power_supply/battery/status<br />
<br />
== Cubietech Kernel source ==<br />
<br />
There are kernels developed by Cubietech, they are supposed to have all features workin.<br />
<br />
* Kernel: https://github.com/cubieboard/linux-sunxi<br />
* fex and kernel config: https://github.com/cubieboard/cubie_configs<br />
<br />
Reportedly AP mode does not work with the WiFi driver in this kernel.<br />
<br />
This kernel is abandoned by Cubietech, but can still have something interesting, such as: https://github.com/cubieboard2/linux-sunxi/tree/sunxi-3.4-ct-dev/drivers/net/ethernet/allwinner/gmac<br />
<br />
== Expansion Ports ==<br />
<br />
The cubietruck exposes 2 2.0&nbsp;mm pitch connectors with lots of expansion possibilities.<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN8 (Near Ethernet connector)<br />
|-<br />
! colspan=4 | 2x15 Header<br />
|-<br />
| 1 || ''GND''<br />
| 2 || ''3.3V'' <br />
|-<br />
| 3 || ''AVCC''<br />
| 4 || ''RESET#'' <br />
|-<br />
| 5 || [[A20/PIO#PC19|PC19]] <small>(SPI2-CS0/EINT12)</small><br />
| 6 || [[A20/PIO#PC21|PC21]] <small>(SPI2-MOSI/EINT14)</small><br />
|-<br />
| 7 || [[A20/PIO#PC20|PC20]] <small>(SPI2-CLK/EINT13)</small><br />
| 8 || [[A20/PIO#PC22|PC22]] <small>(SPI2-MISO/EINT15)</small><br />
|-<br />
| 9 || [[A20/PIO#PB14|PB14]] <small>(SPI2-CS0/JTAG_MS0)</small><br />
| 10 || [[A20/PIO#PB16|PB16]] <small>(SPI2-MOSI/JTAG_DO0)</small><br />
|-<br />
| 11 || [[A20/PIO#PB15|PB15]] <small>(SPI2-CLK/JTAG_CK0)</small><br />
| 12 || [[A20/PIO#PB17|PB17]] <small>(SPI2-MISO/JTAG_DI0)</small><br />
|-<br />
| 13 || ''GND''<br />
| 14 || ''GND''<br />
|-<br />
| 15 || [[A20/PIO#PI20|PI20]] <small>(FMIN-L/PS2SCLK0/UART7-TX/HSCL)</small><br />
| 16 || [[A20/PIO#PI14|PI14]] <small>(PS2SCLK1/EINT26)</small><br />
|-<br />
| 17 || [[A20/PIO#PI21|PI21]] <small>(FMIN-R/PS2SDA0/UART7-RX/HSDA)</small><br />
| 18 || [[A20/PIO#PI15|PI15]] <small>(PS2SDA1/EINT27)</small><br />
|-<br />
| 19 || [[A20/PIO#PI3|PI3]] <small>(PWM1)</small><br />
| 20 || [[A20/PIO#PB3|PB3]] <small>(IR0-TX)</small><br />
|-<br />
| 21 || [[A20/PIO#PB2|PB2]] <small>(PWM0)</small><br />
| 22 || [[A20/PIO#PB4|PB4]] <small>(IR0-RX)</small><br />
|-<br />
| 23 || [[A20/PIO#PB18|PB18]] <small>(TWI1-SCK)</small><br />
| 24 || ''LINEIN-L''<br />
|-<br />
| 25 || [[A20/PIO#PB19|PB19]] <small>(TWI1-SDA)</small><br />
| 26 || ''LINEIN-R''<br />
|-<br />
| 27 || ''CVBS''<br />
| 28 || ''LRADC0''<br />
|-<br />
| 29 || ''VCC-5V''<br />
| 30 || ''LRADC1''<br />
|}<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN9 (Near USB Ports)<br />
|-<br />
! colspan=4 | CSI1/TS/TP/TVIN<br />
|-<br />
| 1 || 3.3V<br />
| 2 || 3.3V<br />
|-<br />
| 3 || [[A20/PIO#PG0|PG0]] <small>(TS1_CLK/CSI1-PCLK)</small><br />
| 4 || [[A20/PIO#PG3|PG3]] <small>(TS1_ERR/CSI1-VSYNC)</small><br />
|-<br />
| 5 || [[A20/PIO#PG2|PG2]] <small>(TS1_SYNC/CSI1-HSYNC)</small><br />
| 6 || [[A20/PIO#PG1|PG1]] <small>(TS1_DVLD/CSI1-MCLK)</small><br />
|-<br />
| 7 || [[A20/PIO#PG4|PG4]] <small>(TS1_D0/CSI1-D0)</small><br />
| 8 || [[A20/PIO#PG5|PG5]] <small>(TS1_D1/CSI1-D1)</small><br />
|-<br />
| 9 || [[A20/PIO#PG6|PG6]] <small>(TS1_D2/CSI1-D2/UART3-TX)</small><br />
| 10 || [[A20/PIO#PG7|PG7]] <small>(TS1_D3/CSI1-D3/UART3-RX)</small><br />
|-<br />
| 11 || [[A20/PIO#PG8|PG8]] <small>(TS1_D4/CSI1-D4/UART3-RTS)</small><br />
| 12 || [[A20/PIO#PG9|PG9]] <small>(TS1_D5/CSI1-D5/UART3-CTS)</small><br />
|-<br />
| 13 || [[A20/PIO#PG10|PG10]] <small>(TS1_D6/CSI1-D6/UART4-TX)</small><br />
| 14 || [[A20/PIO#PG11|PG11]] <small>(TS1_D7/CSI1-D7/UART4-RX)</small><br />
|-<br />
| 15 || ''GND''<br />
| 16 || ''GND''<br />
|-<br />
! colspan=4 | Analog<br />
|-<br />
| 17 || ''XP-I2SDO1''<br />
| 18 || ''TVIN0-I2SMCLK''<br />
|-<br />
| 19 || ''XN-I2SDO2''<br />
| 20 || ''TVIN1-BTPCMCLK''<br />
|-<br />
| 21 || ''YP-I2SDO3''<br />
| 22 || ''TVIN2-BTPCMSYNC''<br />
|-<br />
| 23 || ''XN-BTPCMIN''<br />
| 24 || ''TVIN3-BTPCMOUT''<br />
|}<br />
<br />
= Adding a serial port =<br />
[[File:Cubietruck-6 UART0 RevA.jpg|thumb|240px|UART pins in green circle]]<br />
There is a nice 0.1" connector behind the USB ports, just plug in your [[UART]] adapter.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:CT_overview.jpg<br />
File:Cubietruck-7 Frontside RevA.JPG<br />
File:Cubietruck-3 Backside RevA.JPG<br />
File:CT_disk_assembly.jpg<br />
File:Cubietruck-2 SSD-Mount RevA.JPG<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
The cubieboards are a well known brandname nowadays and there are no rebadgers.<br />
<br />
=See also=<br />
<br />
* [[Cubieboard/FAQ|FAQ]]<br />
* [[Cubieboard]]<br />
* [[Cubieboard2]]<br />
<br />
* [http://cubieboard.org/ cubieboard.org - official homepage]<br />
* [http://docs.cubieboard.org/ docs.cubieboard.org - cubie's user manual]<br />
* [http://dl.cubieboard.org/hardware/A20_Cubietruck_HW_V10_130606.pdf Cubietruck schematic]<br />
* [http://dl.cubieboard.org/software/a20-cubietruck cubie's download site]<br />
<br />
== Vendor images ==<br />
<br />
* [http://docs.cubieboard.org/tutorials/cb3/installation/cubietruck_android-4.2.2_releases Android images]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_desktop_releases Lubuntu desktop]<br />
* [http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_server_releases Lubuntu server]<br />
* [http://dl.cubieboard.org/software/a20-cubietruck/ Downloads for all current images for cubietruck]<br />
<br />
[[Category:Devices]]<br />
[[Category:A20 Boards]]<br />
<br />
[[Category:Community_Devices]]<br />
<br />
[[Category:Cubieboard]]<br />
[[Category:Devices with HDMI port]]<br />
[[Category:Devices with SATA port]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Mainline U-boot]]</div>Rose28357https://linux-sunxi.org/index.php?title=Talk:A10_DRAM_Controller_Calibration&diff=9708Talk:A10 DRAM Controller Calibration2014-06-29T21:33:59Z<p>Rose28357: </p>
<hr />
<div>Rose28357> how will we collect the board specific results ? Here insunxi wiki ?</div>Rose28357https://linux-sunxi.org/index.php?title=Talk:Allwinner_SoC_Family&diff=9707Talk:Allwinner SoC Family2014-06-29T21:30:43Z<p>Rose28357: </p>
<hr />
<div>libv> Wouldn't it be better to order things according to Sun_X_i. As Allwinner will continue to press out all sorts of weird numbers. The sunxi naming scheme makes sense and adds some chronological and development order in the whole.<br />
<br />
Chronological is debatable, sun7i came out before sun6i [[User:Turl|Turl]] ([[User talk:Turl|talk]])<br />
<br />
libv> Sure, but it gets much much closer than having it according to marketing numbers. Plus, sun7i seems like something that was started after sun6i development was started, but was done quicker as it was "just" a sun4i with 2 arm A7s in it.<br />
<br />
Rose28357> good point to sort by generation. But how to introduce SoC with currently unknown generation ?</div>Rose28357https://linux-sunxi.org/index.php?title=Talk:A10_DRAM_Controller_Calibration&diff=9684Talk:A10 DRAM Controller Calibration2014-06-28T13:19:35Z<p>Rose28357: Blanked the page</p>
<hr />
<div></div>Rose28357https://linux-sunxi.org/index.php?title=Talk:A10_DRAM_Controller_Calibration&diff=9683Talk:A10 DRAM Controller Calibration2014-06-28T13:18:56Z<p>Rose28357: Created page with "Should' nt we give a hint that this is valid for A10, A13 and A20? I know that this is already explained at 'DRAM Controller' i didnt dare to add it by my self."</p>
<hr />
<div>Should' nt we give a hint that this is valid for A10, A13 and A20? I know that this is already explained at 'DRAM Controller' i didnt dare to add it by my self.</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=9678A802014-06-28T10:39:33Z<p>Rose28357: </p>
<hr />
<div>{{Infobox SoC<br />
| image = <br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun??i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/comment/z13behdguzeei3xt323rjbaobvmcel3rm04%231389027344082937?cbp=19c0uj857d64o&sview=1&cid=5&soc-app=115&soc-platform=1&spath=/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
Two devices have been announced so far:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ pcDuino pcDuino8]<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
== GPL violations ==<br />
<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]<br />
[[Category:Allwinner]]<br />
[[Category:A80]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=9674Allwinner SoC Family2014-06-28T07:58:08Z<p>Rose28357: /* Comparison table for "A"-Series Allwinner SoC's */</p>
<hr />
<div>=== "A"-Series ===<br />
Based on ARMv7 Cortex-A cores (Cortex-A7,A8, and A15) targeted for hi-end devices like digital media player, tablets, and netbooks:<br />
* [[A10|Allwinner A10]] <small>(sun4i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A13|Allwinner A13]] <small>(sun5i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A10s|Allwinner A10s]]<small>(sun5i)</small>(1 x Cortex-A8 CPU-core)<br />
* [[A20|Allwinner A20]] <small>(sun7i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A23|Allwinner A23]] <small>(sun8i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A31|Allwinner A31]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A31s|Allwinner A31s]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A33|Allwinner A33]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A80|Allwinner A80]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores using ARM big.LITTLE heterogeneous CPU architecture)<br />
<br />
=== "A"- Series 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 which have [[NEON]], [[Vector Floating Point Unit|VFP]], [[TrustZone]], and [[Thumb-2]] co-processor extensions: <br />
** Advanced SIMD: [[NEON]] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** Vector FPU: [[Vector Floating Point Unit]] - ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7) VFPU (Vector Floating Point Unit)<br />
** Security Extensions: <br />
*** TrustZone secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [[Thumb2]] intruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400P2 or SGX544, PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES and [[Framebuffer]] <br />
* VPU: [[CedarX]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [[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 for "A"-Series Allwinner SoC's ===<br />
{| class="wikitable"<br />
|-<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun?i (A31S)|| sun?i (A33) || 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 />
| 1GHz|| 1GHz || 1GHz|| 912MHz|| 1.5Ghz || ?GHz || ?Ghz || ?.?Ghz || 2(??) Ghz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2x4<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 (max 2GB @ DDR800) || DDR2, DDR3 (max 2GB @ DDR800) || DDR2, DDR3 (max 512MB @ DDR800) || LPDDR3/DDR3/LPDDR2 || DDR3 (max 1GB) || 2-channel DDR3/LPDDR2, 2-channel DDR3L || ? (A31S)|| ? (A33) || 2-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] MP2 @ 350Mhz per shader engine ||Mali400 MP2 || SGX544 @ 200Mhz per shader engine || SGX544 @ 200Mhz per shader engine || 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 || Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
|-<br />
! scope="row" | [[CedarX|Video decoder]]<br />
| 2160P || 1080P || 1080P || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || ? (A31S) || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[CedarX|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@30fps,JPEG || ? (A31S) || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|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 || ? (A31S) || ? (A33) || 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 || I2S, PCM || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || 1 || 1 || ? (A31S) || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || 1 || 2 || ? (A31S) || ? (A33) || 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || - || EMAC/GMAC || ? (A31S) || ? (A33) ||EMAC/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 || 4x SD Card, eMMC NAND, 2-channel raw NAND || ? (A31S) || ? (A33) || 4x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441 19mm × 19mm, 0.80mm Pitch || BGA336 14mm × 14mm, 0.65mm Pitch || eLQFP176 20mm × 20mm ||BGA441 19mm × 19mm, 0.80mm Pitch || FBGA280 14x14x1.4, 0.80mm pitch || BGA609 18mm × 18mm, 0.65mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Litography<br />
| 55nm || 55nm|| 55nm || 40nm || 40nm || 40nm || 40nm ||40nm || 28nm HPM<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
=== "F"-Series ===<br />
'''NOTE: F series not supported by linux-sunxi community due lack of developers and hardware, sun3i have only offical linux port, sunii have no linux support only aw's melis RTOS'''<br />
<br />
<br />
Based on ARMv6 ARM926-EJS core and currenty targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
* [[C100|Boxchip C100]] <small>(sun3i)</small><br />
* [[E200|Boxchip E200]] <small>(sun3i)</small><br />
* [[F20|Boxchip F20]] <small>(sun3i)</small><br />
* [[F10|Boxchip F10]] aka SoChip SC9800 aka Teclast T8100<small>(sunii)</small><br />
* [[F13|Boxchip F13]] <small>(sunii)</small><br />
* [[F13|Boxchip F15]] aka SoChip SC8600 aka Teclast T7200<small>(sunii)</small><br />
* [[F18|Boxchip F18]] <small>(sunii)</small><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:System_on_Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=A80&diff=9673A802014-06-28T07:54:38Z<p>Rose28357: /* Original SDK */</p>
<hr />
<div>{{Infobox SoC<br />
| image = <br />
| manufacturer = Allwinner<br />
| process = 28nm HPM<br />
| cpu = Octa-core big.LITTLE Cortex-A15/7 @ 2 (?)GHz<br />
| ltwo = <br />
| extensions = <br />
| memory = dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
| gpu = 64-core PowerVR G6230<br />
| vpu = Video decoding MPEG 1/2/4, H.263, H.264, H.265, WMV9/VC-1<br />
| apu = <br />
| video = HDMI 4K output, RGB LCD 2048x1536@60fps, dual-channel LVDS 1920x1080@60fps, 4-lane MIPI DSI 1920x1200@60fps, 4-lane eDP 2560x1600@60fps<br />
| audio = <br />
| network = EMAC ????<br />
| storage = 4x SD/MMC, Raw NAND with 72-bit ECC<br />
| usb = 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
| other = HSIC for low power LTE<br />
| release_date = June 2014<br />
| website = [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
}}<br />
<br />
'''Note:''' Allwinner [[A80]] (sun??i) SoC is about to come. So this page is almost empty. No official documentation is available yet. The information on this page is taken from the Allwinner product page.<br />
<br />
This is the second Allwinner SoC which uses PowerVR instead of MALI for GPU. See also SoC [[A31]]<br />
<br />
* [https://plus.google.com/app/basic/stream/z13behdguzeei3xt323rjbaobvmcel3rm04 Comment from Huang Benn from Cubietech on SATA on A80 at Google+] I think we will see A80 board at the market Q2 this year. Now it is just for marketing :) BTW, A80 do support sata with PM support<br />
PM => SATA Portmultiplier ??<br />
<br />
=Overview=<br />
<br />
Currently, there is no linux-sunxi support available, as there are no devices and no SDK available.<br />
<br />
Two devices have been announced so far:<br />
* [http://cubieboard.org/2014/05/04/cubietech-will-promote-a80-high-performance-mini-pc/ CubieTech Cubieboard 8]<br />
* [http://www.pcduino.com/announcing-strategic-partnership-allwinner-ultraoctaa80-based-pcduino8/ pcDuino pcDuino8]<br />
<br />
=A80 SoC Features=<br />
* CPU:<br />
** ARM Cortex-A15/A7 dual Quad-Core<br />
** 256KB L1-Cache<br />
** 1MB L2-Cache<br />
* GPU:<br />
** PowerVR G6230<br />
** 64-core<br />
** Comply with Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
* Video:<br />
** UHD H.264/VP8 4Kx2K@30fps video playback<br />
** multi-format FHD video decoding, including MPEG 1/2/4, H.263, H.264. WMV9/VC-1, etc<br />
** H.265/VP9 1080p@30fps video playback<br />
** H.264 HP/VP8 4Kx2K@30fps video capture<br />
** 3840x1080@30fps 3D decoding, BD/SBS/TAB/FP supported<br />
** 3840x1080@30fps 3D encoding<br />
** RTSP, HTTP, HLS, RTMP, MMS streaming media protocols<br />
* Display:<br />
** dual-channel LVDS 1920x1080@60fps<br />
** RGB LCD 2048x1536@60fps<br />
** 4-lane MIPI DSI 1920x1200@60fps<br />
** 4-lane eDP 2560x1600@60fps<br />
** HDMI 4K output (unknown frame rate !????)<br />
* Camera:<br />
** Integrated parallel and MIPI I/F sensor<br />
** Supports 5M/8M/12M/16M CMOS sensor<br />
** Supports 8/10/12-bit YUV/Bayer sensor<br />
* Memory:<br />
** dual-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
** Raw NAND with 72-bit ECC<br />
** eMMC V4.5<br />
* Connectivity<br />
** 2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
** Ethernet MAC<br />
** 4x SPI, 7x TWI, 7x UART<br />
** 4x SD/MMC<br />
** HSIC<br />
** PCM/I2S<br />
* PMIC:<br />
** AXP806 and AXP809<br />
* Embedded Controller:<br />
** unknown<br />
* Audio:<br />
** unknown<br />
* OS: <br />
** unknown<br />
<br />
= Documentation =<br />
<br />
<br />
= Software =<br />
<br />
== Original SDK ==<br />
[http://dl.cubieboard.org/software/a80/ Prelimery link to Cubitech download for A80 kernel including a Androit sun9i image]<br />
<br />
=== SDK Content ===<br />
<br />
== Boot0 ==<br />
<br />
<br />
== U-boot ==<br />
<br />
<br />
=== Allwinner ===<br />
<br />
<br />
=== Sunxi Community ===<br />
<br />
<br />
== Kernel code ==<br />
<br />
=== Allwinner Kernel ===<br />
<br />
<br />
=== Sunxi Community ===<br />
.<br />
<br />
== GPL violations ==<br />
<br />
<br />
= See also =<br />
* [[A31]]<br />
<br />
=References=<br />
<references /><br />
<br />
= External links =<br />
* [http://www.allwinnertech.com/en/clq/processora/A80.html Product Page]<br />
<br />
some more rumors before A80 release<br />
* [http://www.cnx-software.com/2014/05/21/comparison-nvidia-tegra-k1-samsung-exynos-5422-rockchip-rk3288-allwinner-a80/ ARM A15/A17 CPU comparison]<br />
<br />
<br />
[[Category:System on Chip]]<br />
[[Category:Allwinner]]<br />
[[Category:A80]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietruck/Bluetooth&diff=9655Cubietruck/Bluetooth2014-06-26T13:48:18Z<p>Rose28357: /* Update 2 */</p>
<hr />
<div>Given that you see this in dmesg:<br />
sunxi-uart.2: ttyS1 at MMIO 0x1c28800 (irq = 35) is a U6_16550A<br />
<br />
You can upload the firmware and activate the hci device like that:<br />
./brcm_patchram_plus -d --patchram /lib/firmware/ap6210/bcm20710a1.hcd --enable_hci --bd_addr 11:22:33:44:55:66 --no2bytes --tosleep 1000 /dev/ttyS1<br />
<br />
You will see lots of hex dumps flying through the screen and at the end:<br />
received 7<br />
04 0e 04 01 03 0c 00<br />
writing<br />
01 01 fc 06 66 55 44 33 22 11<br />
received 7<br />
04 0e 04 01 01 fc 00<br />
Done setting line discpline<br />
<br />
The program doesn't detach itself - goes into infinite sleep. Must investigate why.<br />
<br />
Confirm the device has been created:<br />
root@cubietruck:~# hcitool dev<br />
Devices:<br />
hci0 11:22:33:44:55:66<br />
root@cubietruck:~# hciconfig -a<br />
hci0: Type: BR/EDR Bus: UART<br />
BD Address: 11:22:33:44:55:66 ACL MTU: 1021:8 SCO MTU: 64:1<br />
UP RUNNING PSCAN <br />
RX bytes:4479 acl:66 sco:0 events:130 errors:0<br />
TX bytes:3593 acl:65 sco:0 commands:51 errors:0<br />
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87<br />
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 <br />
Link policy: RSWITCH SNIFF <br />
Link mode: SLAVE ACCEPT <br />
Name: 'cubietruck-0'<br />
Class: 0x620100<br />
Service Classes: Networking, Audio, Telephony<br />
Device Class: Computer, Uncategorized<br />
HCI Version: 4.0 (0x6) Revision: 0x1000<br />
LMP Version: 4.0 (0x6) Subversion: 0x220e<br />
Manufacturer: Broadcom Corporation (15)<br />
<br />
You might also need to preload bluetooth and hci-uart modules.<br />
<br />
The program can be downloaded from https://code.google.com/p/broadcom-bluetooth/<br />
The firmware can be grabbed from various places, e.g. cubietech images.<br />
<br />
<br />
== Update ==<br />
There's been some complaints about the results being irreproducible.<br />
It is true that sometimes the firmware fails to load. And if it failed once, you most likely won't be able to activate the chip until next reboot (fixme: Someone more competent, explain how to reset the chip circuitry).<br />
<br />
I have the following modules loaded before uploading the firmware:<br />
g2d_23 37275 2 - Live 0xbf16e000<br />
rfcomm 57752 14 - Live 0xbf157000<br />
bnep 13796 2 - Live 0xbf14f000<br />
hci_uart 23588 1 - Live 0xbf144000<br />
bluetooth 264130 31 hidp,rfcomm,bnep,hci_uart, Live 0xbf0ef000<br />
sunxi_cedar_mod 9600 0 - Live 0xbf0e8000<br />
snd_hwdep 5278 0 - Live 0xbf0e3000<br />
snd_usbmidi_lib 17980 0 - Live 0xbf0da000<br />
snd_rawmidi 18863 1 snd_usbmidi_lib, Live 0xbf0d0000<br />
mali_drm 2533 2 - Live 0xbf0c4000<br />
mali 224497 1 - Live 0xbf07d000<br />
drm 208545 3 mali_drm, Live 0xbf034000<br />
disp_ump 788 0 - Live 0xbf030000<br />
ump 50814 6 mali,disp_ump, Live 0xbf01d000<br />
lcd 3693 0 - Live 0xbf019000 <br />
sunxi_gmac 30577 0 - Live 0xbf00c000<br />
pwm_sunxi 9138 0 - Live 0xbf005000<br />
rtc_sun4i 5440 0 - Live 0xbf000000<br />
<br />
After uploading the firmware I do:<br />
modprobe hidp<br />
hidd --server<br />
hciconfig hci0 up<br />
<br />
This is probably not the cleanest way to do things, but I've been able to use a e.g. BT keyboard for a week long without any trouble.<br />
<br />
== Update 2 ==<br />
There seems to be missing gpio configuration to allow firmware download.<br />
[http://www.cubieforums.com/index.php/topic,2449.msg17812.html#msg17812 Re: Debian sd/nand/sata deploying bluetooth firmware] <br />
<br />
[[Category:Cubieboard]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietruck/Bluetooth&diff=9654Cubietruck/Bluetooth2014-06-26T13:47:21Z<p>Rose28357: </p>
<hr />
<div>Given that you see this in dmesg:<br />
sunxi-uart.2: ttyS1 at MMIO 0x1c28800 (irq = 35) is a U6_16550A<br />
<br />
You can upload the firmware and activate the hci device like that:<br />
./brcm_patchram_plus -d --patchram /lib/firmware/ap6210/bcm20710a1.hcd --enable_hci --bd_addr 11:22:33:44:55:66 --no2bytes --tosleep 1000 /dev/ttyS1<br />
<br />
You will see lots of hex dumps flying through the screen and at the end:<br />
received 7<br />
04 0e 04 01 03 0c 00<br />
writing<br />
01 01 fc 06 66 55 44 33 22 11<br />
received 7<br />
04 0e 04 01 01 fc 00<br />
Done setting line discpline<br />
<br />
The program doesn't detach itself - goes into infinite sleep. Must investigate why.<br />
<br />
Confirm the device has been created:<br />
root@cubietruck:~# hcitool dev<br />
Devices:<br />
hci0 11:22:33:44:55:66<br />
root@cubietruck:~# hciconfig -a<br />
hci0: Type: BR/EDR Bus: UART<br />
BD Address: 11:22:33:44:55:66 ACL MTU: 1021:8 SCO MTU: 64:1<br />
UP RUNNING PSCAN <br />
RX bytes:4479 acl:66 sco:0 events:130 errors:0<br />
TX bytes:3593 acl:65 sco:0 commands:51 errors:0<br />
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87<br />
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 <br />
Link policy: RSWITCH SNIFF <br />
Link mode: SLAVE ACCEPT <br />
Name: 'cubietruck-0'<br />
Class: 0x620100<br />
Service Classes: Networking, Audio, Telephony<br />
Device Class: Computer, Uncategorized<br />
HCI Version: 4.0 (0x6) Revision: 0x1000<br />
LMP Version: 4.0 (0x6) Subversion: 0x220e<br />
Manufacturer: Broadcom Corporation (15)<br />
<br />
You might also need to preload bluetooth and hci-uart modules.<br />
<br />
The program can be downloaded from https://code.google.com/p/broadcom-bluetooth/<br />
The firmware can be grabbed from various places, e.g. cubietech images.<br />
<br />
<br />
== Update ==<br />
There's been some complaints about the results being irreproducible.<br />
It is true that sometimes the firmware fails to load. And if it failed once, you most likely won't be able to activate the chip until next reboot (fixme: Someone more competent, explain how to reset the chip circuitry).<br />
<br />
I have the following modules loaded before uploading the firmware:<br />
g2d_23 37275 2 - Live 0xbf16e000<br />
rfcomm 57752 14 - Live 0xbf157000<br />
bnep 13796 2 - Live 0xbf14f000<br />
hci_uart 23588 1 - Live 0xbf144000<br />
bluetooth 264130 31 hidp,rfcomm,bnep,hci_uart, Live 0xbf0ef000<br />
sunxi_cedar_mod 9600 0 - Live 0xbf0e8000<br />
snd_hwdep 5278 0 - Live 0xbf0e3000<br />
snd_usbmidi_lib 17980 0 - Live 0xbf0da000<br />
snd_rawmidi 18863 1 snd_usbmidi_lib, Live 0xbf0d0000<br />
mali_drm 2533 2 - Live 0xbf0c4000<br />
mali 224497 1 - Live 0xbf07d000<br />
drm 208545 3 mali_drm, Live 0xbf034000<br />
disp_ump 788 0 - Live 0xbf030000<br />
ump 50814 6 mali,disp_ump, Live 0xbf01d000<br />
lcd 3693 0 - Live 0xbf019000 <br />
sunxi_gmac 30577 0 - Live 0xbf00c000<br />
pwm_sunxi 9138 0 - Live 0xbf005000<br />
rtc_sun4i 5440 0 - Live 0xbf000000<br />
<br />
After uploading the firmware I do:<br />
modprobe hidp<br />
hidd --server<br />
hciconfig hci0 up<br />
<br />
This is probably not the cleanest way to do things, but I've been able to use a e.g. BT keyboard for a week long without any trouble.<br />
<br />
== Update 2 ==<br />
There seems to be missing gpio configuration to allow firmware download.<br />
[http://www.cubieforums.com/index.php/topic,2449.msg17812.html#msg17812] <br />
<br />
[[Category:Cubieboard]]</div>Rose28357https://linux-sunxi.org/index.php?title=Cubietech_Cubietruck&diff=9647Cubietech Cubietruck2014-06-24T17:27:26Z<p>Rose28357: /* See also */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:CT overview.jpg|250px]]<br />
| manufacturer = [http://www.cubietech.com/ Cubietech], [http://cubieboard.org Cubieboard]<br />
| dimensions = 110''mm''x80''mm''x??''mm''<br />
| release_date = October 2013<br />
| website = [http://docs.cubieboard.org/products/start#cubietruck_cubieboard3 Cubietruck Product Page]<br />
| soc = [[A20]] @ 1Ghz<br />
| dram = 2GiB DDR3 @ 480MHz<br />
| nand = 8GB<br />
| power = DC 5&nbsp;V @ 2&nbsp;A (3A with SATA drive), Battery connector<br />
| video = HDMI (Type A - full), VGA<br />
| audio = 3.5&nbsp;mm headphone plug, HDMI, SPDIF<br />
| network = WiFi 802.11 b/g/n (Ampak AP6210), 10/100/1000Mbps Ethernet (Realtek RTL8211E)<br />
| storage = µSD, SATA 2.0<br />
| usb = 2 USB 2.0 Host, 1 USB2.0 OTG<br />
| other = Bluetooth (Ampak AP6210), IRDA, RTC<br />
| headers = UART, I2S, I2C, SPI, CVBS, LRADC (2x),UART, PS2, PWM (2x), TS/CSI, IRDA, LINE-IN, FM-IN, MIC-IN, TV-IN (4x), ...<br />
}}<br />
<br />
Cubietruck is the third generation of the famous [[Cubieboard]], and is the most full-featured board to date.<br />
<br />
= Identification =<br />
<br />
The board helpfully states "CUBIETRUCK".<br />
<br />
There are two revisions of the A20. Since Feb 2014 it is RevB. The Rev state is not printed on the board and is not retrievable from the SoC. There is also no information regarding the differences of these revisions. There is evidence of different behavior and boot problems with older kernel on RevB cubietrucks.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mostly supported. See [[#Tips, Tricks, Caveats|Tips, Tricks, Caveats]] below for more details.<br />
<br />
== Images ==<br />
<br />
Go here to download <br />
<br />
'''''Android''''' <br />
http://docs.cubieboard.org/tutorials/cb3/installation/cubietruck_android-4.2.2_releases<br />
<br />
'''''Lubuntu'''''<br />
<br />
Desktop<br />
http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_desktop_releases<br />
<br />
Server<br />
http://docs.cubieboard.org/tutorials/a20-cubietruck_lubuntu_server_releases<br />
<br />
== HW-Pack ==<br />
<br />
== BSP ==<br />
<br />
== Manual build ==<br />
<br />
* For building u-boot, use the "Cubietruck" target.<br />
* The .fex file can be found in sunxi-boards as [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/a20/cubietruck.fex cubietruck.fex]<br />
<br />
Everything else is the same as the [[manual build howto]].<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
== Fel mode ==<br />
<br />
There is a button marked 'FEL' next to the full-size usb ports, which triggers [[FEL | FEL mode]].<br />
<br />
== VGA ==<br />
<br />
The Cubietruck is the only board to date that has a properly implemented VGA connector with DDC. Load-detection is also reliable. In future kernel versions (with [[sunxi-kms]]), VGA and the attached monitor will be detected properly and will require no intervention.<br />
<br />
For now though, you need to [[Fex_Guide#disp_init_configuration | edit the FEX file]] still.<br />
<br />
There is one issue with VGA though. Due to bad PCB placement, there is some crosstalk between Wifi and VGA in certain videomodes.<br />
<br />
== Gigabit Ethernet ==<br />
<br />
=== kernel ===<br />
<br />
stage/sunxi-3.4 supports GMAC, patches are pending to let GMAC talk to MII PHY as well, see [http://thread.gmane.org/gmane.comp.hardware.netbook.arm.sunxi/4441/focus=4464 here], review is pending.<br />
<br />
=== U-boot ===<br />
<br />
Patches for GMAC in U-Boot are submitted to ML, review pending.<br />
<br />
u-boot does not work with gigabit ethernet<br />
<br />
== DRAM frequency ==<br />
<br />
<pre><br />
<tomee^> arokux: 432MHz. that's the speed at which my board runs with sunxi bootloader, too. but look here:http://dl.cubieboard.org/software/a20-cubietruck/common/ct-v101_sys_config.fex<br />
<tomee^> arokux: I simply do not know why 432MHz if the hardware can do 480... they downclocked it for security purposes in the first batch?<br />
<arokux> tomee^: sorry, I have no idea.<br />
<tomee^> arokux: I've heard somewhere that someone complained about overheating of the prototype<br />
<arokux> tomee^: Turl may know.<br />
<Turl> dunno, we should ask benn<br />
</pre><br />
<br />
See [http://thread.gmane.org/gmane.comp.hardware.netbook.arm.sunxi/4115 this] conversation on memory frequency problems.<br />
<br />
== Wifi ==<br />
<br />
There is an AMPAK AP6210 Wifi+BT chip on board with PCB antenna, but it is not clear what exactly is inside:<br />
:* Broadcom BCM43362 + BCM20710<br />
:* Broadcom BCM4330 / BCM40183 Based Chipset<br />
:* Cubietech says it is BCM4329/BCM40181<br />
<br />
If your're using the Cubietech's kernel, you can enable the module with <br />
<br />
modprobe bcmdhd<br />
<br />
There is a parameter op_mode, which allows you to enable AP mode, for example<br />
<br />
modprobe bcmdhd op_mode=2<br />
<br />
For the linux-sunxi's 3.4 kernel, you will need a special driver, instructions to integrate and compile the driver with the sunxi-3.4 source code are avalable [[Cubietruck/AP6210 | here]].<br />
<br />
=== Networkmanager ===<br />
<br />
The Lubuntu Desktop images has NetworkManager running. It spawns its own wpa_supplicant, which is respawned once you kill it. This wpa_supplicant will also interfere with yours, if you want to configure WLAN Adapter by yourself. I have removed NetworkManager and was able to successfully configure WiFi.<br />
<br />
wpa_supplicant -D nl80211 -B -i wlan0 -c <(wpa_passphrase YOUR_SSID YOUR_PASSWORD)<br />
<br />
== Bluetooth ==<br />
<br />
This is a new or differently wired chip, status UNKNOWN, please test it!<br />
<br />
Huang Benn said [https://groups.google.com/forum/m/?fromgroups#!topic/linux-sunxi/X75nghXpOkU here] (the cubietruck chipset AMPAK) ap6210 is a combo of wifi(bcm40181) and bt(bcm20710). the firmwares can be found here:<br />
[http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/ wifi/bluetooth driver]<br />
<br />
:Here is some info on how to get the bcmdhd compiled with workarounds / ideas how to overcome problems<br />
<br />
<pre><br />
<tomee^> arokux: CC [M] drivers/net/wireless/bcmdhd/dhd_linux.o drivers/net/wireless/bcmdhd/dhd_linux.c: In function ‘dhd_os_prealloc’: drivers/net/wireless/bcmdhd/dhd_linux.c:5192:2: error: implicit declaration of function ‘wl_android_prealloc’ [-Werror=implicit-function-declaration]<br />
<tomee^> arokux: I guess you should ifdef the DHD_OS_PREALLOC option for non-android builds... or I did something wrong<br />
<tomee^> arokux: it comes from the bcmdhd driver compilation<br />
<tomee^> arokux: when I disabled buffer preallocation for it, it went through<br />
<tomee^> arokux: CONFIG_DHD_USE_STATIC_BUF=y broke the compilation. CONFIG_DHD_USE_STATIC_BUF=n made it work. maybe this flag should depend on android or some other build environment<br />
</pre><br />
<br />
== Battery ==<br />
<br />
Tha battery backups the power supply. It alows an uninterruptible operation. Depending on the battery capacity sveral hours of operation are possible. <br />
<br />
The battery will be charged during operation. A 3.7 Volt Lithium polymer battery is needed. The connector is near the ethernet port (see frontside board pictures).<br />
<br />
For kernel 3.4:<br />
<br />
* The battery capacity in mA has to be set in the fex file.<br />
* The current voltage can be read here /sys/class/power_supply/battery/voltage_now<br />
* The current status charging/discharging can be read here /sys/class/power_supply/battery/status<br />
<br />
== Cubietech Kernel source ==<br />
<br />
There are kernels developed by Cubietech, they are supposed to have all features workin.<br />
<br />
* Kernel: https://github.com/cubieboard/linux-sunxi<br />
* fex and kernel config: https://github.com/cubieboard/cubie_configs<br />
<br />
Reportedly AP mode does not work with the WiFi driver in this kernel.<br />
<br />
This kernel is abandoned by Cubietech, but can still have something interesting, such as: https://github.com/cubieboard2/linux-sunxi/tree/sunxi-3.4-ct-dev/drivers/net/ethernet/allwinner/gmac<br />
<br />
== Expansion Ports ==<br />
<br />
The cubietruck exposes 2 2.0&nbsp;mm pitch connectors with lots of expansion possibilities.<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN8 (Near Ethernet connector)<br />
|-<br />
! colspan=4 | 2x15 Header<br />
|-<br />
| 1 || ''GND''<br />
| 2 || ''3.3V'' <br />
|-<br />
| 3 || ''AVCC''<br />
| 4 || ''RESET#'' <br />
|-<br />
| 5 || [[A20/PIO#PC19|PC19]] <small>(SPI2-CS0/EINT12)</small><br />
| 6 || [[A20/PIO#PC21|PC21]] <small>(SPI2-MOSI/EINT14)</small><br />
|-<br />
| 7 || [[A20/PIO#PC20|PC20]] <small>(SPI2-CLK/EINT13)</small><br />
| 8 || [[A20/PIO#PC22|PC22]] <small>(SPI2-MISO/EINT15)</small><br />
|-<br />
| 9 || [[A20/PIO#PB14|PB14]] <small>(SPI2-CS0/JTAG_MS0)</small><br />
| 10 || [[A20/PIO#PB16|PB16]] <small>(SPI2-MOSI/JTAG_DO0)</small><br />
|-<br />
| 11 || [[A20/PIO#PB15|PB15]] <small>(SPI2-CLK/JTAG_CK0)</small><br />
| 12 || [[A20/PIO#PB17|PB17]] <small>(SPI2-MISO/JTAG_DI0)</small><br />
|-<br />
| 13 || ''GND''<br />
| 14 || ''GND''<br />
|-<br />
| 15 || [[A20/PIO#PI20|PI20]] <small>(FMIN-L/PS2SCLK0/UART7-TX/HSCL)</small><br />
| 16 || [[A20/PIO#PI14|PI14]] <small>(PS2SCLK1/EINT26)</small><br />
|-<br />
| 17 || [[A20/PIO#PI21|PI21]] <small>(FMIN-R/PS2SDA0/UART7-RX/HSDA)</small><br />
| 18 || [[A20/PIO#PI15|PI15]] <small>(PS2SDA1/EINT27)</small><br />
|-<br />
| 19 || [[A20/PIO#PI3|PI3]] <small>(PWM1)</small><br />
| 20 || [[A20/PIO#PB3|PB3]] <small>(IR0-TX)</small><br />
|-<br />
| 21 || [[A20/PIO#PB2|PB2]] <small>(PWM0)</small><br />
| 22 || [[A20/PIO#PB4|PB4]] <small>(IR0-RX)</small><br />
|-<br />
| 23 || [[A20/PIO#PB18|PB18]] <small>(TWI1-SCK)</small><br />
| 24 || ''LINEIN-L''<br />
|-<br />
| 25 || [[A20/PIO#PB19|PB19]] <small>(TWI1-SDA)</small><br />
| 26 || ''LINEIN-R''<br />
|-<br />
| 27 || ''CVBS''<br />
| 28 || ''LRADC0''<br />
|-<br />
| 29 || ''VCC-5V''<br />
| 30 || ''LRADC1''<br />
|}<br />
<br />
{| class="wikitable" style="width:40%;"<br />
! colspan=4 | CN9 (Near USB Ports)<br />
|-<br />
! colspan=4 | CSI1/TS/TP/TVIN<br />
|-<br />
| 1 || 3.3V<br />
| 2 || 3.3V<br />
|-<br />
| 3 || [[A20/PIO#PG0|PG0]] <small>(TS1_CLK/CSI1-PCLK)</small><br />
| 4 || [[A20/PIO#PG3|PG3]] <small>(TS1_ERR/CSI1-VSYNC)</small><br />
|-<br />
| 5 || [[A20/PIO#PG2|PG2]] <small>(TS1_SYNC/CSI1-HSYNC)</small><br />
| 6 || [[A20/PIO#PG1|PG1]] <small>(TS1_DVLD/CSI1-MCLK)</small><br />
|-<br />
| 7 || [[A20/PIO#PG4|PG4]] <small>(TS1_D0/CSI1-D0)</small><br />
| 8 || [[A20/PIO#PG5|PG5]] <small>(TS1_D1/CSI1-D1)</small><br />
|-<br />
| 9 || [[A20/PIO#PG6|PG6]] <small>(TS1_D2/CSI1-D2/UART3-TX)</small><br />
| 10 || [[A20/PIO#PG7|PG7]] <small>(TS1_D3/CSI1-D3/UART3-RX)</small><br />
|-<br />
| 11 || [[A20/PIO#PG8|PG8]] <small>(TS1_D4/CSI1-D4/UART3-RTS)</small><br />
| 12 || [[A20/PIO#PG9|PG9]] <small>(TS1_D5/CSI1-D5/UART3-CTS)</small><br />
|-<br />
| 13 || [[A20/PIO#PG10|PG10]] <small>(TS1_D6/CSI1-D6/UART4-TX)</small><br />
| 14 || [[A20/PIO#PG11|PG11]] <small>(TS1_D7/CSI1-D7/UART4-RX)</small><br />
|-<br />
| 15 || ''GND''<br />
| 16 || ''GND''<br />
|-<br />
! colspan=4 | Analog<br />
|-<br />
| 17 || ''XP-I2SDO1''<br />
| 18 || ''TVIN0-I2SMCLK''<br />
|-<br />
| 19 || ''XN-I2SDO2''<br />
| 20 || ''TVIN1-BTPCMCLK''<br />
|-<br />
| 21 || ''YP-I2SDO3''<br />
| 22 || ''TVIN2-BTPCMSYNC''<br />
|-<br />
| 23 || ''XN-BTPCMIN''<br />
| 24 || ''TVIN3-BTPCMOUT''<br />
|}<br />
<br />
= Adding a serial port =<br />
[[File:Cubietruck-6 UART0 RevA.jpg|thumb|240px|UART pins in green circle]]<br />
There is a nice 0.1" connector behind the USB ports, just plug in your [[UART]] adapter.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:CT_overview.jpg<br />
File:Cubietruck-7 Frontside RevA.JPG<br />
File:Cubietruck-3 Backside RevA.JPG<br />
File:CT_disk_assembly.jpg<br />
File:Cubietruck-2 SSD-Mount RevA.JPG<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
The cubieboards are a well known brandname nowadays and there are no rebadgers.<br />
<br />
=See also=<br />
<br />
* [[Cubieboard/FAQ|FAQ]]<br />
* [[Cubieboard]]<br />
* [[Cubieboard2]]<br />
<br />
* [http://cubieboard.org/ cubieboard.org - official homepage]<br />
* [http://docs.cubieboard.org/ docs.cubieboard.org - cubie's user manual]<br />
* [http://dl.cubieboard.org/hardware/A20_Cubietruck_HW_V10_130606.pdf Cubietruck schematic]<br />
* [http://dl.cubieboard.org/software/a20-cubietruck cubie's download site]<br />
<br />
[[Category:Devices]]<br />
[[Category:A20 Boards]]<br />
<br />
[[Category:Community_Devices]]<br />
<br />
[[Category:Cubieboard]]<br />
[[Category:Devices with HDMI port]]<br />
[[Category:Devices with SATA port]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Mainline U-boot]]</div>Rose28357https://linux-sunxi.org/index.php?title=LiveSuit_images&diff=9641LiveSuit images2014-06-24T05:46:16Z<p>Rose28357: /* Overview */</p>
<hr />
<div>= Overview=<br />
<br />
All sunxi devices use [[LiveSuit]] as a default flasher and updater for retail customer and PhoenixCard or PhoenixUSB for flashing when devices are manufactured. [[LiveSuit]]/Phoenix protocol and data are closed-source standard used by many companies and devices. To decrypt/unpack firmware you need unpacker and 3 keys. These keys are same across all sunxi devices and can be different on other brands (SoChip, Rockchip and others). Keys are usually shipped with firmware as .key file.<br />
<br />
= Software =<br />
== Allwinner pack tools (mix of Linux & Windows tools) ==<br />
: To pack a LiveSuit image under linux, you need to pack tool from https://github.com/matson-hall/allwinner-pack-tools<br />
: Note: you need to check out the cubieboard branch (master branch does not have anything there), so do:<br />
<br />
git clone https://github.com/matson-hall/allwinner-pack-tools.git -b cubieboard<br />
<br />
This pack tools, contain 3 folders, most are to be used on x86 Linux or Windows platform.<br />
<br />
=== bin ===<br />
* build.sh (linux bash script): script for building root, uboot, linux kernel and ''pack'' them.<br />
* mkbootimg (x86 linux binary): Generate a boot image after a kernel file, a ramdisk image, eventually à second bootloader image and some other informations.<br />
<br />
=== Pack ===<br />
* chips folder: contains some configs fex, eGon (boot0.bin & boot1.bin for NAND, sdcard and spinor), eFex (some fex and axf), wboot (some scripts and assets for bootfs)<br />
* pack (linux bash script): The pack tools for linux firmware<br />
* pctools folder: contains Windows and Linux tools. (eDragonEx, gen_check_code. mod_update, fsbuild200).<br />
<br />
=== Tools ===<br />
The subfolder Documentations contain a simplified chinese manual of the tools.<br />
<br />
After the README.txt, tools subdir content :<br />
* ''Livesuit'': Flashing tool<br />
* ''LogGen'': Android logo generation tool<br />
* ''PhoenixCard'': mass production tool (?)<br />
* ''PlatformTools'': adb tools.<br />
* ''USBDriver'': adb/mtp driver<br />
* ''FastbootWin32'': Fastboot tool<br />
* ''AndroidModify_xx'': firmware modification tool (for Android 4.0.x)<br />
* ''OEMDataPacket_xx'': Write files in user data area.<br />
* ''HerculesV100'': PC part of the Fastboot tool<br />
<br />
== Linux ==<br />
=== RedScorpio tools === <br />
: Only closedsource binary version is available at the moment.<br />
: '''Note''': this unpacker/packer works with PhoenixSuit images too.<br />
: Download: http://forum.xda-developers.com/showpost.php?p=28329544&postcount=1 (package includes both windows and linux versions)<br />
=== [[awutils]] ===<br />
: Open source toolset<br />
: https://github.com/Ithamar/awutils<br />
<br />
== Windows ==<br />
=== RedScorpio tools === <br />
: <B>Possiple virus warning! File: imgrepacker.exe</B> <br />
: RedScorpio tools are two utilities: imagerepacker, which unpacks, decrypts and packs back firmwares and imgdecoder for SoChip images, that have slightly different layout.<br />
: Download: http://forum.xda-developers.com/showpost.php?p=28329544&postcount=1 (package includes both windows and linux versions)<br />
: '''Note''': this unpacker/packer works with PhoenixSuit images too.<br />
: usage is:<br />
: unpack image and decrypt:<br />
<pre><br />
imgrepacker.exe image.img<br />
</pre><br />
: repack image:<br />
<pre><br />
imgrepacker.exe image.img.dump<br />
</pre><br />
: Here is standard output from imgrepacker.exe unpacking official [[A710|LY-F1]] firmware:<br />
<pre><br />
==========================[ START ]==========================<br />
<br />
--- Firmware unpacking ---<br />
<br />
File "F1中性20120529.0.6.5-a721_v4.2.img" was read<br />
<br />
BasePath.txt saved<br />
<br />
- image.cfg creating -<br />
image.cfg created<br />
<br />
- Files extracting -<br />
"out/sys_config.fex" extracted<br />
"out/sys_config1.fex" extracted<br />
"out/split_xxxx.fex" extracted<br />
"out/bootloader.fex" extracted<br />
bootloader.fex.iso created<br />
"out/env.fex" extracted<br />
env.fex.iso created<br />
"out/boot.fex" extracted<br />
boot.fex.iso created<br />
"out/system.fex" extracted<br />
system.fex.iso created<br />
"out/recovery.fex" extracted<br />
recovery.fex.iso created<br />
"out/oem.fex" extracted<br />
oem.fex.iso created<br />
"out/diskfs.fex" extracted<br />
diskfs.fex.iso created<br />
"out/vbootloader.fex" extracted<br />
"out/venv.fex" extracted<br />
"out/vboot.fex" extracted<br />
"out/vsystem.fex" extracted<br />
"out/vrecovery.fex" extracted<br />
"out/voem.fex" extracted<br />
"out/boot0.bin" decrypted<br />
"out/boot1.bin" decrypted<br />
"eFex//usb//tools.fex" extracted<br />
"eFex//usb//fes_1-1.fex" extracted<br />
"eFex//usb//fes_1-2.fex" extracted<br />
"eFex//usb//fes_2.fex" extracted<br />
"eFex//usb//fes.fex" extracted<br />
"eFex//usb//HW_scan.axf" decrypted<br />
"eFex//usb//update_boot0.axf" decrypted<br />
"eFex//usb//update_boot1.axf" decrypted<br />
"eFex//usb//fet_restore.axf" decrypted<br />
"eFex//usb//magic_cr_start.fex" extracted<br />
"eFex//usb//magic_cr_end.fex" extracted<br />
"eFex//usb//magic_de_start.fex" extracted<br />
"eFex//usb//magic_de_end.fex" extracted<br />
"eFex//usb//fed_nand.axf" decrypted<br />
"eFex//card//cardtool.fex" extracted<br />
"eFex//card//cardscript.fex" extracted<br />
"out/card_boot0.fex" extracted<br />
"out/card_boot1.fex" extracted<br />
"out/mbr.fex" extracted<br />
"out/dlinfo.fex" extracted<br />
"eFex//usb//card_update_boot0.axf" decrypted<br />
"eFex//usb//card_update_boot1.axf" decrypted<br />
"eFex//usb//fed_card.axf" decrypted<br />
"eFex//usb//card_HW_scan.axf" decrypted<br />
<br />
- Filelist.txt creating -<br />
Filelist.txt created<br />
<br />
==========================[ STOP ]==========================<br />
</pre><br />
: How you can see, unpacker creates .fex files for partitions, sys_config and eFex, which is hardware flasher (you can see eFex ASCII logo if you connect UART to UART0 port). <br />
: List of extracted data is in Filelist.txt, this file will be read if you want to repack image back to firmware after modifying.<br />
=== esxgx ===<br />
: <B>Virus warning! (Gen:Trojan:RP.oqWbau67ogl) File: unimg.exe</B> <br />
: Also known as unimg.exe. Unpacker/Packer from esxgx http://forum.xda-developers.com/member.php?u=4494128, shipped with AllWinner image package, SztupY A10 android kitchen http://forum.xda-developers.com/showthread.php?t=1490886 and other kitchens. Default used by XDA sunxi guys.<br />
: This is closed-source flasher without any documentation, this flasher creates weird file names like 12345678_1234567890script.fex and can crash on every wrong move, but you can use it if you just want to repack android for sunxi tablet.<br />
<br />
: The following text describes the result from unpacking an Android ICS image. <br />
: It is interpreted with the help from this thread:<br />
: http://www.slatedroid.com/topic/28942-50-to-the-first-person-to-figure-this-out/<br />
<pre><br />
<br />
The Vxxxxxxxx files are for verification purposes. Note that filenames contain spaces the notation is like: "<Type> <Name>"<br />
<br />
<br />
COMMON SYS_CONFIG000000 <br />
COMMON SYS_CONFIG100000<br />
<br />
Text file used as a command bunch for LiveSuit. It tells the app how to flash, what to flash and where, and it configures the device too (screen size, ram info, cpu info, etc).<br />
SYS_CONFIG1 is the old one.<br />
<br />
<br />
COMMON SPLIT_0000000000 <br />
<br />
Same content as magic.bin from the bootloader (nanda)<br />
<br />
<br />
RFSFAT16 BOOTLOADER_00000.fex<br />
<br />
FAT16 image containing the u-boot binary. Use MagicISO (or any other ISO managing app) to open.<br />
In Linux do:<br />
sudo mount -o loop -t vfat RFSFAT16_BOOTLOADER_00000.fex bootloader<br />
<br />
<br />
RFSFAT16 ENVIROMENT_00000<br />
<br />
u-boot's boot parameters, DO NOT MODIFY<br />
<br />
<br />
RFSFAT16 BOOT_00000000000<br />
<br />
Standard Android boot image (boot.img) (2K header,gzipped kernel, initrd gzipped cpio archive, optional second stage loader is not present)<br />
More to read here:<br />
http://forum.xda-developers.com/showthread.php?t=443994<br />
<br />
<br />
RFSFAT16 SYSTEM_000000000.fex<br />
<br />
Standard Android sparse ext4 image with the /system file structure.(system.img)<br />
Use simg2img to make it into an ext4 image that can be loop mounted!<br />
<br />
<br />
RFSFAT16 RECOVERY_0000000<br />
<br />
Sparse ext4 containing a standard Android recovery image.<br />
Use simg2img to make it into an ext4 image that can be loop mounted!<br />
<br />
<br />
RFSFAT16 DISKFS_000000000<br />
<br />
ext4 image containing the the initram (init.rc, default.prop, initlogo, etc), it is empty in this example.<br />
<br />
<br />
<br />
BOOT BOOT0_0000000000 <br />
BOOT BOOT1_0000000000<br />
<br />
These are bootloaders to be put in nand. Boot0 is the SPL - Second Program Loader (sun4i-spl.bin when uboot is built from source)<br />
Boot1 is the U-boot!<br />
<br />
<br />
PXTOOLS xxxxxxxxxxxxxxxx<br />
This is a win32 DLL!!! - seems maybe a plugin for Livesuit<br />
<br />
FES FES_1-1000000000 <br />
FES FES_1-2000000000<br />
FES FES_200000000000 <br />
FES FES_000000000000<br />
FET HW_SCAN_00000000 <br />
FET UPDATE_BOOT0_000 <br />
FET UPDATE_BOOT1_000 <br />
FET FET_RESTORE_0000 <br />
FET MAGIC_CRC_START_ <br />
FET MAGIC_CRC_EN_000 <br />
FET MAGIC_DE_START_0<br />
FET MAGIC_DE_END_000 <br />
FED FED_NAND_0000000 <br />
FET CARD_UPDATE_BOT0 <br />
FET CARD_UPDATE_BOT1<br />
FED CARD_FED_0000000 <br />
FET CARD_HW_SCAN_000 <br />
<br />
<br />
These are tools are NAND flashing utilities, checksums, hardware scanner, and other tools used during flashing.<br />
<br />
<br />
12345678 1234567890cardtl <br />
12345678 1234567890script <br />
12345678 1234567890boot_0 <br />
12345678 1234567890boot_1<br />
2345678 1234567890___mbr <br />
12345678 1234567890dlinfo <br />
<br />
These are bootloaders, config files, and tools for SDMMC flashing, if there's a device with SDMMC internal instead of NAND, these are used!<br />
<br />
</pre><br />
<br />
[[Category:Proprietary Software]]</div>Rose28357https://linux-sunxi.org/index.php?title=Script.bin&diff=9605Script.bin2014-06-19T08:37:53Z<p>Rose28357: </p>
<hr />
<div>'''script.bin''' is a board-specific binary "configuration file" used by Allwinner-specific drivers in the kernel (and also by the LiveSuit flashing program) with information on how to set-up various devices, ports and I/O pins on boards with Allwinner SoCs.<br />
<br />
The corresponding human-readable file format is [[Fex_Guide|FEX]], it is possible to convert bin to fex and back by using [[Sunxi-tools]].</div>Rose28357https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=9476Linux mainlining effort2014-06-15T11:11:28Z<p>Rose28357: /* Status */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The uBoot repository and toolchain is described in the [[U-Boot|uBoot howto]].<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[A10S-OLinuXino]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Planned for 3.16 ==<br />
* All<br />
** AXP20x support<br />
*** APX20x power enable key driver<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** P2WI<br />
** DMAengine<br />
** SMBus Regmap<br />
** Special Pins Muxier<br />
<br />
* A10<br />
<!-- TODO: These commits are currently pointing to dtor's next tree. Update links to Linus' tree when real merge happens. --><br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Added board support: Mele M9, R7<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* A31/A23 DMAengine driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240184.html]<br />
** Currently in [[A23]] SDK there AW driver for DMAEngine , it should be adapted to device tree, cleaned for mainline<br />
** The [[A23]] shares the DMA controller with the [[A31]], only the number of channels differ (the [[A31]] has 16 channels, while the [[A23]] only has 8 of them)<br />
<br />
* [[AXP209]] driver (WiP: Carlo Caione (ccaione)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240728.html]<br />
<br />
* [[A31]] P2WI Controller (WiP: Boris Brezillon (bbrezillon))<br />
** A few items are needed first to introduce support for this<br />
** PRCM clocks and resets (APB0)<br />
** Special pins muxer (R_PIO) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/246181.html]<br />
** SMBUS regmap support [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/247876.html]<br />
<br />
* [[A23]] support (WiP: Chen-Yu Tsai (wens))<br />
** Re-using most blocks from earlier SoCs (A10/A20/A31)<br />
** Add A23 specific clocks and pinctrl drivers<br />
** USB supports HSIC, but no devices available<br />
** Watchdog same as A31, similar to A10, sun4i driver can be extended<br />
** RTC docs available<br />
** Implement PSCI for A23 in U-boot<br />
<br />
=== Major drivers ===<br />
* NAND Driver (WiP: Boris Brezillon (bbrezillon)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/239885.html]<br />
* A31 Audio Codec driver (WiP: Maxime Ripard (mripard))<br />
** A31 PLL2 and module 1 clocks<br />
** Cyclic DMA transfers<br />
** ASoC driver<br />
** Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)<br />
<br />
=== Minor drivers ===<br />
* <strike>IIO LRADC driver (WiP: Carlo Caione (n01))</strike> Input LRADC driver (WiP: Hans de Goede (hansg))<br />
* PWM Driver (WiP: Alexandre Belloni)<br />
* IR driver (WiP: Alexander Bersenev / Alexsey Shestacov (wingrime))<br />
* Security System (Crypto Engine) (WiP: Corentin Labbe (Montjoie))<br />
** Hardware Pseudo Random Number Generator<br />
** Checksumming (MD5, SHA1)<br />
** Crypto (AES, DES, 3DES)<br />
<br />
=== Timeouts ? (No code has ever been submitted to mainline, current status unknown) ===<br />
* USB OTG Driver (WiP CHen-Yu Tsai (wens))<br />
** It seems to actually be a Mentor Graphics Inventra USB Controller (musb), that already support for it in mainline kernel, so it only needs a thin layer to adapt it to sunxi. Moreover, it's already supporting the PIO mode, so we could avoid relying on DMA to merge it. (Thanks to Arnd Bergmann for noticing)<br />
** irc user jukivili works on getting this driver to work with sunxi-3.4<br />
** Status 2013-10-02:<br />
*** OTG requires more work. Mode detection is working, but have not yet figured out how to reset MUSB core and hardware from host-mode to peripheral and other way around.<br />
*** Mode detection/USB-PHY stuff probably needs to be moved to new USB-PHY driver as is done with other MUSB hardware drivers.<br />
* Transport Stream (WiP: woprr)<br />
* CAN (WiP: Peter Chen [https://groups.google.com/forum/#!searchin/linux-sunxi/CAN/linux-sunxi/Wrj1uYO1xVo/rq_HYUW7PaIJ] / restored code dump: [https://github.com/plaes/sunxi-can-driver])<br />
<br />
== Left to be done ==<br />
=== Achievable ===<br />
* DMAengine driver (sun4i/sun5i/sun7i)<br />
** DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND<br />
** Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that<br />
** The [[A20]] and earlier SoCs have two mode of operations: Normal and Dedicated. The dedicated mode looks a lot like how the [[A31]] DMA controller works, only it supports only mem2dev transfers<br />
* Audio<br/>A23 SDK has aSoC drivers for the first three:<br />
** Audio Codec<br />
** IIS/I<sup>2</sup>S (Audio transport)<br />
** SPDIF (Audio transport)<br />
** AC97 Interface<br />
** We first need to support cyclic DMA transfers<br />
* CSI (Camera Input)<br />
* PS/2 (Keyboard/Mouse)<br />
* Smart Card Reader<br />
* Keypad<br />
* One wire (A31, A23)<br />
<br />
=== Hard ===<br />
* Display (KMS)<br />
* G2D/Mixer<br />
* VPU (See [[CedarX/Reverse_Engineering]])<br />
** Video Engine<br />
** Audio Engine<br />
** Audio Video Sync<br />
<br />
=== Troublesome ===<br />
* Memory Stick (has anybody actually got this hardware connected and a memory stick?)<br />
* TV Decoder (Analog in, no driver, no datasheet)<br />
* PATA (Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (Only [[A10]], not much interesting, as all modern GPS recivers have MCU with UART output, no documentation)<br />
<br />
=== Needing major rework ===<br />
<br />
These drivers need major rework AND lack documentation other than existing source pile.<br />
<br />
* Display driver (libv, techn also might be interested)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>Rose28357https://linux-sunxi.org/index.php?title=U-Boot/Legacy_U-Boot&diff=9474U-Boot/Legacy U-Boot2014-06-15T11:07:59Z<p>Rose28357: /* SD Card */</p>
<hr />
<div>U-boot is the bootloader commonly used on our allwinner SoCs. Amongst others, it provides the basic infrastructure to bring up a board to a point where it can load a linux kernel and start booting your operating system.<br />
<br />
= Compile U-Boot =<br />
<br />
== Get a toolchain ==<br />
<br />
If you haven't done so before, get a suitable [[Toolchain|toolchain]] installed and added to your PATH.<br />
<br />
== Clone the repository ==<br />
<br />
You can clone our u-boot repository by running:<br />
<br />
<pre> git clone https://github.com/linux-sunxi/u-boot-sunxi.git</pre><br />
<br />
This should checkout the ''sunxi'' branch, which allows booting from [[Bootable_SD_card | SD]], over [[FEL/USBBoot | USB]] and over [[How_to_boot_the_A10_or_A20_over_the_network | ethernet]], but it still lacks support for booting off the [[NAND]]. For more information about booting from NAND, check the [[Installing_to_NAND | NAND howto]].<br />
<br />
<span style="color:red"><b>Note:</b></span> the 'sunxi' branch in the u-boot-sunxi repository is currently under active development and also frequently merges in the changes from the upstream u-boot. Expect it to be occasionally broken. There is no stable branch or tag at the moment. If something does not work correctly, please consider trying older revisions from the 'sunxi' branch or look for any possible not-yet-applied fixes in the linux-sunxi and u-boot mailing lists.<br />
<br />
== Determine build target ==<br />
<br />
You can list the available u-boot targets by running:<br />
<br />
<pre>grep sunxi boards.cfg | awk '{print $7}'</pre><br />
<br />
You will notice that some board names are duplicates, but with ''_FEL'' attached. These are for use with [[FEL/USBBoot | USBBoot]], while the standard ones will boot from SD.<br />
<br />
== Build ==<br />
<br />
When you have determined what target you want to build, configure:<br />
<br />
<pre> make CROSS_COMPILE=arm-linux-gnueabihf- {TARGET}_config </pre><br />
<br />
Then just build it:<br />
<br />
<pre> make CROSS_COMPILE=arm-linux-gnueabihf- </pre><br />
<br />
You might want to add '-j4' to make use of 4 processors (or any number that matches your system), to speed up the build.<br />
<br />
== Boot ==<br />
<br />
When the build has completed, there will be ''spl/sunxi-spl.bin'' and ''u-boot.img'' available in your u-boot tree.<br />
<br />
For getting these bits loaded onto the hardware, please refer to the respective howto:<br />
* [[Bootable_SD_card#Bootloader | SD Card]]<br />
* [[FEL/USBBoot | USB]]<br />
* [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]]<br />
* [[NAND]]<br />
<br />
= Configure U-Boot =<br />
<br />
{{Remove|TODO: Move these to their respective howtos}}<br />
<br />
== Setting environment variables ==<br />
<br />
There is a difference in setting environment variables between the boot script and the u-boot shell.<br />
<br />
Inside the shell you would set, for instance:<br />
<pre>setenv root /dev/sda1</pre><br />
<br />
But in the script you would use:<br />
<pre>root=/dev/sda1</pre><br />
<br />
== SD Card ==<br />
Example u-boot environment <br />
<pre><br />
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}<br />
ext2load mmc 0 0x43000000 script.bin<br />
ext2load mmc 0 0x48000000 uImage<br />
bootm 0x48000000<br />
</pre><br />
<br />
== NAND ==<br />
Example u-boot environment, as found in <code>uEnv.txt</code> from a stock android u-boot environment partition<br />
<br />
bootdelay=0<br />
bootcmd=run setargs boot_normal<br />
console=ttyS0,115200<br />
nand_root=/dev/nandc<br />
mmc_root=/dev/mmcblk0p4<br />
init=/init<br />
loglevel=8<br />
setargs=setenv bootargs console=${console} root=${nand_root} init=${init} loglevel=${loglevel}<br />
boot_normal=nand read 40007800 boot;boota 40007800<br />
boot_recovery=nand read 40007800 recovery;boota 40007800<br />
boot_fastboot=fastboot<br />
<br />
== NFS ==<br />
<br />
Recent version of u-boot are able to boot from NFS as well as TFTP, but you have to get rid of the automatic setup of FTP. Check [[How_to_boot_the_A10_or_A20_over_the_network | Ethernet]] for more information.<br />
<br />
Note: on the A20 based cubieboards, this only seems to work on the stable kernel, not on stage.<br />
<br />
= Adding a new device to U-Boot =<br />
<br />
== dram config ==<br />
<br />
With the output from [[Retrieving_device_information#Retrieving_data_over_USB_in_FEL_mode | bootinfo]] or [[Retrieving_device_information#Reading_memory_information_from_registers | a10-meminfo]], you can now create a dram file for your device in board/sunxi/ The output from either program trivially applies to a u-boot sunxi dram file.<br />
<br />
First, try to match your settings with an existing dram file. There are a lot of generic dram files available for a10, perhaps one of those matches your config. If an existing board config for another device matches yours, then please consider turning this into a generic dram file.<br />
<br />
If nothing matches, copy an existing file to a filename relevant for your device and edit the entries manually. Do not forget to git add this new file.<br />
<br />
== Add dram file to build system ==<br />
<br />
Edit board/sunxi/Makefile to add a line which links your device with the right dram_ object.<br />
<br />
== Add board to boards.cfg ==<br />
<br />
boards.cfg, in the top level of your u-boot tree, holds all board configurations.<br />
<br />
Scroll down until you find the sunxi devices, and create an entry for your device.<br />
<br />
== Build and run the new u-boot ==<br />
<br />
That's it. You should now be able to [[U-Boot#Compile_U-Boot | compile]] and [[Manual_build_howto | test u-boot]]. It makes sense to also get a kernel and operating system running to more completely test the u-boot dram settings before committing code.<br />
<br />
== Commit your work to the git tree and send in the patch ==<br />
<br />
You can now commit your changes, and with:<br />
<pre><br />
git format-patch -M -C HEAD^<br />
</pre><br />
<br />
You will create a git mbox patch file which you can mail to [[Mailing_list | our mailinglist]]. If you have [[Mailing_list#Configuring_git_for_send-email | set up git correctly]], you can just run:<br />
<pre><br />
git send-email 0001-*.patch<br />
</pre><br />
<br />
== External links ==<br />
* [https://github.com/linux-sunxi/u-boot-sunxi/ git repository]<br />
* [http://github.com/linux-sunxi/u-boot-sunxi/wiki official wiki]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]<br />
[[Category:boot]]</div>Rose28357https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=9473Linux mainlining effort2014-06-15T11:05:50Z<p>Rose28357: /* Status */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The repository and toolchain ist describe in the [[U-Boot|uBoot howto]].<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[A10S-OLinuXino]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Planned for 3.16 ==<br />
* All<br />
** AXP20x support<br />
*** APX20x power enable key driver<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** P2WI<br />
** DMAengine<br />
** SMBus Regmap<br />
** Special Pins Muxier<br />
<br />
* A10<br />
<!-- TODO: These commits are currently pointing to dtor's next tree. Update links to Linus' tree when real merge happens. --><br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Added board support: Mele M9, R7<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* A31/A23 DMAengine driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240184.html]<br />
** Currently in [[A23]] SDK there AW driver for DMAEngine , it should be adapted to device tree, cleaned for mainline<br />
** The [[A23]] shares the DMA controller with the [[A31]], only the number of channels differ (the [[A31]] has 16 channels, while the [[A23]] only has 8 of them)<br />
<br />
* [[AXP209]] driver (WiP: Carlo Caione (ccaione)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240728.html]<br />
<br />
* [[A31]] P2WI Controller (WiP: Boris Brezillon (bbrezillon))<br />
** A few items are needed first to introduce support for this<br />
** PRCM clocks and resets (APB0)<br />
** Special pins muxer (R_PIO) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/246181.html]<br />
** SMBUS regmap support [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/247876.html]<br />
<br />
* [[A23]] support (WiP: Chen-Yu Tsai (wens))<br />
** Re-using most blocks from earlier SoCs (A10/A20/A31)<br />
** Add A23 specific clocks and pinctrl drivers<br />
** USB supports HSIC, but no devices available<br />
** Watchdog same as A31, similar to A10, sun4i driver can be extended<br />
** RTC docs available<br />
** Implement PSCI for A23 in U-boot<br />
<br />
=== Major drivers ===<br />
* NAND Driver (WiP: Boris Brezillon (bbrezillon)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/239885.html]<br />
* A31 Audio Codec driver (WiP: Maxime Ripard (mripard))<br />
** A31 PLL2 and module 1 clocks<br />
** Cyclic DMA transfers<br />
** ASoC driver<br />
** Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)<br />
<br />
=== Minor drivers ===<br />
* <strike>IIO LRADC driver (WiP: Carlo Caione (n01))</strike> Input LRADC driver (WiP: Hans de Goede (hansg))<br />
* PWM Driver (WiP: Alexandre Belloni)<br />
* IR driver (WiP: Alexander Bersenev / Alexsey Shestacov (wingrime))<br />
* Security System (Crypto Engine) (WiP: Corentin Labbe (Montjoie))<br />
** Hardware Pseudo Random Number Generator<br />
** Checksumming (MD5, SHA1)<br />
** Crypto (AES, DES, 3DES)<br />
<br />
=== Timeouts ? (No code has ever been submitted to mainline, current status unknown) ===<br />
* USB OTG Driver (WiP CHen-Yu Tsai (wens))<br />
** It seems to actually be a Mentor Graphics Inventra USB Controller (musb), that already support for it in mainline kernel, so it only needs a thin layer to adapt it to sunxi. Moreover, it's already supporting the PIO mode, so we could avoid relying on DMA to merge it. (Thanks to Arnd Bergmann for noticing)<br />
** irc user jukivili works on getting this driver to work with sunxi-3.4<br />
** Status 2013-10-02:<br />
*** OTG requires more work. Mode detection is working, but have not yet figured out how to reset MUSB core and hardware from host-mode to peripheral and other way around.<br />
*** Mode detection/USB-PHY stuff probably needs to be moved to new USB-PHY driver as is done with other MUSB hardware drivers.<br />
* Transport Stream (WiP: woprr)<br />
* CAN (WiP: Peter Chen [https://groups.google.com/forum/#!searchin/linux-sunxi/CAN/linux-sunxi/Wrj1uYO1xVo/rq_HYUW7PaIJ] / restored code dump: [https://github.com/plaes/sunxi-can-driver])<br />
<br />
== Left to be done ==<br />
=== Achievable ===<br />
* DMAengine driver (sun4i/sun5i/sun7i)<br />
** DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND<br />
** Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that<br />
** The [[A20]] and earlier SoCs have two mode of operations: Normal and Dedicated. The dedicated mode looks a lot like how the [[A31]] DMA controller works, only it supports only mem2dev transfers<br />
* Audio<br/>A23 SDK has aSoC drivers for the first three:<br />
** Audio Codec<br />
** IIS/I<sup>2</sup>S (Audio transport)<br />
** SPDIF (Audio transport)<br />
** AC97 Interface<br />
** We first need to support cyclic DMA transfers<br />
* CSI (Camera Input)<br />
* PS/2 (Keyboard/Mouse)<br />
* Smart Card Reader<br />
* Keypad<br />
* One wire (A31, A23)<br />
<br />
=== Hard ===<br />
* Display (KMS)<br />
* G2D/Mixer<br />
* VPU (See [[CedarX/Reverse_Engineering]])<br />
** Video Engine<br />
** Audio Engine<br />
** Audio Video Sync<br />
<br />
=== Troublesome ===<br />
* Memory Stick (has anybody actually got this hardware connected and a memory stick?)<br />
* TV Decoder (Analog in, no driver, no datasheet)<br />
* PATA (Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (Only [[A10]], not much interesting, as all modern GPS recivers have MCU with UART output, no documentation)<br />
<br />
=== Needing major rework ===<br />
<br />
These drivers need major rework AND lack documentation other than existing source pile.<br />
<br />
* Display driver (libv, techn also might be interested)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>Rose28357https://linux-sunxi.org/index.php?title=Coreboot&diff=9471Coreboot2014-06-15T11:01:04Z<p>Rose28357: </p>
<hr />
<div>This page is to be considered DUSTY due to CONSTRUCTION.<br />
<br />
It is possible to bring up a limited number of board (currently, only cubieboard) using coreboot with a uboot payload.<br />
Please see [http://www.coreboot.org/Board:cubietech/cubieboard coreboot instructions] for more details.<br />
<br />
== Hacks'n'tips ==<br />
<br />
=== Using coreboot for NAND access ===<br />
<br />
coreboot (mrnuke's github branch) operates from MMC. It can load any uboot elf file included as the coreboot payload. This means that besides the regulat sunxi uboot, it can also load the non-SPL part of the lichee uboot.<br />
<br />
From a checkout of sunxi/uboot do:<br />
<br />
$ git checkout origin/lichee-dev -b lichee<br />
$ make CROSS_COMPILE=arm-linux-gnu- sun4i<br />
$ file u-boot <br />
u-boot: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), statically linked, not stripped<br />
<br />
Now take the resulting 'u-boot' file, and use it as the coreboot payload. Install as usual and monitor the serial console<br />
<br />
coreboot-4.0-5661-ge282828-nuclearis Wed Mar 12 01:02:50 CDT 2014 starting...<br />
No valid CBFS master header at 7efbfe30<br />
Calling sunxi to init out MMC<br />
In sunxi MMC init. FUCK YEAH!!!<br />
Calling generic MMC init<br />
[mmc] mmc_init: 0, time 0<br />
Copying coreboot.rom to RAM<br />
MMC bread, no butter<br />
default_media->open()<br />
default_media->map(0x10, 0x20)<br />
default_media->close()<br />
default_media->open()<br />
default_media->map(0x5fd8, 0x20)<br />
default_media->map(0x5fc0, 0x6524)<br />
default_media->close()<br />
CBFS: loading stage fallback/romstage @ 0x41000000 (25808 bytes), entry @ 0x41000000<br />
<br />
<br />
coreboot-4.0-5661-ge282828-nuclearis Wed Mar 12 01:02:50 CDT 2014 starting...<br />
VDD CPU (DCDC2): 1400mv<br />
VDD DLL (DCDC3): 1250mv<br />
AVCC (LDO2) : 3000mv<br />
CSI1-IO (LDO4) : 2800mv<br />
(LDO3) : 2800mv<br />
CPU: 1008 MHz, AXI 336 Mhz, AHB: 168 MHz APB0: 84 MHz<br />
Already have CBFS master header at 7efbfe30<br />
default_media->open()<br />
default_media->map(0x10, 0x20)<br />
default_media->close()<br />
default_media->open()<br />
default_media->map(0x5fd8, 0x20)<br />
default_media->map(0xc518, 0x20)<br />
default_media->map(0xc500, 0x6a3c)<br />
default_media->close()<br />
CBFS: loading stage fallback/coreboot_ram @ 0x40000000 (89184 bytes), entry @ 0x40000000<br />
entry is 0x40000000, leaving romstage.<br />
coreboot-4.0-5661-ge282828-nuclearis Wed Mar 12 01:02:50 CDT 2014 booting...<br />
CBMEM: root @ 7ffff000 254 entries.<br />
BS: BS_PRE_DEVICE times (us): entry 0 run 0 exit 0<br />
BS: BS_DEV_INIT_CHIPS times (us): entry 0 run 0 exit 0<br />
Enumerating buses...<br />
Show all devs...Before device enumeration.<br />
Root Device: enabled 1<br />
CPU_CLUSTER: 0: enabled 1<br />
I2C: 00:34: enabled 1<br />
Compare with tree...<br />
Root Device: enabled 1<br />
CPU_CLUSTER: 0: enabled 1<br />
I2C: 00:34: enabled 1<br />
scan_static_bus for Root Device<br />
CPU_CLUSTER: 0 enabled<br />
smbus: Root Device[0]->I2C: 00:34 enabled<br />
scan_static_bus for Root Device done<br />
done<br />
BS: BS_DEV_ENUMERATE times (us): entry 0 run 0 exit 0<br />
Allocating resources...<br />
Reading resources...<br />
Root Device read_resources bus 0 link: 0<br />
I2C: 00:34 missing read_resources<br />
Root Device read_resources bus 0 link: 0 done<br />
Done reading resources.<br />
Show resources in subtree (Root Device)...After reading.<br />
Root Device child on link 0 CPU_CLUSTER: 0<br />
CPU_CLUSTER: 0<br />
I2C: 00:34<br />
Setting resources...<br />
Root Device assign_resources, bus 0 link: 0<br />
Root Device assign_resources, bus 0 link: 0<br />
Done setting resources.<br />
Show resources in subtree (Root Device)...After assigning values.<br />
Root Device child on link 0 CPU_CLUSTER: 0<br />
CPU_CLUSTER: 0<br />
I2C: 00:34<br />
Done allocating resources.<br />
BS: BS_DEV_RESOURCES times (us): entry 0 run 0 exit 0<br />
Enabling resources...<br />
done.<br />
BS: BS_DEV_ENABLE times (us): entry 0 run 0 exit 0<br />
Initializing devices...<br />
Root Device init<br />
Root Device init 3221171766 usecs<br />
CPU_CLUSTER: 0 init<br />
CPU_CLUSTER: 0 init 4294967116 usecs<br />
Devices initialized<br />
Show all devs...After init.<br />
Root Device: enabled 1<br />
CPU_CLUSTER: 0: enabled 1<br />
I2C: 00:34: enabled 1<br />
BS: BS_DEV_INIT times (us): entry 0 run 0 exit 0<br />
Finalize devices...<br />
Devices finalized<br />
BS: BS_POST_DEVICE times (us): entry 0 run 0 exit 0<br />
BS: BS_OS_RESUME_CHECK times (us): entry 0 run 0 exit 0<br />
Writing coreboot table at 0x7fffd000<br />
rom_table_end = 0x7fffd000<br />
... aligned to 0x80000000<br />
0. 0000000040000000-000000007fffcfff: RAM<br />
1. 000000007fffd000-000000007fffffff: CONFIGURATION TABLES<br />
Wrote coreboot table at: 7fffd000, 0x1b8 bytes, checksum 7fb6<br />
coreboot table: 464 bytes.<br />
CBMEM ROOT 0. 7ffff000 00001000<br />
COREBOOT 1. 7fffd000 00002000<br />
BS: BS_WRITE_TABLES times (us): entry 0 run 0 exit 0<br />
Already have CBFS master header at 7efbfe30<br />
default_media->open()<br />
default_media->map(0x10, 0x20)<br />
default_media->close()<br />
default_media->open()<br />
default_media->map(0x5fd8, 0x20)<br />
default_media->map(0xc518, 0x20)<br />
default_media->map(0x12f58, 0x20)<br />
default_media->map(0x12f40, 0x19e0a)<br />
default_media->close()<br />
CBFS: located payload @ 7efd2d98, 105938 bytes.<br />
Loading segment from rom address 0x7efd2d98<br />
code (compression=1)<br />
New segment dstaddr 0x4a000000 memsize 0x3fe6c srcaddr 0x7efd2dd0 filesize 0x19d9a<br />
(cleaned up) New segment addr 0x4a000000 size 0x3fe6c offset 0x7efd2dd0 filesize 0x19d9a<br />
Loading segment from rom address 0x7efd2db4<br />
Entry Point 0x4a000000<br />
Bounce Buffer at 7ffd1000, 178368 bytes<br />
Loading Segment: addr: 0x000000004a000000 memsz: 0x000000000003fe6c filesz: 0x0000000000019d9a<br />
lb: [0x0000000040000000, 0x0000000040015c60)<br />
Post relocation: addr: 0x000000004a000000 memsz: 0x000000000003fe6c filesz: 0x0000000000019d9a<br />
using LZMA<br />
[ 0x4a000000, 4a03fe6c, 0x4a03fe6c) <- 7efd2dd0<br />
dest 4a000000, end 4a03fe6c, bouncebuffer 7ffd1000<br />
Loaded segments<br />
BS: BS_PAYLOAD_LOAD times (us): entry 0 run 0 exit 0<br />
Jumping to boot code at 4a000000<br />
CPU0: stack: 00006000 - 00008000, lowest used address 00007c04, stack used: 1020 bytes<br />
entry = 4a000000<br />
<br />
<br />
U-Boot 2011.09-rc1-00000-gbaa70c6 (Mar 12 2014 - 00:57:18) Allwinner Technology <br />
<br />
CPU: SUNXI Family<br />
Board: A10-EVB<br />
DRAM: 1 GiB<br />
boot type: 2<br />
NAND: 3896 MiB<br />
MMC: SUNXI SD/MMC: 0<br />
*** Warning - bad CRC, using default environment<br />
<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
--------fastboot partitions--------<br />
-total partitions:0-<br />
-name- -start- -size- <br />
-----------------------------------<br />
no misc partition is found<br />
Hit any key to stop autoboot: 0 <br />
sun4i#<br />
<br />
TADA! NAND access without boot0/boot1. What happens is that coreboot boots from the MMC card, as usual, loads lichee uboot, which can now access the MMC. My NAND partition was previously wiped, hence the warning about "no misc partition is found".<br />
<br />
[[Category:Software]]</div>Rose28357https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=9470Linux mainlining effort2014-06-15T10:46:59Z<p>Rose28357: /* Status */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process.<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[A10S-OLinuXino]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Planned for 3.16 ==<br />
* All<br />
** AXP20x support<br />
*** APX20x power enable key driver<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** P2WI<br />
** DMAengine<br />
** SMBus Regmap<br />
** Special Pins Muxier<br />
<br />
* A10<br />
<!-- TODO: These commits are currently pointing to dtor's next tree. Update links to Linus' tree when real merge happens. --><br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Added board support: Mele M9, R7<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* A31/A23 DMAengine driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240184.html]<br />
** Currently in [[A23]] SDK there AW driver for DMAEngine , it should be adapted to device tree, cleaned for mainline<br />
** The [[A23]] shares the DMA controller with the [[A31]], only the number of channels differ (the [[A31]] has 16 channels, while the [[A23]] only has 8 of them)<br />
<br />
* [[AXP209]] driver (WiP: Carlo Caione (ccaione)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240728.html]<br />
<br />
* [[A31]] P2WI Controller (WiP: Boris Brezillon (bbrezillon))<br />
** A few items are needed first to introduce support for this<br />
** PRCM clocks and resets (APB0)<br />
** Special pins muxer (R_PIO) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/246181.html]<br />
** SMBUS regmap support [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/247876.html]<br />
<br />
* [[A23]] support (WiP: Chen-Yu Tsai (wens))<br />
** Re-using most blocks from earlier SoCs (A10/A20/A31)<br />
** Add A23 specific clocks and pinctrl drivers<br />
** USB supports HSIC, but no devices available<br />
** Watchdog same as A31, similar to A10, sun4i driver can be extended<br />
** RTC docs available<br />
** Implement PSCI for A23 in U-boot<br />
<br />
=== Major drivers ===<br />
* NAND Driver (WiP: Boris Brezillon (bbrezillon)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/239885.html]<br />
* A31 Audio Codec driver (WiP: Maxime Ripard (mripard))<br />
** A31 PLL2 and module 1 clocks<br />
** Cyclic DMA transfers<br />
** ASoC driver<br />
** Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)<br />
<br />
=== Minor drivers ===<br />
* <strike>IIO LRADC driver (WiP: Carlo Caione (n01))</strike> Input LRADC driver (WiP: Hans de Goede (hansg))<br />
* PWM Driver (WiP: Alexandre Belloni)<br />
* IR driver (WiP: Alexander Bersenev / Alexsey Shestacov (wingrime))<br />
* Security System (Crypto Engine) (WiP: Corentin Labbe (Montjoie))<br />
** Hardware Pseudo Random Number Generator<br />
** Checksumming (MD5, SHA1)<br />
** Crypto (AES, DES, 3DES)<br />
<br />
=== Timeouts ? (No code has ever been submitted to mainline, current status unknown) ===<br />
* USB OTG Driver (WiP CHen-Yu Tsai (wens))<br />
** It seems to actually be a Mentor Graphics Inventra USB Controller (musb), that already support for it in mainline kernel, so it only needs a thin layer to adapt it to sunxi. Moreover, it's already supporting the PIO mode, so we could avoid relying on DMA to merge it. (Thanks to Arnd Bergmann for noticing)<br />
** irc user jukivili works on getting this driver to work with sunxi-3.4<br />
** Status 2013-10-02:<br />
*** OTG requires more work. Mode detection is working, but have not yet figured out how to reset MUSB core and hardware from host-mode to peripheral and other way around.<br />
*** Mode detection/USB-PHY stuff probably needs to be moved to new USB-PHY driver as is done with other MUSB hardware drivers.<br />
* Transport Stream (WiP: woprr)<br />
* CAN (WiP: Peter Chen [https://groups.google.com/forum/#!searchin/linux-sunxi/CAN/linux-sunxi/Wrj1uYO1xVo/rq_HYUW7PaIJ] / restored code dump: [https://github.com/plaes/sunxi-can-driver])<br />
<br />
== Left to be done ==<br />
=== Achievable ===<br />
* DMAengine driver (sun4i/sun5i/sun7i)<br />
** DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND<br />
** Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that<br />
** The [[A20]] and earlier SoCs have two mode of operations: Normal and Dedicated. The dedicated mode looks a lot like how the [[A31]] DMA controller works, only it supports only mem2dev transfers<br />
* Audio<br/>A23 SDK has aSoC drivers for the first three:<br />
** Audio Codec<br />
** IIS/I<sup>2</sup>S (Audio transport)<br />
** SPDIF (Audio transport)<br />
** AC97 Interface<br />
** We first need to support cyclic DMA transfers<br />
* CSI (Camera Input)<br />
* PS/2 (Keyboard/Mouse)<br />
* Smart Card Reader<br />
* Keypad<br />
* One wire (A31, A23)<br />
<br />
=== Hard ===<br />
* Display (KMS)<br />
* G2D/Mixer<br />
* VPU (See [[CedarX/Reverse_Engineering]])<br />
** Video Engine<br />
** Audio Engine<br />
** Audio Video Sync<br />
<br />
=== Troublesome ===<br />
* Memory Stick (has anybody actually got this hardware connected and a memory stick?)<br />
* TV Decoder (Analog in, no driver, no datasheet)<br />
* PATA (Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (Only [[A10]], not much interesting, as all modern GPS recivers have MCU with UART output, no documentation)<br />
<br />
=== Needing major rework ===<br />
<br />
These drivers need major rework AND lack documentation other than existing source pile.<br />
<br />
* Display driver (libv, techn also might be interested)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>Rose28357https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=9469Linux mainlining effort2014-06-15T10:45:50Z<p>Rose28357: /* Status */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline Kernel howto]] contains the currently used repositories for the mainlining process.<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[A10S-OLinuXino]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Planned for 3.16 ==<br />
* All<br />
** AXP20x support<br />
*** APX20x power enable key driver<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** P2WI<br />
** DMAengine<br />
** SMBus Regmap<br />
** Special Pins Muxier<br />
<br />
* A10<br />
<!-- TODO: These commits are currently pointing to dtor's next tree. Update links to Linus' tree when real merge happens. --><br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Added board support: Mele M9, R7<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* A31/A23 DMAengine driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240184.html]<br />
** Currently in [[A23]] SDK there AW driver for DMAEngine , it should be adapted to device tree, cleaned for mainline<br />
** The [[A23]] shares the DMA controller with the [[A31]], only the number of channels differ (the [[A31]] has 16 channels, while the [[A23]] only has 8 of them)<br />
<br />
* [[AXP209]] driver (WiP: Carlo Caione (ccaione)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240728.html]<br />
<br />
* [[A31]] P2WI Controller (WiP: Boris Brezillon (bbrezillon))<br />
** A few items are needed first to introduce support for this<br />
** PRCM clocks and resets (APB0)<br />
** Special pins muxer (R_PIO) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/246181.html]<br />
** SMBUS regmap support [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/247876.html]<br />
<br />
* [[A23]] support (WiP: Chen-Yu Tsai (wens))<br />
** Re-using most blocks from earlier SoCs (A10/A20/A31)<br />
** Add A23 specific clocks and pinctrl drivers<br />
** USB supports HSIC, but no devices available<br />
** Watchdog same as A31, similar to A10, sun4i driver can be extended<br />
** RTC docs available<br />
** Implement PSCI for A23 in U-boot<br />
<br />
=== Major drivers ===<br />
* NAND Driver (WiP: Boris Brezillon (bbrezillon)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/239885.html]<br />
* A31 Audio Codec driver (WiP: Maxime Ripard (mripard))<br />
** A31 PLL2 and module 1 clocks<br />
** Cyclic DMA transfers<br />
** ASoC driver<br />
** Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)<br />
<br />
=== Minor drivers ===<br />
* <strike>IIO LRADC driver (WiP: Carlo Caione (n01))</strike> Input LRADC driver (WiP: Hans de Goede (hansg))<br />
* PWM Driver (WiP: Alexandre Belloni)<br />
* IR driver (WiP: Alexander Bersenev / Alexsey Shestacov (wingrime))<br />
* Security System (Crypto Engine) (WiP: Corentin Labbe (Montjoie))<br />
** Hardware Pseudo Random Number Generator<br />
** Checksumming (MD5, SHA1)<br />
** Crypto (AES, DES, 3DES)<br />
<br />
=== Timeouts ? (No code has ever been submitted to mainline, current status unknown) ===<br />
* USB OTG Driver (WiP CHen-Yu Tsai (wens))<br />
** It seems to actually be a Mentor Graphics Inventra USB Controller (musb), that already support for it in mainline kernel, so it only needs a thin layer to adapt it to sunxi. Moreover, it's already supporting the PIO mode, so we could avoid relying on DMA to merge it. (Thanks to Arnd Bergmann for noticing)<br />
** irc user jukivili works on getting this driver to work with sunxi-3.4<br />
** Status 2013-10-02:<br />
*** OTG requires more work. Mode detection is working, but have not yet figured out how to reset MUSB core and hardware from host-mode to peripheral and other way around.<br />
*** Mode detection/USB-PHY stuff probably needs to be moved to new USB-PHY driver as is done with other MUSB hardware drivers.<br />
* Transport Stream (WiP: woprr)<br />
* CAN (WiP: Peter Chen [https://groups.google.com/forum/#!searchin/linux-sunxi/CAN/linux-sunxi/Wrj1uYO1xVo/rq_HYUW7PaIJ] / restored code dump: [https://github.com/plaes/sunxi-can-driver])<br />
<br />
== Left to be done ==<br />
=== Achievable ===<br />
* DMAengine driver (sun4i/sun5i/sun7i)<br />
** DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND<br />
** Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that<br />
** The [[A20]] and earlier SoCs have two mode of operations: Normal and Dedicated. The dedicated mode looks a lot like how the [[A31]] DMA controller works, only it supports only mem2dev transfers<br />
* Audio<br/>A23 SDK has aSoC drivers for the first three:<br />
** Audio Codec<br />
** IIS/I<sup>2</sup>S (Audio transport)<br />
** SPDIF (Audio transport)<br />
** AC97 Interface<br />
** We first need to support cyclic DMA transfers<br />
* CSI (Camera Input)<br />
* PS/2 (Keyboard/Mouse)<br />
* Smart Card Reader<br />
* Keypad<br />
* One wire (A31, A23)<br />
<br />
=== Hard ===<br />
* Display (KMS)<br />
* G2D/Mixer<br />
* VPU (See [[CedarX/Reverse_Engineering]])<br />
** Video Engine<br />
** Audio Engine<br />
** Audio Video Sync<br />
<br />
=== Troublesome ===<br />
* Memory Stick (has anybody actually got this hardware connected and a memory stick?)<br />
* TV Decoder (Analog in, no driver, no datasheet)<br />
* PATA (Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (Only [[A10]], not much interesting, as all modern GPS recivers have MCU with UART output, no documentation)<br />
<br />
=== Needing major rework ===<br />
<br />
These drivers need major rework AND lack documentation other than existing source pile.<br />
<br />
* Display driver (libv, techn also might be interested)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>Rose28357https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=9468Linux mainlining effort2014-06-15T10:42:57Z<p>Rose28357: /* Status */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
It is very important to note that this is intended as a rough set of minimal goals - it is not meant to collide with the huge effort of rewriting major drivers!<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Free Electrons.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The Mainline Kernel howto contains the currently used repositories for the mainling prozess.<br />
<br />
== Merged into 3.8 ==<br />
* Initial support for Allwinner SoCs [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3b52634f0b7adaaf2b29569025287b938b7c71a6 (commit)]<br />
* Timer [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2ac5d7549710173ea0217bf8c7b3f71da5220d4 (commit)]<br />
* UART<br />
* Device Tree<br />
* Interrupt controller [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afd24e146826cec0f46929263a0c874406a19cd8 (commit)]<br />
<br />
Related merges: [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=5ffd785402c295328d3866d9f8630152f51d332a], [https://git.kernel.org/?p=linux/kernel/git/arm/arm-soc.git;a=commit;h=e9f6d13513ea9fd33b0184db8fc33cf51baa584b]<br />
<br />
Added board support: [[Cubieboard]], [[A13-OLinuXino]]<br />
<br />
== Merged into 3.9 ==<br />
* PINCTRL driver<br />
* GPIO-lib based driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl?id=8a3a11f91def34424b1995cb54ccd658efde8568]<br />
<br />
Added Board Support: [[Miniand_Hackberry]]<br />
<br />
== Merged into 3.10 ==<br />
* LED support<br />
* Clock driver<br />
* Complete UART support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=000a74f41e601bc4e36a760aa42f219a019c5391], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=362ed48dee509abe24cf84b7e137c7a29a8f4d2d], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d]<br />
<br />
Added Board Support: [[Pineriver_H24]]<br />
<br />
== Merged into 3.11 ==<br />
* IRQ support for the PIO<br />
* I2C Driver<br />
* EMAC Driver<br />
* A10s support<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ee1a8d402e7e204d57fb108aa40003b6d1633036], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2033f2c1d1de2239ded15e478ddb4028f192a15], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3dbde57ad941c55345fd7fac0ee3f70f204b02d8], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f486f18d16e2214728d101ed8b6a12dce75539], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=496322bc91e35007ed754184dcd447a02b6dd685]<br />
<br />
Added board support: [[A10S-OLinuXino]]<br />
<br />
== Merged into 3.12 ==<br />
* A31 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A20 support<br />
** Basic SoC + GPIO<br />
** Clock support<br />
* A10s clocks<br />
* Clock Source and Clock Event rework<br />
* Watchdog driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=aa7054f5a5a9ff728ce291cb103afa19f4f849eb], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4b50fd78b1e31989940dfc647e64453d0f7176a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dccfd1e439c11422d7aca0d834b0430d24650e85], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ac3c1c4f1c77190408162aee559c655090597072], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bef4a0ab984662d4ccd68d431a7c4ef3daebcb43], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24ba40588fe50adce2a99e026fc0026872ebeb85]<br />
<br />
Added board support: [[A31 EVB]], [[A20-olinuxino-micro|A20-OLinuXino-Micro]], [[Cubieboard2]], [[Mele A1000]]<br />
<br />
== Merged into 3.13 ==<br />
* SID Driver<br />
* I2C for A20<br />
* sunxi_defconfig<br />
* Bug fixes [http://www.spinics.net/lists/arm-kernel/msg290495.html]<br />
<br />
Added board support: [[Cubietruck]]<br />
<br />
== Merged into 3.14 ==<br />
* A31<br />
** Reset Controller Support<br />
** SMP<br />
* A20<br />
** SMP (via PSCI)<br />
** External clock outputs<br />
* High Speed Timers<br />
* RTC driver (A10/A20) [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=594c6fb92446a07a4d12337adeb3e9fb3ec7e203 (commit)]<br />
* RTP (DT only)<br />
* GMAC support in stmmac driver<br />
* AP6210 WiFi (BCM43362) support in brcmfmac driver<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfd10e7ae60c6c1b24b5d601744b4fd1ecab2f31], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b6d351a75dae25430383b29a3764ae7921f6c47], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ba3307a8ec35252f7b1e222e32889a6f3d9ceb3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4ba9920e5e9c0e16b5ed24292d45322907bb9035]<br />
<br />
Added board support: [[Olimex A13-OLinuXino-Micro]] [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52e86b37b1d3f7c02938def3a036e0bb0f723964 (commit)]<br />
<br />
== Merged into 3.15 ==<br />
* All SoCs<br />
** SPI<br />
* A10/A10s/A13/A20<br />
** OHCI<br />
** EHCI<br />
* A10/A20<br />
** AHCI<br />
* A20/A31<br />
** NMI controller<br />
* A20<br />
** GMAC<br />
* A31<br />
** I2C<br />
<br />
Related merges: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3e75c6de1ac33fe3500f44573d9212dc82c99f59], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=01d5f3b598b18a5035426c30801adf65822dbd0c], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff050ad12c551233e546506409c89eb2f640d9f3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930b440cd8256f3861bdb0a59d26efaadac7941a], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f83ccb93585d1f472c30fa2bbb8b56c23dbdb506], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19bc2eec3cbf9a282b592749a93ec9027d352bf2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c12ac9f98ec08d6eb69f84e3f72241d56a8b0822]<br />
<br />
Added board support: [[LinkSprite_pcDuino]], [[Inet 97f]], [[A10-OLinuXino-LIME]]<br />
<br />
== Planned for 3.16 ==<br />
* All<br />
** AXP20x support<br />
*** APX20x power enable key driver<br />
** MMC support<br />
<br />
* A31<br />
** USB support<br />
** PRCM<br />
** P2WI<br />
** DMAengine<br />
** SMBus Regmap<br />
** Special Pins Muxier<br />
<br />
* A10<br />
<!-- TODO: These commits are currently pointing to dtor's next tree. Update links to Linus' tree when real merge happens. --><br />
** Touchscreen controller [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=6decea7c5438e2955f64e2513ec9a2fac7602a7d]<br />
** Touchscreen controller temperature sensor [https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=next&id=f09f98d3240b7ed2dd84ef6d84ff86df9d61e0f5]<br />
<br />
Added board support: Mele M9, R7<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
* A31/A23 DMAengine driver (WiP: Maxime Ripard (mripard)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240184.html]<br />
** Currently in [[A23]] SDK there AW driver for DMAEngine , it should be adapted to device tree, cleaned for mainline<br />
** The [[A23]] shares the DMA controller with the [[A31]], only the number of channels differ (the [[A31]] has 16 channels, while the [[A23]] only has 8 of them)<br />
<br />
* [[AXP209]] driver (WiP: Carlo Caione (ccaione)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/240728.html]<br />
<br />
* [[A31]] P2WI Controller (WiP: Boris Brezillon (bbrezillon))<br />
** A few items are needed first to introduce support for this<br />
** PRCM clocks and resets (APB0)<br />
** Special pins muxer (R_PIO) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/246181.html]<br />
** SMBUS regmap support [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-April/247876.html]<br />
<br />
* [[A23]] support (WiP: Chen-Yu Tsai (wens))<br />
** Re-using most blocks from earlier SoCs (A10/A20/A31)<br />
** Add A23 specific clocks and pinctrl drivers<br />
** USB supports HSIC, but no devices available<br />
** Watchdog same as A31, similar to A10, sun4i driver can be extended<br />
** RTC docs available<br />
** Implement PSCI for A23 in U-boot<br />
<br />
=== Major drivers ===<br />
* NAND Driver (WiP: Boris Brezillon (bbrezillon)) [http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/239885.html]<br />
* A31 Audio Codec driver (WiP: Maxime Ripard (mripard))<br />
** A31 PLL2 and module 1 clocks<br />
** Cyclic DMA transfers<br />
** ASoC driver<br />
** Much more complex and signficantly different from the other audio codecs IPs found in the other Allwinner SoCs (A23 included)<br />
<br />
=== Minor drivers ===<br />
* <strike>IIO LRADC driver (WiP: Carlo Caione (n01))</strike> Input LRADC driver (WiP: Hans de Goede (hansg))<br />
* PWM Driver (WiP: Alexandre Belloni)<br />
* IR driver (WiP: Alexander Bersenev / Alexsey Shestacov (wingrime))<br />
* Security System (Crypto Engine) (WiP: Corentin Labbe (Montjoie))<br />
** Hardware Pseudo Random Number Generator<br />
** Checksumming (MD5, SHA1)<br />
** Crypto (AES, DES, 3DES)<br />
<br />
=== Timeouts ? (No code has ever been submitted to mainline, current status unknown) ===<br />
* USB OTG Driver (WiP CHen-Yu Tsai (wens))<br />
** It seems to actually be a Mentor Graphics Inventra USB Controller (musb), that already support for it in mainline kernel, so it only needs a thin layer to adapt it to sunxi. Moreover, it's already supporting the PIO mode, so we could avoid relying on DMA to merge it. (Thanks to Arnd Bergmann for noticing)<br />
** irc user jukivili works on getting this driver to work with sunxi-3.4<br />
** Status 2013-10-02:<br />
*** OTG requires more work. Mode detection is working, but have not yet figured out how to reset MUSB core and hardware from host-mode to peripheral and other way around.<br />
*** Mode detection/USB-PHY stuff probably needs to be moved to new USB-PHY driver as is done with other MUSB hardware drivers.<br />
* Transport Stream (WiP: woprr)<br />
* CAN (WiP: Peter Chen [https://groups.google.com/forum/#!searchin/linux-sunxi/CAN/linux-sunxi/Wrj1uYO1xVo/rq_HYUW7PaIJ] / restored code dump: [https://github.com/plaes/sunxi-can-driver])<br />
<br />
== Left to be done ==<br />
=== Achievable ===<br />
* DMAengine driver (sun4i/sun5i/sun7i)<br />
** DMAengine driver handles slave dma clients including SPI, EMAC, USB, I2S, HDMI audio, and NAND<br />
** Implementing slave SG transfers is the priority (for SPI to start), with cyclic transfers (for audio clients) following that<br />
** The [[A20]] and earlier SoCs have two mode of operations: Normal and Dedicated. The dedicated mode looks a lot like how the [[A31]] DMA controller works, only it supports only mem2dev transfers<br />
* Audio<br/>A23 SDK has aSoC drivers for the first three:<br />
** Audio Codec<br />
** IIS/I<sup>2</sup>S (Audio transport)<br />
** SPDIF (Audio transport)<br />
** AC97 Interface<br />
** We first need to support cyclic DMA transfers<br />
* CSI (Camera Input)<br />
* PS/2 (Keyboard/Mouse)<br />
* Smart Card Reader<br />
* Keypad<br />
* One wire (A31, A23)<br />
<br />
=== Hard ===<br />
* Display (KMS)<br />
* G2D/Mixer<br />
* VPU (See [[CedarX/Reverse_Engineering]])<br />
** Video Engine<br />
** Audio Engine<br />
** Audio Video Sync<br />
<br />
=== Troublesome ===<br />
* Memory Stick (has anybody actually got this hardware connected and a memory stick?)<br />
* TV Decoder (Analog in, no driver, no datasheet)<br />
* PATA (Old tech, while still interesting for Compact Flash, possibly removed from A20, though A20 memory map still mentions it)<br />
* GPS backend IP (Only [[A10]], not much interesting, as all modern GPS recivers have MCU with UART output, no documentation)<br />
<br />
=== Needing major rework ===<br />
<br />
These drivers need major rework AND lack documentation other than existing source pile.<br />
<br />
* Display driver (libv, techn also might be interested)<br />
<br />
=== Unlikely ===<br />
<br />
These are too far off the track third party drivers making it unlikely they will ever get accepted mainline.<br />
<br />
* Mali driver (will not happen unless libv gets a proper lima driver out)<br />
<br />
=== Related but separate ===<br />
* Device-specific drivers<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [http://lxr.free-electrons.com/source/?a=arm Free Electrons LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Development]]</div>Rose28357https://linux-sunxi.org/index.php?title=Mainline_Kernel_Howto&diff=9467Mainline Kernel Howto2014-06-15T10:38:09Z<p>Rose28357: /* Supported boards */</p>
<hr />
<div>This page describes how you can compile and use the Linux mainline kernel. For work done and a TODO list, read [[Linux mainlining effort]].<br />
<br />
== Warning ==<br />
<br />
Please note that this page might be outdated. Please refer to the [[Linux mainlining effort]] page for detailed status of mainlining effort and supported drivers. The upstream code does not support various drivers and lacks sound, display, 3D, 2D and media support.<br />
<br />
If you simply want a more-or-less usable device for multimedia support, then use [[Linux_Kernel|our own 3.4 branch]].<br />
<br />
== Prerequisites ==<br />
<br />
* An initramfs image (for example generated using buildroot)<br />
* An ARM [[Toolchain|toolchain]]<br />
* U-boot supporting device tree (if unsure, use a fresh build from the sunxi branch of u-boot-sunxi)<br />
<br />
== Supported boards ==<br />
<br />
As of 3.12, the boards and SoC supported are:<br />
* A10<br />
:* Cubieboard<br />
:* Melee A1000<br />
:* Mini X-plus<br />
:* Hackberry<br />
:* LinkSprite pcDuino<br />
:* Inet 97f<br />
:* A10-olinuxino-Lime<br />
* A10s<br />
:* A10s-olinuxino<br />
* A13<br />
:* A13-olinuxino<br />
:* A13-olinuxino-Micro<br />
* A20<br />
:* A20-olinuxino<br />
:* Cubieboard2<br />
:* Cubietruck<br />
* A31<br />
:* A31 EVK<br />
<br />
For boards using these SoCs, adding a new device tree should be trivial.<br />
<br />
== Downloading the kernel source code ==<br />
=== Stable releases ===<br />
<br />
The stable releases are released by Linus Torvalds. Since Linux 3.8, the Allwinner support is added gradually. It is still quite sparse, but we are making good progress. This is probably what you should choose if you are looking for stability.<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git<br />
<br />
=== Patches merged in the next stable release ===<br />
<br />
There is also a sunxi-next branch maintained with all the inclusions that have been accepted, merged and will included in the next stable release. If you want to do some development, it's probably the best pick.<br />
<br />
git clone [http://github.com/mripard/linux/tree/sunxi-next git://github.com/mripard/linux.git] -b sunxi-next<br />
<br />
=== Patches not yet merged in the next release ===<br />
<br />
You can find a sunxi-devel branch on linux-sunxi. This branch contains functional patches that are currently being reviewed on the kernel lists. If you want to do bleeding-edge mainline testing, this should probably be your pick. Please do not use this branch for development, as it is frequently rebased and the code is likely to change.<br />
<br />
git clone [http://github.com/linux-sunxi/linux-sunxi/tree/sunxi-devel git://github.com/linux-sunxi/linux-sunxi.git] -b sunxi-devel<br />
<br />
== Configuration ==<br />
<br />
ARCH=arm make sunxi_defconfig<br />
ARCH=arm make menuconfig<br />
<br />
Once there, fill the option '''General Setup / Initramfs source file(s)''' with a path to your initramfs image.<br />
<br />
== Compilation ==<br />
<br />
ARCH=arm CROSS_COMPILE=<toolchain-prefix> LOADADDR=0x40008000 make uImage dtbs<br />
<br />
After the compilation ended, you should have generated both the uImage in arch/arm/boot, and a device tree blob in arch/arm/boot/dts.<br />
<br />
This device tree blob (or simply dtb) gives to the kernel the description of the hardware it's currently running on. In its goal, it's pretty similar to the FEX scripts that Allwinner uses, yet far more generic. It allows to compile a single kernel image that will run on several platforms.<br />
<br />
Identify the dtb file for you board in arch/arm/boot/dts. You will need it in the next step.<br />
<br />
== Kernel Loading ==<br />
<br />
Now copy the relevant dtb and uImage somewhere that you can load it from on your board, like a tftp server, a SD Card, etc.<br />
<br />
Once you get to the U-boot prompt, stop the autoboot, and load the kernel image and device tree into memory making sure the will not overlap.<br />
<br />
Depending on where you store it, you will have something like<br />
fatload mmc 0 0x46000000 uImage<br />
fatload mmc 0 0x49000000 <board>.dtb<br />
<br />
'''Warning''': Before giving control to the kernel the U-Boot will move the loaded binaries to some different addresses and ignore the fact, the kernel needs much more space for extracting itselt. This causes a dtb to be overwritten and failure to boot. This of course should be fixed in U-Boot but a workaround for now is to set fdt_high:<br />
env set fdt_high ffffffff<br />
Once it's loaded into memory, you only need to tell U-Boot to boot the kernel using<br />
bootm 0x<kernel-address> 0x<initramfs-address> 0x<dtb-address><br />
if initramfs is built into the uImage, you just use "-" as a placeholder for its address. Taking all this into account your bootm might look like<br />
bootm 0x46000000 - 0x49000000<br />
<br />
You might also need to modify kernel boot arguments to enable serial console:<br />
<br />
setenv bootargs console=ttyS0,115200<br />
<br />
The kernel should start booting up to a shell.<br />
<br />
Have fun.<br />
<br />
=See also=<br />
* [[Linux mainlining effort]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Free Electrons]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Software]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=9463Allwinner SoC Family2014-06-15T09:57:42Z<p>Rose28357: /* Comparison table for "A"-Series Allwinner SoC's */</p>
<hr />
<div>=== "A"-Series ===<br />
Based on ARMv7 Cortex-A cores (Cortex-A7,A8, and A15) targeted for hi-end devices like digital media player, tablets, and netbooks:<br />
* [[A10|Allwinner A10]] <small>(sun4i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A13|Allwinner A13]] <small>(sun5i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A10s|Allwinner A10s]]<small>(sun5i)</small>(1 x Cortex-A8 CPU-core)<br />
* [[A20|Allwinner A20]] <small>(sun7i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A23|Allwinner A23]] <small>(sun8i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A31|Allwinner A31]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A31s|Allwinner A31s]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A33|Allwinner A33]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A80|Allwinner A80]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores using ARM big.LITTLE heterogeneous CPU architecture)<br />
<br />
=== "A"- Series 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 which have [[NEON]], [[Vector Floating Point Unit|VFP]], [[TrustZone]], and [[Thumb-2]] co-processor extensions: <br />
** Advanced SIMD: [[NEON]] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** Vector FPU: [[Vector Floating Point Unit]] - ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7) VFPU (Vector Floating Point Unit)<br />
** Security Extensions: <br />
*** TrustZone secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [[Thumb2]] intruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400P2 or SGX544, PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES and [[Framebuffer]] <br />
* VPU: [[CedarX]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [[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 for "A"-Series Allwinner SoC's ===<br />
{| class="wikitable"<br />
|-<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun?i (A31S)|| sun?i (A33) || sun?i (A80)<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 />
| 1GHz|| 1GHz || 1GHz|| 912MHz|| 1.5Ghz || ?GHz || ?Ghz || ?.?Ghz || 2(??) Ghz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2x4<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 (max 2GB @ DDR800) || DDR2, DDR3 (max 2GB @ DDR800) || DDR2, DDR3 (max 512MB @ DDR800) || LPDDR3/DDR3/LPDDR2 || DDR3 (max 1GB) || 2-channel DDR3/LPDDR2, 2-channel DDR3L || ? (A31S)|| ? (A33) || 2-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] MP2 @ 350Mhz per shader engine ||Mali400 MP2 || SGX544 @ 200Mhz per shader engine || SGX544 @ 200Mhz per shader engine || 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 || Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
|-<br />
! scope="row" | [[CedarX|Video decoder]]<br />
| 2160P || 1080P || 1080P || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || ? (A31S) || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[CedarX|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@30fps,JPEG || ? (A31S) || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|Audio decoder]]<br />
| AC3,DTS || ?|| ? || AC3,DTS|| ? (A23) || ? (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 || ? (A23) || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || ? (A32S) || ? (A33) || 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 || ? (A23) || I2S, PCM || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || ? (A23) || 1 || ? (A31S) || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || ? (A23) || 2 || ? (A31S) || ? (A33) ||2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || ? (A23) || EMAC/GMAC || ? (A31S) || ? (A33) ||EMAC/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] || ? (A23) || 4x SD Card, eMMC NAND, 2-channel raw NAND || ? (A31S) || ? (A33) || 4x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441 19mm × 19mm, 0.80mm Pitch || BGA336 14mm × 14mm, 0.65mm Pitch || eLQFP176 20mm × 20mm ||BGA441 19mm × 19mm, 0.80mm Pitch || FBGA280 14x14x1.4, 0.80mm pitch || BGA609 18mm × 18mm, 0.65mm Pitch || ? (A31S) || ? (Allwinner: pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Litography<br />
| 55nm || 55nm|| 55nm || 40nm || 40nm || 40nm || 40nm ||40nm || 28nm HPM<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
=== "F"-Series ===<br />
'''NOTE: F series not supported by linux-sunxi community due lack of developers and hardware, sun3i have only offical linux port, sunii have no linux support only aw's melis RTOS'''<br />
<br />
<br />
Based on ARMv6 ARM926-EJS core and currenty targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
* [[C100|Boxchip C100]] <small>(sun3i)</small><br />
* [[E200|Boxchip E200]] <small>(sun3i)</small><br />
* [[F20|Boxchip F20]] <small>(sun3i)</small><br />
* [[F10|Boxchip F10]] aka SoChip SC9800 aka Teclast T8100<small>(sunii)</small><br />
* [[F13|Boxchip F13]] <small>(sunii)</small><br />
* [[F13|Boxchip F15]] aka SoChip SC8600 aka Teclast T7200<small>(sunii)</small><br />
* [[F18|Boxchip F18]] <small>(sunii)</small><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:System_on_Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=9462Allwinner SoC Family2014-06-15T09:56:22Z<p>Rose28357: /* Comparison table for "A"-Series Allwinner SoC's */</p>
<hr />
<div>=== "A"-Series ===<br />
Based on ARMv7 Cortex-A cores (Cortex-A7,A8, and A15) targeted for hi-end devices like digital media player, tablets, and netbooks:<br />
* [[A10|Allwinner A10]] <small>(sun4i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A13|Allwinner A13]] <small>(sun5i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A10s|Allwinner A10s]]<small>(sun5i)</small>(1 x Cortex-A8 CPU-core)<br />
* [[A20|Allwinner A20]] <small>(sun7i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A23|Allwinner A23]] <small>(sun8i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A31|Allwinner A31]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A31s|Allwinner A31s]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A33|Allwinner A33]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A80|Allwinner A80]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores using ARM big.LITTLE heterogeneous CPU architecture)<br />
<br />
=== "A"- Series 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 which have [[NEON]], [[Vector Floating Point Unit|VFP]], [[TrustZone]], and [[Thumb-2]] co-processor extensions: <br />
** Advanced SIMD: [[NEON]] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** Vector FPU: [[Vector Floating Point Unit]] - ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7) VFPU (Vector Floating Point Unit)<br />
** Security Extensions: <br />
*** TrustZone secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [[Thumb2]] intruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400P2 or SGX544, PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES and [[Framebuffer]] <br />
* VPU: [[CedarX]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [[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 for "A"-Series Allwinner SoC's ===<br />
{| class="wikitable"<br />
|-<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun?i (A31S)|| sun?i (A33) || sun?i (A80)<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 />
| 1GHz|| 1GHz || 1GHz|| 912MHz|| 1.5Ghz || ?GHz || ?Ghz || ?.?Ghz || 2(??) Ghz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2x4<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 (max 2GB @ DDR800) || DDR2, DDR3 (max 2GB @ DDR800) || DDR2, DDR3 (max 512MB @ DDR800) || LPDDR3/DDR3/LPDDR2 || DDR3 (max 1GB) || 2-channel DDR3/LPDDR2, 2-channel DDR3L || ? (A31S)|| ? (A33) || 2-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] MP2 @ 350Mhz per shader engine ||Mali400 MP2 || SGX544 @ 200Mhz per shader engine || SGX544 @ 200Mhz per shader engine || 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 || Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
|-<br />
! scope="row" | [[CedarX|Video decoder]]<br />
| 2160P || 1080P || 1080P || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || ? (A31S) || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[CedarX|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@30fps,JPEG || ? (A31S) || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|Audio decoder]]<br />
| AC3,DTS || ?|| ? || AC3,DTS|| ? (A23) || ? (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 || ? (A23) || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || ? (A32S) || ? (A33) || 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 || ? (A23) || I2S, PCM || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || ? (A23) || 1 || ? (A31S) || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || ? (A23) || 2 || ? (A31S) || ? (A33) ||2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || ? (A23) || EMAC/GMAC || ? (A31S) || ? (A33) ||EMAC/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] || ? (A23) || 4x SD Card, eMMC NAND, 2-channel raw NAND || ? (A31S) || ? (A33) || 4x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441 19mm × 19mm, 0.80mm Pitch || BGA336 14mm × 14mm, 0.65mm Pitch || eLQFP176 20mm × 20mm ||BGA441 19mm × 19mm, 0.80mm Pitch || FBGA280 14x14x1.4, 0.80mm pitch || BGA609 18mm × 18mm, 0.65mm Pitch || ? (A31S) || ? (pin compatible with A23) || ? (A80)<br />
|-<br />
! scope="row" | Litography<br />
| 55nm || 55nm|| 55nm || 40nm || 40nm || 40nm || 40nm ||40nm || 28nm HPM<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
=== "F"-Series ===<br />
'''NOTE: F series not supported by linux-sunxi community due lack of developers and hardware, sun3i have only offical linux port, sunii have no linux support only aw's melis RTOS'''<br />
<br />
<br />
Based on ARMv6 ARM926-EJS core and currenty targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
* [[C100|Boxchip C100]] <small>(sun3i)</small><br />
* [[E200|Boxchip E200]] <small>(sun3i)</small><br />
* [[F20|Boxchip F20]] <small>(sun3i)</small><br />
* [[F10|Boxchip F10]] aka SoChip SC9800 aka Teclast T8100<small>(sunii)</small><br />
* [[F13|Boxchip F13]] <small>(sunii)</small><br />
* [[F13|Boxchip F15]] aka SoChip SC8600 aka Teclast T7200<small>(sunii)</small><br />
* [[F18|Boxchip F18]] <small>(sunii)</small><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:System_on_Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=9461Allwinner SoC Family2014-06-15T09:53:29Z<p>Rose28357: /* "A"- Series features: */</p>
<hr />
<div>=== "A"-Series ===<br />
Based on ARMv7 Cortex-A cores (Cortex-A7,A8, and A15) targeted for hi-end devices like digital media player, tablets, and netbooks:<br />
* [[A10|Allwinner A10]] <small>(sun4i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A13|Allwinner A13]] <small>(sun5i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A10s|Allwinner A10s]]<small>(sun5i)</small>(1 x Cortex-A8 CPU-core)<br />
* [[A20|Allwinner A20]] <small>(sun7i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A23|Allwinner A23]] <small>(sun8i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A31|Allwinner A31]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A31s|Allwinner A31s]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A33|Allwinner A33]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A80|Allwinner A80]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores using ARM big.LITTLE heterogeneous CPU architecture)<br />
<br />
=== "A"- Series 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 which have [[NEON]], [[Vector Floating Point Unit|VFP]], [[TrustZone]], and [[Thumb-2]] co-processor extensions: <br />
** Advanced SIMD: [[NEON]] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** Vector FPU: [[Vector Floating Point Unit]] - ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7) VFPU (Vector Floating Point Unit)<br />
** Security Extensions: <br />
*** TrustZone secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [[Thumb2]] intruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400P2 or SGX544, PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES and [[Framebuffer]] <br />
* VPU: [[CedarX]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [[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 for "A"-Series Allwinner SoC's ===<br />
{| class="wikitable"<br />
|-<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun?i (A31S)|| sun?i (A33) || sun?i (A80)<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 />
| 1GHz|| 1GHz || 1GHz|| 912MHz|| 1.5Ghz || ?GHz || ?Ghz || ?.?Ghz || 2(??) Ghz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2x4<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 (max 2GB @ DDR800) || DDR2, DDR3 (max 2GB @ DDR800) || DDR2, DDR3 (max 512MB @ DDR800) || LPDDR3/DDR3/LPDDR2 || DDR3 (max 1GB) || 2-channel DDR3/LPDDR2, 2-channel DDR3L || ? (A31S)|| ? (A33) || 2-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] MP2 @ 350Mhz per shader engine ||Mali400 MP2 || SGX544 @ 200Mhz per shader engine || SGX544 @ 200Mhz per shader engine || 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 || Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
|-<br />
! scope="row" | [[CedarX|Video decoder]]<br />
| 2160P || 1080P || 1080P || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || ? (A31S) || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[CedarX|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@30fps,JPEG || ? (A31S) || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|Audio decoder]]<br />
| AC3,DTS || ?|| ? || AC3,DTS|| ? (A23) || ? (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 || ? (A23) || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || ? (A32S) || ? (A33) || 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 || ? (A23) || I2S, PCM || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || ? (A23) || 1 || ? (A31S) || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || ? (A23) || 2 || ? (A31S) || ? (A33) ||2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || ? (A23) || EMAC/GMAC || ? (A31S) || ? (A33) ||EMAC/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] || ? (A23) || 4x SD Card, eMMC NAND, 2-channel raw NAND || ? (A31S) || ? (A33) || 4x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441 19mm × 19mm, 0.80mm Pitch || BGA336 14mm × 14mm, 0.65mm Pitch || eLQFP176 20mm × 20mm ||BGA441 19mm × 19mm, 0.80mm Pitch || FBGA280 14x14x1.4, 0.80mm pitch || BGA609 18mm × 18mm, 0.65mm Pitch || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Litography<br />
| 55nm || 55nm|| 55nm || 40nm || 40nm || 40nm || 40nm ||40nm || 28nm HPM<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
=== "F"-Series ===<br />
'''NOTE: F series not supported by linux-sunxi community due lack of developers and hardware, sun3i have only offical linux port, sunii have no linux support only aw's melis RTOS'''<br />
<br />
<br />
Based on ARMv6 ARM926-EJS core and currenty targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
* [[C100|Boxchip C100]] <small>(sun3i)</small><br />
* [[E200|Boxchip E200]] <small>(sun3i)</small><br />
* [[F20|Boxchip F20]] <small>(sun3i)</small><br />
* [[F10|Boxchip F10]] aka SoChip SC9800 aka Teclast T8100<small>(sunii)</small><br />
* [[F13|Boxchip F13]] <small>(sunii)</small><br />
* [[F13|Boxchip F15]] aka SoChip SC8600 aka Teclast T7200<small>(sunii)</small><br />
* [[F18|Boxchip F18]] <small>(sunii)</small><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:System_on_Chip]]</div>Rose28357https://linux-sunxi.org/index.php?title=Allwinner_SoC_Family&diff=9460Allwinner SoC Family2014-06-15T09:52:08Z<p>Rose28357: /* "A"- Series features: */</p>
<hr />
<div>=== "A"-Series ===<br />
Based on ARMv7 Cortex-A cores (Cortex-A7,A8, and A15) targeted for hi-end devices like digital media player, tablets, and netbooks:<br />
* [[A10|Allwinner A10]] <small>(sun4i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A13|Allwinner A13]] <small>(sun5i)</small> (1 x Cortex-A8 CPU-core)<br />
* [[A10s|Allwinner A10s]]<small>(sun5i)</small>(1 x Cortex-A8 CPU-core)<br />
* [[A20|Allwinner A20]] <small>(sun7i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A23|Allwinner A23]] <small>(sun8i)</small> (2 x Cortex-A7 CPU-cores)<br />
* [[A31|Allwinner A31]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A31s|Allwinner A31s]] <small>(sun6i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A33|Allwinner A33]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores)<br />
* [[A80|Allwinner A80]] <small>(sun?i)</small> (4 x Cortex-A7 CPU-cores + 4 x Cortex-A15 CPU-cores using ARM big.LITTLE heterogeneous CPU architecture)<br />
<br />
=== "A"- Series features: ===<br />
* CPU: ARMv7-A [http://en.wikipedia.org/wiki/ARM_Cortex-A7 Cortex-A7], Cortex-A15 or [http://en.wikipedia.org/wiki/ARM_Cortex-A8 Cortex-A8] Central Processor Unit which have [[NEON]], [[Vector Floating Point Unit|VFP]], [[TrustZone]], and [[Thumb-2]] co-processor extensions: <br />
** Advanced SIMD: [[NEON]] (ARM's extended general-purpose advanced SIMD vector processing extension engine)<br />
** Vector FPU: [[Vector Floating Point Unit]] - ARM VFPv3 lite (Cortex-A8) / VFPv4 (Cortex-A7) VFPU (Vector Floating Point Unit)<br />
** Security Extensions: <br />
*** TrustZone secure world<br />
*** [[Security_System|Security accelerator]] supporting AES, DES, 3DES, SHA-1, MD5 and pseudo-random number generation<br />
** [[Thumb2]] intruction set extension for optimized code to reduce memory footprint and improve performance<br />
* GPU: [[Mali400]], Mali400P2 or SGX544, PowerVR G6230 Graphics Procesor Unit, supporting OpenGL ES and [[Framebuffer]] <br />
* VPU: [[CedarX]] (Video Processor Unit for audio and video hardware decoding or encoding)<br />
* HDMI-transmitter with [[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 for "A"-Series Allwinner SoC's ===<br />
{| class="wikitable"<br />
|-<br />
! scope="row" | !! [[A10]] !! [[A10s]] !! [[A13]] !! [[A20]] !! [[A23]] !! [[A31]] !! [[A31s]] !! [[A33]] !! [[A80]]<br />
|-<br />
! scope="row" | Generation <br />
| sun4i || sun5i || sun5i || sun7i || sun8i || sun6i || sun?i (A31S)|| sun?i (A33) || sun?i (A80)<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 />
| 1GHz|| 1GHz || 1GHz|| 912MHz|| 1.5Ghz || ?GHz || ?Ghz || ?.?Ghz || 2(??) Ghz<br />
|-<br />
! scope="row" | Cores<br />
| 1 || 1 || 1 || 2 || 2 || 4 || 4 || 4 || 2x4<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 (max 2GB @ DDR800) || DDR2, DDR3 (max 2GB @ DDR800) || DDR2, DDR3 (max 512MB @ DDR800) || LPDDR3/DDR3/LPDDR2 || DDR3 (max 1GB) || 2-channel DDR3/LPDDR2, 2-channel DDR3L || ? (A31S)|| ? (A33) || 2-channel DDR3/DDR3L/LPDDR3/LPDDR2, up to 8GB<br />
|-<br />
! scope="row" | GPU<br />
| [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] @ 320Mhz || [[Mali400]] MP2 @ 350Mhz per shader engine ||Mali400 MP2 || SGX544 @ 200Mhz per shader engine || SGX544 @ 200Mhz per shader engine || 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 || Open GL ES3.x, Open CL1.x, DirectX 11 level 9_3/10_0<br />
|-<br />
! scope="row" | [[CedarX|Video decoder]]<br />
| 2160P || 1080P || 1080P || 2160p, 4K×2K, 1080p 3D || 1080p@60fps || 2160p, 4K×2K, 1080p 3D || ? (A31S) || 1080p@60fps || ? (A80)<br />
|-<br />
! scope="row" | [[CedarX|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@30fps,JPEG || ? (A31S) || ? (A33) || H.264 HP/VP8 4Kx2K@30fp<br />
|-<br />
! scope="row" | [[CedarX|Audio decoder]]<br />
| AC3,DTS || ?|| ? || AC3,DTS|| ? (A23) || ? (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 || ? (A23) || HDMI 1.4, MIPI DSI, 2-channel LVDS, 2-channel RGB LCD || ? (A32S) || ? (A33) || 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 || ? (A23) || I2S, PCM || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | USB OTG<br />
| 1 || 1 || 1 || 1 || ? (A23) || 1 || ? (A31S) || ? (A33) || 1<br />
|-<br />
! scope="row" | USB Host<br />
| 2 || 1 || 1 || 2 || ? (A23) || 2 || ? (A31S) || ? (A33) ||2x USB Host, USB 3.0/2.0 Dual-Role (host/device)<br />
|-<br />
! scope="row" | Ethernet<br />
| EMAC || EMAC || - || EMAC/GMAC || ? (A23) || EMAC/GMAC || ? (A31S) || ? (A33) ||EMAC/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] || ? (A23) || 4x SD Card, eMMC NAND, 2-channel raw NAND || ? (A31S) || ? (A33) || 4x SD/MMC<br />
|-<br />
! scope="row" | Package<br />
| BGA441 19mm × 19mm, 0.80mm Pitch || BGA336 14mm × 14mm, 0.65mm Pitch || eLQFP176 20mm × 20mm ||BGA441 19mm × 19mm, 0.80mm Pitch || FBGA280 14x14x1.4, 0.80mm pitch || BGA609 18mm × 18mm, 0.65mm Pitch || ? (A31S) || ? (A33) || ? (A80)<br />
|-<br />
! scope="row" | Litography<br />
| 55nm || 55nm|| 55nm || 40nm || 40nm || 40nm || 40nm ||40nm || 28nm HPM<br />
|}<br />
<ref>http://blog.thinkteletronics.com/all-mobile-socsolutions/ All Mobile Soc/Solutions.</ref><br />
<br />
=== "F"-Series ===<br />
'''NOTE: F series not supported by linux-sunxi community due lack of developers and hardware, sun3i have only offical linux port, sunii have no linux support only aw's melis RTOS'''<br />
<br />
<br />
Based on ARMv6 ARM926-EJS core and currenty targeted for low market devices such as cheap ebook readers, etc.<br />
<br />
* [[C100|Boxchip C100]] <small>(sun3i)</small><br />
* [[E200|Boxchip E200]] <small>(sun3i)</small><br />
* [[F20|Boxchip F20]] <small>(sun3i)</small><br />
* [[F10|Boxchip F10]] aka SoChip SC9800 aka Teclast T8100<small>(sunii)</small><br />
* [[F13|Boxchip F13]] <small>(sunii)</small><br />
* [[F13|Boxchip F15]] aka SoChip SC8600 aka Teclast T7200<small>(sunii)</small><br />
* [[F18|Boxchip F18]] <small>(sunii)</small><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:System_on_Chip]]</div>Rose28357