Project

General

Profile

Pinephonev1x » History » Revision 49

Revision 48 (Denis 'GNUtoo' Carikli, 09/13/2021 04:00 PM) → Revision 49/50 (Denis 'GNUtoo' Carikli, 09/13/2021 04:01 PM)

h1. PinePhone 

 The prototype version of PinePhone is already in the hands of developers and a new batch is shipping in January 2020[12], hardware won't change much from now on. 

 |_. Feature |_. Hardware |_. Comments |_. TODO | 
 | System on a chip | Allwinner A64 Quad Core[9] | * The bootloader should be fully free software[7] including ARM Trusted Firmware[8]. 
 * The code should be upstream already[7]. | TODO: 
 * Look at the code. | 
 | GPU | Mali 400 MP2 GPU[1] | * A "pipe" driver is in Linux since 5.2 
 * Has (very early) support in Mesa. | TODO:  
 * Regularly check kernel and Mesa status. | 
 | Modem |/2. Quectel EG-25G[1] with[2] worldwide bands[4] | * The EG-25G is an international version of the EC25. 
 * Runs GNU/Linux[18]. 
 * USB connection for data and I2S connection for audio[18]. 
 * Audio connected to both PCM interfaces on the A64[14]. 
 * PCM audio still experimental: sending to the modem works fine, receiving produces mangled samples[14].  
 | TODO: 
 * AT support commands look unusable[20], so we need to use QMI which is way more robust anyway. | TODO: 
 * What's the similarity with the EC-25? | 
 | GNSS[1]: GPS, GPS-A, GLONASS[4] | | 
 | WiFi |/2. RTL8723cs[3] | * Requires a nonfree loadable firmware[3]. 
 * Connected via SDIO[18]. | | 
 | Bluetooth: 4.0, A2DP[1] | * Requires a nonfree firmware[3]. 
 * Connected via UART[18]. | TODO: 
 * Check if it really requires that firmware or if it has some ROM code that could be used? | 
 | USB – C[1] (Power, Data and Video Out) | |* USB 2.0[9] 
 * Serial console is only available in the headphone connector (activated by the 6th contact on the dipswitch[10])| | 
 | RAM | 2GB of LPDDR3 RAM | * Initialized by u-boot SPL[18]. | TODO: 
 * Check if it meets [[HardwareRequirements|Android 9 requirements]] | 
 | Main Camera | Single OmniVision OV6540, 5MP, 1/4″, LED Flash[1] | * Mainline driver[5] 
 * No firmware required[5] 
 * There's an optional non-free firmware for the auto-focus[18]. | | 
 | Selfie Camera | Single GC2035[1], 2MP, f/2.8, 1/5″ | | | 
 | Storage | Bootable microSD slot[1] 
  16GB eMMC[1] | * Boot order: microSD -> eMMC[6]| | 
 | Sensors accelerator, gyro, proximity, compass, barometer, ambient light[1] | | | TODO: 
 * Which chips are used? | 
 | LCD panel and touchscreen | 5.95″ LCD 1440×720 
 18:9 aspect ratio (hardened glass) | Probably works with free software[11]. | | 
 | Power Management IC (PMIC) | AXP803[13] | | | 
 | Power Management coprocessor | AR100[15] | * The proprietary firmware can be replaced with Crust[16]. 
 * Allows deep power-saving modes and later wake-up. 
 * Use case: receive signal from modem to wake-up device[17]. | | 

 h2. Downstream reference code 

 *Downstream arm-trusted-firmware*: https://gitlab.com/pine64-org/arm-trusted-firmware 
 *Downstream Linux*: https://gitlab.com/pine64-org/linux 
 *Downstream u-boot*: https://gitlab.com/pine64-org/u-boot 
 *Downstream utguard*: https://gitlab.com/pine64-org/mali-utgard-driver 

 Other projects: 
 * They is a fork of Linux's sunxi-next through MoeIcenowy, downstream projects such as UBports and postmarketOs gather efforts there for future upstreaming. 

 h2. Upstream status 

 h3. Linux 

 Current Linux upstreaming path looks like this: pine64 -> sunxi-next -> linux-next -> torvalds 
 Patches relevant to all A64 devices should be directly sent to sunxi-next. 
 Patches only relevant to PinePhone should be sent to pine64. 

 Status: 
 * "The DTS":https://gitlab.com/pine64-org/linux/-/raw/pine64-kernel-5.4.y/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dts needs to be cleaned up, the reference to non-upstream drivers (like the LCD panel) removed, and sent upstream. The patch adding the DTS has a signed-off-by. Sending it upstream could enable to fully upstream the u-boot port. 
 * The panel driver is not upstream 
 * The Modem PCM audio is not upstream 
 * The SOC (and devices?) power management is not upstream 
 * The "fix for the A64 timer":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c950ca8c35eeb32224a63adc47e12f9e226da241 "is in Linux 5.1":https://linux-sunxi.org/Linux_mainlining_effort#Merged_into_5.1 and seem to be good enough to make it reliable including for userspace. The result is just a timer that is a bit less precise and slower. 

 h3. U-boot 

 The "u-boot patch that adds the pinephone":https://gitlab.com/pine64-org/u-boot/-/commit/f405aa95e7717b4772e6a9cc75e859be075dda54 consist of just a DTS and a defconfig file.  
 * The dts probably needs to be upstreamed in Linux first. 
 * The patch has no signed-off-by but the configuration can be re-done 
 * The dts comes from Linux which patch has proper signed-off-by and attribution 

 h2. Hardware kill switches 

 The PinePhone has 6 hardware switches[19] that allow turning on/off different hardware components: modem, WiFi/Bluetooth, microphone, rear camera, front camera and headphones. Unfortunately these are located under the back cover, which needs to be taken out to operate them. 

 h2. Schematics 

 "PinePhone Brave Heart Schematic":http://files.pine64.org/doc/PinePhone/PinePhone_Schematic_v1.1_20191031.pdf 
 "PinePhone Brave Heart Changes (vs prototype units)":http://files.pine64.org/doc/PinePhone/PinePhone_BraveHeart_edition_version_1.1_change_list.pdf 
 "PinePhone Exploded Diagram of Brave Heart edition PinePhones":http://files.pine64.org/doc/PinePhone/PinePhone_Exploded_Diagram_ver_1.0.pdf 

 h2. References 

 fn1. Some specifications are available at the "device page":https://www.pine64.org/pinephone/ and "wiki page":https://wiki.pine64.org/index.php/PinePhone. 

 fn2. PinePhone discussion in Replicant's mailing list: https://lists.osuosl.org/pipermail/replicant/2019-July/001997.html 

 fn3. From #replicant channel on Freenode: <pre><MoeIcenowy> The Wi-Fi changed to RTL8723CS (this chip also does BT), which needs non-free firmware to be feed</pre> 

 fn4. From #replicant channel on Freenode: <pre><MoeIcenowy> The GNSS should be also done by EG25-G</pre> 

 fn5. From #replicant channel on Freenode: <pre><MoeIcenowy> The OV5640 camera doesn't need firmware and its driver is mainlined</pre> 

 fn6. From #replicant channel on Freenode: <pre><MoeIcenowy> The boot order is strictly MicroSD->eMMC, which is set in the A64's boot ROM</pre> 

 fn7. From #replicant channel on Freenode: <pre><MoeIcenowy> The bootloader (U-Boot SPL + ATF + U-Boot) is free software, all mainlined now (and the downstream dirty U-Boot cannot boot upstream Linux kernel)</pre> 
 need 
 fn8. From #replicant channel on Freenode: <pre><MoeIcenowy> https://github.com/ARM-software/arm-trusted-firmware</pre> 

 fn9. Allwinner A64 Datasheet: http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf 

 fn10. PostmarketOS Pinephone page: https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Serial_console 

 fn11. From #replicant channel on Freenode: <pre> 
 01:48 <adjtm> GNUtoo, lukasz confirmed me that the lcd doesn't require proprietary firmware to be uploaded 
 01:49 <adjtm> the conversation between pine64 staff about the lcd that someone posted on irc was probably before deciding in 
                the last lcd</pre> 

 fn12. PINE64 December 2019 Update: https://www.pine64.org/2019/12/05/december-update-thank-you-for-2019/ 

 fn13. From Xalius on "PINE64 IRC":https://forum.pine64.org/showthread.php?tid=892. Details at: https://linux-sunxi.org/AXP803 

 fn14. From Xalius. 

 fn15. https://linux-sunxi.org/AR100 

 fn16. https://github.com/crust-firmware/crust 

 fn17. From Xalius. 

 fn18. PinePhone Misconceptions: https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/ 

 fn19. PinePhone at PINE64 wiki: https://wiki.pine64.org/index.php/PinePhone#Killswitch_configuration 

 fn20. According to Pavel Machek, "there is no RING indication on the AT side":https://pavelmachek.livejournal.com/143504.html ("archive":https://web.archive.org/web/20210913155020/https://pavelmachek.livejournal.com/143504.html) so we might be required to use QMI. QMI is probably a better long term solution anyway.