https://linux-sunxi.org/api.php?action=feedcontributions&user=Megous&feedformat=atom
linux-sunxi.org - User contributions [en]
2024-03-28T19:50:45Z
User contributions
MediaWiki 1.35.8
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=23531
PocketBook Touch Lux 3
2020-09-10T17:53:59Z
<p>Megous: /* Mainline kernel */ Update status</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
PocketBook manufactured on 20/08/2018 has this silkscreened on the PCB<br />
<pre>XRZ_E028 PB626-V2.1<br />
20170406</pre><br />
Most notable change is usage of 8GB eMMC storage on the new board and Elan touch screen.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
<br />
=== TODO ===<br />
<br />
* The display driver is now mature enough to allow for easy experimentation with the display.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
** Waveforms can be read using https://github.com/fread-ink/inkwave, precise meaning of data stored therein is still unclear, though<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
* Reduce data copying by using memory mapped buffers. (this can save ~ 800us)<br />
* Allow to interleave submission of a next buffer and processing of the current one (submission takes ~8ms with all the scheduling, copying and conversion of FB data to display control stream). This would allow for going from 50Hz update rate to ~100Hz<br />
* Write a tool to manage transitions between different display states using NEON intrinsics.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
The board support is mostly upstreamed, except for touchscreen patches and the display support. Non-upstreamed changes are in this branch:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.9<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* You can buy any variant of ED060XD4 display for Touch Lux 3, replacement requires some care not to break anything. The display is glued to the plastic frame with an double-sided adhesive tape. It's possible to separate the display from the frame by sticking some flat sharp plastic tool between the display and the frame from the front side. I used an old credit card. The trick is to try to swipe the card along all edges of the display, while laying it mostly flat on the display. You can replace the display without glueing the new one in.<br />
* There are three variants of the display available: just the eInk display (matte or gloss) (~$13-15), eInk+backlight (~$25), eInk+backlight+touch digitizer (~$50-65). Some manufacturers claim on Aliexpress that they provide the panels for PocketBook and that their displays are matte and have even backlight. I can confirm that. I also confirmed that using the cheapest $13 replacement display without backlight also works. (original firmware has trouble booting when touch panel digitizer is not detected, so using a cheap display is adviseable if you don't want to use the original firmware)<br />
* After installing the new display, touchscreen may be acting weirdly. That may not mean it's broken, it may just need calibration. Calibration is performed by writing a bunch of values to bunch of registers. Nothing special. There's a confusingly named S06-xc4_calibrate.sh script in the original firmware's boot partition that can be used to do calibration with the original kernel. I plan to add support for calibration to the mainline driver.<br />
* I doubt it's possible to replace backlight cable without breaking the connector. The connector is extremely fragile. I used thermal glue pistol to fix the new cable in place but it's still easy to cause shorts and shutdown the regulator, just by pressing device buttons or by pressing on the back cover. Thankfully the PMIC is resilient and will only shut down the backlight regulator if it detects the short-circuit. Regulator can be restarted by disabling/enabling the backlight in sysfs.<br />
<br />
== FEL mode ==<br />
<br />
The '''Menu''' button on the right side triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:PBTL3-board-v2.jpg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:A13 Ereaders]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=23179
Linux mainlining effort
2020-03-05T01:40:19Z
<p>Megous: /* Planned for 5.7 */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]|[[V3s]]<br>[[S3]]|[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.7<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.7<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PMU]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: grey; color: white;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.7<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3]]|[[V3s]]<br>[[S3]]|[[S3L]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1178796/ Allwinner sunxi message box support patch-v6]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[H6]] IOMMU WIP Maxime Ripard [https://patchwork.kernel.org/cover/11345669/ iommu: Add Allwinner H6 IOMMU driver] <br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.kernel.org/cover/11314031/ drm/sun4i: Allwinner R40 MIPI-DSI support v3] <br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://megous.com/git/linux/commit/?h=orange-pi-5.5&id=170d38d650f67657600d4e0e868e0e7110b89ee1 digital part] [https://megous.com/git/linux/commit/?h=orange-pi-5.5&id=ee424255a6fb9280ac27c1953019b768ca973ca7 analog part]<br />
<br />
* [[F1C100s]] USB WIP George Hilliard [https://lore.kernel.org/lkml/20200227181452.31558-1-thirtythreeforty@gmail.com/: Support the Allwinner F1C100s USB stack]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] hwspinlock WIP Nikolay Borisov [https://patchwork.kernel.org/cover/11373645/ Add support for hwspinlock on A64 SoC] <br />
* [[A83T]] / [[A64]] / [[H3]] hwspinlock WIP Corentin Labbe (montjoie) [https://lore.kernel.org/patchwork/patch/706512/ RFC,1/3][https://lore.kernel.org/patchwork/patch/706511/ RFC,2/3][https://lore.kernel.org/patchwork/patch/706513/ RFC,3/3]<br />
* [[A83T]] / [[A64]] DE2 rotate driver Jernej Škrabec [https://github.com/jernejsk/linux-1/commits/de-rot WIP branch]<br />
* [[A10]] / [[A20]] / [[A31]] HDMI Audio WIP Stefan Mavrodiev [https://lore.kernel.org/patchwork/cover/1177803/ Add support for sun4i HDMI audio]<br />
* [[H6]] Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[A10]] & [[R40]] CSI Camera WIP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1167304/ media: sun4i-csi: A10/A20 CSI1 and R40 CSI0 support ]<br />
* [[A80]] Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
=== Drivers that can still be improved/added ===<br />
<br />
Nobody works on these features. If you're interested, you can pick one of these add your name to them and move them to one of the sections above, to indicate you're working on the driver/feature.<br />
<br />
* sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)<br />
* DE2 driver has buggy layer support, see [https://patchwork.kernel.org/patch/11145803/]<br />
* DE1/DE2/DE3 writeback support<br />
* A64 audiocodec driver components (sun8i-codec and sun50i-codec-analog) lack support for jack detection<br />
<br />
== Planned for 5.7 ==<br />
*[[A20]]<br />
** LVDS<br />
<br />
*[[A83T]] and [[A64]]<br />
** Rotate driver<br />
<br />
*[[H6]]<br />
** SPI<br />
<br />
*[[R40]]<br />
** Thermal<br />
<br />
New Devices Supported<br />
*[[A13]]<br />
** [[PocketBook Touch Lux 3]]<br />
*[[A64]]<br />
** [[PineTab]]<br />
** [[PinePhone]]<br />
*[[A20]]<br />
** Linutronix Testbox v2<br />
<br />
== Merged into 5.6 ==<br />
* [[A10]]<br />
** CSI (BT656 and Parallel)<br />
<br />
*[[A64]]<br />
** MIPI DSI<br />
** DVFS<br />
<br />
*[[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]]<br />
** Thermal<br />
<br />
*[[H6]]<br />
** PWM<br />
<br />
*[[H3]] / [[H5]] / [[H6]] / [[R40]]<br />
**PMU<br />
<br />
*[[R40]]<br />
** CSI (BT656 and Parallel)<br />
** SPI<br />
<br />
New Devices Supported<br />
* [[H5]]<br />
** ALL-H3-IT H5 board<br />
** ALL-H5-CC H5 board<br />
* [[H6]]<br />
** [[PineH64]] Model A<br />
<br />
== Merged into 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged into 5.4 ==<br />
* [[A20]]<br />
** CSI (BT656 and Parallel)<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI (BT656 and Parallel)<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI (BT656 and Parallel)<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI (BT656 and Parallel) Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI (BT656 and Parallel) Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=23124
Linux mainlining effort
2020-02-09T23:39:22Z
<p>Megous: /* Major drivers */ Update AC100 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 />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]|[[V3s]]<br>[[S3]]|[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PMU]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: grey; color: white;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.6<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3]]|[[V3s]]<br>[[S3]]|[[S3L]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1167245/ Allwinner sunxi message box support patch-v5]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
* [[H6]] IOMMU WIP Maxime Ripard [https://patchwork.kernel.org/cover/11345669/ iommu: Add Allwinner H6 IOMMU driver] <br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.kernel.org/cover/11314031/ drm/sun4i: Allwinner R40 MIPI-DSI support v3] <br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://megous.com/git/linux/commit/?h=orange-pi-5.5&id=170d38d650f67657600d4e0e868e0e7110b89ee1 digital part] [https://megous.com/git/linux/commit/?h=orange-pi-5.5&id=ee424255a6fb9280ac27c1953019b768ca973ca7 analog part]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A83T]] / [[A64]] DE2 rotate driver Jernej Škrabec [https://github.com/jernejsk/linux-1/commits/de-rot WIP branch]<br />
* [[A10]] / [[A20]] / [[A31]] HDMI Audio WIP Stefan Mavrodiev [https://lore.kernel.org/patchwork/cover/1177803/ Add support for sun4i HDMI audio]<br />
* [[H6]] <br />
** SPI WIP Andre Przywara [https://patchwork.kernel.org/cover/11323153/ arm64: dts: sun50i: H6: Enable SPI flash]<br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
* [[A10]] & [[R40]] CSI Camera WIP Chen-Yu Tsai [https://lore.kernel.org/patchwork/cover/1167304/ media: sun4i-csi: A10/A20 CSI1 and R40 CSI0 support ]<br />
* [[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li [https://lore.kernel.org/patchwork/project/lkml/list/?series=423286 add thermal sensor driver for A64, A83T, H3, H5, H6, R40]<br />
** [[A80]] included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
=== Drivers that can still be improved/added ===<br />
<br />
Nobody works on these features. If you're interested, you can pick one of these add your name to them and move them to one of the sections above, to indicate you're working on the driver/feature.<br />
<br />
* sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)<br />
* DE2 driver has buggy layer support, see [https://patchwork.kernel.org/patch/11145803/]<br />
* DE1/DE2/DE3 writeback support<br />
<br />
== Planned for 5.6 ==<br />
* [[A10]]<br />
** CSI (BT656 and Parallel)<br />
<br />
*[[A64]]<br />
** MIPI DSI<br />
** DVFS<br />
<br />
*[[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]]<br />
** Thermal<br />
<br />
*[[H6]]<br />
** PWM<br />
<br />
*[[H3]] / [[H5]] / [[H6]] / [[R40]]<br />
**PMU<br />
<br />
*[[R40]]<br />
** CSI (BT656 and Parallel)<br />
** SPI<br />
<br />
New Devices Supported<br />
* [[H5]]<br />
** ALL-H3-IT H5 board<br />
** ALL-H5-CC H5 board<br />
* [[H6]]<br />
** [[PineH64]] Model A<br />
<br />
== Merged into 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged into 5.4 ==<br />
* [[A20]]<br />
** CSI (BT656 and Parallel)<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI (BT656 and Parallel)<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI (BT656 and Parallel)<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI (BT656 and Parallel) Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI (BT656 and Parallel) Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22950
Linux mainlining effort
2019-12-09T14:59:38Z
<p>Megous: /* Drivers that can still be improved/added */</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
<br />
* [[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li [https://lore.kernel.org/patchwork/cover/1159201/ add thermal sensor driver for A64, A83T, H3, H5, H6, R40]<br />
** [[A80]] included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H6]] <br />
** PWM WIP Clément Péron [https://patchwork.kernel.org/cover/11227685/ Add support for H6 PWM v3] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
<br />
=== Drivers that can still be improved/added ===<br />
<br />
Nobody works on these features. If you're interested, you can pick one of these add your name to them and move them to one of the sections above, to indicate you're working on the driver/feature.<br />
<br />
* sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)<br />
* DE2 on some SoCs (A64, A83T) includes rotation egnine that is not yet supported<br />
* DE2 driver has buggy layer support, see [https://patchwork.kernel.org/patch/11145803/]<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged for 5.4 ==<br />
* [[A20]]<br />
** CSI<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22949
Linux mainlining effort
2019-12-09T14:52:03Z
<p>Megous: /* Boards */ Re-add todo section</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
<br />
* [[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li [https://lore.kernel.org/patchwork/cover/1159201/ add thermal sensor driver for A64, A83T, H3, H5, H6, R40]<br />
** [[A80]] included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H6]] <br />
** PWM WIP Clément Péron [https://patchwork.kernel.org/cover/11227685/ Add support for H6 PWM v3] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
<br />
=== Drivers that can still be improved/added ===<br />
<br />
* sunxi-musb driver lacks DMA support (with current driver, USB gadgets are limited to PIO, limiting speed to 10MiB/s and causing large CPU)<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged for 5.4 ==<br />
* [[A20]]<br />
** CSI<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22946
Linux mainlining effort
2019-12-05T15:44:32Z
<p>Megous: /* Major drivers */ H6 USB3 is mainline now</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 13%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| N/A<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
<br />
* [[A64]] / [[A83T]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal sensor WIP Vasily Khoruzhick/Ondrej Jirman/Yangtao Li [https://lore.kernel.org/patchwork/cover/1159201/ add thermal sensor driver for A64, A83T, H3, H5, H6, R40]<br />
** [[A80]] included in Thermal sensor effort by Philipp Rossak (embed-3d): https://github.com/embed-3d/linux/branches/all<br />
* [[H6]] <br />
** PWM WIP Clément Péron [https://patchwork.kernel.org/cover/11227685/ Add support for H6 PWM v3] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC/H.265<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
== Merged for 5.4 ==<br />
* [[A20]]<br />
** CSI<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Lichee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=Linux_mainlining_effort&diff=22863
Linux mainlining effort
2019-11-05T12:45:21Z
<p>Megous: USB3 PHY mainlining</p>
<hr />
<div>The purpose of this page is to try and define sub-goals and milestones for the mainlining effort, containing goals and sub-goals with milestones for adding Allwinner support in the upstream mainline Linux Kernel.<br />
<br />
=Overview=<br />
The idea is to submit the code needed to run the Linux kernel on Allwinner SoCs upstream, ie. to the official Linux kernel.<br />
<br />
This can be achieved by following the concept outlined in the ''Your new ARM SoC Linux support check-list!'' article published by Thomas Petazzoni from Bootlin.<ref>http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf</ref><ref>[http://www.cnx-software.com/2013/01/16/your-new-arm-soc-linux-support-check-list-elce-2012/ Your New ARM SoC Linux Support Check-List – ELCE 2012]</ref><br />
<br />
Where relevant, I have attempted to include who is currently working on an item, mostly separate from any particular mainlining goal.<br />
<br />
=Status=<br />
<br />
The [[Mainline_Kernel_Howto|Mainline Kernel howto]] contains the currently used repositories for the mainlining process. The U-Boot repository and toolchain is described in the [[Mainline U-Boot|Mainline U-Boot howto]].<br />
<br />
The [[:Category:Mainline_Kernel | Mainline Kernel category ]] gives an overview of currently supported devices.<br />
<br />
== Status Matrix ==<br />
<br />
The goal of this matrix is to give an easy view of work on each SoC worked on by linux-sunxi.<br />
<br />
{| class="wikitable" style="text-align: center; width: 100%;"<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br>[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br>[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br>[[T3]]<br />
! [[V3]]<br>[[V3s]]<br>[[S3L]]<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | AC97<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Audio Codec]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 5.0<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="3" | ADC<br />
| style="text-align: left;" | GPADC<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.12<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Thermal<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: darkgreen;" | ?<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | Touch<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.16<br />
| N/A<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| rowspan="4" style="text-align: left;" | [[CSI|Camera]]<br />
<br />
| style="text-align: left;" | BT656<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" | ISP<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | MIPI-CSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" | Parallel<br />
| style="background: red;" | NO<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.0<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Clocks<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.10<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | CPUFreq (DVFS)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Cryptographic_Hardware_Accelerators|Crypto]]<br />
| N/A<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: lightgreen;" | 5.5<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Display (SimpleFB)<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen" | 4.16<br />
| style="background: lightgreen" | 4.16<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| rowspan="8" style="text-align: left;" | Display<br />
([https://dri.freedesktop.org/wiki/DRM/ DRM])<br />
<br />
| style="text-align: left;" | CVBS<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.9 ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Audio<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: orange;" | WIP<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI CEC<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | WIP<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | HDMI Video<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.13<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.15<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | LVDS<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.16<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | MIPI DSI<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.18<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Major_drivers|WIP]]<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | RGB<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.7<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | VGA<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | DMA<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | [[Ethernet]]<br />
| style="text-align: left;" | [[Ethernet#EMAC|EMAC]]<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.11<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" | 3.11 <br />
| rowspan="2"| N/A<br />
| N/A<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.1<br />
| style="background: lightgreen;" rowspan="2" | 4.16<br />
| rowspan="2"| N/A<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 4.15<br />
| style="background: lightgreen;" rowspan="2" | 5.0<br />
| style="background: lightgreen;" rowspan="2" | 4.18<br />
| style="background: lightgreen;" rowspan="2" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" | [[Ethernet#GMAC|GMAC]]<br />
<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.17<br />
<br />
|-<br />
| style="text-align: left;" rowspan="2" | GPU(3D)<br />
| style="text-align: left;" | [[Mali]]<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| N/A<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: orange;" | [[Linux mainlining effort#Minor_drivers|WIP]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" | [[PowerVR]]<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | HW Spinlocks<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[I2C]]<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.11<br />
| style="background: lightgreen;" | 3.13<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | I2S<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | IOMMU<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[IR]]<br />
| style="background: red" | NO<br />
| style="background: lightgreen;" | 3.17<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 3.17<br />
| N/A<br />
| style="background: lightgreen;" | 4.0<br />
| N/A<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Keypad<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | WIP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red;" | NO<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | LRADC<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | MsgBox<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Core_Stuff|WIP]]<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[NAND]]<br />
| N/A<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.12 <ref name="mlc">While the NAND controller itself is supported, the NAND technology found on the vast majority of boards isn't. See [[MTD_Driver#Challenges|this page]] </ref><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc"/><br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9 <ref name="mlc" /><br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | PCIe<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: black; color: white;" | NO <ref name="h6-pcie">Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly to CPU,<br />
and accessing the PCIe config space, IO space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.</ref><br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Pinctrl<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.9<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[PWM_Controller|PWM]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.16<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: orange;" | [[Linux_mainlining_effort#Minor_drivers|WIP]]<br />
| style="background: lightgreen;" | 4.12<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RSB]]<br />
| style="background: red;" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| N/A<br />
| style="background: lightgreen;" | 4.4<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.14<br />
| N/A<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| style="background: grey; color: white;" | ?<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[RTC]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.14<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.10<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SATA]]<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 3.15<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.20<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SD/ [[eMMC|MMC]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.0<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | SMP<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 4.18<br />
| N/A<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| style="background: lightgreen" | PSCI<br />
| style="background: lightgreen;" | PSCI<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPDIF]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.7<br />
| N/A<br />
| style="background: lightgreen;" | 4.9<br />
| N/A<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.4<br />
| style="background: darkgreen;" | ?<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SPIdev|SPI]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.10<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.13<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[SRAM Controller|SRAM]]<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 4.19<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.19<br />
| style="background: lightgreen;" | 5.0 <br />
| style="background: lightgreen;" | 5.1 <br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 3.15<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 3.16<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.14<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[USB_OTG_Controller_Register_guide#USB_OTG|USB OTG]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.3<br />
| style="background: lightgreen;" | 4.8<br />
| style="background: lightgreen;" | 4.11<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.2<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | USB3<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: red" | NO<br />
| N/A<br />
| N/A<br />
| N/A<br />
| N/A<br />
| style="background: lightgreen;" | 5.5<br />
| N/A<br />
| N/A<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | [[Video_Engine|VE]] | [[Sunxi-Cedrus]]<br />
| style="background: red;" | NO<br />
| style="background: lightgreen;" | 5.1<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: darkgreen;" | ?<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: red;" | NO<br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
| style="background: lightgreen;" | 4.20<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 5.2 <br />
| style="background: red;" | NO<br />
| style="background: darkgreen;" | ?<br />
<br />
|-<br />
| style="text-align: left;" colspan="2" | Watchdog<br />
| style="background: lightgreen;" | 5.0<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.12<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 3.18<br />
| style="background: lightgreen;" | 4.2<br />
| style="background: lightgreen;" | 4.17<br />
| style="background: lightgreen;" | 3.19<br />
| style="background: lightgreen;" | 4.6<br />
| style="background: lightgreen;" | 4.9<br />
| style="background: lightgreen;" | 4.5<br />
| style="background: lightgreen;" | 4.12<br />
| style="background: lightgreen;" | 5.3<br />
| style="background: lightgreen;" | 4.15<br />
| style="background: lightgreen;" | 4.11<br />
<br />
|-<br />
! style="width: 10%; text-align: left;" colspan="2" | Model<br />
! [[F1C100s|F1C-<br>100s]]<br />
! [[A10]]<br />
! [[A10s]]<br />
! [[A13]]<br />
[[R8]]<br />
! [[A20]]<br />
! [[A23]]<br />
! [[A31]]<br />
! [[A33]]<br />
[[R16]]<br />
! [[A64]]<br />
! [[A80]]<br />
! [[A83T]]<br />
! [[GR8]]<br />
! [[H3]]<br />
! [[H5]]<br />
! [[H6]]<br />
! [[R40]]<br />
[[T3]]<br />
! [[V3s]]<br />
<br />
|}<br />
<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|-<br />
! Legend<br />
|-<br />
| style="background: lightgreen;" | In Linux mainline since version x<br />
|-<br />
| style="background: darkgreen;" | Nobody works on it, but it should be compatible with already done drivers<br />
|-<br />
| style="background: orange;" | Somebody works on it<br />
|-<br />
| style="background: red;" | No support, nobody works on it<br />
|-<br />
| style="background: black; color: white;" | support impossible<br />
|-<br />
| style="background: grey; color: white;" | Status is unknown/to be completed<br />
|}<br />
<br />
== Work In Progress ==<br />
<br />
=== Core Stuff ===<br />
*[[AR100]] firmware (WiP: Samuel Holland) [https://github.com/crust-firmware/crust ARISC firmware for sunxi SoCs ]<br />
<br />
* Message box (WiP: Samuel Holland) [https://lore.kernel.org/patchwork/cover/1117050/ Allwinner sunxi message box support patch-v4]<br />
<br />
* [[A13]] PSCI Suspend / Resume / CPUIdle (WiP: Antoine Tenart) [http://lists.denx.de/pipermail/u-boot/2016-September/265453.html patch-v1]<br />
<br />
=== Major drivers ===<br />
<br />
* HDMI Audio [[A64]] / [[H3]] / [[H5]] / [[H6]] WIP Jernej Škrabec (jernej) / LibreELEC<br />
<br />
* [[R40]] MIPI-DSI WIP Jagan Teki [https://patchwork.freedesktop.org/series/62062/ drm/sun4i: Allwinner R40 MIPI-DSI support] <br />
<br />
* [[A64]] MIPI-DSI WiP Jagan Teki [https://lore.kernel.org/patchwork/cover/1049604/ drm/sun4i: Allwinner A64 MIPI-DSI support patch-v8]<br />
<br />
* [[H6]] USB 3 WiP Icenowy Zheng [https://lore.kernel.org/patchwork/cover/1058917/ Allwinner H6 USB3 support patch-v5]<br />
<br />
* [[AC100]] Audio codec WiP Ondrej Jirman [https://github.com/megous/linux/commits/linux-tbs WIP branch]<br />
<br />
* [[A10]] CSI WiP Maxime Ripard [https://lore.kernel.org/patchwork/cover/1058765/ media: Allwinner A10 CSI support v5]<br />
<br />
=== Minor drivers ===<br />
<!-- Please move the newest entry to the top --><br />
* [[A64]] / [[H3]] / [[H5]] / [[H6]] / [[R40]] Thermal WIP Yangtao Li [https://patchwork.kernel.org/cover/11088251/ add thermal driver for h6 v5]<br />
* [[H6]] <br />
** PWM WIP Jernej Škrabec [https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=197209 pwm: sun4i: Add support for Allwinner H6 v2] <br />
** Cpufreq (DVFS) WIP Yangtao Li [https://lore.kernel.org/patchwork/cover/1042857/ arm64: dts: allwinner: h6: Enable CPU DVFS(cpufreq)]<br />
<br />
* [[H5]] Cpufreq (DVFS) WIP Chen-Yu Tsai [https://patchwork.kernel.org/cover/10787869/ arm64: dts: allwinner: h5: Enable CPU DVFS (cpufreq)]<br />
* [[R40]] PWM (WIP Hao Zhang [https://www.spinics.net/lists/kernel/msg2731498.html patch-v2])<br />
* [[A31]]/[[A31s]] PWM support (WiP: Siarhei Volkau [http://lists.infradead.org/pipermail/linux-arm-kernel/2017-February/486405.html patch-v1])<br />
* [[A20]] Keypad (WiP: Yassin Jaffer (ddc) [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-September/370079.html patch])<br />
* [[A64]] / [[A80]] / [[A83T]] / [[H5]] Thermal driver WIP: Philipp Rossak (embed-3d) v3-branch: <br />
** [https://github.com/embed-3d/linux/tree/embed-3d/sunxi-ths-v3 sunxi-ths-v3] <br />
** [https://patchwork.kernel.org/cover/10582083/ IIO-based thermal sensor driver for Allwinner H3 and A83T SoC]<br />
<br />
=== Boards ===<br />
<br />
== Planned for 5.5 ==<br />
*[[H3]]<br />
** Deinterlace driver<br />
<br />
*[[H6]]<br />
**Crypto<br />
**GPU(3D) Mali<br />
**USB3 PHY (for boards not needing vbus switching)<br />
<br />
*[[A64]] / [[A80]] / [[A83T]] / [[H3]] / [[H5]] / [[R40]] <br />
**Crypto<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Emlid Neutis<br />
<br />
New Devices Supported<br />
* [[H3]]<br />
** [[FriendlyARM_NanoPi_Duo2]]<br />
<br />
* multiple SoCs<br />
** [[Cedrus]] HEVC<br />
<br />
== Merged for 5.4 ==<br />
* [[A64]]<br />
** IR<br />
* [[H6]]<br />
** IR<br />
** RTC<br />
** SPDIF<br />
New Devices Supported<br />
* [[A64]]<br />
** [[Olimex A64-OLinuXino]] eMMC<br />
* [[H6]]<br />
** [[Tanix TX6]]<br />
* [[S3]]<br />
** [[Litchee Zero Plus]]<br />
<br />
== Merged into 5.3 ==<br />
* [[A64]]<br />
** LRADC<br />
** RGB LCD<br />
* [[A83T]]<br />
** CSI<br />
* [[H6]]<br />
** DMA<br />
** Watchdog<br />
* multiple SoCs<br />
** [[Cedrus]] h264<br />
<br />
== Merged into 5.2 ==<br />
* [[A83T]]<br />
** LRADC<br />
** USB OTG<br />
<br />
* [[H6]]<br />
** [[Cedrus]]<br />
<br />
* multiple SoCs<br />
** [[Mali Open Source Driver|Lima]]<br />
** [[Mali Open Source Driver|Panfrost]]<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** Banana-Pi-M2-Zero<br />
<br />
New Devices Supported<br />
* [[H6]]<br />
** [[Beelink GS1]]<br />
** [[Xunlong Orange Pi 3]]<br />
<br />
== Merged into 5.1 ==<br />
* A10<br />
** Cedrus<br />
** PMU<br />
<br />
* A20<br />
** Audio Codec improvements<br />
<br />
* A23<br />
** Display pipeline<br />
** LCD enabled on Q8 A23 tablets<br />
<br />
* A64<br />
** ARM Architectural Timer errata workaround<br />
** PMU<br />
** CSI<br />
<br />
* A80<br />
** GMAC support<br />
<br />
* CSI in general<br />
** RGR565 support<br />
** JPEG pass-through support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Banana Pi M2+]]<br />
** [[Banana Pi M2 Ultra]]<br />
<br />
* [[LCD]] enabled on [[A13]] [[Q8]] tablets<br />
<br />
== Merged into 5.0 ==<br />
* A64<br />
** Cedrus<br />
** DTS changes for audio codec<br />
<br />
* F1C100s<br />
** initial F1C100s support<br />
<br />
* H6<br />
** Ethernet<br />
** DE3/HDMI support<br />
** USB 2.0<br />
<br />
* H3 / H5<br />
** CSI Support<br />
<br />
* H5<br />
** Cedrus<br />
<br />
* R40<br />
** RTC<br />
<br />
* T3<br />
** initial T3 support<ref>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7badd1d7aa61087010803affa19bb83fb5a0af1</ref><br />
<br />
* V3s<br />
** CSI Support<br />
<br />
* [[Bluetooth#AMPAK|Broadcom-based (AMPAK modules) Bluetooth]] support on<br />
** [[Sinovoip Banana Pi M2 Magic | Banana Pi M2 Magic]]<br />
** [[Banana Pi M3]]<br />
** [[Banana Pi M64]]<br />
** [[Cubietruck]]<br />
** [[Cubietech_Cubietruck_Plus|Cubietruck Plus]]<br />
<br />
New Devices Supported<br />
* [[Xunlong Orange Pi Lite 2]]<br />
<br />
== Merged into 4.20 ==<br />
<br />
* A13 / A20 / A33 / H3<br />
** Cedrus driver<br />
<br />
* A83T<br />
** IR receiver<br />
<br />
* A64<br />
** Cleanup for device tree files<br />
** HDMI support<br />
** Audio codec support (DTS changes will be merged in 5.0)<br />
<br />
* H3 / H5<br />
** SID<br />
<br />
* R40<br />
** SATA<br />
<br />
New Devices Supported<br />
* [[Pine64]] LTS<br />
* [[Xunlong Orange Pi One Plus]]<br />
* [[Xunlong Orange Pi Zero Plus 2]] (H3 variant)<br />
* [[Sinovoip Banana Pi M2+]] (H5 variant)<br />
<br />
== Merged into 4.19 ==<br />
<br />
* A10 / A13 / A20 / A23 / A33<br />
** SRAM controller / system control<br />
<br />
* A64<br />
** SRAM controller / system control<br />
** Display clocks and bus<br />
** RTC clock output<br />
** PWM<br />
** R_I2C<br />
<br />
* H3<br />
** SRAM controller / system control<br />
<br />
* H6<br />
** MMC<br />
** PMIC<br />
<br />
* R40<br />
** HDMI support<br />
<br />
Board Changes<br />
* SPI flash node for [[Orange Pi PC 2]] and [[Pine64#Variants | Pine64 SoPINE]]<br />
* Use lid switch as wake-up source for A64 based laptops<br />
* LEDs added for [[PineH64]]<br />
<br />
New Devices<br />
* [[Pine Pinebook]]<br />
* Amarula A64-Relic<br />
<br />
== Changes merged up to 4.18 ==<br />
Changes up to 4.18 can be found on [[Linux mainlining history]] page.<br />
<br />
=References=<br />
<references /><br />
<br />
= See also =<br />
* [[Mainline Kernel Howto]]<br />
* [[Possible setups for hacking on mainline]]<br />
* [[Linux Kernel]]<br />
**[[Toolchain]]<br />
<br />
=External Links=<br />
* [http://www.kernel.org kernel.org] - Official website for the Linux Kernel<br />
** [http://github.com/torvalds/linux http://github.com/torvalds/linux] - Linus Torvalds' GitHub account with the upstream Linux kernel<br />
* [http://www.kernel.org/doc/ Linux Kernel documentation index]<br />
* [http://www.kernel.org/doc/man-pages/ Linux Kernel man pages]<br />
* [http://kernelnewbies.org/ Kernel Newbies Site - Excellent source of information for people new to kernel]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary Linus' kernel tree for 2.6]<br />
* [https://bugzilla.kernel.org/ Kernel bugzilla] - [https://bugzilla.kernel.org/show_bug.cgi?id=15790 Regressions for each of recent versions]<br />
* [http://www.fsfla.org/svnwiki/selibre/linux-libre/ Linux-libre project - Maintains and distributes fully free kernel]<br />
* [http://lingrok.org/ LinGrok, Linux kernel source code cross-reference]<br />
* [https://elixir.bootlin.com/linux/latest/source?a=arm Bootlin LXR (Linux Cross Reference)]<br />
* [http://lists.infradead.org/pipermail/linux-arm-kernel/ linux-arm-kernel - Mailing list archive]<br />
===How to upstream===<br />
* [http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf Your new ARM SoC Linux support check-list! by Thomas Petazzoni of Bootlin]<br />
*[http://www.cnx-software.com/2014/03/04/linux-kernel-upstreaming-how-to-linaro-connect-asia-2014/ Linux Kernel Upstreaming How-To (CNXSoft - Embedded Software Development)]<br />
**[http://www.youtube.com/watch?v=dY7fikYZ42c Matt Porter's YouTube video talk on “Upstreaming 101" (LCA14-111)]<br />
***[http://www.linaro.org/documents/download/65f888c674508efcf9bd5d90398a186a530d01c4c78db Matt Porter's presentation slides for “Upstreaming 101" (LCA14-111)]<br />
**[https://www.youtube.com/watch?v=FiQ5uV_Mm5c Matt Porter's YouTube video talk on “Upstreaming 201" (LCA14-112)]<br />
***[http://www.linaro.org/documents/download/7b9920fcc89589bad9063d87d9137f08530d020b71924 Matt Porter's presentation slides for “Upstreaming 201" (LCA14-112)]<br />
*[http://www.cnx-software.com/2011/08/19/how-to-write-and-submit-a-linux-kernel-patch/ How to Write and Submit a Linux Kernel Patch (CNXSoft - Embedded Software Development)]<br />
** [http://www.youtube.com/watch?v=LLBrBBImJt4 YouTube Video- Write and Submit your first Linux kernel Patch]<br />
** [http://www.cnx-software.com/pdf/kernel-tutorial/kernel_patch_tutorial.pdf Greg Kroah-Hartman Kernel Tutorial Write and Submit your first Linux Kernel Patch]<br />
*[http://www.linaro.org/connect-lca14/resources Linaro resources page from LCA (Linaro Connect Asia) 2014]<br />
<br />
=Notes=<br />
<references group=note /><br />
<br />
[[Category:Development]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22813
PocketBook Touch Lux 3
2019-10-27T22:49:14Z
<p>Megous: /* Tips, Tricks, Caveats */ Backlight issues</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
<br />
=== TODO ===<br />
<br />
* The display driver is now mature enough to allow for easy experimentation with the display.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
** Waveforms can be read using https://github.com/fread-ink/inkwave, precise meaning of data stored therein is still unclear, though<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
* Reduce data copying by using memory mapped buffers. (this can save ~ 800us)<br />
* Allow to interleave submission of a next buffer and processing of the current one (submission takes ~8ms with all the scheduling, copying and conversion of FB data to display control stream). This would allow for going from 50Hz update rate to ~100Hz<br />
* Write a tool to manage transitions between different display states using NEON intrinsics.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* You can buy any variant of ED060XD4 display for Touch Lux 3, replacement requires some care not to break anything. The display is glued to the plastic frame with an double-sided adhesive tape. It's possible to separate the display from the frame by sticking some flat sharp plastic tool between the display and the frame from the front side. I used an old credit card. The trick is to try to swipe the card along all edges of the display, while laying it mostly flat on the display. You can replace the display without glueing the new one in.<br />
* There are three variants of the display available: just the eInk display (matte or gloss) (~$13-15), eInk+backlight (~$25), eInk+backlight+touch digitizer (~$50-65). Some manufacturers claim on Aliexpress that they provide the panels for PocketBook and that their displays are matte and have even backlight. I can confirm that. I also confirmed that using the cheapest $13 replacement display without backlight also works. (original firmware has trouble booting when touch panel digitizer is not detected, so using a cheap display is adviseable if you don't want to use the original firmware)<br />
* After installing the new display, touchscreen may be acting weirdly. That may not mean it's broken, it may just need calibration. Calibration is performed by writing a bunch of values to bunch of registers. Nothing special. There's a confusingly named S06-xc4_calibrate.sh script in the original firmware's boot partition that can be used to do calibration with the original kernel. I plan to add support for calibration to the mainline driver.<br />
* I doubt it's possible to replace backlight cable without breaking the connector. The connector is extremely fragile. I used thermal glue pistol to fix the new cable in place but it's still easy to cause shorts and shutdown the regulator, just by pressing device buttons or by pressing on the back cover. Thankfully the PMIC is resilient and will only shut down the backlight regulator if it detects the short-circuit. Regulator can be restarted by disabling/enabling the backlight in sysfs.<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22812
PocketBook Touch Lux 3
2019-10-27T22:44:13Z
<p>Megous: /* Tips, Tricks, Caveats */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
<br />
=== TODO ===<br />
<br />
* The display driver is now mature enough to allow for easy experimentation with the display.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
** Waveforms can be read using https://github.com/fread-ink/inkwave, precise meaning of data stored therein is still unclear, though<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
* Reduce data copying by using memory mapped buffers. (this can save ~ 800us)<br />
* Allow to interleave submission of a next buffer and processing of the current one (submission takes ~8ms with all the scheduling, copying and conversion of FB data to display control stream). This would allow for going from 50Hz update rate to ~100Hz<br />
* Write a tool to manage transitions between different display states using NEON intrinsics.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* You can buy any variant of ED060XD4 display for Touch Lux 3, replacement requires some care not to break anything. The display is glued to the plastic frame with an double-sided adhesive tape. It's possible to separate the display from the frame by sticking some flat sharp plastic tool between the display and the frame from the front side. I used an old credit card. The trick is to try to swipe the card along all edges of the display, while laying it mostly flat on the display. You can replace the display without glueing the new one in.<br />
* There are three variants of the display available: just the eInk display (matte or gloss) (~$13-15), eInk+backlight (~$25), eInk+backlight+touch digitizer (~$50-65). Some manufacturers claim on Aliexpress that they provide the panels for PocketBook and that their displays are matte and have even backlight. I can confirm that. I also confirmed that using the cheapest $13 replacement display without backlight also works. (original firmware has trouble booting when touch panel digitizer is not detected, so using a cheap display is adviseable if you don't want to use the original firmware)<br />
* After installing the new display, touchscreen may be acting weirdly. That may not mean it's broken, it may just need calibration. Calibration is performed by writing a bunch of values to bunch of registers. Nothing special. There's a confusingly named S06-xc4_calibrate.sh script in the original firmware's boot partition that can be used to do calibration with the original kernel. I plan to add support for calibration to the mainline driver.<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22811
PocketBook Touch Lux 3
2019-10-27T22:42:18Z
<p>Megous: /* Tips, Tricks, Caveats */ Add some display experiences</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
<br />
=== TODO ===<br />
<br />
* The display driver is now mature enough to allow for easy experimentation with the display.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
** Waveforms can be read using https://github.com/fread-ink/inkwave, precise meaning of data stored therein is still unclear, though<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
* Reduce data copying by using memory mapped buffers. (this can save ~ 800us)<br />
* Allow to interleave submission of a next buffer and processing of the current one (submission takes ~8ms with all the scheduling, copying and conversion of FB data to display control stream). This would allow for going from 50Hz update rate to ~100Hz<br />
* Write a tool to manage transitions between different display states using NEON intrinsics.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* You can buy any variant of ED060XD4 display for Touch Lux 3, replacement requires some care not to break anything. The display is glued to the plastic frame with and double-sided adhesive tape. It's possible to separate the display from the frame by sticking some flat sharp plastic tool between the display and the frame from the front side. I used an old credit card. The trick is to try to swipe the card along all edges of the display, while laying it mostly flat on the display. You can replace the display without glueing the new one in.<br />
* There are three variants of the display available: just the eInk display (matte or gloss) (~$13-15), eInk+backlight (~$25), eInk+backlight+touch digitizer (~$50-65). Some manufacturers claim on Aliexpress that they provide the panels for PocketBook and that their displays are matte and have even backlight. I can confirm that. I also confirmed that using the cheapest $13 replacement display without backlight also works. (original firmware has trouble booting when touch panel digitizer is not detected, so using a cheap display is adviseable if you don't want to use the original firmware)<br />
* After installing the new display, touchscreen may be acting weirdly. That may not mean it's broken, it may just need calibration. Calibration is performed by writing a bunch of values to bunch of registers. Nothing special. There's a confusingly named S06-xc4_calibrate.sh script in the original firmware's boot partition that can be used to do calibration with the original kernel. I plan to add support for calibration to the mainline driver.<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_2_(626)&diff=22803
PocketBook Touch Lux 2 (626)
2019-10-17T10:47:30Z
<p>Megous: Add link to PB3</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PB626 TL2.png|250px]]<br />
| manufacturer = [https://www.pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6''mm'' x 174.4''mm'' x 8.3''mm''<br />
| release_date = {{Edit|Month year}}<br />
| website = [https://www.pocketbook-int.com/fr/products/pocketbook-touch-lux-2]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ ??MHz<br />
| nand = N/A<br />
| power = DC 5V @ 3A, 1500mAh 3.7V Li-Ion battery<br />
| LCD = e-Ink 90x122 (6" 3:4)<br />
| touchscreen = ?-finger capacitive([[Touchscreen#Device|Manufacturer device]])<br />
| video = N/A<br />
| audio = N/A<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Manufacturer|Manufacturer device]]), 10/100/1000Mbps Ethernet ([[Ethernet#Phyceiver|Manufacturer device]])<br />
| storage = 2 x µSD (1 internal, 1 external)<br />
| usb = 1 USB2.0 Host<br />
| camera = none<br />
| other = eInk "backlight"<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
This device has an eInk device, dmesg shows an EPDC driver is used. An almost identical device exists, the [[PocketBook Touch Lux 3]]. Mother board has some subtle differences, both uses the same firmwares.<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>E026 PB626V1.4<br />
20140625</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
{{Remove|Give a brief overview of the current status of support under sunxi here.}}<br />
<br />
== Images ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE specific sunxi ROM images here. E.g. a livesuit image or some other linux image which uses linux-sunxi code. Do not put non-sunxi images here, they should live under [[#See_also|See also]]. If no sunxi based images are available, this section can be removed.}}<br />
<br />
== HW-Pack ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi HW-pack specifics here. When empty, this section can be removed.}}<br />
<br />
== BSP ==<br />
<br />
* http://www.pocketbook-int.com/parts-of-software<br />
* https://github.com/pocketbook/Platform_A13/tree/master/Kernel<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
Use the ''{{Edit|MANUFACTURER_DEVICE}}'' build target.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
I tried tweaking the A13-OLinuXino_defconfig.<br />
Added:<br />
CONFIG_MMC_SUNXI_SLOT_EXTRA=2<br />
to get u-boot doing something.<br />
<br />
There are obvious issues with MMC detection.<br />
MMC2 (internal slot) seems to work perfectly, whereas MMC0 (external slot) does not really work. It seems detected ("mmc list" command) but issuing "mmc dev 0" has no effect: command returns code 1 with no error message.<br />
<br />
Even with this, it is still possible to boot a mainline linux kernel, but it has the same issue with external slot.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
Use the [https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/SOC/MANUFACTURER_DEVICE.fex ''{{Edit|MANUFACTURER_DEVICE.fex}}''] file.<br />
<br />
==== Mainline kernel ====<br />
<br />
<br />
'''Please look at the "discussion" tab of this page, I added some notes.'''<br />
<br />
<br />
I tried tweaking the "sun5i-a13-olinuxino" device-tree.<br />
But there is an issue at this point with at least the external mmc slot (0):<br />
<code><pre>/sys/kernel/debug # cat mmc0/ios<br />
clock: 0 Hz<br />
vdd: 0 (invalid)<br />
bus mode: 2 (push-pull)<br />
chip select: 0 (don't care)<br />
power mode: 0 (off)<br />
bus width: 0 (1 bits)<br />
timing spec: 0 (legacy)<br />
signal voltage: 0 (3.30 V)<br />
driver type: 0 (driver type B)<br />
/sys/kernel/debug # cat mmc1/ios<br />
clock: 50000000 Hz<br />
actual clock: 50000000 Hz<br />
vdd: 21 (3.3 ~ 3.4 V)<br />
bus mode: 2 (push-pull)<br />
chip select: 0 (don't care)<br />
power mode: 2 (on)<br />
bus width: 2 (4 bits)<br />
timing spec: 2 (sd high-speed)<br />
signal voltage: 0 (3.30 V)<br />
driver type: 0 (driver type B)</pre></code><br />
<br />
But that did not help since everything seems good in device tree (clock definition, bus width etc.).<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
'''Please look at the "discussion" tab of this page, I added some notes.'''<br />
<br />
Manufacturer SD image boots the old boot0 / boot1 / boot.axf way, then starts an uImage Linux 3 kernel (as of firmware 5.14.1225).<br />
We can find source code for the kernel [https://github.com/pocketbook/Platform_A13 here], but I think it is incomplete, and while I built it successfully, I have not been able to boot it.<br />
<br />
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"<br />
| <strong>Manufacturer's OS dmesg output</strong><br />
|-<br />
|<pre>[ 0.000000] Linux version 3.0.8-hg+default-8e9111a31373 (jenkins@redbool) (gcc version 4.4.4 (4.4.4_09.06.2010) ) #1 PREEMPT Mon Jul 17 20:19:39 EEST 2017<br />
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387f<br />
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache<br />
[ 0.000000] Machine: sun5i<br />
[ 0.000000] Total Detected Memory: 256MB with 2 banks<br />
[ 0.000000] Memory Reserved(in bytes):<br />
[ 0.000000] SYS: 0x43000000, 0x00010000<br />
[ 0.000000] Memory policy: ECC disabled, Data cache writeback<br />
[ 0.000000] On node 0 totalpages: 57344<br />
[ 0.000000] free_area_init_node: node 0, pgdat c03d4d70, node_mem_map c0432000<br />
[ 0.000000] Normal zone: 512 pages used for memmap<br />
[ 0.000000] Normal zone: 0 pages reserved<br />
[ 0.000000] Normal zone: 56832 pages, LIFO batch:15<br />
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768<br />
[ 0.000000] pcpu-alloc: [0] 0 <br />
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 56832<br />
[ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p7 init=/init loglevel=1 rootwait<br />
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)<br />
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)<br />
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)<br />
[ 0.000000] Memory: 97MB 127MB = 224MB total<br />
[ 0.000000] Memory: 222952k/222952k available, 6424k reserved, 0K highmem<br />
[ 0.000000] Virtual kernel memory layout:<br />
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)<br />
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)<br />
[ 0.000000] DMA : 0xffc00000 - 0xffe00000 ( 2 MB)<br />
[ 0.000000] vmalloc : 0xd0800000 - 0xf0000000 ( 504 MB)<br />
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)<br />
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)<br />
[ 0.000000] .init : 0xc0008000 - 0xc0025000 ( 116 kB)<br />
[ 0.000000] .text : 0xc0025000 - 0xc03b10e8 (3633 kB)<br />
[ 0.000000] .data : 0xc03b2000 - 0xc03da2f0 ( 161 kB)<br />
[ 0.000000] .bss : 0xc03da314 - 0xc04313ec ( 349 kB)<br />
[ 0.000000] SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1<br />
[ 0.000000] NR_IRQS:96 nr_irqs:96 96<br />
[ 0.000000] timer0: Periodic Mode<br />
[ 0.000000] sw_timer_init,line:376<br />
[ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms<br />
[ 0.000000] aw_clksrc_init, line:339<br />
[ 0.000000] Console: colour dummy device 80x30<br />
[ 0.000108] Calibrating delay loop... 997.37 BogoMIPS (lpj=498688)<br />
[ 0.008219] pid_max: default: 32768 minimum: 301<br />
[ 0.008325] Mount-cache hash table entries: 512<br />
[ 0.008627] CPU: Testing write buffer coherency: ok<br />
[ 0.010097] print_constraints: dummy: <br />
[ 0.010246] NET: Registered protocol family 16<br />
[ 0.011322] try to parse apb frequency from script faild!<br />
[ 0.011414] SOFTWINNER DMA Driver, (c) 2003-2004,2006 Simtec Electronics<br />
[ 0.011477] Initialize DMAC OK<br />
[ 0.013315] bio: create slab <bio-0> at 0<br />
[ 0.013690] usbcore: registered new interface driver usbfs<br />
[ 0.013739] usbcore: registered new interface driver hub<br />
[ 0.013830] usbcore: registered new device driver usb<br />
[ 0.014786] cfg80211: Calling CRDA to update world regulatory domain<br />
[ 0.014862] Init eGon pin module V2.0<br />
[ 0.014871] gpio irq init...<br />
[ 0.014881] Switching to clocksource aw 64bits couter<br />
[ 0.014881] Switched to NOHz mode on CPU #0<br />
[ 0.018096] [usb_manager]: CONFIG_USB_SW_SUN5I_USB0_OTG<br />
[ 0.018337] [sw_hcd0]: usb host driver initialize........<br />
[ 0.018401] [sw_hcd0]: open_usb_clock<br />
[ 0.038584] [sw_hcd0]: host_init_state = 0<br />
[ 0.038593] [sw_hcd0]: platform is usb host<br />
[ 0.038659] [sw_hcd0]: sw_hcd_init_controller: sw_hcd_host0: USB Host mode controller at f1c13000 using PIO, IRQ 38<br />
[ 0.038683] sw_hcd_host0 sw_hcd_host0: sw_hcd host driver<br />
[ 0.038699] sw_hcd_host0 sw_hcd_host0: new USB bus registered, assigned bus number 1<br />
[ 0.039152] hub 1-0:1.0: USB hub found<br />
[ 0.039180] hub 1-0:1.0: 1 port detected<br />
[ 0.039208] wrn: hcd is not enable, need not start hcd<br />
[ 0.039310] [sw_hcd0]: sw_usb_host0_disable start<br />
[ 0.039321] -------sw_hcd0_soft_disconnect---------<br />
[ 0.039332] [sw_hcd_host0]: Set USB Power OFF<br />
[ 0.039342] wrn: hcd is not enable, need not stop hcd<br />
[ 0.039373] [sw_hcd0]: close_usb_clock<br />
[ 0.039416] [sw_hcd0]: sw_usb_host0_disable end<br />
[ 0.039453] [sw_udc]: udc_init: version 20080411<br />
[ 0.039790] NET: Registered protocol family 2<br />
[ 0.039902] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)<br />
[ 0.040134] TCP established hash table entries: 8192 (order: 4, 65536 bytes)<br />
[ 0.040254] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)<br />
[ 0.040326] TCP: Hash tables configured (established 8192 bind 8192)<br />
[ 0.040336] TCP reno registered<br />
[ 0.040347] UDP hash table entries: 256 (order: 0, 4096 bytes)<br />
[ 0.040365] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)<br />
[ 0.040526] NET: Registered protocol family 1<br />
[ 0.040746] PMU: registered new PMU device of type 0<br />
[ 0.040792] [pm]aw_pm_init!<br />
[ 0.040806] standby_mode = 1. <br />
[ 0.050885] squashfs: version 4.0 (2009/01/31) Phillip Lougher<br />
[ 0.051107] msgmni has been set to 435<br />
[ 0.054806] alg: No test for stdrng (krng)<br />
[ 0.054868] io scheduler noop registered<br />
[ 0.054876] io scheduler deadline registered<br />
[ 0.054971] io scheduler cfq registered (default)<br />
[ 0.055557] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled<br />
[ 0.056382] serial8250.0: ttyS0 at MMIO 0x1c28400 (irq = 2) is a U6_16550A<br />
[ 0.056492] console [ttyS0] enabled<br />
[ 0.056913] sunxi-uart.1: ttyS0 at MMIO 0x1c28400 (irq = 2) is a U6_16550A<br />
[ 0.057656] brd: module loaded<br />
[ 0.059445] loop: module loaded<br />
[ 0.059468] drivers/spi/spi_sunxi.c(L2114) sw spi init fetch spi0 uning configuration failed<br />
[ 0.059491] [spi]: Found 1 spi devices in config files<br />
[ 0.059503] boards_num modalias max_spd_hz bus_num cs mode<br />
[ 0.059524] 0 panel_spi 100000 2 0 0 <br />
[ 0.059650] drivers/spi/spi_sunxi.c(L2081) get spi 2 para failed, err code = -4 <br />
[ 0.059940] [spi-2]: source = sdram_pll_p, src_clk = 408000000, mclk 102000000<br />
[ 0.060185] Reuuimllas SoC SPI Driver loaded for Bus SPI-2 with 2 Slaves at most<br />
[ 0.060200] [spi-2]: driver probe succeed, base d08b6000, irq 12, dma_id_rx 4, dma_id_tx 5!<br />
[ 0.060255] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver<br />
[ 0.060306] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver<br />
[ 0.060371] ------print_msc_config-----<br />
[ 0.060379] vendor_id = 0x18d1<br />
[ 0.060386] mass_storage_id = 0x1<br />
[ 0.060392] adb_id = 0x2<br />
[ 0.060398] usb_manufacturer_name = USB Developer<br />
[ 0.060406] usb_product_name = Android<br />
[ 0.060412] usb_serial_number = 20080411<br />
[ 0.060419] msc_vendor_name = USB 2.0<br />
[ 0.060425] msc_product_name = USB Flash Driver<br />
[ 0.060433] msc_release = 100<br />
[ 0.060439] luns = 2<br />
[ 0.060445] ---------------------------<br />
[ 0.060589] [sw_udc]: [sw_usb_udc]: binding gadget driver 'android_usb'<br />
[ 0.060607] [sw_udc]: alloc request: ep(0xc03cde88, ep0, 64), req(0xcf90ba40)<br />
[ 0.060628] WRN:L2695(drivers/usb/sun5i_usb/udc/sw_udc.c):ERR: usb device is not active<br />
[ 0.060641] [sw_udc]: sw_udc_pullup, is_on = 0<br />
[ 0.060651] WRN:L2730(drivers/usb/sun5i_usb/udc/sw_udc.c):ERR: usb device is not active<br />
[ 0.061657] android_usb gadget: Mass Storage Function, version: 2009/09/11<br />
[ 0.061672] android_usb gadget: Number of LUNs=2<br />
[ 0.061682] lun0: LUN: removable file: (no medium)<br />
[ 0.061691] lun1: LUN: removable file: (no medium)<br />
[ 0.061700] lun name: lun<br />
[ 0.061711] lun name: lun1<br />
[ 0.061839] WRN:L2695(drivers/usb/sun5i_usb/udc/sw_udc.c):ERR: usb device is not active<br />
[ 0.061860] android_usb gadget: android_usb ready<br />
[ 0.061935] mousedev: PS/2 mouse device common for all mice<br />
[ 0.062125] input: sun4i-keyboard as /devices/virtual/input/input0<br />
[ 0.062225] GpioKey_probe: hxm GPIOKEY__used. <br />
[ 0.062246] sw_gpio_set_trigger(): Enter 3<br />
[ 0.064057] sw_gpio_set_trigger(): Enter 3<br />
[ 0.066221] i2c-core: driver [pcf8563] using legacy suspend method<br />
[ 0.066231] i2c-core: driver [pcf8563] using legacy resume method<br />
[ 0.066241] i2c /dev entries driver<br />
[ 0.066340] !!! base_Addr = 0xd08b8c00 <br />
[ 0.066359] config i2c gpio with gpio_config api <br />
[ 0.066404] twi0, apb clock = 24000000 <br />
[ 0.068297] axp_mfd 0-0034: AXP (CHIP ID: 0x41) detected<br />
[ 0.069306] rtc_detect,line:206<br />
[ 0.069315] I2C: i2c-0: AW16XX I2C adapter<br />
[ 0.069322] **********start************<br />
[ 0.069329] 0x40 <br />
[ 0.069334] 0xf8 <br />
[ 0.069339] 0x28 <br />
[ 0.069344] 0x0 <br />
[ 0.069348] 0x0 <br />
[ 0.069353] **********end************<br />
[ 0.069390] !!! base_Addr = 0xd08ba000 <br />
[ 0.069436] twi1, apb clock = 24000000 <br />
[ 0.069594] rtc_detect: Detected chip pcf8563 at adapter 1, address 0x51<br />
[ 0.069673] pcf8563 1-0051: chip found, driver version 0.4.3<br />
[ 0.080815] rtc (null): alarm rollover not handled<br />
[ 0.080993] using rtc device, pcf8563, for alarms<br />
[ 0.081052] pcf8563 1-0051: rtc core: registered pcf8563 as rtc0<br />
[ 0.090163] I2C: i2c-1: AW16XX I2C adapter<br />
[ 0.090170] **********start************<br />
[ 0.090177] 0x40 <br />
[ 0.090182] 0xf8 <br />
[ 0.090187] 0x5a <br />
[ 0.090192] 0x0 <br />
[ 0.090196] 0x0 <br />
[ 0.090200] **********end************<br />
[ 0.090240] !!! base_Addr = 0xd08bc400 <br />
[ 0.090292] twi2, apb clock = 24000000 <br />
[ 0.090436] rtc_detect,line:206<br />
[ 0.090445] I2C: i2c-2: AW16XX I2C adapter<br />
[ 0.090451] **********start************<br />
[ 0.090457] 0x40 <br />
[ 0.090462] 0xf8 <br />
[ 0.090467] 0x59 <br />
[ 0.090472] 0x0 <br />
[ 0.090476] 0x0 <br />
[ 0.090481] **********end************<br />
[ 0.090627] print_constraints: axp20_ldo1: 1300 mV <br />
[ 0.091569] print_constraints: axp20_ldo2: 1800 <--> 3300 mV at 3000 mV <br />
[ 0.092502] print_constraints: axp20_ldo3: 700 <--> 3500 mV at 3300 mV <br />
[ 0.092567] [axp_regulator_probe] disable AXP20_ID_LDO3<br />
[ 0.093633] print_constraints: axp20_ldo4: 1250 <--> 3300 mV at 3300 mV <br />
[ 0.094537] print_constraints: axp20_buck2: 700 <--> 2275 mV at 1400 mV <br />
[ 0.095458] print_constraints: axp20_buck3: 700 <--> 3500 mV at 1200 mV <br />
[ 0.096532] print_constraints: axp20_ldoio0: 1800 mV <br />
[ 0.097091] input: axp20-supplyer as /devices/platform/sun5i-i2c.0/i2c-0/0-0034/axp20-supplyer.28/input/input1<br />
[ 0.101907] [AXP]power key up<br />
[ 0.105894] pmu_pekoff_time = 6000<br />
[ 0.105903] pmu_pekoff_en = 1<br />
[ 0.105909] pmu_peklong_time = 1500<br />
[ 0.105915] pmu_pekon_time = 1000<br />
[ 0.105921] pmu_pwrok_time = 64<br />
[ 0.105927] pmu_pwrnoe_time = 2000<br />
[ 0.105933] pmu_intotp_en = 1<br />
[ 0.106419] [AXP]POWER20_OFF_CTL:2139-->0x42<br />
[ 0.106886] POWER20_PEK_SET:2157-->0x1d<br />
[ 0.107357] POWER20_PEK_SET:2168-->0x1d<br />
[ 0.107823] POWER20_PEK_SET:2177-->0x1d<br />
[ 0.108296] POWER20_PEK_SET:2188-->0x1d<br />
[ 0.108765] POWER20_PEK_SET:2200-->0x1d<br />
[ 0.109252] POWER20_HOTOVER_CTL:2209-->0xad<br />
[ 0.112537] [AXP]last_rest_vol = 100, now_rest_vol = 98<br />
[ 0.114043] [AXP]Cur_CoulombCounter = 75<br />
[ 0.114052] [AXP]charger->rest_vol = 100<br />
[ 0.117213] sunxi_wdt: sunxi WatchDog Timer Driver v1.0<br />
[ 0.117452] sunxi_wdt: initialized (timeout=23s, nowayout=0)<br />
[ 0.117668] [mmc_pm]: no sdio card used in configuration<br />
[ 0.117678] [mmc]: sunximmc_init<br />
[ 0.117688] enable_mmc0<br />
[ 0.117782] mmc0_interrupt_init<br />
[ 0.117801] sw_gpio_set_trigger(): Enter 3<br />
[ 0.119093] sw_gpio_set_trigger(): Enter 2<br />
[ 0.119106] sd_inserted 1 dev c03d0ff8 cf8e9900<br />
[ 0.119193] [mmc]: sunxi mmc controller using config : 0x5<br />
[ 0.119247] [mmc]: sunxi-mmc.0: pdev->name: sunxi-mmc, pdev->id: 0<br />
[ 0.119391] sw_gpio_set_trigger(): Enter 3<br />
[ 0.119401] sd_inserted 0 dev c03d0ff8 cf8e9900<br />
[ 0.119570] [mmc]: mmc 0 power off !!<br />
[ 0.119607] disable_mmc0<br />
[ 0.119653] [mmc]: mmc0 Probe: base:0xd08c0000 irq:32 dma:0 pdes:0xffdff000, ret 0.<br />
[ 0.119678] [mmc]: sunxi-mmc.2: pdev->name: sunxi-mmc, pdev->id: 2<br />
[ 0.119894] [mmc]: mmc 2 power off !!<br />
[ 0.119945] [mmc]: mmc2 Probe: base:0xd08c2000 irq:34 dma:0 pdes:0xffdfe000, ret 0.<br />
[ 0.119983] sunxi_leds driver init<br />
[ 0.120228] Registered led device: power_led<br />
[ 0.120261] [ledtrig_charging_init] == <br />
[ 0.120535] [mmc]: mmc 2 power on !!<br />
[ 0.120880] TCP cubic registered<br />
[ 0.120897] NET: Registered protocol family 17<br />
[ 0.120930] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3<br />
[ 0.120956] Registering SWP/SWPB emulation handler<br />
[ 0.121266] dram_sysdev_init finished!<br />
[ 0.121715] [1008]<br />
[ 0.121739] [1008]<br />
[ 0.121835] [1008]<br />
[ 0.121861] [pcb_version_init] registered<br />
[ 0.122706] regulator_init_complete: axp20_buck3: incomplete constraints, leaving on<br />
[ 0.122974] regulator_init_complete: axp20_buck2: incomplete constraints, leaving on<br />
[ 0.123764] regulator_init_complete: axp20_ldo2: incomplete constraints, leaving on<br />
[ 0.127298] pcf8563 1-0051: setting system clock to 2018-07-16 17:57:31 UTC (1531763851)<br />
[ 0.128468] Waiting for root device /dev/mmcblk0p7...<br />
[ 0.142824] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 52, RTO !!<br />
[ 0.143650] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 52, RTO !!<br />
[ 0.150103] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 5, RTO !!<br />
[ 0.150908] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 5, RTO !!<br />
[ 0.151712] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 5, RTO !!<br />
[ 0.152516] [mmc]: sdxc_request_done(L1116): smc 2 err, cmd 5, RTO !!<br />
[ 0.181808] mmc1: new high speed SDHC card at address 0001<br />
[ 0.182161] mmcblk0: 1 mmc1:0001 BB1QT 29.8 GiB <br />
[ 0.183321] mmcblk0: p1 p2 p3 < p5 p6 p7 p8 p9 p10 > p4<br />
[ 0.231822] EXT2-fs (mmcblk0p7): warning: maximal mount count reached, running e2fsck is recommended<br />
[ 0.234763] VFS: Mounted root (ext2 filesystem) on device 179:7.<br />
[ 0.234820] Freeing init memory: 116K<br />
[ 0.235353] Failed to execute /init. Attempting defaults...<br />
[ 0.450530] Software EPDC driver (build Jul 17 2017 20:19:45)<br />
[ 0.450548] Copyright (c) 2013 by Obreey Products<br />
[ 0.453736] loading waveform file: /boot/default.wbf<br />
[ 0.455903] waveform size: 99635<br />
[ 0.461346] waveform name: V220_C133_WR9401_ED060XC3H2_TC<br />
[ 0.461362] waveform type: 43<br />
[ 0.461369] frame rate: 85<br />
[ 0.461376] timing mode: 3<br />
[ 0.461382] AMEPD part: 0xdd<br />
[ 0.461389] waveform modes: 8<br />
[ 0.461394] temp ranges: 14<br />
[ 0.480681] waveforms loaded<br />
[ 0.480984] init wf framebuffer: 320,793,7<br />
[ 0.485584] [epdc_pmic_init] param pmic=TPS65185<br />
[ 0.485598] [epdc_pmic_init] select "TPS65185" EPDC PMIC driver<br />
[ 0.497670] pmic vcom: -2030<br />
[ 0.497799] [epdc_probe] POWER_SUPPLY_PROP_CAPACITY = 100<br />
[ 0.526094] [960]<br />
[ 0.555645] ===========================ft5x_ts_init=====================<br />
[ 0.555664] ctp_fetch_sysconfig_para. <br />
[ 0.555690] ctp_fetch_sysconfig_para: after: ctp_twi_addr is 0x24, dirty_addr_buf: 0x24. dirty_addr_buf[1]: 0xfffe <br />
[ 0.555707] ctp_fetch_sysconfig_para: ctp_twi_id is 2. <br />
[ 0.555717] ctp_fetch_sysconfig_para: screen_max_x = 1024. <br />
[ 0.555727] ctp_fetch_sysconfig_para: screen_max_y = 758. <br />
[ 0.555737] ctp_fetch_sysconfig_para: revert_x_flag = 0. <br />
[ 0.555748] ctp_fetch_sysconfig_para: revert_y_flag = 0. <br />
[ 0.555758] ctp_fetch_sysconfig_para: exchange_x_y_flag = 0. <br />
[ 0.555767] [ctp_fetch_sysconfig_para] Defined CONFIG_PB_PLATFORM<br />
[ 0.555785] SetLDO1_8V: script_parser_fetch err. Use default<br />
[ 0.560038] SelectTPVoltage: script_parser_fetch err. Use default<br />
[ 0.560118] PoweronFPCFlash: script_parser_fetch err. Use default<br />
[ 0.560133] ft5x_ts_init: after fetch_sysconfig_para: normal_i2c: 0x24. normal_i2c[1]: 0xfffe <br />
[ 0.560153] script parser fetch err. <br />
[ 0.560162] ctp_init_platform_resource: tp_wakeup request gpio fail!<br />
[ 0.566045] [1008]<br />
[ 0.676331] ctp_detect: Detected chip ft5x_ts at adapter 2, address 0x24<br />
[ 0.676455] ====ft5x_ts_probe begin=====. <br />
[ 0.676750] input: ft5x_ts as /devices/virtual/input/input2<br />
[ 0.676899] CONFIG_FT5X0X_MULTITOUCH is defined. <br />
[ 0.677548] ft5x_ts_probe:2562 TS in bootloader mode, init TS<br />
[ 0.677559] cyttsp_init:1556 do soft reset<br />
[ 0.677995] cyttsp_init:1558 wrote into TS result 0<br />
[ 0.697080] [960]<br />
[ 0.717063] [1008]<br />
[ 0.916046] cyttsp_init:1563 exiting bootloader mode<br />
[ 0.917486] cyttsp_init:1569 wrote into TS result 1<br />
[ 1.039293] cyttsp_init:1572<br />
[ 1.110075] [912]<br />
[ 1.193583] cyttsp_init:1578<br />
[ 1.194034] cyttsp_init:1580<br />
[ 1.214528] do_handshake:1439<br />
[ 1.215223] Dumping buffer data of length 2 (0x2):<br />
[ 1.215232] 0000: 90 04<br />
[ 1.215246] Dumping buffer data of length 2 (0x2):<br />
[ 1.215253] 0000: 00 10<br />
[ 1.230051] [960]<br />
[ 1.250026] [1008]<br />
[ 1.340160] do_handshake:1439<br />
[ 1.340816] Dumping buffer data of length 2 (0x2):<br />
[ 1.340824] 0000: 10 05<br />
[ 1.340833] Dumping buffer data of length 2 (0x2):<br />
[ 1.340840] 0000: 00 90<br />
[ 1.341277] cyttsp_init:1589<br />
[ 1.360042] [960]<br />
[ 1.384123] cyttsp_init:1600<br />
[ 1.384140] do_handshake:1439<br />
[ 1.384797] Dumping buffer data of length 2 (0x2):<br />
[ 1.384805] 0000: 90 86<br />
[ 1.384815] Dumping buffer data of length 2 (0x2):<br />
[ 1.384823] 0000: 00 10<br />
[ 1.420038] [1008]<br />
[ 1.528097] [600]<br />
[ 1.590617] cyttsp_init:1609<br />
[ 1.610840] do_handshake:1439<br />
[ 1.611525] Dumping buffer data of length 2 (0x2):<br />
[ 1.611538] 0000: 80 00<br />
[ 1.611554] Dumping buffer data of length 2 (0x2):<br />
[ 1.611565] 0000: 00 00<br />
[ 1.612036] cyttsp_init:1613<br />
[ 1.631045] [1008]<br />
[ 1.646722] cyttsp_init:1619 read from TS result 2<br />
[ 1.646732] Dumping buffer data of length 15 (0xf):<br />
[ 1.646739] 0000: 00 00 00 00 00 00 00 00<br />
[ 1.646754] 0008: 00 00 00 00 00 00 00<br />
[ 1.687855] cyttsp_init:1623<br />
[ 1.688446] cyttsp_init:1628 read from TS result 2<br />
[ 1.688456] Dumping buffer data of length 1 (0x1):<br />
[ 1.688466] 0000: 00<br />
[ 1.689119] touchscreen no low power mode detected<br />
[ 1.748051] [600]<br />
[ 1.813043] [1008]<br />
[ 1.901773] Dumping buffer data of length 32 (0x20):<br />
[ 1.901788] 0000: 10 44 00 00 00 08 00 05<br />
[ 1.901804] 0008: 9a c2 5d 3d 34 19 04 01<br />
[ 1.901820] 0010: 0c 15 d5 20 54 02 07 00<br />
[ 1.901835] 0018: 00 00 00 00 a1 00 64 05<br />
[ 1.942054] [816]<br />
[ 2.042052] [864]<br />
[ 2.046459] ft5x_ts_probe:2574 sysinfo read OK<br />
[ 2.046474] ft5x_ts_probe:2595 touchscreen type 1 App ID 0x2054 APP Ver 0x0207<br />
[ 2.046487] ctp_set_irq_mode: config gpio to int mode. <br />
[ 2.046521] ctp_set_irq_mode, 259: gpio_int_info, port = 7, port_num = 11. <br />
[ 2.046531] INTERRUPT CONFIG<br />
[ 2.047451] touchscreen no low power mode detected<br />
[ 2.048630] ==ft5x_ts_probe over =<br />
[ 2.084106] EXT2-fs (mmcblk0p4): warning: mounting unchecked fs, running e2fsck is recommended<br />
[ 2.093205] EXT2-fs (mmcblk0p9): warning: mounting unchecked fs, running e2fsck is recommended<br />
[ 2.162132] [600]<br />
[ 2.207078] [1008]<br />
[ 2.312802] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!<br />
[ 2.312815] <br />
[ 2.327072] [600]<br />
[ 2.548102] [1008]<br />
[ 2.661073] [600]<br />
[ 2.794093] [1008]<br />
[ 2.883616] [charge_led_activate] Start timer<br />
[ 2.883633] [charge_led_activate] LED activation<br />
[ 2.912076] [768]<br />
[ 2.932149] [1008]<br />
[ 3.038097] [864]<br />
[ 3.058084] [912]<br />
[ 3.138099] [960]<br />
[ 3.178101] [1008]<br />
[ 3.321085] [912]<br />
[ 3.361085] [1008]<br />
[ 4.632740] WRN:L117(drivers/usb/host/sw_hci_sun5i.c):ERR: get usb_drv_vbus_1_gpio usbc1(usbc1) id failed<br />
[ 4.632765] WRN:L137(drivers/usb/host/sw_hci_sun5i.c):ERR: sw-ehci1(drv vbus_1) is invalid<br />
[ 4.632805] WRN:L117(drivers/usb/host/sw_hci_sun5i.c):ERR: get usb_drv_vbus_1_gpio usbc1(usbc1) id failed<br />
[ 4.632821] WRN:L137(drivers/usb/host/sw_hci_sun5i.c):ERR: sw-ohci1(drv vbus_1) is invalid<br />
[ 4.638219] [sw-ehci1]: probe, pdev->name: sw-ehci, pdev->id: 1, sw_ehci: 0xbf0438fc<br />
[ 4.638238] [sw-ehci1]: open clock<br />
[ 4.721106] usb_passby en=1,passly=0<br />
[ 4.721122] hci_port_configure en=1,config_cnt=0<br />
[ 4.721133] [sw-ehci1]: Set USB Power ON<br />
[ 4.725479] sw-ehci sw-ehci.1: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver<br />
[ 4.725525] sw-ehci sw-ehci.1: new USB bus registered, assigned bus number 2<br />
[ 4.725646] sw-ehci sw-ehci.1: irq 39, io mem 0xf1c14000<br />
[ 4.731072] sw-ehci sw-ehci.1: USB 0.0 started, EHCI 1.00<br />
[ 4.731594] hub 2-0:1.0: USB hub found<br />
[ 4.731623] hub 2-0:1.0: 1 port detected<br />
[ 4.731868] [sw-ohci1]: probe, pdev->name: sw-ohci, pdev->id: 1, sw_ohci: 0xbf043a54<br />
[ 4.731890] [sw-ohci1]: open clock<br />
[ 4.737618] ehci_irq: port change detect<br />
[ 4.791934] hci_port_configure en=1,config_cnt=1<br />
[ 4.791950] usb_passby en=1,passly=1<br />
[ 4.791969] sw-ohci sw-ohci.1: SW USB2.0 'Open' Host Controller (OHCI) Driver<br />
[ 4.792031] sw-ohci sw-ohci.1: new USB bus registered, assigned bus number 3<br />
[ 4.792100] sw-ohci sw-ohci.1: irq 40, io mem 0xf1c14400<br />
[ 4.851881] hub 3-0:1.0: USB hub found<br />
[ 4.851915] hub 3-0:1.0: 1 port detected<br />
[ 4.989078] [960]<br />
[ 5.009087] [1008]<br />
[ 5.033112] usb 2-1: new high speed USB device number 2 using sw-ehci<br />
[ 5.400132] [960]<br />
[ 5.440113] [1008]<br />
[ 5.687874] RTL871X: module init start<br />
[ 5.687891] RTL871X: rtl8188eu v4.3.0.4_11485.20140519<br />
[ 5.687899] RTL871X: build time: Jul 17 2017 20:19:45<br />
[ 5.688056] RTL871X: <br />
[ 5.688061] usb_endpoint_descriptor(0):<br />
[ 5.688070] RTL871X: bLength=7<br />
[ 5.688076] RTL871X: bDescriptorType=5<br />
[ 5.688082] RTL871X: bEndpointAddress=81<br />
[ 5.688089] RTL871X: wMaxPacketSize=512<br />
[ 5.688095] RTL871X: bInterval=0<br />
[ 5.688101] RTL871X: RT_usb_endpoint_is_bulk_in = 1<br />
[ 5.688109] RTL871X: <br />
[ 5.688112] usb_endpoint_descriptor(1):<br />
[ 5.688119] RTL871X: bLength=7<br />
[ 5.688125] RTL871X: bDescriptorType=5<br />
[ 5.688131] RTL871X: bEndpointAddress=2<br />
[ 5.688137] RTL871X: wMaxPacketSize=512<br />
[ 5.688143] RTL871X: bInterval=0<br />
[ 5.688150] RTL871X: RT_usb_endpoint_is_bulk_out = 2<br />
[ 5.688157] RTL871X: <br />
[ 5.688160] usb_endpoint_descriptor(2):<br />
[ 5.688167] RTL871X: bLength=7<br />
[ 5.688173] RTL871X: bDescriptorType=5<br />
[ 5.688179] RTL871X: bEndpointAddress=3<br />
[ 5.688185] RTL871X: wMaxPacketSize=512<br />
[ 5.688191] RTL871X: bInterval=0<br />
[ 5.688197] RTL871X: RT_usb_endpoint_is_bulk_out = 3<br />
[ 5.688206] RTL871X: nr_endpoint=3, in_num=1, out_num=2<br />
[ 5.688211] <br />
[ 5.688219] RTL871X: USB_SPEED_HIGH<br />
[ 5.688318] RTL871X: CHIP TYPE: RTL8188E<br />
[ 5.688350] RTL871X: register rtw_netdev_ops to netdev_ops<br />
[ 5.688370] RTL871X: rtw_wdev_alloc(padapter=d103b000)<br />
[ 5.694078] RTL871X: Chip Version Info: CHIP_8188E_Normal_Chip_TSMC_K_CUT_1T1R_RomVer(0)<br />
[ 5.694099] RTL871X: RF_Type is 3!!<br />
[ 5.694112] RTL871X: _ConfigNormalChipOutEP_8188E OutEpQueueSel(0x05), OutEpNumber(2) <br />
[ 5.695094] RTL871X: EEPROM type is E-FUSE<br />
[ 5.695110] RTL871X: ====> _ReadAdapterInfo8188EU<br />
[ 5.696100] RTL871X: Boot from EFUSE, Autoload OK !<br />
[ 5.703205] RTL871X: SetHwReg8188EU: bMacPwrCtrlOn=1<br />
[ 5.703444] bFWReady == _FALSE call reset 8051...<br />
[ 5.706373] RTL871X: =====> _8051Reset88E(): 8051 reset success .<br />
[ 5.721208] RTL871X: efuse_read_phymap_from_txpktbuf bcnhead:0<br />
[ 5.722199] RTL871X: efuse_read_phymap_from_txpktbuf len:125, lenbak:125, aaa:125, aaabak:125<br />
[ 5.731699] RTL871X: efuse_read_phymap_from_txpktbuf read count:123<br />
[ 5.732077] RTL871X: EEPROM ID=0x8129<br />
[ 5.732089] RTL871X: VID = 0x0BDA, PID = 0x8179<br />
[ 5.732097] RTL871X: Customer ID: 0x00, SubCustomer ID: 0xCD<br />
[ 5.732110] RTL871X: Hal_ReadPowerSavingMode88E...bHWPwrPindetect(0)-bHWPowerdown(0) ,bSupportRemoteWakeup(1)<br />
[ 5.732122] RTL871X: ### PS params=> power_mgnt(1),usbss_enable(0) ###<br />
[ 5.732137] RTL871X: ======= Path 0, Channel 1 =======<br />
[ 5.732146] RTL871X: Index24G_CCK_Base[0][1] = 0x25<br />
[ 5.732155] RTL871X: Index24G_BW40_Base[0][1] = 0x2b<br />
[ 5.732163] RTL871X: ======= Path 0, Channel 2 =======<br />
[ 5.732171] RTL871X: Index24G_CCK_Base[0][2] = 0x25<br />
[ 5.732179] RTL871X: Index24G_BW40_Base[0][2] = 0x2b<br />
[ 5.732186] RTL871X: ======= Path 0, Channel 3 =======<br />
[ 5.732194] RTL871X: Index24G_CCK_Base[0][3] = 0x24<br />
[ 5.732203] RTL871X: Index24G_BW40_Base[0][3] = 0x2b<br />
[ 5.732211] RTL871X: ======= Path 0, Channel 4 =======<br />
[ 5.732219] RTL871X: Index24G_CCK_Base[0][4] = 0x24<br />
[ 5.732227] RTL871X: Index24G_BW40_Base[0][4] = 0x2b<br />
[ 5.732235] RTL871X: ======= Path 0, Channel 5 =======<br />
[ 5.732243] RTL871X: Index24G_CCK_Base[0][5] = 0x24<br />
[ 5.732251] RTL871X: Index24G_BW40_Base[0][5] = 0x2b<br />
[ 5.732259] RTL871X: ======= Path 0, Channel 6 =======<br />
[ 5.732267] RTL871X: Index24G_CCK_Base[0][6] = 0x24<br />
[ 5.732275] RTL871X: Index24G_BW40_Base[0][6] = 0x2b<br />
[ 5.732282] RTL871X: ======= Path 0, Channel 7 =======<br />
[ 5.732291] RTL871X: Index24G_CCK_Base[0][7] = 0x24<br />
[ 5.732299] RTL871X: Index24G_BW40_Base[0][7] = 0x2b<br />
[ 5.732306] RTL871X: ======= Path 0, Channel 8 =======<br />
[ 5.732314] RTL871X: Index24G_CCK_Base[0][8] = 0x24<br />
[ 5.732322] RTL871X: Index24G_BW40_Base[0][8] = 0x2b<br />
[ 5.732330] RTL871X: ======= Path 0, Channel 9 =======<br />
[ 5.732338] RTL871X: Index24G_CCK_Base[0][9] = 0x23<br />
[ 5.732346] RTL871X: Index24G_BW40_Base[0][9] = 0x2a<br />
[ 5.732354] RTL871X: ======= Path 0, Channel 10 =======<br />
[ 5.732362] RTL871X: Index24G_CCK_Base[0][10] = 0x23<br />
[ 5.732370] RTL871X: Index24G_BW40_Base[0][10] = 0x2a<br />
[ 5.732378] RTL871X: ======= Path 0, Channel 11 =======<br />
[ 5.732386] RTL871X: Index24G_CCK_Base[0][11] = 0x23<br />
[ 5.732394] RTL871X: Index24G_BW40_Base[0][11] = 0x2a<br />
[ 5.732402] RTL871X: ======= Path 0, Channel 12 =======<br />
[ 5.732413] RTL871X: Index24G_CCK_Base[0][12] = 0x23<br />
[ 5.732421] RTL871X: Index24G_BW40_Base[0][12] = 0x2a<br />
[ 5.732429] RTL871X: ======= Path 0, Channel 13 =======<br />
[ 5.732437] RTL871X: Index24G_CCK_Base[0][13] = 0x23<br />
[ 5.732445] RTL871X: Index24G_BW40_Base[0][13] = 0x2a<br />
[ 5.732453] RTL871X: ======= Path 0, Channel 14 =======<br />
[ 5.732461] RTL871X: Index24G_CCK_Base[0][14] = 0x23<br />
[ 5.732469] RTL871X: Index24G_BW40_Base[0][14] = 0x2a<br />
[ 5.732482] RTL871X: ======= TxCount 0 =======<br />
[ 5.732490] RTL871X: CCK_24G_Diff[0][0]= 0<br />
[ 5.732497] RTL871X: OFDM_24G_Diff[0][0]= 4<br />
[ 5.732505] RTL871X: BW20_24G_Diff[0][0]= 2<br />
[ 5.732512] RTL871X: BW40_24G_Diff[0][0]= 0<br />
[ 5.732518] RTL871X: EEPROMRegulatory = 0x0<br />
[ 5.732528] RTL871X: mlmepriv.ChannelPlan = 0x08<br />
[ 5.732535] RTL871X: CrystalCap: 0x 3<br />
[ 5.732542] RTL871X: EEPROM Customer ID: 0x 0<br />
[ 5.732553] RTL871X: EEPROM : AntDivCfg = 0, TRxAntDivType = 3<br />
[ 5.732561] RTL871X: Board Type: 0x 0<br />
[ 5.732568] RTL871X: ThermalMeter = 0x1e<br />
[ 5.732575] RTL871X: <==== _ReadAdapterInfo8188EU in 37 ms<br />
[ 5.732831] RTL871X: init_channel_set ChannelPlan ID 8 Chan num:14 <br />
[ 5.733709] RTL871X: pwrctrlpriv.bSupportRemoteWakeup~~~~~~<br />
[ 5.733722] RTL871X: pwrctrlpriv.bSupportRemoteWakeup~~~[1]~~~<br />
[ 5.733735] RTL871X: rtw_macaddr_cfg MAC Address = ac:a2:13:9a:62:7e<br />
[ 5.733747] RTL871X: bDriverStopped:1, bSurpriseRemoved:0, bup:0, hw_init_completed:0<br />
[ 5.733770] RTL871X: rtw_ndev_init(eth0)<br />
[ 5.734367] RTL871X: _rtw_drv_register_netdev, MAC Address (if1) = ac:a2:13:9a:62:7e<br />
[ 5.734463] usbcore: registered new interface driver rtl8188eu<br />
[ 5.734474] RTL871X: module init ret=0<br />
[ 5.764318] RTL871X: +871x_drv - drv_open, bup=0<br />
[ 5.764345] RTL871X: Set RF Chip ID to RF_6052 and RF type to 1T1R.<br />
[ 5.767712] RTL871X: rtl8188e_FirmwareDownload fw:NIC, size: 13904<br />
[ 5.767735] RTL871X: rtl8188e_FirmwareDownload: fw_ver=b fw_subver=0001 sig=0x88e1, Month=11, Date=27, Hour=30, Minute=36<br />
[ 5.791076] RTL871X: polling_fwdl_chksum: Checksum report OK! (1, 1ms), REG_MCUFWDL:0x00030005<br />
[ 5.792569] RTL871X: =====> _8051Reset88E(): 8051 reset success .<br />
[ 5.795218] RTL871X: _FWFreeToGo: Polling FW ready OK! (18, 4ms), REG_MCUFWDL:0x000300c6<br />
[ 5.795235] RTL871X: FWDL success. write_fw:1, 27ms<br />
[ 5.880117] [960]<br />
[ 5.900102] [1008]<br />
[ 5.980069] orientation changed 0->3<br />
[ 6.018222] [912]<br />
[ 6.037095] [1008]<br />
[ 6.070849] ==> rtl8188e_iol_efuse_patch <br />
[ 6.159124] [960]<br />
[ 6.187467] RTL871X: pDM_Odm TxPowerTrackControl = 1<br />
[ 6.199100] [1008]<br />
[ 7.136070] set usbcur 0 mA<br />
[ 7.136543] set usbvol 4000 mV<br />
[ 7.624820] RTL871X: rtl8188eu_hal_init in 1860ms<br />
[ 7.628623] RTL871X: hw_var_set_opmode()-2931 mode = 2<br />
[ 7.635599] RTL871X: MAC Address = ac:a2:13:9a:62:7e<br />
[ 7.643613] RTL871X: rtw_cfg80211_init_wiphy:rf_type=3<br />
[ 7.643664] RTL871X: -871x_drv - drv_open, bup=1<br />
[ 7.643739] RTL871X: cfg80211_rtw_set_power_mgmt(eth0) enabled:1, timeout:-1<br />
[ 7.899518] RTL871X: cfg80211_rtw_flush_pmksa(eth0)<br />
[ 8.280082] RTL871X: cfg80211_rtw_scan(eth0)<br />
[ 9.813398] RTL871X: survey done event(38) band:0 for eth0<br />
[ 9.813590] RTL871X: rtw_indicate_scan_done(eth0)<br />
[ 9.814115] RTL871X: ==>rtw_ps_processor .fw_state(8)<br />
[ 9.814129] RTL871X: ==>ips_enter cnts:1<br />
[ 9.814136] RTL871X: nolinked power save enter<br />
[ 9.814144] RTL871X: ===> rtw_ips_pwr_down...................<br />
[ 9.814152] RTL871X: ====> rtw_ips_dev_unload...<br />
[ 9.845325] RTL871X: =>cfg80211_rtw_connect(eth0)<br />
[ 9.845350] RTL871X: privacy=1, key= (null), key_len=0, key_idx=0<br />
[ 9.880341] RTL871X: usb_read_port_cancel<br />
[ 9.880487] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.882099] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883240] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883345] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883472] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883596] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883722] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883843] RTL871X: usb_read_port_complete() RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) <br />
[ 9.883867] RTL871X: usb_write_port_cancel <br />
[ 9.883956] RTL871X: ==> rtl8188eu_hal_deinit <br />
[ 9.884222] RTL871X: bkeepfwalive(0)<br />
[ 9.890859] RTL871X: SetHwReg8188EU: bMacPwrCtrlOn=0<br />
[ 9.890877] RTL871X: <=== rtw_ips_pwr_down..................... in 76ms<br />
[ 9.890902] RTL871X: _rtw_pwr_wakeup wait ps_processing...<br />
[ 9.901096] RTL871X: _rtw_pwr_wakeup wait ps_processing done<br />
[ 9.901120] RTL871X: _rtw_pwr_wakeup call ips_leave....<br />
[ 9.901131] RTL871X: ==>ips_leave cnts:1<br />
[ 9.901138] RTL871X: ===> rtw_ips_pwr_up..............<br />
[ 9.901154] RTL871X: ===> ips_netdrv_open.........<br />
[ 9.904244] RTL871X: SetHwReg8188EU: bMacPwrCtrlOn=1<br />
[ 9.904259] RTL871X: Set RF Chip ID to RF_6052 and RF type to 1T1R.<br />
[ 9.904994] RTL871X: rtl8188e_FirmwareDownload fw:NIC, size: 13904<br />
[ 9.905048] RTL871X: rtl8188e_FirmwareDownload: fw_ver=b fw_subver=0001 sig=0x88e1, Month=11, Date=27, Hour=30, Minute=36<br />
[ 9.925997] RTL871X: polling_fwdl_chksum: Checksum report OK! (1, 0ms), REG_MCUFWDL:0x00030005<br />
[ 9.927601] RTL871X: =====> _8051Reset88E(): 8051 reset success .<br />
[ 9.930242] RTL871X: _FWFreeToGo: Polling FW ready OK! (12, 4ms), REG_MCUFWDL:0x000300c6<br />
[ 9.930257] RTL871X: FWDL success. write_fw:1, 25ms<br />
[ 10.205755] ==> rtl8188e_iol_efuse_patch <br />
[ 10.291368] RTL871X: pDM_Odm TxPowerTrackControl = 1<br />
[ 10.445079] [960]<br />
[ 10.485102] [1008]<br />
[ 10.820375] RTL871X: rtl8188eu_hal_init in 919ms<br />
[ 10.820871] RTL871X: hw_var_set_opmode()-2931 mode = 2<br />
[ 10.831508] RTL871X: <=== rtw_ips_pwr_up.............. in 930ms<br />
[ 10.831527] RTL871X: nolinked power save leave<br />
[ 10.831754] RTL871X: ==> ips_leave.....LED(0x00028282)...<br />
[ 10.831771] RTL871X: ssid=radium, len=6<br />
[ 10.831781] RTL871X: bssid=30:46:9a:2d:12:5e<br />
[ 10.831790] RTL871X: rtw_cfg80211_set_wpa_version, wpa_version=2<br />
[ 10.831801] RTL871X: rtw_cfg80211_set_auth_type, nl80211_auth_type=0<br />
[ 10.831811] RTL871X: cfg80211_rtw_connect, ie_len=22<br />
[ 10.831820] RTL871X: set wpa_ie(length:22):<br />
[ 10.831830] RTL871X: 0x30 0x14 0x01 0x00 0x00 0x0f 0xac 0x04 <br />
[ 10.831841] RTL871X: 0x01 0x00 0x00 0x0f 0xac 0x04 0x01 0x00 <br />
[ 10.831851] RTL871X: 0x00 0x0f 0xac 0x02 0x00 0x00 0x8f 0xcf <br />
[ 10.831867] RTL871X: got wpa2_ie, wpa2_ielen:20<br />
[ 10.832244] RTL871X: SetHwReg8188EU, 3610, RCR= 700060ca <br />
[ 10.832259] RTL871X: rtw_cfg80211_set_cipher, ucast=1, cipher=0xfac04<br />
[ 10.832270] RTL871X: rtw_cfg80211_set_cipher, ucast=0, cipher=0xfac04<br />
[ 10.832280] RTL871X: rtw_cfg80211_set_key_mgt, key_mgt=0xfac02<br />
[ 10.832323] RTL871X: rtw_set_802_11_connect(eth0) fw_state=0x00000008<br />
[ 10.832350] RTL871X: [by_bssid:1][assoc_ssid:radium][to_roam:0] new candidate: radium(30:46:9a:2d:12:5e, ch11) rssi:-46<br />
[ 10.832372] RTL871X: rtw_select_and_join_from_scanned_queue: candidate: radium(30:46:9a:2d:12:5e, ch:11)<br />
[ 10.832402] RTL871X: [HT] Support STBC = 0x01<br />
[ 10.832414] RTL871X: declare supporting RX STBC<br />
[ 10.832431] RTL871X: link to Artheros AP<br />
[ 10.832483] RTL871X: set ssid:dot11AuthAlgrthm=2, dot11PrivacyAlgrthm=4, dot118021XGrpPrivacy=4<br />
[ 10.832496] RTL871X: <=cfg80211_rtw_connect, ret 0<br />
[ 10.832621] RTL871X: set HT ch/bw before connected<br />
[ 10.832633] RTL871X: start_join_set_ch_bw: ch=11, bwmode=1, ch_offset=2<br />
[ 10.906770] RTL871X: link to Artheros AP<br />
[ 10.906799] RTL871X: start auth<br />
[ 10.906822] RTL871X: issue_auth<br />
[ 10.908688] RTL871X: OnAuthClient<br />
[ 10.908707] RTL871X: auth success, start assoc<br />
[ 10.908734] RTL871X: network.SupportedRates[0]=82<br />
[ 10.908742] RTL871X: network.SupportedRates[1]=84<br />
[ 10.908750] RTL871X: network.SupportedRates[2]=8B<br />
[ 10.908758] RTL871X: network.SupportedRates[3]=96<br />
[ 10.908765] RTL871X: network.SupportedRates[4]=0C<br />
[ 10.908772] RTL871X: network.SupportedRates[5]=12<br />
[ 10.908780] RTL871X: network.SupportedRates[6]=18<br />
[ 10.908787] RTL871X: network.SupportedRates[7]=24<br />
[ 10.908794] RTL871X: network.SupportedRates[8]=30<br />
[ 10.908802] RTL871X: network.SupportedRates[9]=48<br />
[ 10.908809] RTL871X: network.SupportedRates[10]=60<br />
[ 10.908817] RTL871X: network.SupportedRates[11]=6C<br />
[ 10.908826] RTL871X: bssrate_len = 12<br />
[ 10.912605] RTL871X: OnAssocRsp<br />
[ 10.912650] RTL871X: report_join_res(1)<br />
[ 10.912667] RTL871X: rtw_joinbss_update_network<br />
[ 10.912682] RTL871X: +rtw_update_ht_cap()<br />
[ 10.912706] RTL871X: rtw_alloc_macid = 0<br />
[ 10.912714] RTL871X: rtw_joinbss_update_stainfo<br />
[ 10.912731] RTL871X: ### Set STA_(0) info<br />
[ 10.912750] RTL871X: rtw_cfg80211_indicate_connect(eth0)<br />
[ 10.912801] RTL871X: pwdev->sme_state(b)=1<br />
[ 10.912832] RTL871X: pwdev->sme_state(a)=1<br />
[ 10.912840] RTL871X: assoc success<br />
[ 10.913093] RTL871X: HW_VAR_BASIC_RATE: 0x15f -> 0x15d -> 0x15f<br />
[ 10.913313] RTL871X: OnAction_back<br />
[ 10.913325] RTL871X: OnAction_back, action=0<br />
[ 10.913337] RTL871X: issue_action_BA, category=3, action=1, status=0<br />
[ 10.916493] RTL871X: WMM(0): 0, a42b<br />
[ 10.916613] RTL871X: WMM(1): 0, a44f<br />
[ 10.916742] RTL871X: WMM(2): 0, 5e4322<br />
[ 10.916874] RTL871X: WMM(3): 0, 2f3222<br />
[ 10.916884] RTL871X: wmm_para_seq(0): 0<br />
[ 10.916891] RTL871X: wmm_para_seq(1): 1<br />
[ 10.916898] RTL871X: wmm_para_seq(2): 2<br />
[ 10.916904] RTL871X: wmm_para_seq(3): 3<br />
[ 10.916912] RTL871X: HTOnAssocRsp<br />
[ 10.926143] RTL871X: UpdateHalRAMask8188E => mac_id:0, networkType:0x0b, mask:0x000fffff<br />
[ 10.926154] ==> rssi_level:0, rate_bitmap:0x000ff015<br />
[ 10.926177] RTL871X: ### MacID(1),Set Max Tx RPT MID(2)<br />
[ 10.926362] RTL871X: ### rtl8188e_set_FwMediaStatus_cmd: MStatus=1 MACID=0 <br />
[ 10.928368] RTL871X: rtl8188e_set_FwJoinBssReport_cmd mstatus(1)<br />
[ 10.928688] RTL871X: send eapol packet<br />
[ 10.929498] RTL871X: SetFwRsvdPagePkt(eth0)<br />
[ 10.929511] RsvdPageNum: 8<br />
[ 10.929572] RTL871X: SetFwRsvdPagePkt: Set RSVD page location to Fw ,TotalPacketLen(706)<br />
[ 10.930629] RTL871X: eth0: 1 DL RSVD page success! DLBcnCount:1, poll:1<br />
[ 10.931357] RTL871X: Set RSVD page location to Fw.<br />
[ 10.931487] RTL871X: =>mlmeext_joinbss_event_callback<br />
[ 10.935133] RTL871X: send eapol packet<br />
[ 10.935494] RTL871X: cfg80211_rtw_add_key(eth0) adding key for 30:46:9a:2d:12:5e<br />
[ 10.935510] RTL871X: cipher=0xfac04<br />
[ 10.935516] RTL871X: key_len=0x10<br />
[ 10.935522] RTL871X: seq_len=0x6<br />
[ 10.935529] RTL871X: key_index=0<br />
[ 10.935534] RTL871X: pairwise=1<br />
[ 10.935545] RTL871X: rtw_cfg80211_set_encryption<br />
[ 10.935556] RTL871X: rtw_cfg80211_set_encryption, : param->u.crypt.set_tx ==1 <br />
[ 10.935565] RTL871X: ~~~~set sta key:unicastkey<br />
[ 10.935620] RTL871X: set pairwise key camid:4, addr:30:46:9a:2d:12:5e, kid:0, type:AES<br />
[ 10.935667] RTL871X: rtw_cfg80211_set_encryption, ret=0<br />
[ 10.935829] RTL871X: cfg80211_rtw_set_default_key(eth0) key_index=0, unicast=1, multicast=0.<br />
[ 10.937811] RTL871X: cfg80211_rtw_add_key(eth0) adding key for (null)<br />
[ 10.937830] RTL871X: cipher=0xfac04<br />
[ 10.937881] RTL871X: key_len=0x10<br />
[ 10.937888] RTL871X: seq_len=0x6<br />
[ 10.937894] RTL871X: key_index=2<br />
[ 10.937900] RTL871X: pairwise=0<br />
[ 10.937908] RTL871X: rtw_cfg80211_set_encryption<br />
[ 10.937921] RTL871X: ~~~~set sta key:groupkey<br />
[ 10.937933] RTL871X: ==> rtw_set_key algorithm(4),keyid(2),key_mask(0)<br />
[ 10.937949] RTL871X: rtw_cfg80211_set_encryption, ret=0<br />
[ 10.940500] RTL871X: set group key camid:5, addr:30:46:9a:2d:12:5e, kid:2, type:AES<br />
[ 10.941996] RTL871X: SetHwReg8188EU, 3606, RCR= 700060ce <br />
[ 10.942492] RTL871X: cfg80211_rtw_change_station(eth0)<br />
[ 11.026740] RTL871X: OnAction_back<br />
[ 11.026762] RTL871X: OnAction_back, action=0<br />
[ 11.026777] RTL871X: issue_action_BA, category=3, action=1, status=0<br />
[ 11.117096] [960]<br />
[ 11.236178] [600]<br />
[ 11.276109] [1008]<br />
[ 11.380081] [600]<br />
[ 11.576089] [408]<br />
[ 11.716100] [1008]<br />
[ 12.051075] [768]<br />
[ 12.171153] [432]<br />
[ 12.291111] [408]<br />
[ 12.411116] [960]<br />
[ 12.491144] [1008]<br />
[ 12.649008] pocketbook (72): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.<br />
[ 12.690080] [864]<br />
[ 12.810074] [408]<br />
[ 12.838803] RTL871X: UpdateHalRAMask8188E => mac_id:0, networkType:0x0b, mask:0x000fffff<br />
[ 12.838822] ==> rssi_level:1, rate_bitmap:0x000f0000<br />
[ 12.890125] [1008]<br />
[ 12.896069] [lt_check_cap] LED OFF by timer<br />
[ 13.002069] [408]<br />
[ 13.122131] [1008]<br />
[ 13.229066] [408]<br />
[ 13.349130] [1008]<br />
[ 13.456068] [408]<br />
[ 13.576122] [1008]<br />
[ 13.683071] [408]<br />
[ 13.803127] [1008]<br />
[ 13.910063] [408]<br />
[ 14.030124] [1008]<br />
[ 14.137085] [408]<br />
[ 14.257130] [1008]<br />
[ 14.364067] [408]<br />
[ 14.484132] [1008]<br />
[ 14.591065] [408]<br />
[ 14.711123] [1008]<br />
[ 14.818069] [408]<br />
[ 14.938171] [1008]<br />
[ 15.045070] [408]<br />
[ 15.165124] [1008]<br />
[ 15.272068] [408]<br />
[ 15.392127] [1008]<br />
[ 15.499061] [408]<br />
[ 15.619141] [1008]<br />
[ 15.726071] [408]<br />
[ 15.846130] [1008]<br />
[ 15.952068] [408]<br />
[ 16.072135] [960]<br />
[ 16.192064] [408]<br />
[ 16.532090] [864]<br />
[ 16.652070] [408]<br />
[ 16.752115] [1008]<br />
[ 16.859073] [600]<br />
[ 16.979099] [1008]<br />
[ 17.139078] [864]<br />
[ 17.259082] [408]<br />
[ 17.419123] [1008]<br />
[ 17.526068] [408]<br />
[ 17.646108] [1008]<br />
[ 17.770087] [720]<br />
[ 17.810117] [960]<br />
[ 17.930070] [408]<br />
[ 18.090142] [912]<br />
[ 18.210076] [408]<br />
[ 18.550118] [960]<br />
[ 18.670069] [408]<br />
[ 18.770114] [1008]<br />
[ 18.877067] [408]<br />
[ 18.997119] [1008]<br />
[ 19.104065] [408]<br />
[ 19.224120] [1008]<br />
[ 19.331068] [408]<br />
[ 19.451128] [1008]<br />
[ 19.558070] [408]<br />
[ 19.678124] [1008]<br />
[ 19.785068] [408]<br />
[ 19.905130] [1008]<br />
[ 20.012085] [408]<br />
[ 20.132126] [1008]<br />
[ 20.239068] [408]<br />
[ 20.359132] [1008]<br />
[ 20.466068] [408]<br />
[ 20.586128] [1008]<br />
[ 20.693068] [408]<br />
[ 20.813124] [1008]<br />
[ 20.920071] [408]<br />
[ 21.040112] [1008]<br />
[ 21.147075] [408]<br />
[ 21.267133] [1008]<br />
[ 21.374083] [408]<br />
[ 21.494126] [1008]<br />
[ 21.601067] [408]<br />
[ 21.721126] [1008]<br />
[ 21.945072] [768]<br />
[ 22.065073] [408]<br />
[ 22.165112] [1008]<br />
[ 22.271067] [408]<br />
[ 22.391129] [1008]<br />
[ 22.524078] [600]<br />
[ 22.624107] [1008]<br />
[ 22.737068] [408]<br />
[ 22.857139] [1008]<br />
[ 22.967069] [408]<br />
[ 23.087126] [1008]<br />
[ 23.203069] [408]<br />
[ 26.603138] [960]<br />
[ 26.643099] [1008]<br />
[ 26.757068] [408]<br />
[ 26.797126] [960]<br />
[ 26.817107] [1008]<br />
[ 26.933124] [408]<br />
[ 27.413119] [912]<br />
[ 27.433089] [1008]<br />
[ 27.535070] [648]<br />
[ 27.655083] [408]<br />
[ 27.895122] [960]<br />
[ 28.015065] [408]<br />
[ 30.868577] RTL871X: rtw_set_ps_mode(eth0) Enter 802.11 power save - WIFI-TRAFFIC_IDLE<br />
[ 30.870420] RTL871X: rtl8188e_set_FwPwrMode_cmd: Mode=1 SmartPS=2 UAPSD=0<br />
[ 38.966860] RTL871X: cfg80211_rtw_add_key(eth0) adding key for (null)<br />
[ 38.966899] RTL871X: cipher=0xfac04<br />
[ 38.966914] RTL871X: key_len=0x10<br />
[ 38.966928] RTL871X: seq_len=0x6<br />
[ 38.966942] RTL871X: key_index=1<br />
[ 38.966955] RTL871X: pairwise=0<br />
[ 38.966975] RTL871X: rtw_cfg80211_set_encryption<br />
[ 38.966998] RTL871X: ~~~~set sta key:groupkey<br />
[ 38.967082] RTL871X: ==> rtw_set_key algorithm(4),keyid(1),key_mask(0)<br />
[ 38.967122] RTL871X: rtw_cfg80211_set_encryption, ret=0<br />
[ 38.967410] RTL871X: send eapol packet<br />
[ 38.973492] RTL871X: set group key camid:6, addr:30:46:9a:2d:12:5e, kid:1, type:AES<br />
[ 38.973978] RTL871X: SetHwReg8188EU, 3606, RCR= 700760ce <br />
[ 38.995125] [1008]<br />
[ 39.003675] RTL871X: rtw_set_ps_mode(eth0) Leave 802.11 power save - WIFI-LPS_CTRL_SPECIAL_PACKET<br />
[ 39.003701] RTL871X: rtl8188e_set_FwPwrMode_cmd: Mode=0 SmartPS=2 UAPSD=0<br />
[ 39.103071] [408]<br />
[ 39.143117] [1008]<br />
[ 39.251069] [408]<br />
</pre><br />
|}<br />
<br />
== FEL mode ==<br />
<br />
Entering FEL mode with default pocketbook software: device powered off, press right button (square symbol), power on while keeping the button pressed.<br />
There is not LED or indicator showing if the device is on.<br />
However plugging the device to a computer through USB will show there is something. lsusb:<br />
<pre>Bus 002 Device 008: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode</pre><br />
<br />
<br />
Serial console output will look like:<br />
<pre><br />
dram size =256<br />
0xffffffff,0xffffffff<br />
super_standby_flag = 0<br />
HELLO! BOOT0 is starting!<br />
boot0 version : 1.5.0<br />
The size of Boot1 is 0x00038000.<br />
Succeed in loading boot1 from sdmmc flash.<br />
Ready to disable icache.<br />
Succeed in loading Boot1.<br />
Jump to Boot1.<br />
[ 0.240] boot1 version : 1.5.1<br />
[ 0.240] pmu type = 3<br />
[ 0.241] bat vol = 4139<br />
[ 0.243] core_para->vol_threshold=3600<br />
[ 0.248] bat_cou=0x00000000<br />
[ 0.249] dcin_exist<br />
[ 0.252] power_step_level =0x00000002, bat_vol = 0x0000102b<br />
[ 0.291] axi:ahb:apb=3:2:2<br />
[ 0.291] set dcdc2=1400, clock=1008 successed<br />
[ 0.293] key<br />
[ 2.560] you can unclench the key to update now<br />
[ 2.560] key found, jump to fel<br />
</pre><br />
Device will answer to sunxi-fel:<br />
<pre>AWUSBFEX soc=00001625(A13) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000</pre><br />
<br />
<br />
To get out of FEL mode, press power button for 10s.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
Pocketbook uses a strange partition layout on this device:<br />
<pre>626.img1 1009664 7763967 6754304 3.2G b W95 FAT32<br />
626.img2 * 73728 139263 65536 32M 6 FAT16<br />
626.img3 1 1009664 1009664 493M 85 Linux extended<br />
626.img5 139264 172031 32768 16M 83 Linux<br />
626.img6 172032 204799 32768 16M 83 Linux<br />
626.img7 204800 275455 70656 34.5M 83 Linux<br />
626.img8 275456 776191 500736 244.5M 83 Linux<br />
626.img9 776192 976895 200704 98M 83 Linux<br />
626.img10 976896 1009663 32768 16M 83 Linux</pre><br />
<br />
boot1 seems to check a MBR at 0x01400000. Feeding it to sunxi-nand gives the following output:<br />
<pre>check partition table copy 0: mbr: version 0x00000100, magic softw311<br />
OK<br />
check partition table copy 1: mbr: version 0x00000100, magic softw311<br />
OK<br />
check partition table copy 2: mbr: version 0x00000100, magic softw311<br />
OK<br />
mbr: version 0x00000100, magic softw311<br />
8 partitions<br />
partition 1: class = DISK, name = bootloader, partition start = 32768, partition size = 65536 user_type=0<br />
partition 2: class = DISK, name = env, partition start = 98304, partition size = 32768 user_type=0<br />
partition 3: class = DISK, name = boot, partition start = 131072, partition size = 32768 user_type=0<br />
partition 4: class = DISK, name = rootfs, partition start = 163840, partition size = 70656 user_type=0<br />
partition 5: class = DISK, name = ebrmain, partition start = 234496, partition size = 500736 user_type=0<br />
partition 6: class = DISK, name = secure, partition start = 735232, partition size = 200704 user_type=0<br />
partition 7: class = DISK, name = updatefs, partition start = 935936, partition size = 32768 user_type=0<br />
partition 8: class = DISK, name = UDISK, partition start = 968704, partition size = 6754304 user_type=0</pre><br />
<br />
Which is consistent with fdisk output considering the 0x0140000 offset.<br />
<br />
Altering primary partition #1 and adding primary partition #4 is fine even if the MBR at 0x01400000 is not modified. But removing the other partitions makes boot1 fail the fs check and enter FEL mode.<br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
[[File:device_uart.jpg|thumb|240px|{{Remove|DEVICE}} UART pads]]<br />
<br />
Serial TTL signal pads are clearly labeled on the board. Soldering is required.<br />
<br />
== Device disassembly ==<br />
<br />
Insert the [[Plastic_tool]] between the back cover and the front cover. You can look at this video https://www.youtube.com/watch?v=c7AUData0UA<br />
Personally, I am using Dunlop 1.14mm guitar picks, it is not the most convenient but does the job.<br />
<br />
== Locating the UART ==<br />
<br />
{{Remove|Describe how to find the RX,TX,GND signals here, and mention the [[UART|UART howto]].}}<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PB626 TL2 - board.jpg<br />
File:PB626 TL2 - board2.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
{{Remove|List rebadged devices here.}}<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22800
PocketBook Touch Lux 3
2019-10-15T12:42:36Z
<p>Megous: /* Current status */ Update display driving todo</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
<br />
=== TODO ===<br />
<br />
* The display driver is now mature enough to allow for easy experimentation with the display.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
* Waveforms can be read using https://github.com/fread-ink/inkwave, precise meaning of data stored therein is still unclear, though<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
* Reduce data copying by using memory mapped buffers. (this can save ~ 800us)<br />
* Allow to interleave submission of a next buffer and processing of the current one (submission takes ~8ms with all the scheduling, copying and conversion of FB data to display control stream). This would allow for going from 50Hz update rate to ~100Hz<br />
* Write a tool to manage transitions between different display states using NEON intrinsics.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22799
PocketBook Touch Lux 3
2019-10-15T12:24:36Z
<p>Megous: /* ED060XD4 eInk display */ Add thermistor info</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
* Measure/identify the NTC resistor soldered to the FFC leading to the display (easily accessible).<br />
* Hook-up a driver for the NTC resistor to the IIO ADC / provide temperature readings to user-space.<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | NTC_1 | NCP18XH103F03RB NTC thermistor connected between 30 and 31<br />
-------------------------------------------------------------<br />
31 | | NTC_2 | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22798
PocketBook Touch Lux 3
2019-10-15T12:23:37Z
<p>Megous: /* List of HW */ Add thermistor info</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
* Measure/identify the NTC resistor soldered to the FFC leading to the display (easily accessible).<br />
* Hook-up a driver for the NTC resistor to the IIO ADC / provide temperature readings to user-space.<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
- NCP18XH103F03RB NTC thermistor connected on the FFC<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above (probably a NTC thermistor for temperature measurement)<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22790
PocketBook Touch Lux 3
2019-10-07T04:43:56Z
<p>Megous: /* Current status */ More PocketBook progress</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), including a kernel driver for controlling the eInk display via DEBE/TCON0 with an ability to precisely time the ink manipulation down to multiples of 50ns. The driver can achieve full speed (85Hz) communication with the display. Interface is via writing a framebuffer to a special character device /dev/eink-panel.<br />
* Instead of pushing all the complexity of parsing waveform data and figuring out what to do to move the ink from a current position to a new one to kernel space, the driver provides the base interface for writing a precisely timed frame to the display. Waveform parsing, temperature adjustment of timings, and choosing an algorithm to update different regions of the display is left to the userspace, where it can be much more easily experimented with and used to provide the best experience based on what content is displayed in what regions of the screen.<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format to see how the timings are specified.<br />
* Measure/identify the NTC resistor soldered to the FFC leading to the display (easily accessible).<br />
* Hook-up a driver for the NTC resistor to the IIO ADC / provide temperature readings to user-space.<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above (probably a NTC thermistor for temperature measurement)<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22789
PocketBook Touch Lux 3
2019-10-05T14:26:43Z
<p>Megous: /* ED060XD4 eInk display */ Add thermistor info</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), except for the eInk display.<br />
* PMIC for the eInk panel is properly supported and can be controlled from sysfs via userspace-regulator-consumer driver.<br />
* eInk display can be controlled via bit-banging on PD port from userspace. (for now)<br />
* eInk display interface is known, including timing and routing of signals to the SoC<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format<br />
* Investigate if bitbanging can be sped up by bumping the speed of the APB bus where the PIO is connected to<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way (analyzing this can help understand the waveform format)<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above (probably a NTC thermistor for temperature measurement)<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=User:Megous&diff=22784
User:Megous
2019-10-03T14:51:53Z
<p>Megous: </p>
<hr />
<div>I'm megi on IRC.<br />
<br />
I maintain kernels/patches for various boards I own, and publish them at https://xff.cz/kernels/, precompiled and ready to boot.<br />
<br />
My git trees are at: https://megous.com/git/<br />
<br />
My interest is in these boards:<br />
<br />
* Orange Pi One<br />
* Orange Pi PC<br />
* Orange Pi PC2<br />
* Orange Pi 3<br />
* TBS A711 tablet (A83T)<br />
* PocketBook Touch Lux 3 (A13)<br />
<br />
My current projects:<br />
<br />
* PocketBook Touch Lux 3 mainlining / eink display driving<br />
* AC100 codec<br />
* Orange Pi 3 mainlining<br />
* or1k processor description for Ghidra (https://megous.com/git/ghidra-or1k/)<br />
* I have some in-progress reverse engineering of Allwinner ARISC system management firmware for A83T and H3. Decompiled and identified general flow of suspend/resume to/from DRAM and required memory controller setup.<br />
* Adding suspend support to crust for A83T SoC</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22783
PocketBook Touch Lux 3
2019-10-02T23:16:42Z
<p>Megous: /* ED060XD4 eInk display */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), except for the eInk display.<br />
* PMIC for the eInk panel is properly supported and can be controlled from sysfs via userspace-regulator-consumer driver.<br />
* eInk display can be controlled via bit-banging on PD port from userspace. (for now)<br />
* eInk display interface is known, including timing and routing of signals to the SoC<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format<br />
* Investigate if bitbanging can be sped up by bumping the speed of the APB bus where the PIO is connected to<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way (analyzing this can help understand the waveform format)<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings (from a logic probe):<br />
<br />
[[File:ED060XD4-frame-start.png]]<br />
<br />
Frame end timings:<br />
<br />
[[File:ED060XD4-frame-end.png]]<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22782
PocketBook Touch Lux 3
2019-10-02T23:15:43Z
<p>Megous: /* ED060XD4 eInk display */ Add signal timing images</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), except for the eInk display.<br />
* PMIC for the eInk panel is properly supported and can be controlled from sysfs via userspace-regulator-consumer driver.<br />
* eInk display can be controlled via bit-banging on PD port from userspace. (for now)<br />
* eInk display interface is known, including timing and routing of signals to the SoC<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format<br />
* Investigate if bitbanging can be sped up by bumping the speed of the APB bus where the PIO is connected to<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way (analyzing this can help understand the waveform format)<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
Frame start timings:<br />
<br />
File:ED060XD4-frame-start.png<br />
<br />
Frame end timings:<br />
<br />
File:ED060XD4-frame-end.png<br />
<br />
CKH is missing, but it's just a boring 20MHz square clock signal.<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=File:ED060XD4-frame-end.png&diff=22781
File:ED060XD4-frame-end.png
2019-10-02T23:13:07Z
<p>Megous: Signals from a logic probe for ED060XD4 - end of the frame.</p>
<hr />
<div>Signals from a logic probe for ED060XD4 - end of the frame.</div>
Megous
https://linux-sunxi.org/index.php?title=File:ED060XD4-frame-start.png&diff=22780
File:ED060XD4-frame-start.png
2019-10-02T23:12:27Z
<p>Megous: Signals from a logic probe for ED060XD4 - start of the frame.</p>
<hr />
<div>Signals from a logic probe for ED060XD4 - start of the frame.</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22779
PocketBook Touch Lux 3
2019-10-02T22:52:24Z
<p>Megous: /* TODO */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), except for the eInk display.<br />
* PMIC for the eInk panel is properly supported and can be controlled from sysfs via userspace-regulator-consumer driver.<br />
* eInk display can be controlled via bit-banging on PD port from userspace. (for now)<br />
* eInk display interface is known, including timing and routing of signals to the SoC<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format<br />
* Investigate if bitbanging can be sped up by bumping the speed of the APB bus where the PIO is connected to<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way (analyzing this can help understand the waveform format)<br />
* Re-check USB0, if perhaps it can support at least a forced host mode. (would need a VBUS switch)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22778
PocketBook Touch Lux 3
2019-10-02T22:50:47Z
<p>Megous: /* Current status */ Update TODO</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
* Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches), except for the eInk display.<br />
* PMIC for the eInk panel is properly supported and can be controlled from sysfs via userspace-regulator-consumer driver.<br />
* eInk display can be controlled via bit-banging on PD port from userspace. (for now)<br />
* eInk display interface is known, including timing and routing of signals to the SoC<br />
<br />
=== TODO ===<br />
<br />
* Waveforms for the display are stored on the SPI NOR flash, analyze the format<br />
* Investigate if bitbanging can be sped up by bumping the speed of the APB bus where the PIO is connected to<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way (analyzing this can help understand the waveform format)<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22777
PocketBook Touch Lux 3
2019-10-02T22:44:43Z
<p>Megous: Drop empty section</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22776
PocketBook Touch Lux 3
2019-10-02T22:44:03Z
<p>Megous: /* Device disassembly */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
Front panel contains hooks that unlock when sticking sharp tool in between it and the back panel. Avoid bottom side of the device when opening, as it contains vulnerable cables and electronics.<br />
The back panel pops out almost too easily.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22775
PocketBook Touch Lux 3
2019-10-02T22:38:53Z
<p>Megous: Page is filled now</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22774
PocketBook Touch Lux 3
2019-10-02T22:36:31Z
<p>Megous: /* ED060XD4 eInk display */ Update with new info from reverse engineering</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
It turns out that ED060XD4 has the same interface as ED060XC5 or ED060XC3 (Touch Lux 2).<br />
<br />
The datasheet for ED060XC5 is available on the internet. It looks like ED060XG1 has also<br />
the same interface and its datasheet contains extra timing/interface<br />
information, that can be useful.<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|----------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | BORDER | Thin wire to the panel (border voltage)<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE - SPV | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK - CKV |<br />
8 | D15 | MODE 1 |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-------------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7 |<br />
16 | D11 | D6 |<br />
17 | D10 | D5 |<br />
18 | D7 | D4 |<br />
19 | D6 | D3 |<br />
20 | D5 | D2 |<br />
-------------------------------------------------------------<br />
21 | D4 | D1 |<br />
22 | D3 | D0 |<br />
23 | D21 | SD START PULSE - SPH | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE |<br />
25 | D13 | SD LE |<br />
26 | | GND |<br />
27 | D24 | SD CLK - CKH |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-------------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Timing of the signals produced by the vendor's edpc.ko driver was analyzed with<br />
a logical probe.<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
<br />
Driving the display<br />
-------------------<br />
<br />
Display power up needs to be sequenced:<br />
<br />
- VDD rail (V3P3 switch must be enabled over I2C)<br />
- 4 "High" voltage rails (default sequencing in the PMIC is good enough)<br />
- VCOM<br />
<br />
At the begining both SPV and SPH are high, the rest is low.<br />
<br />
Frame signals timing:<br />
<br />
- MODE1 high for the duration of the frame (no CKV clk is sent without MODE1 being high)<br />
- 5 CKV pulses after mode high<br />
- SPV goes low during the high state of the 2nd CKV pulse<br />
- SPV goes high during the high state of the 3nd CKV pulse<br />
- during the high state of 6th CKV pulse, row data start being shifted in:<br />
<br />
(a)<br />
- CKV goes high<br />
- SPH goes low<br />
- row data shifted in (CKV goes low in 3/4 of the data shift)<br />
- SPH goes high and OE goes low<br />
- ~2us<br />
- LE goes high<br />
- OE goes high<br />
- LE goes low<br />
- CKV goes high<br />
- go to (a) for a next row or (b) at the end of a frame<br />
<br />
(b) <br />
- end of frame<br />
- wait for the duration of row data cycle (last row needs to be applied)<br />
- CKV goes low (3/4 to the end)<br />
- OE goes low<br />
- MODE1 goes low<br />
<br />
Frame frequency can be up to 85Hz.<br />
<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22773
PocketBook Touch Lux 3
2019-10-02T22:07:35Z
<p>Megous: Added some geeky images ;)</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:PocketBookTouchLux3Front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:PocketBookTouchLux3Front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=File:PocketBookTouchLux3Front.jpg&diff=22772
File:PocketBookTouchLux3Front.jpg
2019-10-02T22:06:21Z
<p>Megous: </p>
<hr />
<div></div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22769
PocketBook Touch Lux 3
2019-10-01T01:51:27Z
<p>Megous: /* Identification */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22768
PocketBook Touch Lux 3
2019-10-01T01:51:09Z
<p>Megous: /* Identification */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>PocketBook Touch Lux 3/pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>IDIG E028 PB626 V1.6<br />
20141229</pre><br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22767
PocketBook Touch Lux 3
2019-10-01T01:49:50Z
<p>Megous: /* Current status */ Add todo</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>LIA-BB-V6.66<br />
1970-01-01</pre><br />
<br />
In android, under Settings->About Tablet, you will find:<br />
* Model Number: ''{{Edit|DEVICE}}''<br />
* Build Number: ''{{Edit|SOC_BOARD_DEVICE_*.*}}''<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
=== TODO ===<br />
<br />
* Finish full reverse engineering of the eInk display interface (PMIC driver is already implemented and tested, all that remains is figuring out the precise routing of source and gate drivers control signals)<br />
* Waveforms for the display are stored on the SPI NOR flash<br />
* Opensource epdc driver is available at https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc (can be used to figure out the waveform format, etc.) - PB's variant of this driver is not available, but it uses DEBE and TCON to communicate with the display in some semi-adhoc way<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22766
PocketBook Touch Lux 3
2019-10-01T01:41:24Z
<p>Megous: /* Pictures */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>LIA-BB-V6.66<br />
1970-01-01</pre><br />
<br />
In android, under Settings->About Tablet, you will find:<br />
* Model Number: ''{{Edit|DEVICE}}''<br />
* Build Number: ''{{Edit|SOC_BOARD_DEVICE_*.*}}''<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22765
PocketBook Touch Lux 3
2019-10-01T01:41:12Z
<p>Megous: /* Pictures */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>LIA-BB-V6.66<br />
1970-01-01</pre><br />
<br />
In android, under Settings->About Tablet, you will find:<br />
* Model Number: ''{{Edit|DEVICE}}''<br />
* Build Number: ''{{Edit|SOC_BOARD_DEVICE_*.*}}''<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:PBTL3-board.jpeg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=File:PBTL3-board.jpeg&diff=22764
File:PBTL3-board.jpeg
2019-10-01T01:40:34Z
<p>Megous: PocketBook Touch Lux 3 baord</p>
<hr />
<div>PocketBook Touch Lux 3 baord</div>
Megous
https://linux-sunxi.org/index.php?title=PocketBook_Touch_Lux_3&diff=22763
PocketBook Touch Lux 3
2019-10-01T01:37:13Z
<p>Megous: Add PocketBook touch lux 3</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:Device_front.jpg|250px]]<br />
| manufacturer = [https://pocketbook-int.com/ PocketBook]<br />
| dimensions = 114.6mm x 174.4mm x 8.3mm<br />
| release_date = 2015?<br />
| website = [https://www.pocketbook-int.com/us/support/pocketbook-touch-lux-3 Device Product Page]<br />
| soc = [[A13]] @ 1Ghz<br />
| dram = 256MiB DDR3 @ 408MHz<br />
| spi-nor = 512KiB MX25U4033 (on edp FFC cable)<br />
| power = USB 5V @ 0.5-1A, 1500mAh 3.7V Li-Ion battery<br />
| lcd = 1024x758 (6")<br />
| touchscreen = multi-finger capacitive (Cypress TMA445 / fw 0x0108)<br />
| video = proprietary eInk display / ED060XD4<br />
| audio = none<br />
| network = WiFi 802.11 b/g/n ([[Wifi#Realtek|RTL8188EUS]]) over USB<br />
| storage = 2x µSD (one internal, one external), SPI NOR<br />
| usb = 1x internal USB2.0 Host, 1x USB2.0 OTG (external, peripheral mode only)<br />
| camera = none<br />
| other = AXP209, TP65185 PMICs, pcf8563 RTC<br />
| headers = UART<br />
}}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
{{Remove|This section explains how to most easily identify your device. For a development board, explain the name(s) printed on the board. For an android device, find out the strings as reported under settings.}}<br />
<br />
On the back of the device, the following is printed:<br />
<pre>Manufacturer Marketing Name<br />
ModelNumber</pre><br />
<br />
The PCB has the following silkscreened on it:<br />
<pre>LIA-BB-V6.66<br />
1970-01-01</pre><br />
<br />
In android, under Settings->About Tablet, you will find:<br />
* Model Number: ''{{Edit|DEVICE}}''<br />
* Build Number: ''{{Edit|SOC_BOARD_DEVICE_*.*}}''<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Full mainline/linux/u-boot support for all HW (with some extra out-of-tree patches). eInk display needs bit-banging on PD via /dev/mem, for now.<br />
<br />
== Images ==<br />
<br />
Pre-built kernel/u-boot available at https://xff.cz/kernels<br />
<br />
== BSP ==<br />
<br />
* https://github.com/pocketbook/Platform_A13 (does not contain code for all drivers, code for cyttsp4.ko, epdc.ko is missing)<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
No u-boot code is available from the manufacturer.<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/u-boot/log/?h=opi-v2019.10<br />
<br />
Use the ''pocketbook_touch_lux_3_defconfig'' build target.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Mainline kernel ====<br />
<br />
Not yet upstreamed, but patches are available here for now:<br />
<br />
* https://xff.cz/git/linux/log/?h=pb-5.4<br />
<br />
Use the ''sun5i-a13-pocketbook-touch-lux-3.dtb'' device-tree binary and ''pocketbook_touch_lux_3_defconfig'' config.<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* you can bit-bang eInk display on PD port<br />
<br />
== FEL mode ==<br />
<br />
The {{Edit|something}} button triggers [[FEL | FEL mode]].<br />
<br />
== List of HW ==<br />
<br />
Reverse enginnered:<br />
<br />
<pre><br />
SoC: A13 rev b<br />
<br />
DRAM: 256MiB (Samsung k4b2g1646q-bck0)<br />
<br />
Internal uSD card slot (4-bit) (MMC2)<br />
- works out of the box<br />
<br />
External uSD card slot (4-bit) (MMC0)<br />
- PE4 needs to be driven low to enable it<br />
- PG0 is connected to CD<br />
- can't boot<br />
<br />
ED060XD4 display with touch panel and backlight<br />
+ MX25U4033 512kB flash on the dispaly FFC (SPI)<br />
+ Cypress TMA445 FW 0x0108 touch controller<br />
+ TP65185 eInk voltage regulator<br />
<br />
Serial debug port at PG3/PG4 3.3V (UART1)<br />
<br />
I2C devices:<br />
<br />
I2C-0 (PB0/PB1)<br />
AXP209 @0x34 (CHIP ID: 0x41)<br />
LDO1 1.3V (1.3V)<br />
LDO2 3V (1.8-3.3V)<br />
LDO3 3.3V (0.7-3.5V) - powers wifi chip (needs slew rate control on enable)<br />
LDO4 3.3V (1.2-3.3V)<br />
BUCK2 1.4V (0.7-2.275V)<br />
BUCK3 1.2V (0.7-3.5V)<br />
LDOIO0 1.8V (1.8V)<br />
<br />
- POK key input<br />
<br />
I2C-1 (PB15/PB16)<br />
- RTC / pcf8563 @0x51<br />
- TP65185 @0x68<br />
<br />
I2C-2 (PB17/PB18)<br />
- Cypress TMA445 @0x24<br />
- Power 1.8V<br />
- Enabled by PC15=1 and PC13=1<br />
<br />
SPI devices:<br />
<br />
SPI-2 (PE0-PE3)<br />
- MX25U4033<br />
- Power 1.8V<br />
- enabled by PC15=1 and PC14=1<br />
- PE1 kills usb bus?<br />
<br />
Backlight via PWM:<br />
- enable at PB4<br />
- pwm at PB2<br />
<br />
GPIO buttons:<br />
- at PG9 and PG10<br />
<br />
Power LED:<br />
- at PE8<br />
<br />
USB:<br />
- host controller connected to the USB wifi chip<br />
<br />
WiFi:<br />
- RTL8188EUS 802.11n Wireless Network Adapter<br />
- 0x0bda:0x8179<br />
- CHIP_8188E_Normal_Chip_TSMC_UNKNOWN_CUT(10)_1T1R_RomVer(0)<br />
- EEPROM ID=0x8129<br />
<br />
USB OTG:<br />
- only peripheral mode, as ID detection pin is not routed to SoC<br />
- id-det from fex should be at PG2, but does not react to plug-in<br />
- vbus is not controllable<br />
- detection should be at PG1 (not tested)<br />
- vbus enable shoudld be at PG12 (not working)<br />
</pre><br />
<br />
Also see DTS file, wich contains more details.<br />
<br />
== ED060XD4 eInk display ==<br />
<br />
This display is sold in 3 variants on the internet. Just eInk display panel, + backlight, + backlight and touch.<br />
<br />
Current status of reverse engineering:<br />
<br />
<pre><br />
FFP pinout: (reverse engieneered)<br />
---------------------------------<br />
<br />
FFP pin | SoC | Meaning | Open questions?<br />
--------|-------|--------------------|---------------------<br />
1 | | 22V |<br />
2 | | 15V |<br />
3 | | GND |<br />
4 | | ??? | Thin wire to the panel<br />
5 | | Flash VCC 1.8V | PC14 and PC15 are set (thicker wire)<br />
6 | D23 | GA START PULSE? | somehow special (set to 1 when not transmitting)<br />
7 | D22 | GA CLK? |<br />
8 | D15 | GA OE? |<br />
9 | | GND |<br />
10 | PE3 | Flash SO |<br />
-----------------------------------------------------------<br />
11 | PE0 | Flash CS# |<br />
12 | PE2 | Flash SI |<br />
13 | PE1 | Flash SCLK | shuts down USB when used<br />
14 | | -3V (VCOM) | thicker wire<br />
15 | D12 | D7? |<br />
16 | D11 | D6? |<br />
17 | D10 | D5? |<br />
18 | D7 | D4? |<br />
19 | D6 | D3? |<br />
20 | D5 | D2? |<br />
-----------------------------------------------------------<br />
21 | D4 | D1? |<br />
22 | D3 | D0? |<br />
23 | D21 | SD START PULSE? | somehow special (set to 1 when not transmitting)<br />
24 | D20 | SD OE? |<br />
25 | D13 | SD LE? |<br />
26 | | GND |<br />
27 | D24 | SD CLK |<br />
28 | | GND |<br />
29 | | 3.2V (VDD) |<br />
30 | | ??? | 30 + 31 are tied via some black resistor below the flash chip<br />
-----------------------------------------------------------<br />
31 | | ??? | see 30 above<br />
32 | | GND |<br />
33 | | -20V |<br />
34 | | -15V |<br />
<br />
<br />
Cable contains MX25U4033 serial 1.8V flash<br />
------------------------------------------<br />
<br />
4Mbit / 500kB (possibly for wave data)<br />
<br />
pinout:<br />
<br />
CS# 1 \/ 8 VCC<br />
SO 2 7 HOLD#<br />
WP# 3 6 SCLK<br />
GND 4 5 SI<br />
<br />
#HOLD tied to GND<br />
#WP tied to VCC<br />
</pre><br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
* UART has nice big pads on the side of the board, easy to solder some wires to<br />
* pads are clearly marked<br />
* 3.3V<br />
<br />
== Device disassembly ==<br />
<br />
{{Remove|If necessary, provide a short description of how to open the device. Perhaps explain how the pins can be most easily popped. If pins do need to be popped, mention the [[Plastic_tool|Plastic tool howto]].}}<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:Device_buttons_1.jpg<br />
File:Device_buttons_2.jpg<br />
File:Device_board_front.jpg<br />
File:Device_board_back.jpg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
* PocketBook 626(2)<br />
<br />
= See also =<br />
<br />
{{Remove|Add some nice to have links here. This includes related devices, and external links.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:CATEGORY]]</div>
Megous
https://linux-sunxi.org/index.php?title=User:Megous&diff=22762
User:Megous
2019-10-01T01:06:45Z
<p>Megous: </p>
<hr />
<div>I'm megi on IRC.<br />
<br />
I maintain kernels/patches for various boards I own, and publish them at https://xff.cz/kernels/, precompiled and ready to boot.<br />
<br />
My git trees are at: https://megous.com/git/<br />
<br />
My interest is in these boards:<br />
<br />
* Orange Pi One<br />
* Orange Pi PC<br />
* Orange Pi PC2<br />
* Orange Pi 3<br />
* TBS A711 tablet<br />
* PocketBook Touch Lux 3<br />
<br />
My current projects:<br />
<br />
* PocketBook Touch Lux 3 mainlining / eink display driving<br />
* AC100 codec<br />
* Orange Pi 3 mainlining<br />
* or1k processor description for Ghidra (https://megous.com/git/ghidra-or1k/)<br />
* I have some in-progress reverse engineering of Allwinner ARISC system management firmware for A83T and H3. Decompiled and identified general flow of suspend/resume to/from DRAM and required memory controller setup.<br />
* Adding suspend support to crust for A83T SoC</div>
Megous
https://linux-sunxi.org/index.php?title=Talk:PocketBook_Touch_Lux_2_(626)&diff=22754
Talk:PocketBook Touch Lux 2 (626)
2019-09-27T17:21:17Z
<p>Megous: /* Micro SD issue */ More info on MMC0 issue</p>
<hr />
<div>If anyone is interested, let's discuss it.<br />
<br />
== Micro SD issue ==<br />
<br />
I cannot get MMC0 (external slot) working properly, neither in u-boot nor in linux.<br />
MMC2 is ok: u-boot uses it, properly initializes it, reads partitions etc., starts linux kernel. Linux kernel sees it and runs on it, etc.<br />
<br />
With default sun5i-a13-olinuxino settings, external micro SD card inserted/ejection is properly detected, but initializing card does not work (nothing in u-boot, various errors in linux, depending on the inserted card).<br />
My hardware does not seem to be faulty since if I boot factory firmware, it is working properly.<br />
I tried tweaking various properties in device tree, but at best it does not change anything.<br />
<br />
Megous: Extra gpio PE04 needs to be enabled and pulled low to make MMC0 work. (verified) There may be HW mod possible, to cut the PE4 line to the SoC and tie it to GND, which may make external SD card bootable. Without it PE4 is in HiZ after SoC reset, and BROM will not be able to read the MMC0 card.<br />
<br />
== eInk driver ==<br />
<br />
There is an EPDC kernel module in default firmware, but it seems it is closed source.<br />
<br />
Megous: There's code for epdc module in https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc . It looks like it has the interface PocketBook reader app uses from a quick decompilation check on the app (same iocts, same interface, as far as I can see). There's also https://github.com/pazos/linux-3.0.35-kobo/blob/master/drivers/video/mxc/lk_tps65185.c for EPD PMIC that's also on the PocketBook. The driver will most probably not be usable in the sunxi tree. Sunxi tree also has a eink driver as a part of display engine code, which is unused on the PocketBook, but may serve as an inspiration.<br />
<br />
== LED ==<br />
<br />
The device tree must be modified, from:<br/><br />
<code><pre> power {<br />
gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PG9";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
to:<br />
<code><pre> led0 {<br />
gpios = <&pio 4 8 GPIO_ACTIVE_LOW>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PE8";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
Then:<br />
<code><pre>echo 0 > /sys/class/leds/led0/brightness # shuts off the led<br />
echo 255 > /sys/class/leds/led0/brightness # bring on the led</pre></code><br />
<br />
== network ==<br />
<br />
enable staging driver eu8188eu in kernel menuconfig.<br />
<br />
Megous: WiFi needs a little care during powerup, especially if LDO3 is not brought up by u-boot. There are some patches since 2019 in the mainline axp209 driver to enable slew rate control and soft startup of the regulator. Without using this, the PMIC may shutdown when powering up the wifi.<br />
<br />
== rtc ==<br />
<br />
<del>enabling driver "Haoyu Microelectronics HYM8563" does not seem to be enough to get /dev/rtc0.</del><br />
<br/><br />
Oops... looks like it takes this one instead: "Philips PCF8563/Epson RTC8564". Device tree must also be modified from:<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
};<br />
</pre></code><br />
to<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
pcf8563: rtc@51 {<br />
compatible = "nxp,pcf8563";<br />
reg = <0x51>;<br />
};<br />
};<br />
</pre></code><br />
<br />
== Status ==<br />
<br />
As of today 2018-07-30, I run a 4.18.0-rc6 kernel.<br/><br />
I downloaded an Arch Linux image for A10. I boot my kernel, and use Arch Linux userland with my kernel modules.<br/><br />
Kind of working.<br/><br />
I have the problems mentioned above.</div>
Megous
https://linux-sunxi.org/index.php?title=HW_Register_Tools&diff=22753
HW Register Tools
2019-09-27T14:37:33Z
<p>Megous: </p>
<hr />
<div>To help with debugging registers in Allwinner SoCs and related chips (like PMICs, codecs, etc.), you can use tools and register definitions found here: https://megous.com/git/sunxi-registers/<br />
<br />
* You can dump registers<br />
* You can generate C header files<br />
<br />
The repository contains register definition files for various Allwinner related chips. Feel free to contribute more.<br />
<br />
See the README (https://megous.com/git/sunxi-registers/about/) inside the repository for more information. <br />
<br />
[[Category:Software]]</div>
Megous
https://linux-sunxi.org/index.php?title=HW_Register_Tools&diff=22752
HW Register Tools
2019-09-27T14:37:14Z
<p>Megous: Add info about tools to help analyze HW registers</p>
<hr />
<div>= HW register debugging tools =<br />
<br />
To help with debugging registers in Allwinner SoCs and related chips (like PMICs, codecs, etc.), you can use tools and register definitions found here: https://megous.com/git/sunxi-registers/<br />
<br />
* You can dump registers<br />
* You can generate C header files<br />
<br />
The repository contains register definition files for various Allwinner related chips. Feel free to contribute more.<br />
<br />
See the README (https://megous.com/git/sunxi-registers/about/) inside the repository for more information. <br />
<br />
[[Category:Software]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22751
Xunlong Orange Pi 3
2019-09-26T15:24:14Z
<p>Megous: /* Mainline U-Boot */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ 744MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: GPU, USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
Alternatively, there are some patches that add support, being prepared here: https://megous.com/git/u-boot/log/?h=opi-v2019.10 (those with orange pi 3 in the subject)<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
</gallery><br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22750
Xunlong Orange Pi 3
2019-09-26T15:20:16Z
<p>Megous: Add dram clock speed</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ 744MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: GPU, USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
</gallery><br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22749
Xunlong Orange Pi 3
2019-09-26T15:18:20Z
<p>Megous: /* Pictures */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: GPU, USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
<gallery><br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
</gallery><br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22748
Xunlong Orange Pi 3
2019-09-26T15:17:19Z
<p>Megous: Drop useless sections</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: GPU, USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
</gallery><br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22747
Xunlong Orange Pi 3
2019-09-26T15:14:09Z
<p>Megous: /* Current status */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: GPU, USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Images ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE specific sunxi ROM images here. E.g. a livesuit image or some other linux image which uses linux-sunxi code. Do not put non-sunxi images here, they should live under [[#See_also|See also]]. If no sunxi based images are available, this section can be removed.}}<br />
<br />
== HW-Pack ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi HW-pack specifics here. When empty, this section can be removed.}}<br />
<br />
== BSP ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi BSP specifics here. When empty, this section can be removed.}}<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
== {{Edit|...}} ==<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
{{Remove|List rebadged devices here.}}<br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22746
Xunlong Orange Pi 3
2019-09-26T15:12:56Z
<p>Megous: Update with current information</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
Mainline kernel as of 5.4-rc1 only lacks support for: USB 3, Ethernet, Bluetooth, thermal sensor, DVFS and thermal regulation.<br />
<br />
All of the above is supported with out of tree patches.<br />
<br />
== Images ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE specific sunxi ROM images here. E.g. a livesuit image or some other linux image which uses linux-sunxi code. Do not put non-sunxi images here, they should live under [[#See_also|See also]]. If no sunxi based images are available, this section can be removed.}}<br />
<br />
== HW-Pack ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi HW-pack specifics here. When empty, this section can be removed.}}<br />
<br />
== BSP ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi BSP specifics here. When empty, this section can be removed.}}<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.4<br />
<br />
The tree contains support for USB ports, Ethernet, and Bluetooth.<br />
<br />
* This branch contains support for thermal sensor, DVFS and thermal regulation:<br />
<br />
https://megous.com/git/linux/log/?h=ths-5.4<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). The board can be powered via DC input or via microUSB with a PSU like an [https://www.amazon.de/gp/product/B01M58O9M9 Aukru 5V 3A]; powering from an USB 3 port should work but is untested.<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
* UBoot does not support PMIC that's used on the board, and doesn't turn off ethernet PHY regulators after reboot, whic may lead to PHY initialization failures during reboot in some configurations.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct connection between microUSB VBUS and DCIN.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
== {{Edit|...}} ==<br />
<br />
= Using serial port =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
{{Remove|List rebadged devices here.}}<br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous
https://linux-sunxi.org/index.php?title=Talk:PocketBook_Touch_Lux_2_(626)&diff=22726
Talk:PocketBook Touch Lux 2 (626)
2019-09-24T14:31:06Z
<p>Megous: /* network */ Wifi power up info</p>
<hr />
<div>If anyone is interested, let's discuss it.<br />
<br />
== Micro SD issue ==<br />
<br />
I cannot get MMC0 (external slot) working properly, neither in u-boot nor in linux.<br />
MMC2 is ok: u-boot uses it, properly initializes it, reads partitions etc., starts linux kernel. Linux kernel sees it and runs on it, etc.<br />
<br />
With default sun5i-a13-olinuxino settings, external micro SD card inserted/ejection is properly detected, but initializing card does not work (nothing in u-boot, various errors in linux, depending on the inserted card).<br />
My hardware does not seem to be faulty since if I boot factory firmware, it is working properly.<br />
I tried tweaking various properties in device tree, but at best it does not change anything.<br />
<br />
Megous: Extra gpio PE04 needs to be enabled to make MMC0 work. There may be HW mod possible, to cut the PE4 line to the SoC and tie it to 3.3V, which may make external SD card bootable. Without it PE4 is in HiZ after SoC reset, and BROM will not be able to read the MMC0 card. (not verified yet)<br />
<br />
== eInk driver ==<br />
<br />
There is an EPDC kernel module in default firmware, but it seems it is closed source.<br />
<br />
Megous: There's code for epdc module in https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc . It looks like it has the interface PocketBook reader app uses from a quick decompilation check on the app (same iocts, same interface, as far as I can see). There's also https://github.com/pazos/linux-3.0.35-kobo/blob/master/drivers/video/mxc/lk_tps65185.c for EPD PMIC that's also on the PocketBook. The driver will most probably not be usable in the sunxi tree. Sunxi tree also has a eink driver as a part of display engine code, which is unused on the PocketBook, but may serve as an inspiration.<br />
<br />
== LED ==<br />
<br />
The device tree must be modified, from:<br/><br />
<code><pre> power {<br />
gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PG9";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
to:<br />
<code><pre> led0 {<br />
gpios = <&pio 4 8 GPIO_ACTIVE_LOW>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PE8";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
Then:<br />
<code><pre>echo 0 > /sys/class/leds/led0/brightness # shuts off the led<br />
echo 255 > /sys/class/leds/led0/brightness # bring on the led</pre></code><br />
<br />
== network ==<br />
<br />
enable staging driver eu8188eu in kernel menuconfig.<br />
<br />
Megous: WiFi needs a little care during powerup, especially if LDO3 is not brought up by u-boot. There are some patches since 2019 in the mainline axp209 driver to enable slew rate control and soft startup of the regulator. Without using this, the PMIC may shutdown when powering up the wifi.<br />
<br />
== rtc ==<br />
<br />
<del>enabling driver "Haoyu Microelectronics HYM8563" does not seem to be enough to get /dev/rtc0.</del><br />
<br/><br />
Oops... looks like it takes this one instead: "Philips PCF8563/Epson RTC8564". Device tree must also be modified from:<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
};<br />
</pre></code><br />
to<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
pcf8563: rtc@51 {<br />
compatible = "nxp,pcf8563";<br />
reg = <0x51>;<br />
};<br />
};<br />
</pre></code><br />
<br />
== Status ==<br />
<br />
As of today 2018-07-30, I run a 4.18.0-rc6 kernel.<br/><br />
I downloaded an Arch Linux image for A10. I boot my kernel, and use Arch Linux userland with my kernel modules.<br/><br />
Kind of working.<br/><br />
I have the problems mentioned above.</div>
Megous
https://linux-sunxi.org/index.php?title=Talk:PocketBook_Touch_Lux_2_(626)&diff=22725
Talk:PocketBook Touch Lux 2 (626)
2019-09-24T14:29:02Z
<p>Megous: /* eInk driver */ Eink driver info</p>
<hr />
<div>If anyone is interested, let's discuss it.<br />
<br />
== Micro SD issue ==<br />
<br />
I cannot get MMC0 (external slot) working properly, neither in u-boot nor in linux.<br />
MMC2 is ok: u-boot uses it, properly initializes it, reads partitions etc., starts linux kernel. Linux kernel sees it and runs on it, etc.<br />
<br />
With default sun5i-a13-olinuxino settings, external micro SD card inserted/ejection is properly detected, but initializing card does not work (nothing in u-boot, various errors in linux, depending on the inserted card).<br />
My hardware does not seem to be faulty since if I boot factory firmware, it is working properly.<br />
I tried tweaking various properties in device tree, but at best it does not change anything.<br />
<br />
Megous: Extra gpio PE04 needs to be enabled to make MMC0 work. There may be HW mod possible, to cut the PE4 line to the SoC and tie it to 3.3V, which may make external SD card bootable. Without it PE4 is in HiZ after SoC reset, and BROM will not be able to read the MMC0 card. (not verified yet)<br />
<br />
== eInk driver ==<br />
<br />
There is an EPDC kernel module in default firmware, but it seems it is closed source.<br />
<br />
Megous: There's code for epdc module in https://github.com/pazos/linux-3.0.35-kobo/tree/master/drivers/video/mxc . It looks like it has the interface PocketBook reader app uses from a quick decompilation check on the app (same iocts, same interface, as far as I can see). There's also https://github.com/pazos/linux-3.0.35-kobo/blob/master/drivers/video/mxc/lk_tps65185.c for EPD PMIC that's also on the PocketBook. The driver will most probably not be usable in the sunxi tree. Sunxi tree also has a eink driver as a part of display engine code, which is unused on the PocketBook, but may serve as an inspiration.<br />
<br />
== LED ==<br />
<br />
The device tree must be modified, from:<br/><br />
<code><pre> power {<br />
gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PG9";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
to:<br />
<code><pre> led0 {<br />
gpios = <&pio 4 8 GPIO_ACTIVE_LOW>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PE8";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
Then:<br />
<code><pre>echo 0 > /sys/class/leds/led0/brightness # shuts off the led<br />
echo 255 > /sys/class/leds/led0/brightness # bring on the led</pre></code><br />
<br />
== network ==<br />
<br />
enable staging driver eu8188eu in kernel menuconfig.<br />
<br />
== rtc ==<br />
<br />
<del>enabling driver "Haoyu Microelectronics HYM8563" does not seem to be enough to get /dev/rtc0.</del><br />
<br/><br />
Oops... looks like it takes this one instead: "Philips PCF8563/Epson RTC8564". Device tree must also be modified from:<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
};<br />
</pre></code><br />
to<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
pcf8563: rtc@51 {<br />
compatible = "nxp,pcf8563";<br />
reg = <0x51>;<br />
};<br />
};<br />
</pre></code><br />
<br />
== Status ==<br />
<br />
As of today 2018-07-30, I run a 4.18.0-rc6 kernel.<br/><br />
I downloaded an Arch Linux image for A10. I boot my kernel, and use Arch Linux userland with my kernel modules.<br/><br />
Kind of working.<br/><br />
I have the problems mentioned above.</div>
Megous
https://linux-sunxi.org/index.php?title=Talk:PocketBook_Touch_Lux_2_(626)&diff=22724
Talk:PocketBook Touch Lux 2 (626)
2019-09-24T14:21:39Z
<p>Megous: /* Micro SD issue */ Some extra info on MMC0</p>
<hr />
<div>If anyone is interested, let's discuss it.<br />
<br />
== Micro SD issue ==<br />
<br />
I cannot get MMC0 (external slot) working properly, neither in u-boot nor in linux.<br />
MMC2 is ok: u-boot uses it, properly initializes it, reads partitions etc., starts linux kernel. Linux kernel sees it and runs on it, etc.<br />
<br />
With default sun5i-a13-olinuxino settings, external micro SD card inserted/ejection is properly detected, but initializing card does not work (nothing in u-boot, various errors in linux, depending on the inserted card).<br />
My hardware does not seem to be faulty since if I boot factory firmware, it is working properly.<br />
I tried tweaking various properties in device tree, but at best it does not change anything.<br />
<br />
Megous: Extra gpio PE04 needs to be enabled to make MMC0 work. There may be HW mod possible, to cut the PE4 line to the SoC and tie it to 3.3V, which may make external SD card bootable. Without it PE4 is in HiZ after SoC reset, and BROM will not be able to read the MMC0 card. (not verified yet)<br />
<br />
== eInk driver ==<br />
<br />
There is an EPDC kernel module in default firmware, but it seems it is closed source.<br />
<br />
== LED ==<br />
<br />
The device tree must be modified, from:<br/><br />
<code><pre> power {<br />
gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PG9";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
to:<br />
<code><pre> led0 {<br />
gpios = <&pio 4 8 GPIO_ACTIVE_LOW>;<br />
default-state = "on";<br />
};<br />
<br />
...<br />
<br />
led_pins_olinuxino: led_pins@0 {<br />
pins = "PE8";<br />
function = "gpio_out";<br />
drive-strength = <20>;<br />
};</pre></code><br />
Then:<br />
<code><pre>echo 0 > /sys/class/leds/led0/brightness # shuts off the led<br />
echo 255 > /sys/class/leds/led0/brightness # bring on the led</pre></code><br />
<br />
== network ==<br />
<br />
enable staging driver eu8188eu in kernel menuconfig.<br />
<br />
== rtc ==<br />
<br />
<del>enabling driver "Haoyu Microelectronics HYM8563" does not seem to be enough to get /dev/rtc0.</del><br />
<br/><br />
Oops... looks like it takes this one instead: "Philips PCF8563/Epson RTC8564". Device tree must also be modified from:<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
};<br />
</pre></code><br />
to<br />
<code><pre>&i2c1 {<br />
pinctrl-names = "default";<br />
pinctrl-0 = <&i2c1_pins_a>;<br />
status = "okay";<br />
pcf8563: rtc@51 {<br />
compatible = "nxp,pcf8563";<br />
reg = <0x51>;<br />
};<br />
};<br />
</pre></code><br />
<br />
== Status ==<br />
<br />
As of today 2018-07-30, I run a 4.18.0-rc6 kernel.<br/><br />
I downloaded an Arch Linux image for A10. I boot my kernel, and use Arch Linux userland with my kernel modules.<br/><br />
Kind of working.<br/><br />
I have the problems mentioned above.</div>
Megous
https://linux-sunxi.org/index.php?title=Xunlong_Orange_Pi_3&diff=22660
Xunlong Orange Pi 3
2019-08-23T10:23:37Z
<p>Megous: /* Manual build */</p>
<hr />
<div>{{Infobox Board<br />
| image = [[File:orangepi3_top.jpeg|250px]]<br />
| manufacturer = [http://www.orangepi.org OrangePi]<br />
| dimensions = 90''mm'' x 64''mm''<br />
| release_date = January 2019<br />
| website = [http://www.orangepi.org/Orange%20Pi%203/ Orange Pi 3 Product Page]<br />
| soc = [[H6]] @ 1.8 Ghz<br />
| dram = 1GiB/2GiB LPDDR3 @ {{Edit|xxx}}MHz<br />
| nand = 8GB eMMC (optional)<br />
| power = DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)<br />
| video = HDMI type A full, composite on AV port<br />
| audio = 3.5mm headphone plug, HDMI, onboard microphone<br />
| network = WiFi 802.11 b/g/n/ac (AP6256), 10/100/1000Mbps Ethernet ([[Ethernet#Realtek_RTL8211E|Realtek RTL8211E]])<br />
| storage = µSD, optional soldered eMMC<br />
| usb = 1 USB2.0 Host, 1 USB2.0 OTG, 4 x USB3.0 host (via hub chip)<br />
| other = infrared receiver, PCIe ([[H6#Errata|broken in SoC]])<br />
| headers = 26 pin GPIO, 3 pin UART }}<br />
<br />
{{Remove_only_when_finished|This page needs to be properly filled according to the [[New_Device_howto |New Device Howto]] and the [[New_Device_page|New Device Page guide]].}}<br />
<br />
{{Remove|If a device is special, then feel free to provide a terse description of what makes this device so special. But terse, no novels, no marketing blurb.}}<br />
<br />
= Identification =<br />
<br />
The currently sold board has the following text on top: ''Orange Pi 3 v1.5''.<br />
<br />
= Sunxi support =<br />
<br />
== Current status ==<br />
<br />
USB, Ethernet, WiFi, Bluetooth, HDMI, DVFS and thermal regulation works on mainline linux with some trivial out-of-tree patches.<br />
<br />
== Images ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE specific sunxi ROM images here. E.g. a livesuit image or some other linux image which uses linux-sunxi code. Do not put non-sunxi images here, they should live under [[#See_also|See also]]. If no sunxi based images are available, this section can be removed.}}<br />
<br />
== HW-Pack ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi HW-pack specifics here. When empty, this section can be removed.}}<br />
<br />
== BSP ==<br />
<br />
{{Remove|Optional. Add MANUFACTURER DEVICE sunxi BSP specifics here. When empty, this section can be removed.}}<br />
<br />
== Manual build ==<br />
<br />
You can build things for yourself by following our [[Manual_build_howto | Manual build howto]] and by choosing from the configurations available below.<br />
<br />
=== U-Boot ===<br />
<br />
==== Sunxi/Legacy U-Boot ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_uboot - BSP U-Boot<br />
<br />
==== Mainline U-Boot ====<br />
<br />
Direct support for this board is not yet in the mainline U-Boot, but it is possible to use U-Boot built for Orange Pi One Plus combined with ATF built with PLAT=sun50i_h6.<br />
<br />
=== Linux Kernel ===<br />
<br />
==== Sunxi/Legacy Kernel ====<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external - FEX/WiFi firmware files<br />
* https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9 - BSP kernel<br />
<br />
Config name is ''OrangePiH6_3_defconfig''<br />
<br />
==== Mainline kernel ====<br />
<br />
Use the '''sun50i-h6-orangepi-3.dts''' device-tree binary (available since kernel 5.2).<br />
<br />
Mainline Linux kernel device tree file for this board is being prepared in this Linux tree:<br />
<br />
* https://megous.com/git/linux/log/?h=opi3-5.1<br />
<br />
The tree contains support for USB ports, Ethernet, WiFi, Bluetooth, RTC, HDMI, DVFS and thermal regulation.<br />
<br />
==== Firmware files ====<br />
<br />
For WiFi, you'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt configuration that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
Mainline brcmfmac driver expects the firmware and nvram at the following paths relative to the firmware directory:<br />
<br />
* brcm/brcmfmac43456-sdio.bin<br />
* brcm/brcmfmac43456-sdio.txt<br />
<br />
For Bluetooth 5.0, you'll need a BCM4345C5.hcd firmware file that can be found in the Xulongs's repository for H6:<br />
<br />
* https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256<br />
<br />
The driver expects the firmware at the following path relative to the<br />
firmware directory:<br />
<br />
* brcm/BCM4345C5.hcd<br />
<br />
= Tips, Tricks, Caveats =<br />
<br />
* USB power rails are directly connected to the 5V input power, including on the micro USB connector (you'll have trouble powering the board from the DC jack, and using the microUSB port to connect the board to a PC at the same time). OTOH, the board can probably be powered from a USB 3 port via microUSB (untested).<br />
* The schematic specifies a total current limit of 1.5A per the double USB 3.0 connector.<br />
* The schematic shows optional polyfuse circuit to limit the USB current, but there's no polyfuse on the v1.5 of the board.<br />
<br />
== FEL mode ==<br />
<br />
* If you try this, beware of the direct conenction between microUSB VBUS and DCIN.<br />
<br />
== {{Edit|Device specific topic}} ==<br />
<br />
{{Remove|If there are no further device specific topics to add, remove these sections.}}<br />
<br />
== {{Edit|...}} ==<br />
<br />
= Adding a serial port ('''voids warranty''') =<br />
<br />
Like with other Orange Pi boards, UART uses 3.3V signalling and is 5V tolerant so you can use any of the usual USB-UART dongles. UART pin header is easily accessible.<br />
<br />
== Locating the UART ==<br />
<br />
UART is located between the mic and the power on key. Pin order: GND-RX-TX. GND is marked by a white arrow.<br />
<br />
= Pictures =<br />
<br />
{{Remove|Take some pictures of your device, [[Special:Upload | upload them]], and add them here. DO NOT UPLOAD PICTURES WHICH YOU PLUCKED OFF THE INTERNET.}}<br />
<br />
<gallery><br />
File:Device_front.jpg<br />
File:Device_back.jpg<br />
File:orangepi3_eth.png<br />
File:orangepi3_hdmi.png<br />
File:orangepi3_top.jpeg<br />
File:orangepi3_bottom.jpeg<br />
</gallery><br />
<br />
= Also known as =<br />
<br />
{{Remove|List rebadged devices here.}}<br />
<br />
= See also =<br />
<br />
*AXP805 Datasheet: [[File:AXP805_Datasheet_V1.0_en.pdf]]<br />
*H6 Datasheet: [[File:Allwinner_H6_V200_Datasheet_V1.1.pdf]]<br />
*H6 User Manual: [[File:Allwinner_H6_V200_User_Manual_V1.1.pdf]]<br />
*Schematics 1.5: [[File:OrangePi_3_Schematics_v1.5.pdf]]<br />
<br />
== Manufacturer images ==<br />
<br />
{{Remove|Optional. Add non-sunxi images in this section.}}<br />
<br />
[[Category:Devices]]<br />
[[Category:H6 Boards]]<br />
[[Category:Devices with Ethernet port]]<br />
[[Category:Devices with HDMI port]]</div>
Megous