<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pine64.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Strit</id>
	<title>PINE64 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pine64.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Strit"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/Strit"/>
	<updated>2026-06-05T08:28:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone_Software_Releases&amp;diff=14429</id>
		<title>PinePhone Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone_Software_Releases&amp;diff=14429"/>
		<updated>2022-10-12T04:59:11Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Download */ Define defaults are only for phosh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of all available operating systems for the [[PinePhone]] in alphabetical order, as well as links to other resources.&lt;br /&gt;
&lt;br /&gt;
{{Info|Some releases may not have a good setup for the backlight at low brightness. If configured too low, the backlight shuts down completely, but the screen is still displayed and usable in bright front-light.}}&lt;br /&gt;
&lt;br /&gt;
See [[PinePhone Installation Instructions]] on how to install the operating systems. Please see [[PinePhone Updating Instructions]] for how to update the phone.&lt;br /&gt;
&lt;br /&gt;
== Software Releases ==&lt;br /&gt;
&lt;br /&gt;
=== Multi-distro demo image ===&lt;br /&gt;
&lt;br /&gt;
{{Warning | This is a demo image for testing different OSes before installing a regular image. Attempting to use this image productively is highly discouraged. The kernel is shared across the different OSes and is not updated.}}&lt;br /&gt;
&lt;br /&gt;
This image allow users to try many Linux distributions easily, without having to figure out how to flash them individually and juggle with many microSD cards. Also called megi's 15-in-1 multi boot image.&lt;br /&gt;
&lt;br /&gt;
* Main page: https://xnux.eu/p-boot-demo/&lt;br /&gt;
* Git repo: https://megous.com/git/pinephone-multi-boot/&lt;br /&gt;
* Forum discussion: [https://forum.pine64.org/showthread.php?tid=11347 15-distro multi-boot image for Pinephone]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
'''Update 2022-01-26, using megi's kernel 5.16.2'''&lt;br /&gt;
&lt;br /&gt;
DD image to SD card and boot. This image is for 16GiB or larger SD cards, also works if flashed to eMMC.&lt;br /&gt;
&lt;br /&gt;
This is also a good build for charging depleted battery. Just boot up this build with power supply connected, keep the PinePhone charging for 3 hours at power down stage.&lt;br /&gt;
&lt;br /&gt;
For more info on this build, please visit its entry the &amp;quot;News&amp;quot; section of its [https://xnux.eu/p-boot-demo/ web page].&lt;br /&gt;
&lt;br /&gt;
* [https://dl.xnux.eu/p-boot-multi-2022-01-26.torrent Download torrent file from author's website]&lt;br /&gt;
* [http://dl.xnux.eu/p-boot-multi-2022-01-26/ Download img.zst from author's website] (speed limited to 512KiB/s)&lt;br /&gt;
* [http://mirror.uxes.cz/dl.xnux.eu/ Download torrent and img.zst from discord user uxes' mirror]&lt;br /&gt;
** '''File name:''' multi.img.zst&lt;br /&gt;
** '''SHA-256:''' &amp;lt;span style=&amp;quot;word-break: break-all&amp;quot;&amp;gt;39915b9d2aa2f33fd78552ac9a0e665c4aef97dd68a9f9a6c76f9fa2f0ac049e&amp;lt;/span&amp;gt;&lt;br /&gt;
** '''File Size:''' 6.9GiB&lt;br /&gt;
&lt;br /&gt;
Due to its size, download though torrent is suggested by the author on its main page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! General&lt;br /&gt;
| &amp;lt;code&amp;gt;1111&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! sxmo&lt;br /&gt;
| &amp;lt;code&amp;gt;user/1111&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Manjaro&lt;br /&gt;
| seems to insist on &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
{{Info | Note about zstd) archive file (&amp;lt;code&amp;gt;.zst&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
On Linux, you may install or compile &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;, then write the image to SD card by piping &amp;lt;code&amp;gt;zstdcat&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt;. See the &amp;quot;Installation&amp;quot; section of its [https://xnux.eu/p-boot-demo/ web page] for command examples.&lt;br /&gt;
&lt;br /&gt;
On Windows, instead of the offical [https://github.com/facebook/zstd zstd] command line program, you may use [https://github.com/mcmilk/7-Zip-zstd 7-zip-zstd]. Different installation method is provided in their README. Install 7-Zip-zstd / zstd, extract the disk image file (&amp;lt;code&amp;gt;.img&amp;lt;/code&amp;gt;) from the zstd archive, and flash with tools like [https://sourceforge.net/projects/win32diskimager/ Win32 Disk Imager].}}&lt;br /&gt;
&lt;br /&gt;
Also see [[PinePhone Installation Instructions]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ARM ===&lt;br /&gt;
[[File:Archlinux-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
(Unofficial) Arch Linux ARM with choice of Phosh UI, Plasma Mobile, sxmo or barebones.&lt;br /&gt;
Currently being maintained by the [https://danctnix.org/ DanctNIX] community (GitHub: [https://github.com/DanctNIX/danctnix danctnix], [https://github.com/dreemurrs-embedded dreemurrs-embedded]).&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
Get both stable and test builds at [https://github.com/dreemurrs-embedded/Pine64-Arch/releases GitHub releases].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm/123456&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! root (barebone only)&lt;br /&gt;
| &amp;lt;code&amp;gt;root/root&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
* There are archmobile chat rooms on Matrix ([https://matrix.to/#/#archmobile:kde.org #archmobile:kde.org]) and Telegram ([https://t.me/archmobile @archmobile]).&lt;br /&gt;
* Feel free to send us [https://github.com/dreemurrs-embedded/Pine64-Arch/pulls pull requests] and reports [https://github.com/dreemurrs-embedded/Pine64-Arch/issues issues] on [https://github.com/dreemurrs-embedded/Pine64-Arch GitHub].&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== ExpidusOS ===&lt;br /&gt;
&lt;br /&gt;
A fork of [https://voidlinux.org Void Linux] with a custom fork of XFCE called [https://github.com/ExpidusOS/genesis Gensis] as the default desktop environment, developed by [https://midstall.com/ Midstall Software].&lt;br /&gt;
&lt;br /&gt;
* [https://expidusos.com ExpidusOS official website]&lt;br /&gt;
* [https://wiki.expidusos.com/index.php/Main_Page ExpidusOS Wiki]&lt;br /&gt;
* [https://discord.gg/GVfBF2w Midstall Software Discord server]&lt;br /&gt;
* GitHub: [https://github.com/ExpidusOS ExpidusOS]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
Check the [https://expidusos.com/download download page] for that latest version, or the [https://build.expidusos.com/ image file list] for all versions, look for the filename that starts with &amp;quot;pinephone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;expidus/expidus&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
What works, what does not work:&lt;br /&gt;
&lt;br /&gt;
* The ExpidusOS Wiki has a page detailing [https://wiki.expidusos.com/index.php/Device:PinePhone supported features].&lt;br /&gt;
&lt;br /&gt;
How to contribute and report defects:&lt;br /&gt;
&lt;br /&gt;
* Join the [https://discord.gg/GVfBF2w Discord server] or corresponding repo at GitHub ([https://github.com/orgs/ExpidusOS/repositories repo list]).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
[[File:Fedora-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
An (unofficial) vanilla Fedora rawhide build for aarch64 with megi's kernel and [https://copr.fedorainfracloud.org/coprs/njha/mobile/packages/ some additional packages] to tie it all together.&lt;br /&gt;
It aims to eventually be an upstream part of the Fedora project, rather than a phone-specific distribution.&lt;br /&gt;
&lt;br /&gt;
* Forum discussion: [https://forum.pine64.org/showthread.php?tid=9347 Fedora + Phosh for PinePhone]&lt;br /&gt;
* GitHub: [https://github.com/nikhiljha/pp-fedora-sdsetup nikhiljha/pp-fedora-sdsetup]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/nikhiljha/pp-fedora-sdsetup/releases Flashable images]&lt;br /&gt;
* [https://github.com/nikhiljha/pp-fedora-sdsetup          Build scripts]&lt;br /&gt;
* [https://copr.fedorainfracloud.org/coprs/njha/mobile/    Packages (Fedora COPR)]&lt;br /&gt;
&lt;br /&gt;
There is also an FTP server with images build every night @ ftp://pine.warpspeed.dk/nightly/pinephone/ (Mount this with something like Nautilus)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! GitHub images&lt;br /&gt;
| &amp;lt;code&amp;gt;pine/123456&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Nightly images (via FTP)&lt;br /&gt;
| &amp;lt;code&amp;gt;pine/1111&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
WiFi, Bluetooth, SMS, Data, Calls all work! There are still a few bugs though, and [https://xnux.eu/devices/pine64-pinephone.html#toc-feature-driver-support-matrix some features don't have driver support yet] on any PinePhone distribution.&lt;br /&gt;
&lt;br /&gt;
Please send your bug reports to [https://github.com/nikhiljha/pp-fedora-sdsetup/issues the project's issue tracker]. Be sure to include logs if applicable! Send us pull requests on [https://github.com/nikhiljha/pp-fedora-sdsetup/pulls Github].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
[[File:GentooLogo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There are unofficial Gentoo overlays with ebuilds for the PinePhone. There are no images - the image must be built manually, including picking the kernel, bootloader and the desired desktop environment. The ARM64 version of Gentoo has to be selected.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
Overlay locations:&lt;br /&gt;
&lt;br /&gt;
* https://gitlab.com/bingch/gentoo-overlay&lt;br /&gt;
* https://github.com/stealthgun/gjdwebserver-overlay&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
The documentation can be found here:&lt;br /&gt;
&lt;br /&gt;
* https://stealthgun.tweakblogs.net/blog/19336/gentoo-on-a-pinephone&lt;br /&gt;
* https://wiki.gentoo.org/wiki/User:Dr41nU/PinePhone&lt;br /&gt;
* https://wiki.gentoo.org/wiki/PinePhone (incomplete)&lt;br /&gt;
&lt;br /&gt;
{{Info|Please consider cross-compiling the software on the computer. Long compilation times and heat production can lead to a reduced lifespan of the phone.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== GloDroid ===&lt;br /&gt;
&lt;br /&gt;
A fully open source port of Android to the PinePhone.&lt;br /&gt;
&lt;br /&gt;
GitHub: [https://github.com/GloDroid/ GloDroid]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* Stable image: [https://github.com/GloDroid/glodroid_manifest/releases GloDroid]&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Feature overview:&lt;br /&gt;
&lt;br /&gt;
* Works: WiFi, screen dimming, sound, touchscreen, charging and telephony(partially) works.&lt;br /&gt;
* Doesn't work: Bluetooth and GPS&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux ===&lt;br /&gt;
[[File:Kali-logo.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
An unofficial [https://www.kali.org Kali Linux] build for PinePhone running with Phosh.&lt;br /&gt;
This Kali Linux Phosh build contains only the Phosh GUI and a few other packages (ModemManager, WiFi chip firmware).&lt;br /&gt;
Now, Totally depends on The Kali repository. Get [https://github.com/Shubhamvis98/usb-arsenal-pinephone USB Arsenal] for your PinePhone's Kali Linux. Packet Injection is working now, use iwconfig instead of airmon-ng.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Shubhamvis98/kali-pinephone/releases Kali Phosh]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;kali/8888&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
 $ unxz -c Kali-PinePhone-{Release}.img.xz | dd of=/dev/{storage_block} bs=1M status=progress&lt;br /&gt;
 $ growpart /dev/mmcblkX Y&lt;br /&gt;
 $ e2fsck -y -f /dev/mmcblkXpY&lt;br /&gt;
 $ resize2fs /dev/mmcblkXpY&lt;br /&gt;
 # X: Storage Device Y: Partition Number&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LuneOS ===&lt;br /&gt;
[[File:Luneos-logo-256.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
LuneOS is one of the original multi-tasking OS-es that runs on Linux. Based on HP/Palm's webOS, merged with latest technology stack from LG called webOS OSE (a derivative of what LG uses on their Smart TV's), software such as Qt5 and makes use of the Yocto build system.&lt;br /&gt;
&lt;br /&gt;
* [https://www.webos-ports.org/wiki/Main_Page WebOS Ports Wiki]&lt;br /&gt;
* [https://webos-ports.org/wiki/Pinephone_Info WebOS-Ports Wiki's Pinephone page]&lt;br /&gt;
* GitHub: [https://github.com/webOS-ports WebOS Ports]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* LuneOS Preview images: [https://github.com/webOS-ports/meta-pine64-luneos/releases Downloads]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
In order to connect to the device using SSH/SCP via WiFi: You can simply connect via SSH/SCP via WiFi using the PinePhone's IP address on port 22.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Maemo Leste ===&lt;br /&gt;
[[File:Maemoleste-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Maemo Maemo] is a trimmed-down version of Debian for mobile devices,&lt;br /&gt;
originally a collaboration between Nokia and many open source projects (the [http://maemo.org/intro/ Maemo community]) before Nokia abandoned it. The more well-known devices Maemo supports are the OpenMoko and N900. The community now takes full responsibility in developing fully open source Maemo for a variety of mobile devices. You may be interested to learn more about the features in their [https://leste.maemo.org/Leste_FAQ Maemo Leste FAQ].&lt;br /&gt;
&lt;br /&gt;
Maemo 8 &amp;quot;Leste&amp;quot; is an ARM64 port of [https://devuan.org/ Devuan] (Debian without systemd) and runs the mainline Linux kernel.&lt;br /&gt;
The default user interface stack is [https://en.wikipedia.org/wiki/Hildon Hildon], [https://en.wikipedia.org/wiki/X.Org_Server Xorg], [https://en.wikipedia.org/wiki/Matchbox_(window_manager) Matchbox WM], and [https://en.wikipedia.org/wiki/GTK GTK].&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* [http://maedevu.maemo.org/images/pinephone/ Maemo Leste test builds]&lt;br /&gt;
&lt;br /&gt;
There is also an [https://github.com/maemo-leste/image-builder image builder], see the wiki for instructions on how to [https://leste.maemo.org/Image_Builder build a custom image]. For current status and instructions, please read their [https://leste.maemo.org/PinePhone PinePhone wiki page].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! root&lt;br /&gt;
| &amp;lt;code&amp;gt;toor&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! user&lt;br /&gt;
| &amp;lt;code&amp;gt;12345 (lockscreen)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Most discussion occurs at  [ircs://irc.libera.chat:6697/#maemo-leste &amp;lt;code&amp;gt;#maemo-leste&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.libera.chat&amp;lt;/code&amp;gt;] and [https://talk.maemo.org/showthread.php?t=100192&amp;amp;page=60 this thread].&lt;br /&gt;
&lt;br /&gt;
All other contact information is listed on the [https://leste.maemo.org/Main_Page main page] of the Maemo wiki.&lt;br /&gt;
&lt;br /&gt;
Submit [https://github.com/maemo-leste/bugtracker/issues bug reports] on github.&lt;br /&gt;
To track known issues, you may use these search terms:&lt;br /&gt;
[https://github.com/maemo-leste/bugtracker/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aissue+is%3Aopen+pinephone pinephone],&lt;br /&gt;
[https://github.com/maemo-leste/bugtracker/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aissue+is%3Aopen+pine64 pine64].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM ===&lt;br /&gt;
[[File:Manjaro-logo.svg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Manjaro is a user-friendly Linux distribution based on the independently developed Arch operating system with the Plasma Mobile and Phosh desktop environment.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* Phosh: [https://github.com/manjaro-pinephone/phosh-dev/releases Dev] and [https://github.com/manjaro-pinephone/phosh/releases Stable]&lt;br /&gt;
* Plasma Mobile: [https://github.com/manjaro-pinephone/plasma-mobile-dev/releases Dev] and [https://github.com/manjaro-pinephone/plasma-mobile/releases Stable]&lt;br /&gt;
* Lomiri: [https://github.com/manjaro-pinephone/lomiri-dev Dev] (unmaintained)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials (Only Phosh)&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;manjaro/123456&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! root&lt;br /&gt;
| &amp;lt;code&amp;gt;root/root&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
The installation of the stable images is strongly suggested. The dev images might break frequently. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mobian ===&lt;br /&gt;
[[File:Debian-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
An unofficial [https://www.debian.org Debian] build for ARM64 running with Phosh (developed by Purism, uses Wayland instead of Xorg).&lt;br /&gt;
The base system is pure Debian, with only the GUI applications and a few others (ModemManager, WiFi chip firmware) being built from modified sources (as well as the kernel and u-boot).&lt;br /&gt;
Current version is Debian Bookworm.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* [https://images.mobian.org/pinephone/ Images]&lt;br /&gt;
&lt;br /&gt;
{{Info|Tow-Boot is required to be able to boot the images, see [https://wiki.mobian-project.org/doku.php?id&amp;amp;#61;install-linux here]!}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;mobian/1234&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
The development is work in progress. See [https://gitlab.com/mobian1/devices/pinephone-support pinephone-support] for further information. The Mobian wiki can be found [https://wiki.mobian-project.org/ here].&lt;br /&gt;
&lt;br /&gt;
In order to connect to the device using SSH/SCP via WiFi, you need to install SSH on the device. You can do this by executing the following in a shell: &amp;quot;sudo apt-get install ssh&amp;quot;, afterwards you can connect via SSH/SCP via WiFi using the PinePhone's IP address on port 22.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Nemo Mobile ===&lt;br /&gt;
[[File:nemo_mobile.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Nemo Mobile is the open source build of Sailfish OS with a open source UI called [http://nemomobile.net/glacier-home/ Glacier], [http://nemomobile.net/pages/Hello_manjaro/ based on Manjaro].&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
[https://img.nemomobile.net/2022.05/Manjaro-ARM-nemomobile-pinephone-0.9.img.xz Image]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;manjaro/123456&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! root&lt;br /&gt;
| &amp;lt;code&amp;gt;root/root&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
The website of the Nemo Mobile UX Team can be found [https://nemomobile.net/ here]. Please report bugs regarding the Nemo Mobile UI as [https://github.com/nemomobile-ux/main/issues GitHub issue].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
[[File:nixos.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
NixOS is a Linux distribution built on top of the Nix package manager using declarative configuration to allow reliable system upgrades.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
There is no pre-built complete image.&lt;br /&gt;
For now users, are expected to follow the instructions in the [https://mobile.nixos.org/getting-started.html Getting Started page],&lt;br /&gt;
and [https://mobile.nixos.org/devices/pine64-pinephone.html Project's device page].&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
Project home page: [https://mobile.nixos.org/ Mobile NixOS]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== OpenMandriva Lx ===&lt;br /&gt;
[[File:Oma-logo-22042013_300pp.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
OpenMandriva Lx with Plasma Mobile as UI.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
The official image can be found [https://sourceforge.net/projects/openmandriva/files/release/4.2/RC/Pinephone/ at sourceforge.net].&lt;br /&gt;
See [https://www.openmandriva.org/en/news/article/openmandriva-lx-4-3-rc-available-for-testing here] for the offical announcement.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
{{Info| This image is solely for testing purposes.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
[[File:SLEM-OS-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Our images use the same [https://en.opensuse.org/Portal:Tumbleweed openSUSE Tumbleweed] base as our desktop images,&lt;br /&gt;
except what needs to be changed for the PinePhone.&lt;br /&gt;
The images include &amp;lt;i&amp;gt;zypper&amp;lt;/i&amp;gt; (RPM) as the default package manager,&lt;br /&gt;
and have access to virtually the same (open source) software as our desktop repositories,&lt;br /&gt;
thanks to the [https://en.opensuse.org/Portal:Factory Factory] ports.&lt;br /&gt;
Using [https://en.opensuse.org/SDB:DNF dnf] is possible, if preferred.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz Phosh] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz.sha256 SHA-256] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz.sha256.asc SHA-256 Signature]&lt;br /&gt;
* [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz Plasma Mobile] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz.sha256 SHA-256] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz.sha256.asc SHA-256 Signature]&lt;br /&gt;
&lt;br /&gt;
To verify the images you need to import [https://build.opensuse.org/projects/devel:ARM:Factory:Contrib:PinePhone/public_key our GPG key].&lt;br /&gt;
Keep on mind that the first boot may stay on black screen for about a minute - consequent boots should be faster.&lt;br /&gt;
&lt;br /&gt;
You can find install instructions at [https://en.opensuse.org/HCL:PinePhone#Installing_openSUSE_in_a_Pinephone this section] in the openSUSE Wiki.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| &amp;lt;code&amp;gt;pine/1234&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! root&lt;br /&gt;
| &amp;lt;code&amp;gt;root/linux&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
You can find all information about the releases of the project [https://gitlab.com/slem.os/slem.os/-/blob/master/CHANGELOG.md here].&lt;br /&gt;
Detailed information, tips and troubleshooting suggestions are also provided at [https://en.opensuse.org/HCL:PinePhone the openSUSE Wiki].&lt;br /&gt;
You will also find information in our wiki on how to report issues (Contributing section).&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== postmarketOS ===&lt;br /&gt;
[[File:PostmarketOS-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
postmarketOS extends [https://www.alpinelinux.org/ Alpine Linux] to run on smartphones and other mobile devices.&lt;br /&gt;
It offers various user interfaces (Phosh, Plasma Mobile, Sxmo, Plasma Desktop, Gnome 3, Kodi, XFCE4, ...).&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
[https://postmarketos.org/download/ Download page]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Test images user&lt;br /&gt;
| &amp;lt;code&amp;gt;user/147147&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
As of writing, official images are provided with Phosh, Plasma Mobile and Sxmo.&lt;br /&gt;
The official images come in two flavors, either as a test image to try out postmarketOS, or with the installer.&lt;br /&gt;
&lt;br /&gt;
When using the installer images (recommended), it is possible to:&lt;br /&gt;
* encrypt the installation&lt;br /&gt;
* install from the SD card to eMMC&lt;br /&gt;
&lt;br /&gt;
Power users may also create their own image with the distribution's install and development tool &amp;lt;code&amp;gt;pmbootstrap&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone) pine64-pinephone] page of the postmarketOS wiki for details.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sailfish OS ===&lt;br /&gt;
[[File:Sailfish_logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
[https://sailfishos.org/ Sailfish OS] is a Linux-based operating system based on open source projects such as [https://wiki.merproject.org/wiki/Main_Page Mer], and a closed source UI based on [https://sailfishos.org/wiki/Lipstick Lipstick].&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.merproject.org/wiki/Adaptations/PinePhone64 PinePhone Wiki Page] on Mer Wiki, for both Nemo Mobile and Sailfish OS.&lt;br /&gt;
* [https://gitlab.com/pinephone-sailfish-os/linux-kernel/ Linux kernel config repo]&lt;br /&gt;
* [https://gitlab.com/sailfishos-porters-ci/dont_be_evil-ci/ Sailfish OS repo]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
'''Flashing script'''&lt;br /&gt;
&lt;br /&gt;
The Sailfish OS image is built on Gitlab CI. The latest image can be installed using the [https://raw.githubusercontent.com/sailfish-on-dontbeevil/flash-it/master/flash-it.sh flashing script].&lt;br /&gt;
&lt;br /&gt;
The script downloads the image and bootloader from the CI, extracts everything and burns it onto the SD card.&lt;br /&gt;
Note: The script will format and erase the SD card!&lt;br /&gt;
&lt;br /&gt;
Instructions:&lt;br /&gt;
# Download the flashing script&lt;br /&gt;
# Insert a microSD card in your device&lt;br /&gt;
# Make the script executable: &amp;lt;code&amp;gt;chmod +x flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Verify that you have the &amp;lt;code&amp;gt;bsdtar&amp;lt;/code&amp;gt; package installed&lt;br /&gt;
# Execute it: &amp;lt;code&amp;gt;./flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Follow the instructions. Some commands in the script require root permissions (for example: mounting and flashing the SD card).&lt;br /&gt;
&lt;br /&gt;
* When asked where to flash, type 'raw' and it will build the image on your computer. Otherwise define the path /dev/....  to flash to card or internal emmc. &lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
Set PIN on initialization.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
* Sometimes the first run stalls before the tutorial. Reboot and it will start from setting the security pin.&lt;br /&gt;
* The homescreen may be locked unless you boot with a sim card inserted. An old expired sim will do. '''If you do not have a SIM card on hands, do NOT set a security code on first boot.'''&lt;br /&gt;
* When a screen with a loading circle is displayed, just left/right swipe it away.&lt;br /&gt;
* If you're not familiar with Sailfish OS, pay attention to the tutorial - the interface works great, but is not immediately obvious. If you are familiar with it, you can skip the tutorial by touching all 4 corners starting top left.&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.merproject.org/wiki/Adaptations/PinePhone64#Hardware_Support Hardware Support section] on the Mer Wiki's PinePhone Page.&lt;br /&gt;
&lt;br /&gt;
There is a limited selection of apps available from the Jolla store, the vast majority are hosted on openrepos.net. If the Storeman app for openrepos is not preinstalled, download the RPM and click to install.&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.merproject.org/wiki/Adaptations/PinePhone64#Installation Installation section] on the Mer Wiki's PinePhone Page for compile, build and development.&lt;br /&gt;
&lt;br /&gt;
Git repo links are at the top of this OS section. other repos that may be helpful:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/sailfish-on-dontbeevil GitHub project page]&lt;br /&gt;
* [https://github.com/sailfish-on-dontbeevil/flash-it the repo of the flash-it.sh flashing script]&lt;br /&gt;
* [https://build.merproject.org/project/show/nemo:devel:hw:pine:dontbeevil Mer Open Build Service page] ([https://forum.sailfishos.org/t/changes-needed-to-merge-the-project-names-to-sailfish-os/1672 Mer is being assimilated into Sailfish OS] and [https://forum.sailfishos.org/t/obs-shut-down-and-next-steps/1814 OBS is shutting down], also see [https://specs.openstack.org/openstack/fuel-specs/specs/7.0/replace-obs.html OpenStack is replacing OBS with another build system based on Jenkins], if it's related, even OBS come back under Sailfish OS, it will be different.)&lt;br /&gt;
&lt;br /&gt;
See the [https://sailfishos.org/wiki/Collaborative_Development#Reporting_issues Sailfish OS wiki] for links to their forum, as well as info required when reporting an issue. See the [https://sailfishos.org/wiki/SailfishOS Sailfish OS wiki main page] for options to contribute to Sailfish OS.&lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
&lt;br /&gt;
OTA is supported: &amp;lt;code&amp;gt;zypper refresh &amp;amp;&amp;amp; zypper update&amp;lt;/code&amp;gt; as root (&amp;lt;code&amp;gt;devel-su&amp;lt;/code&amp;gt; to get root access). Things that need reflash are bootloader specific at the moment. If improvements like [[Crust]] or changes of partition layout are added, then you need to reflash.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== SkiffOS ===&lt;br /&gt;
[[File:SkiffOS-Icon-1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Minimal in-memory cross-compiled OS optimized for hosting multiple in parallel Docker containers. Provides the reliability of firmware with the ease-of-use of package managers.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
The repository and instructions can be found [https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/phone here].&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Upgrade over-the-air via a simple rsync script, or copying 3 files.&lt;br /&gt;
&lt;br /&gt;
Uses the [http://buildroot.org Buildroot] cross-compilation tool for support for all Pine64 boards.&lt;br /&gt;
&lt;br /&gt;
Use configuration packages to configure distro:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Package !! Distro&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_neon    || KDE Neon via Ubuntu repositories&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_nixos   || Nixos Mobile&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_gentoo  || Gentoo with Link-time Optimization &amp;amp; KDE Mobile or Phosh&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_ubports || Ubuntu Ports for PinePhone&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_manjaro_kde   || Manjaro for PinePhone: KDE variant&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_manjaro_phosh || Manjaro for PinePhone: Phosh variant&lt;br /&gt;
|-&lt;br /&gt;
| core/pinephone_manjaro_lomiri || Manjaro for PinePhone: Lomiri variant&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The boot-up OS is upgraded independently from the containers.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Slackware ===&lt;br /&gt;
&lt;br /&gt;
[https://arm.slackware.com/ Slackware] is the world's oldest actively developed Linux distribution, providing a modern user land (applications) and Linux Kernel, within a more classic Unix Operating System environment.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
* http://dl.fail.pp.ua/slackware/images/pinephone/&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Discussion: [https://forum.pine64.org/showthread.php?tid=12181&amp;amp;highlight=slackware+pinephone Thread]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu Touch ===&lt;br /&gt;
[[File:Ubports-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
A Mobile Version of the Ubuntu Operating System made and maintained by the UBports Community.&lt;br /&gt;
&lt;br /&gt;
Ubuntu touch is a mobile version of Ubuntu developed by the UBports community.&lt;br /&gt;
Installation instructions can be found on&lt;br /&gt;
[https://gitlab.com/ubports/community-ports/pinephone#how-do-i-install-ubuntu-touch-on-my-pinephone the UBports PinePhone project].&lt;br /&gt;
There is also a [https://github.com/goddard/pinephone/ script] to download the latest image and flash to your PinePhone.&lt;br /&gt;
In the future, Ubuntu Touch will be able to be installed onto the PinePhone with the [https://devices.ubuntu-touch.io/installer UBports installer] GUI tool.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/ubports/community-ports/pinephone#how-do-i-install-ubuntu-touch-on-my-pinephone UBports PinePhone project]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #a7d7f9;&amp;quot;| Default credentials&lt;br /&gt;
|-&lt;br /&gt;
! Default user&lt;br /&gt;
| Set during boot&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Scroll down to the bottom of [https://gitlab.com/ubports/community-ports/pinephone this page], or directly here [https://devices.ubuntu-touch.io/device/pinephone/#deviceOverview] to see which features work.&lt;br /&gt;
&lt;br /&gt;
Contributions and bug reports can be made via. [https://gitlab.com/ubports/community-ports/pinephone UBports gitlab page]. See [https://ubports.com/foundation/sponsors UBports website] for how to donate.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
There are software tools, that can be booted on the PinePhone.&lt;br /&gt;
&lt;br /&gt;
=== JumpDrive ===&lt;br /&gt;
&lt;br /&gt;
JumpDrive can be used to flash the eMMC (and the microSD card), see [[PinePhone Installation Instructions#Using JumpDrive]].&lt;br /&gt;
&lt;br /&gt;
See https://github.com/dreemurrs-embedded/Jumpdrive/releases for the latest image.&lt;br /&gt;
Make sure to download the &amp;quot;PinePhone&amp;quot; image and to unpack the archive before flashing.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tow-Boot ===&lt;br /&gt;
Tow-Boot is a more user-friendly distribution of U-Boot. Can also mount internal storage as USB Mass Storage by holding the volume up button at startup before and during the second vibration and the LED will turn blue if done successfully.&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Tow-Boot/Tow-Boot/releases for the latest image.&lt;br /&gt;
Make sure to download the image with pinephoneA64 in the name.&lt;br /&gt;
&lt;br /&gt;
== Factory Test OS ==&lt;br /&gt;
&lt;br /&gt;
On the Braveheart model, there was a postmarketOS based basic Factory Test OS pre-installed on the eMMC.The developer Martijn Braam from postmarketOS has improved the functionality of the image considerably later. Since the 20200501 version, it is able to test all the hardware. It also includes functionality to install a new OS to the eMMC when using with an test image that includes that OS image. The downloadable image just does the hardware tests. Do not flash eMMC to test your device, just dd it to microSD and test from there. New versions are distributed as part of the postmarketOS distribution.&lt;br /&gt;
&lt;br /&gt;
{{Info| The magnetometer test will fail on the new Beta Edition, as the factory image wasn't updated for it yet.}}&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [https://images.postmarketos.org/pinephone/ Software Images] (download the latest one named like pine-pinephone-yyyyMMdd-factorytestX.img.xz)&lt;br /&gt;
* [https://gitlab.com/MartijnBraam/factorytest Git repo]&lt;br /&gt;
* [https://gitlab.com/MartijnBraam/factorytest/-/blob/master/README.rst Documentation]&lt;br /&gt;
&lt;br /&gt;
=== Factory-loaded OS builds ===&lt;br /&gt;
&lt;br /&gt;
These are different operating system builds that was preloaded in the factory with testing utility.&lt;br /&gt;
&lt;br /&gt;
Download the build, extract the image and dd it to a 8 GB or larger microSD card, then insert it into the PinePhone.&lt;br /&gt;
After power up or reboot, you may perform and complete the test routine, or apply the build from microSD card to eMMC.&lt;br /&gt;
&lt;br /&gt;
All the download links below are direct download from pine64.org.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow: auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;white-space: nowrap&amp;quot;&lt;br /&gt;
! OS&lt;br /&gt;
! Download Link&lt;br /&gt;
! File Size&lt;br /&gt;
! MD5&lt;br /&gt;
|-&lt;br /&gt;
| Beta Edition&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/BetaEdition/pine64-pinephone-plamo-beta-factorytest.img.xz pine64-pinephone-plamo-beta-factorytest.img.xz]&lt;br /&gt;
| 1.78GB&lt;br /&gt;
| &amp;lt;code&amp;gt;f16bce93504a52217540ac886863a418&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mobian&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/Mobian/pine64-pinephone-20201207-factorytest-mobian.img.xz pine64-pinephone-20201207-factorytest-mobian.img.xz]&lt;br /&gt;
| 1.41GB&lt;br /&gt;
| &amp;lt;code&amp;gt;015be381ff4e650a7fca6d4eaa90d63d&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KDE&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/KDE/pine64-pinephone-20201208-factorytest-kde.img.xz pine64-pinephone-20201208-factorytest-kde.img.xz]&lt;br /&gt;
| 2.28GB&lt;br /&gt;
| &amp;lt;code&amp;gt;32979ff17b5ec4d358ce99f1aff0c77c&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Manjaro&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/Manjaro/pine64-pinephone-20201013-manjaro-stable-20201018-factory56.img.xz pine64-pinephone-20201013-manjaro-stable-20201018-factory56.img.xz]&lt;br /&gt;
| 1.04GB&lt;br /&gt;
| &amp;lt;code&amp;gt;4edfd4dceaefdd32a3417c1727161c29&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| postmarketOS&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/PostMarketOS/pine64-pinephone-20200726-phosh-v20.05-factory.img.xz pine64-pinephone-20200726-phosh-v20.05-factory.img.xz]&lt;br /&gt;
| 517MB&lt;br /&gt;
| &amp;lt;code&amp;gt;244093be2f6d728fcbd1d29114607727&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu Touch&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/UBPorts/PinePhone-flasher-ubuntu-7b.img.gz PinePhone-flasher-ubuntu-7b.img.gz]&lt;br /&gt;
| 1.05GB&lt;br /&gt;
| &amp;lt;code&amp;gt;2d7f5271e7a281db8f1b1219bedbe131&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing other ARM64 distributions ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|Distributions not on this page may not even boot after you follow this section. In the best case, they will be barely usable.&lt;br /&gt;
This is more for fun, or if you would like to port a new distribution to the PinePhone.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|'''Note:''' This section uses megi's kernel releases, and not the official ones from Pine64. While it is possible to use the official (and in the future, mainline) kernel, megi provides binary releases, which makes it very easy.}}&lt;br /&gt;
&lt;br /&gt;
General steps:&lt;br /&gt;
&lt;br /&gt;
# Create a boot partition (from 4 MB to about 252 MB) and a root partition (from the end of boot to the end of the card) filesystem on the SD card.&lt;br /&gt;
# Format the boot partition with vfat, and the root partition with a supported filesystem like ext4 or f2fs.&lt;br /&gt;
# Extract the root filesystem from your distribution's ARM image into the root filesystem on the SD card. Do not copy the partition, copy the files instead (in archive mode, like &amp;lt;code&amp;gt;rsync -ar&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; to match your partitions.&lt;br /&gt;
# Grab megi's kernel from https://xff.cz/kernels/, Follow the instructions in the [https://xff.cz/kernels/README README], which involves copying the kernel modules into the SD card rootfs, and writing u-boot and the bootloader.&lt;br /&gt;
&lt;br /&gt;
If you would like to see examples or specific commands for how to complete these steps, see:&lt;br /&gt;
* [https://github.com/nikhiljha/pp-fedora-sdsetup     an example for Fedora], current unofficial [#Fedora] release&lt;br /&gt;
* [https://xnux.eu/howtos/install-arch-linux-arm.html an example for Arch Linux] by megi&lt;br /&gt;
&lt;br /&gt;
== Other Resources ==&lt;br /&gt;
&lt;br /&gt;
Community&lt;br /&gt;
* [[Main_Page#Community_and_Support|Links to the community services]]&lt;br /&gt;
&lt;br /&gt;
Hardware information&lt;br /&gt;
* [[PinePhone|General PinePhone hardware info]] in this Pine64 wiki&lt;br /&gt;
* Details specific to the Braveheart Edition: [[PinePhone_v1.1_-_Braveheart|PinePhone 1.1 Braveheart hardware details]]&lt;br /&gt;
* Details specific to the Community Edition: [[PinePhone_v1.2|PinePhone 1.2 hardware details]]&lt;br /&gt;
* The postmarketOS wiki has a detailed page on the PinePhone hardware [https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone) here] and the preceding devkit [https://wiki.postmarketos.org/wiki/PINE64_Don%27t_be_evil_devkit_(pine64-dontbeevil) here]&lt;br /&gt;
&lt;br /&gt;
Other software information&lt;br /&gt;
* [https://linux-sunxi.org/Main_Page sunxi community wiki]&lt;br /&gt;
* [https://xnux.eu/devices/pine64-pinephone.html megi's feature/driver support matrix]&lt;br /&gt;
* [https://megous.com/dl/tmp/README.bootui megi bootUI notes (for dualbooting/multibooting)] see demonstration [https://www.youtube.com/watch?v=ZL1GREqoqx8 on YouTube]&lt;br /&gt;
* [https://github.com/ayufan-pine64/boot-tools ayufan boot tools]&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* [https://pine64.com/?post_type=product Pine64 shop]&lt;br /&gt;
* [https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/ Pine64 blog on blobs]&lt;br /&gt;
* [https://tuxphones.com/yet-another-librem-5-and-pinephone-linux-smartphone-comparison/ Martijn Braam Librem 5 comparison, especially covering openness/blobs]&lt;br /&gt;
* [https://fam-ribbers.com/2019/12/28/State-of-Linux-on-mobile-and-common-misconceptions.html Bart Ribbers blog on Linux distributions and desktop environments on mobile devices]&lt;br /&gt;
* [https://www.jeffgeerling.com/blog/2019/a2-class-microsd-cards-offer-no-better-performance-raspberry-pi Jeff Geerling on testing microSD cards]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14424</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14424"/>
		<updated>2022-10-11T15:04:11Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update Battery status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=661385]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Troubleshooting_Guide&amp;diff=13224</id>
		<title>Pinebook Pro Troubleshooting Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Troubleshooting_Guide&amp;diff=13224"/>
		<updated>2022-06-27T20:40:33Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Manjaro Updates Fail With 404 */ update URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Useful Links=&lt;br /&gt;
&lt;br /&gt;
[[Pinebook_Pro|Back to the main Pinebook Pro page]]&lt;br /&gt;
&lt;br /&gt;
[[Pinebook_Pro_Hardware_Accessory_Compatibility|Hardware Compatibility page]]&lt;br /&gt;
&lt;br /&gt;
[[Pinebook Pro Software Release]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tips, tricks and other information for troubleshooting your Pinebook Pro=&lt;br /&gt;
&lt;br /&gt;
If something has gone wrong, the key thing is remain calm and not do anything hasty and make things worse, particularly when flashing the eMMC or firmware. Try and make a record of all the things you did in the run-up to the problem (even to the point of using a camera to take a note of errors on the screen, this record can be vital later).&lt;br /&gt;
&lt;br /&gt;
=Manjaro Updates Fail With 404=&lt;br /&gt;
If you have an old Manjaro installation then it will have the wrong repositories/mirrors set up and they won't work. Set up new repositories by following these instructions:&lt;br /&gt;
https://archived.forum.manjaro.org/t/another-mirror-transition-manual-intervention-required/132302&lt;br /&gt;
&lt;br /&gt;
=Power And Boot=&lt;br /&gt;
&lt;br /&gt;
== New from the factory - Pinebook Pro won't boot / power on ==&lt;br /&gt;
* Some Pinebook Pros came from the factory with the eMMC switch in the disabled position. It should be switched towards the back / hinge to enable the eMMC.&lt;br /&gt;
* The eMMC may have come loose during shipment. [[Pinebook Pro#Accessing the Internals - Disassembly and Reassembly|Open the back]] and verify that the eMMC is firmly seated.&lt;br /&gt;
* You may want to try unplugging the SD card daughterboard ribbon cable and see if it powers on (remove the battery and peel off a bit of the tape before unplugging it to avoid damage). If it does, try reseating it on both sides. It might have come loose during shipping.&lt;br /&gt;
* It's possible that your eMMC is empty from the factory. Simply [[NOOB|create]] a bootable [[Pinebook_Pro#Pinebook_Pro_images|SD card]] and see if your Pinebook Pro [[Pinebook_Pro#Boot_sequence_details|boots]]. If so, you can then [[NOOB|write]] an OS image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not power on after toggling the eMMC enable/disable switch ==&lt;br /&gt;
* This may happen if you meant to toggle the UART/Headphone switch (9) towards touchpad for headphone use and instead you toggled the eMMC enable/disable switch (24).&lt;br /&gt;
* After reenabling eMMC by toggling switch (24) towards hinge, if Pinebook Pro does not turn on then press the RESET button (28). It is clearly marked 'reset' on the PCB board.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not power on after removing and replacing EMI shielding ==&lt;br /&gt;
* Closely inspect that the shielding is firmly seated in the clips on all sides. You can be seated in the clips on one axis, and have missed on an another axis.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro won't boot when using UART console cable ==&lt;br /&gt;
* If you're using the [[Pinebook_Pro#Using_the_UART|UART]] cable sold on the [https://pine64.com/product-category/pinebook-pro/ Pine Store], you may want to see if it boots after you disconnect it. Some users report that custom-made cables based on FTDI UART adapters do not cause this issue.&lt;br /&gt;
* Make sure your USB to serial UART device is 3.3v. Many are 5v and some even +-12v. Pinebook Pro's only support 3.3v and may act eratically when using higher voltage. Further, higher voltage could permananetly damage the Pinebook Pro's SoC.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not sleep with lid closed ==&lt;br /&gt;
A problem with the positioning of the lid magnet has been identified by several forum users in mid-2020 models of the Pinebook Pro. The magnetic field from the lid magnet operates a hall effect sensor located on the daughterboard (smallboard), which causes the Pinebook Pro to sleep when the lid is closed. If the magnet is not positioned correctly, the Pinebook Pro will not sleep when the lid is fully closed, but may sleep if the lid is open about an inch. If you experience this problem, repositioning of the magnet may be necessary.&lt;br /&gt;
=== Lid Magnet Repositioning Step-by-Step ===&lt;br /&gt;
*Read these steps thoroughly before starting. This is a somewhat laborious process involving fragile parts!&lt;br /&gt;
# Remove bottom cover.&lt;br /&gt;
# Disconnect LCD and webcam ribbon cable from main board. Flip the small black strip on the connector upward and the ribbon cable can be easily removed. Do not pull the cable out without first raising the black retaining mechanism.&lt;br /&gt;
# Remove the small black plastic standoffs on each hinge and set aside.&lt;br /&gt;
# Remove the three screws from each hinge on the display assembly.&lt;br /&gt;
# Move the hinges upward to a 90 degree angle independently from the main body. Then lift the main body to the same 90 degree angle and you should be able to separate the display assembly from the main body. Set the main body aside.&lt;br /&gt;
# Remove the plastic hinge cover on the display assembly. There's not really an easy way to do this, just work slowly and deliberately so as not to damage the sensitive cable inside. Start from either end and work your way inward. Use a small flathead screwdriver or similar tool to get started.&lt;br /&gt;
# Remove the hinges from the display assembly.&lt;br /&gt;
# Remove the rubber bumpers at the top corners of the display assembly to expose two screws. Remove the screws.&lt;br /&gt;
# Starting at the corners, separate the bezel from the lid. The clips that hold it in place are similar to those found on the hinge cover. Again, slow deliberate work will get it done. Work from the top down. Take care not to damage the cables in the bottom.&lt;br /&gt;
# With the bezel separated from the lid, feed the cable through the slot and set the bezel aside.&lt;br /&gt;
# Without removing the LCD panel completely, lift and move the panel slightly to the left, taking care not to damage the cable running underneath up to the webcam. This will give you room to remove the magnet without risking damage to the panel.&lt;br /&gt;
# The magnet is a silver colored bar near the bottom right side of the lid. Pry the magnet out with a small flathead or similar tool and set it aside. There is some adhesive but it's not very strong.&lt;br /&gt;
# Put the LCD panel back where it belongs. Note the foam pads on either side of the panel. The magnet is the same width as the foam pad that keeps the panel in place, and should fit perfectly in the same channel.&lt;br /&gt;
# The magnet should be placed about 1 to 1.5cm lower than where it was originally. There should be no need for adhesive, as the magnet will stick to the LCD panel. For reference, the hall effect sensor that the magnet interacts with is in between the USB port and audio jack.&lt;br /&gt;
# Reassemble using these steps in reverse order.&lt;br /&gt;
&lt;br /&gt;
Your PineBook Pro should now sleep properly when the lid is closed.&lt;br /&gt;
&lt;br /&gt;
=WiFi And Bluetooth=&lt;br /&gt;
&lt;br /&gt;
== WiFi issues ==&lt;br /&gt;
* First, check the privacy switches to make sure your WiFi is enabled. They are persistant. See [[Pinebook_Pro#Privacy_Switches|Privacy Switches]]&lt;br /&gt;
* Next, you may have to modify the &amp;lt;code&amp;gt;/etc/NetworkManager/NetworkManager.conf&amp;lt;/code&amp;gt; as root user, and replace &amp;lt;code&amp;gt;managed=false&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;managed=true&amp;lt;/code&amp;gt;. Then reboot.&lt;br /&gt;
* For connections that drop and resume too often, it might be due to WiFi power management from earlier OS releases. Later OS releases either removed WiFi power management, or default to full power. (Power management can be turned off via command line with &amp;lt;code&amp;gt;iw dev wlan0 set power_save off&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;iwconfig wlan0 power off&amp;lt;/code&amp;gt;, although it is not persistent through re-boot.)&lt;br /&gt;
* For connections that drop under load on the default Debian, remove &amp;lt;code&amp;gt;iwconfig wlan0 power off&amp;lt;/code&amp;gt; in the file &amp;lt;code&amp;gt;/etc/rc.local&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If WiFi is un-usable or often crashes when using an alternate OS, then it might because its WiFi firmware is not appropriate for the WiFi chip in the Pinebook Pro. Try the latest firmware patch from [https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm]&lt;br /&gt;
* After re-enabling WiFi via the privacy switch, you have to reboot to restore function. There is a work around for the default Debian, (and may work with others);&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;code&amp;gt;sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/{un,}bind &amp;lt;&amp;lt;&amp;lt; 'fe310000.dwmmc'&amp;lt;/code&amp;gt;&lt;br /&gt;
* On extremely rare occasions, the WiFi antenna connection is loose. To fix, simply open up the bottom, re-connect the WiFi antenna cable. This may show up as any of the following symptoms:&lt;br /&gt;
** Can't connect to any network, but the network manager software sees the WiFi device, (so it has not been disabled by the Privacy Switch)&lt;br /&gt;
** Very limited range, meaning you can make a connection if the Pinebook Pro is next to the WiFi router. But not the next room.&lt;br /&gt;
** Unreliable connections, that are also limited by range.&lt;br /&gt;
&lt;br /&gt;
== Bluetooth issues ==&lt;br /&gt;
&lt;br /&gt;
* When connecting a Bluetooth device, such as a Bluetooth mouse, it does not automatically re-connect on re-boot. In the Bluetooth connection GUI, there is a yellow star for re-connect on boot. Use that button to enable a persistent connection. It can be changed back later.&lt;br /&gt;
* Bluetooth-attached speakers or headset require the &amp;lt;b&amp;gt;pulseaudio-module-bluetooth&amp;lt;/b&amp;gt; package. If not already installed, it can be installed with a package manager or using the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install pulseaudio-module-bluetooth&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When using Bluetooth-attached speakers or headset and 2.4Ghz WiFi at the same time, you may experience stuttering of the audio. One solution is to use 5Ghz WiFi if you can. Or you may try using a different 2.4Ghz channel, perhaps channel 1 or the top channel, (11 in the USA, or 13/14 in some other countries).&lt;br /&gt;
&lt;br /&gt;
= Sound issues =&lt;br /&gt;
&lt;br /&gt;
* Many reports of no sound are due to the OS, incorrect settings, or other software problems (eg. PulseAudio). So first test to see if it is a software or hardware problem, by trying another OS via SD card.  (For example, if Debian is installed on the eMMC, try Ubuntu on SD.) &lt;br /&gt;
* If you cannot get sound from the headphone jack, but can get sound from the speakers, then the headphone / UART console switch may be set to the UART mode. You can open the back and check the position of the switch. If set to UART mode, switch it to headphone mode. See the parts layout for the location and correct position of the switch.&lt;br /&gt;
* When using the USB C alternate DisplayPort mode, it is possible that the audio has been re-directed through this path. If your monitor has speakers, see if they work.&lt;br /&gt;
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/asound.state manjaro-arm/pinebookpro-post-install /var/lib/alsa/asound.state] for some ALSA tweaks.&lt;br /&gt;
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-audio manjaro-arm/pinebookpro-audio] for how to handle 3.5mm jack plug/unplug events with ACPID.&lt;br /&gt;
* Serveral users have reported that one internal speaker had reversed polarity. Thus, sound from the speakers is like an echo effect.&lt;br /&gt;
** There is a software fix using alsamixer and then enable either &amp;quot;R invert&amp;quot; or &amp;quot;L invert&amp;quot;, however, now the headphones have incorrect audio.&lt;br /&gt;
** The permanent fix is to re-wire one speaker, though this requires soldering small wires.&lt;br /&gt;
* Sound playback may be affected by the &amp;quot;mirroring&amp;quot; between the right and left channels, which results in distorted sound image.  The root cause is the [https://linux.die.net/man/1/alsamixer ALSA mixer] setting named &amp;quot;DAC Stereo Enhancement&amp;quot;, which needs to be changed to 0% to fix this issue.  Please see [https://forum.pine64.org/showthread.php?tid=12631&amp;amp;pid=87372#pid87372 this forum post] for further information.&lt;br /&gt;
&lt;br /&gt;
= NVMe SSD issues =&lt;br /&gt;
&lt;br /&gt;
Many PineBook Pro users have reported issues with NVMe SSD drives, including random Linux lockups and crashes.  Some of these issues are related to the [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207 RK3399's errata] that disables Gen2 (5&amp;amp;nbsp;GT/s) speed for the PCI Express link used by the NVMe SSD, reducing it down to Gen1 speed (2.5&amp;amp;nbsp;GT/s).  However, Linux distributions that use Linux kernels older than version 5.12 still configure the PCI Express link to run at Gen2 speed, which requires [https://forum.pine64.org/showthread.php?tid=11683 manual reconfiguration] to Gen1 speed in case system instability is experienced.  See also this [https://patchwork.kernel.org/project/linux-rockchip/patch/20200423150510.6216-1-pgwipeout@gmail.com/ related discussion]. This issue does not affect distros with recent (newer than May 2021) kernels such as Manjaro ARM which seem to work with no modifications.&lt;br /&gt;
&lt;br /&gt;
Some PineBook Pro users have reported issues with the default settings for the APST (Autonomous Powe State Transition) power saving, which cause an NVMe drive to disappear from the system or lock up after a certain period of time.  Please see [https://forum.pine64.org/showthread.php?tid=11337&amp;amp;pid=87711#pid87711 this forum thread] for further information.&lt;br /&gt;
&lt;br /&gt;
= Keyboard and trackpad =&lt;br /&gt;
&lt;br /&gt;
== Random Duplicated Key-Presses ==&lt;br /&gt;
&lt;br /&gt;
Whether caused by an error in the Hailuck Keyboard firmware, or a physical defect in the membrane, the Pinebook Pro keyboard may randomly register some key-presses twice. The solution to this problem is trivial. Simply run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xkbset bouncekeys 20&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this return the following error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bash: xkbset: command not found&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or some other similar error, you will need to install the command. It can most likely be found in your distro's repository.&lt;br /&gt;
&lt;br /&gt;
You may substitute some other value for 20 -- this number denoting the time in milliseconds during which successive, duplicate key-presses will be rejected -- with any value of your choice. If you are still receiving duplicates, consider increasing the number -- perhaps by half. If you are consistently writing &amp;quot;aple&amp;quot;, try decreasing this number -- perhaps by 25%.&lt;br /&gt;
&lt;br /&gt;
== Keys not registering / missing keys when typing ==&lt;br /&gt;
This issue occurs when your thumb or edge of the palm makes contact with left or right tip of the trackpad when you type. This is due to the palm rejection firmware being too forceful.  Instead of only disabling the trackpad, so your cursor does not move all over the screen, it disables both the trackpad and the keyboard.&lt;br /&gt;
&lt;br /&gt;
Using Fn+F7 to disable the touchpad will keep it from also disabling the keyboard.&lt;br /&gt;
&lt;br /&gt;
A [[Pinebook_Pro#Trackpad|firmware update]] has been released to address this.&lt;br /&gt;
&lt;br /&gt;
== Key mapping ==&lt;br /&gt;
* See this [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/10-usb-kbd.hwdb /etc/udev/hwdb.d/10-usb-kbd.hwdb] for some key mapping tweaks&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro gets stuck after first reboot in Trackpad Firmware Update ==&lt;br /&gt;
This refers to the firmware update shown here:&lt;br /&gt;
https://github.com/dragan-simic/pinebook-pro-keyboard-updater#update-all-firmware-images&lt;br /&gt;
* If the system is not responding after the 1st reboot, it might be easiest to do a system restore or boot an sdcard-only OS, and follow up by running the second step of the trackpad firmware update with a USB keyboard and mouse plugged in&lt;br /&gt;
* System restore https://forum.pine64.org/showthread.php?tid=8229&lt;br /&gt;
* Firmware update https://github.com/dragan-simic/pinebook-pro-keyboard-updater#update-all-firmware-images&lt;br /&gt;
&lt;br /&gt;
== ANSI Fn + F keys wrong for F9, F10, F11 and F12 ==&lt;br /&gt;
&lt;br /&gt;
There appears to be a minor firmware issue for ANSI keyboard models of the Pinebook Pro. Some discussion and fixes have been proposed;&lt;br /&gt;
* Discussion thread [https://forum.pine64.org/showthread.php?tid=8744&amp;amp;pid=57678#pid57678  Fn + F keys screwy for F9, F10, F11 and F12]&lt;br /&gt;
* Proposed fix [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater/issues/14#issuecomment-576825396 (ANSI) Fn + F(9-12) has wrong assignment after firmware update #14]&lt;br /&gt;
&lt;br /&gt;
= USB docks &amp;amp; USB C alternate mode video =&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro uses the RK3399 SoC (System on a Chip). It supports a video pass through mode on the USB C port using DisplayPort alternate mode. This DisplayPort output comes from the same GPU used to display the built-in LCD. &lt;br /&gt;
&lt;br /&gt;
Here are some selection criteria for successfully using the USB C alternate mode for video:&lt;br /&gt;
* The device must use USB C alternate mode DisplayPort. Not USB C alternate mode HDMI, or other.&lt;br /&gt;
* The device can have a HDMI, DVI, or VGA connector, if it uses an active translater.&lt;br /&gt;
* If USB 3 is also desired from a USB dock, the maximum resolution, frame rate and pixel depth is reduced to half the bandwidth. For example, 4K @ 30hz instead of 60hz.&lt;br /&gt;
* USB docks that also use USB C alternate mode DisplayPort will always have USB 2 available, (480Mbps, half-duplex).&lt;br /&gt;
&lt;br /&gt;
=Screen=&lt;br /&gt;
&lt;br /&gt;
Also see above about external screen using USB-C adaptor&lt;br /&gt;
&lt;br /&gt;
== After changing builtin LCD resolution, blank screen ==&lt;br /&gt;
Some people find that the text or icons are too small, so they attempt to change the resolution of the built-in display. Afterwards, the display is blank. &lt;br /&gt;
Use the following to fix when logged into a text console as yourself, pressing Control-Alt-F1 through F6. After listing the resolutions, select the native resolution, (1920x1080 aka 1080p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export DISPLAY=:0.0&lt;br /&gt;
xrandr -q&lt;br /&gt;
xrandr -s [resolution]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the screen resolution is restored, try using the software settings to configure the desired screen scaling.&lt;br /&gt;
&lt;br /&gt;
If the above fix did not work, you can try this:&lt;br /&gt;
* Using a text console, (Control-Alt-F1), login with your normal user ID&lt;br /&gt;
* Edit the file &amp;lt;code&amp;gt;nano ~/.config/monitors.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Change the &amp;quot;width&amp;quot; value to &amp;quot;1920&amp;quot;&lt;br /&gt;
* Change the &amp;quot;height&amp;quot; value to &amp;quot;1080&amp;quot;&lt;br /&gt;
* If there is more than one monitor configuration listed, edit that one too. Be careful to make no other changes. If needed, exit without saving and re-edit.&lt;br /&gt;
* Save the file and exit.&lt;br /&gt;
* Login using the GUI and test&lt;br /&gt;
* If you are still loggied in via the GUI, you will have to reboot using &amp;lt;code&amp;gt;sudo shutdown -r now&amp;lt;/code&amp;gt;. After the reboot, you should be able to login to the GUI login and have the resolution back to normal.&lt;br /&gt;
&lt;br /&gt;
After restoring the usability of your Pinebook Pro's graphical screen, also see [[Pinebook Pro#Improving readability|this section]] on improving readability and usability.&lt;br /&gt;
&lt;br /&gt;
=Outer Shell=&lt;br /&gt;
&lt;br /&gt;
== Cracks in the plastic ==&lt;br /&gt;
There have been multiple reports of cracks in the plastic keyboard and trackpad part of the case. These are generally near:&lt;br /&gt;
* Hinges&lt;br /&gt;
* USB ports&lt;br /&gt;
* Top side, around the corners&lt;br /&gt;
&lt;br /&gt;
This seems to apply to the first batches in 2019. Later versions of the keyboard and trackpad have used better plastic. With replacements now in the Pine64 Store, it's possible to simply order a replacement.&lt;br /&gt;
&lt;br /&gt;
There have been a few reports of cracks in the plastic around the LCD display, but these appear to be less common. There are replacement LCDs with top cases available in the Pine64 Store.&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12732</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12732"/>
		<updated>2022-04-08T12:32:04Z</updated>

		<summary type="html">&lt;p&gt;Strit: **Upstreaming Status** update VOP2 to version 10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=630407]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=612521]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rkvdec&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes for the Hantro VPU [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]. rkvdec hardware has been updated compared to rk3399 and may require driver changes.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12731</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12731"/>
		<updated>2022-04-08T12:30:20Z</updated>

		<summary type="html">&lt;p&gt;Strit: **Upstreaming Status** change color of combophy section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=626925]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=612521]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rkvdec&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes for the Hantro VPU [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]. rkvdec hardware has been updated compared to rk3399 and may require driver changes.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12730</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12730"/>
		<updated>2022-04-08T12:29:31Z</updated>

		<summary type="html">&lt;p&gt;Strit: **Upstreaming Status** Combophy Naneng was applied as of 5.18&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=626925]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=612521]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rkvdec&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes for the Hantro VPU [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]. rkvdec hardware has been updated compared to rk3399 and may require driver changes.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12633</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12633"/>
		<updated>2022-03-10T15:28:54Z</updated>

		<summary type="html">&lt;p&gt;Strit: update status of Combo PHY / Naneng&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=612521]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rkvdec&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes for the Hantro VPU [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]. rkvdec hardware has been updated compared to rk3399 and may require driver changes.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Rockchip Tree&lt;br /&gt;
| PineNote&lt;br /&gt;
| Will be in Mainline in 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux-Next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/phy/rockchip?h=next-20220310&amp;amp;id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12493</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12493"/>
		<updated>2022-02-09T09:10:30Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update gpu patchset to v5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=612521]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=609809]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12406</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12406"/>
		<updated>2022-01-30T08:53:57Z</updated>

		<summary type="html">&lt;p&gt;Strit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=586441]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=609809]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12405</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12405"/>
		<updated>2022-01-30T08:52:19Z</updated>

		<summary type="html">&lt;p&gt;Strit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=586441]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sub&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=609809]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12404</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12404"/>
		<updated>2022-01-30T08:49:49Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ Add PineNote device tree patchset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=586441]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|In review&amp;lt;sub&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=609809]&amp;lt;[/sub&amp;gt;&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12337</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12337"/>
		<updated>2022-01-26T16:13:11Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ Update to v4 of VOP2 patchset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=608673]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=586441]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12325</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12325"/>
		<updated>2022-01-23T10:16:25Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update usb2phy status to Linux Mainline 5.17&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=598177]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=586441]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| PineNote&lt;br /&gt;
| [[User:smaeul]] wrote a device tree using mainline bindings [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk356x-ebc-dev here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=601993]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11228</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11228"/>
		<updated>2021-09-04T07:47:43Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update tdm patchset to v4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=541937]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536429]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream:  [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/soc/rockchip?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Driver for Analog audio being upstreamed by [[User:CounterPillow]], still in review though, but it works&lt;br /&gt;
** no HDMI yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
* SPDIF &amp;amp;mdash; needs some soldering and device tree changes to test, [[User:CounterPillow]] has ordered the necessary components&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Collabora has an unpolished forward port that has some issues with HDMI, it can be found here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/tree/5.10_for_rockchip&lt;br /&gt;
&lt;br /&gt;
pgwipeout has [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/quartz64-vop2 a branch] for initial vop2 work/testing, very rough around the edges and does not successfully probe yet.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11204</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11204"/>
		<updated>2021-08-31T08:44:16Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update tdm patchset to v3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=538713]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536429]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream:  [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/soc/rockchip?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Driver for Analog audio being upstreamed by [[User:CounterPillow]], still in review though, but it works&lt;br /&gt;
** no HDMI yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
* SPDIF &amp;amp;mdash; needs some soldering and device tree changes to test, [[User:CounterPillow]] has ordered the necessary components&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Collabora has an unpolished forward port that has some issues with HDMI, it can be found here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/tree/5.10_for_rockchip&lt;br /&gt;
&lt;br /&gt;
pgwipeout has [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/quartz64-vop2 a branch] for initial vop2 work/testing, very rough around the edges and does not successfully probe yet.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11170</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11170"/>
		<updated>2021-08-24T07:56:38Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ update rk817 battery patchset to v4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=535051]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/soc/rockchip?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Collabora has an unpolished forward port that has some issues with HDMI, it can be found here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/tree/5.10_for_rockchip&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11135</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11135"/>
		<updated>2021-08-21T10:59:16Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ Update to v2 of the rockchip-i2s-tdm patchset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=535051]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/soc/rockchip?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Collabora has an unpolished forward port that has some issues with HDMI, it can be found here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/tree/5.10_for_rockchip&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11083</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11083"/>
		<updated>2021-08-17T13:08:46Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ io-domain got into linux-next, so update the link for that&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=532659]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/soc/rockchip?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11082</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11082"/>
		<updated>2021-08-17T13:03:56Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Upstreaming Status */ gpio-rockchip has been applied in linux-next, so update the link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=532659]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/gpio?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210527082453.1447484-3-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11073</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11073"/>
		<updated>2021-08-16T05:14:55Z</updated>

		<summary type="html">&lt;p&gt;Strit: update link to gpio patchset to v8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=531769]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210527082453.1447484-3-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11010</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11010"/>
		<updated>2021-08-12T21:30:30Z</updated>

		<summary type="html">&lt;p&gt;Strit: update link to usb2phy patchset to v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210726013529.1634738-1-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210527082453.1447484-3-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11007</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11007"/>
		<updated>2021-08-11T11:59:11Z</updated>

		<summary type="html">&lt;p&gt;Strit: pci host controller added to linux-next&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://github.com/CounterPillow/linux/compare/quartz64-5.14...CounterPillow:quartz-audio port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Basic Quartz64 Model A device tree in linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210726013529.1634738-1-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/controller?h=next-20210811&amp;amp;id=e1229e884e195f9a190ae12c6bb6a5337c843670]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210527082453.1447484-3-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=522639]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
According to pgwipeout, I/O device performance is within expected ranges now.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
* Battery&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* SD-Card&lt;br /&gt;
* eMMC&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=10995</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=10995"/>
		<updated>2021-08-08T15:42:29Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Software and OS Image Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Quartz64 is the most recent Single Board Computer offering from PINE64, initially released in June of 2021. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open ended slot (model A) or m.2 (model B) using one Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 has three LPDDR4 system memory options: 2GB, 4GB or 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM ===&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Manjaro ARM is a user friendly rolling release distribution, based on Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ARM with no desktop ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-bsp-images/releases Weekly images on Github]&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 4GB, 8GB LPDDR4.&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* 10/100/1000Mbps Ethernet&lt;br /&gt;
* WiFi 802.11 b/g/n/ac with Bluetooth 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port)&lt;br /&gt;
* optional eMMC module from 16GB up to 128GB&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART on model A, build in Wifi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability). As an example, PCIe-to-PCI bridges work, whereas they didn't on the ROCKPro64.&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are multiplexed, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [https://wiki.pine64.org/images/3/31/Quartz64_model-A_schematic_v1.0_20201215.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board Information, Schematics, and Certifications ==&lt;br /&gt;
* Model &amp;quot;A&amp;quot; Baseboard Dimensions: 133mm x 80mm x 19mm&lt;br /&gt;
* Input Power: DC 12V @ 3A 5.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic not yet available&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64%20model-B%20PCB%20placement.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Certifications:&lt;br /&gt;
** Disclaimer: Please note that PINE64 SBC is not a &amp;quot;final&amp;quot; product and in general certification is not necessary. However, PINE64 still submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3566 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
* LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]&lt;br /&gt;
* SPI NOR Flash information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]&lt;br /&gt;
* E-ink Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&lt;br /&gt;
* LCD Touch Screen Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/FY07024DI26A30-D_feiyang_LCD_panel.pdf 7.0&amp;quot; 1200x600 TFT-LCD Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/HK70DR2459-PG-V01.pdf Touch Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GT911%20Capacitive%20Touch%20Controller%20Datasheet.pdf GOODiX GT911 5-Point Capacitive Touch Controller Datasheet]&lt;br /&gt;
* Ethernet PHY information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf Realtek RTL8211 10/100/1000M Ethernet Transceiver]&lt;br /&gt;
* WiFi/BT module info:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet]]&lt;br /&gt;
* Enclosure information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/case/playbox_enclosure_20160426.stp Playbox Enclosure 3D file]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/case/ABS_enclosure_20160426.stp ABS Enclosure 3D file]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/case/pine64%20Die%20Cast%20casing-final.jpg Outdoor Aluminum Cast Dust-proof IP67 Enclosure Drawing]&lt;br /&gt;
* Connector information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/ePH.pdf 2.0mm PH Type connector specification use in Lithium Battery (VBAT) port and RTC Battery port]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/0.5FPC%20Front%20Open%20Connector%20H=1.5.pdf 0.5mm Pitch cover type FPC connector specification use in DSI port, TP port and CSI port]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== BSP Linux SDK ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux SDK ver 4.19 for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_BSP%20Linux.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 24554419aec29700add97167a3a4c9ed&lt;br /&gt;
** File Size: 32.67.00GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android SDK ==&lt;br /&gt;
&lt;br /&gt;
=== Android 11 SDK for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 77c2ff57ea3372fb04da7fb49e17d12b&lt;br /&gt;
** File Size: 79.00GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 Production Test Build for Quart64 model A SBC ===&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Stock Image [eMMC Boot] using DD method [20210604] ====&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
* DD image for 8GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): e4365753e584d9fce1b8f10f095eede6&lt;br /&gt;
*** File Size: 819MB&lt;br /&gt;
* DD image for 16GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 491c5f7744b0ca0b74ae76e607051836&lt;br /&gt;
*** File Size: 1.10GB&lt;br /&gt;
* DD image for 32GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 47a6f0cdac8bad06cb920743849a8894&lt;br /&gt;
*** File Size: 846MB&lt;br /&gt;
* DD image for 64GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4e2fed6f5db0d55afdc8a142fc0c4fe1&lt;br /&gt;
*** File Size: 884MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Production Test Build for Quart64 model A SBC [eMMC Boot] using ROCKChip tools method [20210604] ====&lt;br /&gt;
* Please unzip first and then using [https://files.pine64.org/os/Quartz64//android/RKDevTool_Release_v2.84.zip Rockchip Android tool ver 2.84] to flash in&lt;br /&gt;
* For Windows OS environment, please install the [https://files.pine64.org/os/Quartz64/android/DriverAssitant_v5.1.1.zip DriverAssistant v5.11] driver first &lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* The OTG port located at top USB 2.0 port on top of USB 3.0 port, needs USB type A to type A cable.&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_20210604_stock_android11_emmcboot.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 800f867fdd0d1b2bd7822c156b6067e3&lt;br /&gt;
*** File Size: 812MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 eink SDK for Quart64 model A SBC  ===&lt;br /&gt;
* The is the Android SDK build for 10.3&amp;quot; eink panel on Quartz64 model A SBC. &lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_eink.android11_SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 293a550584298de4fb95ceae18103672&lt;br /&gt;
** File Size: 72.88GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur.&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work as the PHY chip lacks its manufacturer ID.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the &amp;quot;Model A&amp;quot; Acrylic Case. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimetres.&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Software_Releases&amp;diff=10994</id>
		<title>Pinebook Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Software_Releases&amp;diff=10994"/>
		<updated>2021-08-08T15:35:40Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Manjaro ARM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux Image Releases =&lt;br /&gt;
&lt;br /&gt;
'''Special thanks to Sunxi community, ayufan, and longsleep for their contributions'''&lt;br /&gt;
&lt;br /&gt;
Below you will find useful links to various resources and forum threads:&lt;br /&gt;
* [https://linux-sunxi.org/Pine_Pinebook Sunxi Pinebook Page]&lt;br /&gt;
&lt;br /&gt;
==Manjaro ARM==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manjaro KDE ARM Community Build Image [microSD / eMMC Boot]  ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook/arm8-pinebook-kde-plasma/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro MATE ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook/arm8-pinebook-mate/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro XFCE ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook/arm8-pinebook-xfce/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro Gnome ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook/arm8-pinebook-gnome/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro SWAY ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook/arm8-pinebook-sway/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster [microSD / eMMC Boot] ===&lt;br /&gt;
* Armbian provides a build system and images for Debian/Xenial with BSP kernel and mainline kernel&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://redirect.armbian.com/pinebook-a64/ Pinebook Armbian download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-a64/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal XFCE Desktop [microSD / eMMC Boot]  ===&lt;br /&gt;
* Armbian provides a build system and images for Debian/Xenial with BSP kernel and mainline kernel&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://dl.armbian.com/pinebook-a64/Focal_legacy_desktop Pinebook Armbian download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-a64/ site].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KALI ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== KALI Build Image by Defensive Security [microSD / eMMC Boot] [2020.2] ===&lt;br /&gt;
* To learn more, please visit the official [https://www.offensive-security.com/kali-linux-arm-images/#2536677610546-d94f090d-c5ea KALI by Defensive Security website]&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://images.kali.org/arm-images/kali-linux-2020.4-pinebook.img.xz Direct download from Defensive Security]&lt;br /&gt;
*** MD5 (XZ file): 7E3643730D2D287A3726B641A6DA177C&lt;br /&gt;
*** File Size: 686MB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: kali&lt;br /&gt;
** password: kali&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AOSC ==&lt;br /&gt;
[[File:aosc.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* AOSC using LZ4 compression algorithm, please visit the [https://github.com/lz4/lz4 LZ4 github site] for utility&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module.&lt;br /&gt;
* 8GB microSD card and above or 16GB eMMC module and above&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
=== AOSC KDE Community Build Image [microSD / eMMC Boot]  ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/kde/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC GNOME Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/gnome/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC MATE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/mate/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC XFCE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/xfce/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC LXDE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/lxde/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KDE Neon Image ==&lt;br /&gt;
[[File:kde_neon.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== KDE Neon Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
&lt;br /&gt;
** [https://files.kde.org/neon/images/pinebook-remix-nonfree/useredition/ Direct download latest release build from KDE Neon Pinebook and 1080P Pinebook]&lt;br /&gt;
* Login with&lt;br /&gt;
** username: live&lt;br /&gt;
** password: live&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KDE Neon Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
* For 14.1' and 11.6&amp;quot; Pinebook, please choose &amp;quot;neon-pinebook-remix-useredition-202xxxxx-1500-arm64.img.gz&amp;quot;&lt;br /&gt;
* For 1080P 11.6&amp;quot; Pinebook, please choose &amp;quot;neon-pinebook-remix-useredition-202xxxxx-1500-arm64-1080p.img.gz&amp;quot;&lt;br /&gt;
** [https://files.kde.org/neon/images/pinebook-remix-nonfree/useredition/ Direct download latest release build from KDE Neon 1080P Pinebook]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Q4OS Community Build Image [microSD Boot] ===&lt;br /&gt;
* Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'&lt;br /&gt;
* To learn more please visit the [https://forum.pine64.org/showthread.php?tid=4506 forum] or official [https://q4os.org/index.html Q4OS website]&lt;br /&gt;
* DD image for 14.1&amp;quot; and 11.6&amp;quot; Pinebook (8GB microSD card and above)&lt;br /&gt;
** [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge and look for q4os-x.x-pinebook.xx.zip]&lt;br /&gt;
* DD image for 1080P 11.6&amp;quot; Pinebook (for 8GB microSD card and above)&lt;br /&gt;
** [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge and look for q4os-x.x-pinebook1080p.xx.zip]&lt;br /&gt;
* login with:&lt;br /&gt;
** username: adminq&lt;br /&gt;
** password: adminq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DietPi ==&lt;br /&gt;
[[File:dietpi.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* DietPi is a '''lightweight''', yet '''easy to setup''' and '''feature-rich''' Linux distribution, based on '''Debian'''.&lt;br /&gt;
* To find out more about DietPi, please visit the [https://dietpi.com/docs/ official documentation].&lt;br /&gt;
* Discuss the Pinebook build on the [https://forum.pine64.org/showthread.php?tid=12512 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB micro SD card and above)&lt;br /&gt;
** [https://dietpi.com/downloads/images/DietPi_Pinebook-ARMv8-Buster.7z Direct download from dietpi.com]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username: '''root'''&lt;br /&gt;
** Password: '''dietpi'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
[[File:slackware.jpg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Slackware is a very old, interesting, convenient and easy distribution.&lt;br /&gt;
* Visit the project's website here (https://fail.pp.ua)&lt;br /&gt;
* You can follow the ongoing discussion about Slackware on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=9439)&lt;br /&gt;
* The Slackware build using LRZ compression algorithm, please visit the [https://github.com/ckolivas/lrzip lrunzip github site] for utility&lt;br /&gt;
&lt;br /&gt;
=== Slackware Aarch64 Miniroot Community Build Image [microSD Boot] ===&lt;br /&gt;
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://3space.xyz/pineslarm/ Direct download from developer KRT site and look for slarm64-current-aarch64-base-rootfs-xxxxxxxx-x.x.xx-pinebook-build-xxxxxxxx.img.lrz]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username : root&lt;br /&gt;
** Password : password&lt;br /&gt;
&lt;br /&gt;
=== Slackware Aarch64 XFCE Community Build Image [microSD Boot] ===&lt;br /&gt;
* Only work on 1080P 11.6&amp;quot; Pinebook, not applicable to 14.1&amp;quot; and 11.6&amp;quot; Pinebook.&lt;br /&gt;
* System with a graphical shell&lt;br /&gt;
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://3space.xyz/pineslarm/ Direct download from developer KRT site and look for slarm64-current-aarch64-xfce-rootfs-xxxxxxxx-x.x.xx-pinebook-build-xxxxxxxx.img.lrz]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username : root&lt;br /&gt;
** Password : password&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Netrunner [No Longer Maintained] ==&lt;br /&gt;
[[File:netrunner.jpg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Netrunner [20180417] [microSD Boot] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* You can visit the Netrunner website [https://www.netrunner.com/netrunner-for-pinebook/ here]&lt;br /&gt;
* DD image:&lt;br /&gt;
** [https://sourceforge.net/projects/netrunneros/files/netrunner-arm/pinebook/ Direct download from sourceforge.net]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RISC_OS [No Longer Maintained] ==&lt;br /&gt;
[[File:RISC_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== RISC OS Community Build Image [microSD Boot] [19.02] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* To learn more about RISC OS please visit [https://www.riscosopen.org/ RISC OS website] &lt;br /&gt;
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https:///files.pine64.org/os/Pinebook/RISCOS/pine14_riscos_1GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4BE5698516FAF8420AEA34A422C20991&lt;br /&gt;
*** size: 50MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= BSD Image Releases =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== NetBSD Community Build Image [microSD Boot] ===&lt;br /&gt;
* To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page] &lt;br /&gt;
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://www.invisible.ca/arm/ Direct download latest release build from NetBSD by select 64bit - Pinebook]&lt;br /&gt;
** size: 345MB&lt;br /&gt;
* Console and SSH default login:&lt;br /&gt;
** username: root&lt;br /&gt;
** password: [none]&lt;br /&gt;
* Instructions concerning enabling SSH can be found [https://www.netbsd.org/docs/guide/en/chap-boot.html#chap-boot-ssh here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== OpenBSD 6.6-snapshot, Community Build Image (FVWM2 WM) ===&lt;br /&gt;
* To learn more about OpenBSD please visit [https://www.openbsd.org OpenBSD main page]&lt;br /&gt;
* DD image to microSD card or eMMC module (at least 8GB). Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** https://www.dropbox.com/s/79hpdpehrbbk984/pinebook-2019-11-04.img.tgz.sha256?dl=0 (sha256)&lt;br /&gt;
** https://www.dropbox.com/s/yas1glfvvucb9a0/pinebook-2019-11-04.img.tgz?dl=0 (image)&lt;br /&gt;
** compressed size: 3.6GB&lt;br /&gt;
* Console and SSH default login:&lt;br /&gt;
** username: pine64&lt;br /&gt;
** username: pine64&lt;br /&gt;
** root password: pine64&lt;br /&gt;
* If you need more information please ping: https://forum.pine64.org/member.php?action=profile&amp;amp;uid=12423&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Android Image Releases =&lt;br /&gt;
&lt;br /&gt;
== Android 7.x [No Longer Maintained] ==&lt;br /&gt;
[[File:android_7.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Android 7.1 Community Build Image [microSD Boot] by ayufan ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* Special thanks to ayufan, Icenowy, lennyraposo, longsleep, lukasz, tkaiser, Xalius and PINE64 community contributors&lt;br /&gt;
* Please use good random IO access performance microSD card such as Samsung EVO when try out Android 7.1&lt;br /&gt;
* DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://github.com/ayufan-pine64/android-7.1/releases/latest Direct download latest release build from ayufan github and look for android-7.1-pine-a64-pinebook-x.x.x-xx.img.gz]&lt;br /&gt;
* Please allows some time (around 5 minutes) for the initialization process on 1st boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android 6.x eMMC ==&lt;br /&gt;
[[File:android_6.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 14.1&amp;quot; and 11.6&amp;quot; Pinebook [microSD to eMMC] [20170605] ===&lt;br /&gt;
* Rootable build, online update (OTA) only work when the build still not root&lt;br /&gt;
* LCD resolution is 1366 x 768&lt;br /&gt;
* Rooted DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/android/android-ver6.0.1-rooted-20170605-pinebook-sd2emmc-lpddr3.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): C99BF459C6724BA73F12C532E87A8BA5&lt;br /&gt;
*** File Size: 776MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 1080P 11.6&amp;quot; Pinebook [microSD to eMMC] [20181001] ===&lt;br /&gt;
* Rootable build&lt;br /&gt;
* LCD resolution is 1920 x1080&lt;br /&gt;
* Rooted DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/android/android-ver6.0.1-rooted-20181001-1080P-pinebook-sd2emmc-lpddr3.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): E433A148CEBD743EADE6CAA765331A4B&lt;br /&gt;
*** File Size: 595MB&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 1080P 11.6&amp;quot; Pinebook [microSD boot] [20181001] ===&lt;br /&gt;
* Rootable build&lt;br /&gt;
* LCD resolution is 1920 x1080&lt;br /&gt;
* Please use high performance microSD card for Android boot which request frequent random read access. &lt;br /&gt;
* Please ignore warning message regarding SD corrupted on home screen upper left corner&lt;br /&gt;
* DD images:&lt;br /&gt;
** For 8GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): CD27DF6083E6A4A5E7C8B986EB92FAA7&lt;br /&gt;
**** File Size: 553MB&lt;br /&gt;
** For 16GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 1376AAE8382E96FD7B45B0998A5CD6E9&lt;br /&gt;
**** File Size: 703MB&lt;br /&gt;
** For 32GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): B54E7F323B316750654E385B078AEC58&lt;br /&gt;
**** File Size: 867MB&lt;br /&gt;
** For 64GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): C8DBC6293EB51E58F91E27364C8C587D&lt;br /&gt;
**** File Size: 734MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== /e/ [No Longer Maintained] ==&lt;br /&gt;
[[File:e.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== /e/OS Community Build Image p [microSD and eMMC Boot] [20190926] ===&lt;br /&gt;
* Only work on 1080P 11.6&amp;quot; Pinebook, not applicable to 14.1&amp;quot; and 11.6&amp;quot; Pinebook.&lt;br /&gt;
* To learn more about /e/OS, please visit the [https://e.foundation/ official website]&lt;br /&gt;
* Please check out [https://medium.com/@edevelopers.blog/e-os-ports-for-the-pinebook-and-pinephone-596139c76479 this article] on the Pinebook /e/ build.&lt;br /&gt;
* For thread diiscussion please visit the [https://forum.pine64.org/showthread.php?tid=7954 PINE64 forum]&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/e/e-n-pinebook_20190926.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4DC46A4E3ED2B47F4830E96DFCBBC6D8&lt;br /&gt;
*** File Size: 685MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bliss OS [No Longer Maintained] ==&lt;br /&gt;
[[File:bliss_os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Bliss OS [20170919] [microSD Boot] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6&amp;quot; Pinebook.&lt;br /&gt;
* An Open-Source OS, based on Android, for phones, tablets &amp;amp; PCs.&lt;br /&gt;
* Multi-Windows Android Build&lt;br /&gt;
* You can visit the Bliss OS website [https://blissroms.com/ here]&lt;br /&gt;
* DD image:&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/Bliss/Bliss-Pinebook_09.19.17_01.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 6B5BC28D69D575BA5448AD8081A0D356&lt;br /&gt;
*** File Size: 943MB&lt;br /&gt;
* Use the Taskbar launcher for Desktop mode UI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux BSP SDK =&lt;br /&gt;
== Linux BSP [4.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver4.0/A64-BSP-4.0.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 802D7C92D27177CBD17567359F9845A7&lt;br /&gt;
** File Size: 4.67GB&lt;br /&gt;
&lt;br /&gt;
== Linux BSP [3.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver3.0/A64-BSP-3.0.tgz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 898ACF446851DF3BE7B643F62CE3CE84&lt;br /&gt;
** File Size: 4.18GB&lt;br /&gt;
&lt;br /&gt;
== Linux BSP [2.0], kernel [v3.10], with GPL compliance header ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver2.0/A64-BSP-2.0-GPL.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 2EE11C9AED246C17995493F213A6A6DA&lt;br /&gt;
** File Size: 6.41GB&lt;br /&gt;
&lt;br /&gt;
= Android SDK =&lt;br /&gt;
== Android Oreo [v8.1] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver4.0/A64-Android-8.1-SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-Gzip file): 7E73672FE84F8CD099264D640E107EA3&lt;br /&gt;
** File Size: 28.87.95GB&lt;br /&gt;
&lt;br /&gt;
== Android Nougat [v7.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver3.0/A64-Android-7.0-SDK.tgz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 5D23D65BC1AA32B9048F62A4176BD9B3&lt;br /&gt;
** File Size: 22.60GB&lt;br /&gt;
&lt;br /&gt;
== Android Marshmallow [v6.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver2.0/A64-Android-6.0-SDK.zip Direct Download from pine64.org]&lt;br /&gt;
** MD5 (Zip file): 12362D0B63EBF29FC363A50A942346D5&lt;br /&gt;
** File Size: 12.17GB&lt;br /&gt;
&lt;br /&gt;
= Mali-400 64-bit Driver =&lt;br /&gt;
== Mali-400 64-bit Driver [20160622] ==&lt;br /&gt;
* [[Mali_Driver|Mali 64-bit Driver Download]]&lt;br /&gt;
&lt;br /&gt;
= Other Tools =&lt;br /&gt;
* [https://drive.google.com/file/d/0B0cEs0lxTtL3VmstaEFfbmU1NFk/view?usp=sharing Allwinner PhoenixCard Bootable SD-Card Creator]&lt;br /&gt;
* [https://chinagadgetsreviews.com/download-dragonface-latest-version-v-2-2-5.html Allwinner DragonFace V2.2.5 software that will let you edit and modify A64 Android Build PhoenixCard image]&lt;br /&gt;
** [https://mega.nz/#!QxEjmaKB!S5nsVnzXVZg5aJ6qLtPOx1yJDPlbl0Vs4iV9VliRpE8 Direct download at Mega]&lt;br /&gt;
&lt;br /&gt;
= Checking microSD Card Performance and whether it is Counterfeit =&lt;br /&gt;
* [https://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/comment-page-3/#comment-9861 H2testw 1.4 – Gold Standard In Detecting USB Counterfeit Drives]&lt;br /&gt;
* [https://oss.digirati.com.br/f3/ F3 - an alternative to h2testw]&lt;br /&gt;
This will help you to determine if the SD-Card is Counterfeit Drive or not&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=10993</id>
		<title>Pinebook Pro Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=10993"/>
		<updated>2021-08-08T15:32:28Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Manjaro ARM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux OS Image Releases =&lt;br /&gt;
For information on how to install these images onto your device, please see the [[NOOB]] Page, which includes information on writing images to the device eMMC or an SD card&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The Manjaro project offers a mainline kernel with patches and modules to support PBPro hardware. To learn more about Manjaro please visit [https://forum.manjaro.org/tags/manjaroarm Manjaro Forum]. You can follow the ongoing discussion about Manjaro on the [https://forum.pine64.org/showthread.php?tid=8207 PINE64 forum].&lt;br /&gt;
All images boot from both SD card and the internal eMMC module.&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-kde-plasma/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Xfce ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-xfce/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Gnome ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-gnome/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Sway ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-sway/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with no desktop ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-pro/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_current_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Gnome (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with GNOME Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://redirect.armbian.com/region/NA/pinebook-pro/Focal_current_gnome]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_legacy_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Debian Buster with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Buster_legacy_desktop Armbian's Pinebook Pro Debian Buster Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Bionic with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Bionic with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Bionic_legacy_desktop Armbian's Pinebook Pro Ubuntu Bionic Xfce Desktop download site]&lt;br /&gt;
&lt;br /&gt;
== Twister OS ==&lt;br /&gt;
[[File:Twister_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Twister OS Armbian-Reforged with Xfce. It boots from microSD card and from eMMC. For more information on Twister OS, please visit this [https://twisteros.com/ official site]. You can follow the ongoing discussion about Twister OS on the [https://forum.pine64.org/showthread.php?tid=12192 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* After flashing image, edit /boot/armbianEnv.txt, replace the dtb name with &amp;lt;code&amp;gt;rk3399-pinebook-pro.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://twisteros.com/twisterarmbian.html Direct download latest images from Twister OS's website] (size: 2.8GB)&lt;br /&gt;
&lt;br /&gt;
'''Password'''&lt;br /&gt;
&lt;br /&gt;
asdasd&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
[[File:fedora1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Fedora Official ===&lt;br /&gt;
&lt;br /&gt;
Using this [https://nullr0ute.com/2021/05/fedora-on-the-pinebook-pro/ blog post] it is now possible to run Official Fedora on the Pinebook Pro. &lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
Upstream Fedora uses  SPI flash on the Pinebook Pro to manage uboot. &lt;br /&gt;
&lt;br /&gt;
=== Fedora 34/33/32 Gnome/KDE/Minimal Images ===&lt;br /&gt;
&lt;br /&gt;
Unofficial images based on Fedora, and a [https://copr.fedorainfracloud.org/coprs/aptupdate/pinebook-pro/ copr] repository for kernel and tweaks. It boots from microSD card and from eMMC. To learn more about how they are build [https://github.com/bengtfredh/pinebook-pro-fedora-installer Install script].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://s3.fredhs.net/minio/pinebook-pro-image/ Fedora Pinebook Pro Images]&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Cinnamon ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://cinnamon-spices.linuxmint.com/ Cinnamon] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Cinnamon-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with KDE ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://kde.org/ KDE aka Plasma] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-KDE-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Xfce===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://xfce.org/ Xfce] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Xfce-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Gnome ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://www.gnome.org/gnome-3/ GNOME 3] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Workstation-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ARM ==&lt;br /&gt;
[[File:Archlinux-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Arch Linux ARM root filesystem customized for the Pinebook Pro. Instructions are included for installation on microSD card, eMMC module and NVME SSD.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SvenKiljan/archlinuxarm-pbp/releases/latest Get the latest image from GitHub] (size: 591 MB).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Make sure to thoroughly read the [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md readme], [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md installation instructions] and [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/FAQ.md FAQ].&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
The default Arch Linux ARM user credentials.&lt;br /&gt;
&lt;br /&gt;
Username: alarm&lt;br /&gt;
&lt;br /&gt;
Password: alarm&lt;br /&gt;
&lt;br /&gt;
The password for the root account is 'root'.&lt;br /&gt;
&lt;br /&gt;
== postmarketOS ==&lt;br /&gt;
[[File:PostmarketOS logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Official postmarketOS build with the GNOME desktop for the Pinebook Pro. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://images.postmarketos.org/pinebookpro/ Direct download latest images from postmarketOS] (size: 400 MB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
demo/demo&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
demo/147147&lt;br /&gt;
&lt;br /&gt;
==Kali Linux==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux prebuilt OS images for Pinebook Pro===&lt;br /&gt;
&lt;br /&gt;
Official pre-built OS images of Kali Linux for the Pinebook Pro featuring all tools you'd expect from the distribution. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://www.offensive-security.com/kali-linux-arm-images/ Direct download latest images from Offensive Security's website] (size: 2.0 GB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
kali/kali&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'. It boots from microSD card and from eMMC. To learn more please visit the [https://forum.pine64.org/showthread.php?tid=8385 PINE64 forum] or official [https://q4os.org/index.html Q4OS website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://sourceforge.net/projects/q4os/files/testing/ Direct download latest release build from SourceForge]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
User account and password are created on first run.&lt;br /&gt;
&lt;br /&gt;
== DietPi ==&lt;br /&gt;
[[File:dietpi.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* DietPi is a '''lightweight''', yet '''easy to setup''' and '''feature-rich''' Linux distribution, based on '''Debian'''.&lt;br /&gt;
* To find out more about DietPi, please visit the [https://dietpi.com/docs/ official documentation].&lt;br /&gt;
* Discuss the Pinebook build on the [https://forum.pine64.org/showthread.php?tid=14061 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB micro SD card and above)&lt;br /&gt;
** [https://dietpi.com/downloads/images/DietPi_PinebookPro-ARMv8-Buster.7z Direct download from dietpi.com]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username: '''root'''&lt;br /&gt;
** Password: '''dietpi'''&lt;br /&gt;
&lt;br /&gt;
== openSUSE ==&lt;br /&gt;
[[File:opensuse-distribution.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest openSUSE Tumbleweed images for Pinebook Pro here: [https://en.opensuse.org/HCL:Pinebook-Pro-RK3399]&lt;br /&gt;
&lt;br /&gt;
= BSD =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [http://www.armbsd.org/arm/ Direct download from NetBSD]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Instructions concerning enabling SSH can be found [https://www.netbsd.org/docs/guide/en/chap-boot.html#chap-boot-ssh here].&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/(none)&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about OpenBSD, please visit [https://www.openbsd.org/ OpenBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
ARM64 images, (including support for Pinebook Pro), can be found here [https://www.openbsd.org/arm64.html OpenBSD arm64]&lt;br /&gt;
&lt;br /&gt;
= Linux Installer Releases =&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer manjaro-arm-installer] script is intended to install Manjaro ARM directly to SD/eMMC cards without the need for images (including LXQT, Mate &amp;amp; CuboCore editions, as well as full disk encryption). Running on a Linux x86 computer, it can install Manjaro ARM directly to an empty eMMC using an eMMC to USB adapter. The script can also be run from SD to install an image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
[[File:debian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Uses only the upstream kernel and firmware without special patches&lt;br /&gt;
* No graphical display yet, works only through serial console&lt;br /&gt;
* Requires adding the non-free component to your /etc/apt/sources.list file and installing the &amp;quot;firmware-linux&amp;quot; package for Wi-Fi and Bluetooth support&lt;br /&gt;
* Installer is loaded into RAM, can install onto the same media from which it’s booted&lt;br /&gt;
* Supports automatic partitioning and full disk encryption through LVM&lt;br /&gt;
* Installer currently doesn't install the bootloader, leaving the installed system in an unbootable state until it's manually added&lt;br /&gt;
&lt;br /&gt;
[https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/ The relevant files are built daily here] and may sometimes be unavailable if the build system is having issues. The &amp;quot;README.concatenateable_images&amp;quot; file provides instructions on how to combine the partition.img.gz file with the firmware.pinebook-pro.rk3399.img.gz file in order to create a DD-able image.&lt;br /&gt;
&lt;br /&gt;
The official images are '''not''' recommended yet until the display begins working and the installer properly installs the bootloader. Most users will want to see [[Pinebook Pro Debian Installer|Daniel Thompson's Debian Installer]] instead.&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
[[File:GentooLogo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script that prepares a Gentoo arm64 stage 3 tarball for the Pinebook Pro. The script takes care of device specifics like an optimized make.conf, an overlay that provides kernel and firmware amongst others, and other miscellaneous fixes.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* The usual tarball setup as per [https://wiki.gentoo.org/wiki/Handbook:AMD64 Gentoo Handbook] is left to the user.&lt;br /&gt;
* Forum thread with instructions at https://forum.pine64.org/showthread.php?tid=8765&lt;br /&gt;
&lt;br /&gt;
== Kali Linux ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script to create official Kali Linux OS images for the Pinebook Pro. The script carries out the build process in entirety and is Pinebook Pro specific.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/pinebook-pro.sh Kali Linux install script] from the project's GitLab.&lt;br /&gt;
* For more information regarding building the OS image please read the README instruction at https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/README.md&lt;br /&gt;
&lt;br /&gt;
== K1ss OS ==&lt;br /&gt;
[[File:K1ss.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a repository containing an unofficial port of KISS Linux to AARCH64. The tarball is built for generic aarch64, currently being tested on the Pinebook Pro. You can follow the ongoing discussion about K1ss Linux on the [https://forum.pine64.org/showthread.php?tid=9304 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://github.com/jedavies-dev/kiss-aarch64 K1ss Linux install script] from the project's GitHub.&lt;br /&gt;
&lt;br /&gt;
== NixOS ==&lt;br /&gt;
[[File:nixos.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
You can follow the ongoing discussion about NixOS on the [https://forum.pine64.org/showthread.php?tid=10524 PINE64 forum]. There is a good chance we will see Tier 1 support for aarch64, including the Pinebook Pro, in 2021 (see https://github.com/NixOS/rfcs/pull/87).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* This is instructions to install NixOS on the Pinebook Pro: https://nixos.wiki/wiki/NixOS_on_ARM/PINE64_Pinebook_Pro&lt;br /&gt;
* Please pull the latest [https://github.com/samueldr/wip-pinebook-pro samueldr's repository ] from the project's GitHub.&lt;br /&gt;
* [[NixOS Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== SkiffOS ==&lt;br /&gt;
[[File:SkiffOS-Icon-1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Instructions to build/install on the Pinebook Pro: https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/book&lt;br /&gt;
* Please pull the latest version from the project's GitHub.&lt;br /&gt;
* Compiling the boot image takes approximately 30 minutes.&lt;br /&gt;
* Easily configure the kernel, compiler, etc with Buildroot.&lt;br /&gt;
* Pre-built ISOs will be available with the upcoming 2021.02 release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTab&amp;diff=10992</id>
		<title>PineTab</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTab&amp;diff=10992"/>
		<updated>2021-08-08T15:28:34Z</updated>

		<summary type="html">&lt;p&gt;Strit: /* Manjaro ARM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|1=IMPORTANT INFORMATION for '''Early Adopters''' - please [[PineTab/Early-Adopter|'''CLICK HERE''']] - some '''known issues''' are listed there}}&lt;br /&gt;
&lt;br /&gt;
The PineTab is a 10&amp;quot; tablet created by Pine64.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 11mm x 175mm x 260mm (Thickness, Width, Height)&lt;br /&gt;
* '''Weight:''' 575g (Tablet alone)&lt;br /&gt;
* '''Build:''' Plastic&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** 64GB of internal eMMC storage&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** M.2 SSD slot, supports SATA and USB devices only, not NVME (optional)&lt;br /&gt;
* '''Cameras:''' 2Mpx Front, 5Mpx Rear&lt;br /&gt;
* '''SOC:''' Allwinner A64 Quad Core&lt;br /&gt;
* '''CPU:''' 4x ARM A53 1.152GHz&lt;br /&gt;
* '''GPU:''' Mali 400 MP2&lt;br /&gt;
* '''RAM:''' 2GB LPDDR3&lt;br /&gt;
* '''I/O:''' HD Video Out (Mini HDMI), Micro USB 2.0 OTG, USB 2.0 A host, 3.5mm Headphone/Mic combo,&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi (802.11b/g/n, 2.4GHz only)&lt;br /&gt;
** Bluetooth 2.1&lt;br /&gt;
** M.2 LTE / Cell MODEM card, (optional, and takes place of optional M.2 SSD)&lt;br /&gt;
* '''Display:'''&lt;br /&gt;
** '''Size:''' 10.1 inches (257mm) diagonal&lt;br /&gt;
** '''Type:''' HD IPS capacitive touchscreen, 16M colors&lt;br /&gt;
** '''Resolution:''' 1280x800, 16:10 ratio &amp;lt;br&amp;gt;&lt;br /&gt;
* '''Attachments/Accessories:''' Magnetically attached keyboard (optional)&lt;br /&gt;
* '''Battery:''' 6000MAh (6Ah)&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume rocker&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
** 2.5mm OD 0.7mm ID DC Jack Power (5V 2A) Port&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
'''Overview:''' The PineTab detachable keyboard features a full function row, FN key functionality, meta key (where the Windows key would be) and all of the keys you need for daily use.&lt;br /&gt;
&lt;br /&gt;
'''FN keys:''': Pause/play (F2), Stop (F3), Previous(F4), Next(F5), Music (F6), Mail (F7), Home (F8), Mute (F9), Vol- (F10), Vol+ (F11), Disable touchpad (F12), NumLock (Insert), Scroll Lock (Delete), PgUp (Up Arrow), PgDn (Down Arrow), Home (Left Arrow), End (Right Arrow), Digital Numpad (7,8,9,0,U,I,O,P,J,K,L,;,M,.,/)&lt;br /&gt;
&lt;br /&gt;
==Versions==&lt;br /&gt;
* &amp;quot;pinetab-dev&amp;quot;: development version sent to ~100 developers. This one is like the Early Adopter version, but has a different display panel.&lt;br /&gt;
* [[PineTab/Early-Adopter|Early Adopter]]: the first hardware revision of the PineTab, which shipped to customers.&lt;br /&gt;
&lt;br /&gt;
[[File:PineTabBoard.jpeg|400px|thumb|right|The insides of the PineTab]]&lt;br /&gt;
&lt;br /&gt;
== PineTab board information, schematics and certifications ==&lt;br /&gt;
* PineTab mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/PineTab%20Schematic%20v1.2-20191125.pdf PineTab mainboard Released Schematic ver 1.2]&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/PineTab%20Board%20View%20v1.2-20191201-top.pdf PineTab mainboard component placement ver 1.2 - Top View]&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/PineTab%20Board%20View%20v1.2-20191201-bottom.pdf PineTab mainboard component placement ver 1.2 - Bottom View]&lt;br /&gt;
* PineTab keyboard schematic:&lt;br /&gt;
** PineTab keyboard and Pinebook (Pro) keyboard using same controller and from same engineering source&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/Pinetab%20HB092A%20Keyboard%20Schematic.pdf PineTab Keyboard Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/HB092_0884232458_Hynitron_PTP_20200514_662905_Linux_US_BackLight_CRC_175057F5.hex PineTab keyboard firmware code]&lt;br /&gt;
** [https://files.pine64.org/doc/PineTab/SH68F83V2.0.pdf PineTab Keyboard Controller Datasheet]&lt;br /&gt;
&lt;br /&gt;
* PineTab certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineTab%20FCC-SDOC%20Certificate-S20060600404001.pdf PineTab FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineTab%20CE-RED%20Certificate-S20060600403.pdf PineTab CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PINETAB%20ROHS%20TEST%20REPORT.pdf PineTab ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner A64 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64%20brief%20v1.0%2020150323.pdf Allwinner A64 SoC brief introduction]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf Allwinner A64 SoC Data Sheet V1.1 (Official Released Version)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/Allwinner_A64_User_Manual_V1.0.pdf Allwinner A64 SoC User Manual V1.0 (Official Release Version)]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP803 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf AXP803 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LPDDR3 (178 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/ATL3A1632H12A_mobile_lpddr3_11x11.5_v1.0_1600.pdf Artmem LPDDR3 datasheet]&lt;br /&gt;
&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 64GB SanDisk eMMC Datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC for Rear Module datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GC2145 2MP CMOS Image Sensor SoC for Front Module datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetab/GT9271.pdf GOODiX GT9271 Capacitive Touch Controller datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetab/GT9271_Config_20200818_142030_V66.cfg PineTab GT9271 Capacitive Touch Controller configuration file]&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf RTL8723BS/RTL8723CS specification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
The PineTab will automatically boot from microSD if a bootable card is inserted. Although it is technically possible to use any ARM distro (because the PineTab uses the mainline kernel), only few of them will actually be usable on Early Adopters PineTab, due to specifics of working with LCD panel. Among those listed all except for postmarketOS have working builds.&lt;br /&gt;
&lt;br /&gt;
=== UBPorts ===&lt;br /&gt;
[[File:Ubports-logo.png|100px]]&lt;br /&gt;
The UBPorts Ubuntu Touch is what was preinstalled on the PineTab Early Adopters batch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It can update itself in System Settings, and also a  jenkins daily build can be downloaded at this updated address for the latest daily image: &lt;br /&gt;
&lt;br /&gt;
https://ci.ubports.com/job/rootfs/job/rootfs-pinetab-systemimage/&lt;br /&gt;
&lt;br /&gt;
The last stable builds are also listed and appear to be updated every few weeks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It should be noted that as of 20th January the latest stable/release candidate and development builds  still lacked Bluetooth, Rotation and had the same issues with online accounts etc&lt;br /&gt;
&lt;br /&gt;
Online accounts access have a fix for Google accounts here https://github.com/rubencarneiro/account-plugins/releases&lt;br /&gt;
&lt;br /&gt;
There are however significant updates to the original pinetab image (without the issues above) &lt;br /&gt;
&lt;br /&gt;
The old image appears to be deprecated here&lt;br /&gt;
[https://ci.ubports.com/job/rootfs/job/rootfs-pinetab/ here]&lt;br /&gt;
&lt;br /&gt;
In the event that WiFi fails to connect, the USB port can be used with an appropriate dongle to connect for internet using ethernet cable.&lt;br /&gt;
&lt;br /&gt;
=== postmarketOS ===&lt;br /&gt;
[[File:PostmarketOS-logo.png|100px]]&lt;br /&gt;
postmarketOS extends [https://www.alpinelinux.org/ Alpine Linux] to run on smartphones and other mobile devices.&lt;br /&gt;
&lt;br /&gt;
It offers various user interfaces (Phosh, Plasma Mobile, Sxmo, Plasma Desktop, Gnome 3, Kodi, XFCE4, ...). As of writing, official images are provided with Phosh and Plasma Mobile. The official images come in two flavors, either as demo image to try out postmarketOS, or with the installer.&lt;br /&gt;
&lt;br /&gt;
When using the installer images (recommended), it is possible to:&lt;br /&gt;
* encrypt your installation&lt;br /&gt;
* install from the SD card to eMMC&lt;br /&gt;
&lt;br /&gt;
Getting postmarketOS for the PineTab:&lt;br /&gt;
* [https://postmarketos.org/download/ Download page]&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/PINE64_PineTab_(pine64-pinetab)#Installation Flashing instructions]&lt;br /&gt;
* Power users may also create their own image with the distribution's install and development tool &amp;lt;code&amp;gt;pmbootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ARM ===&lt;br /&gt;
[[File:Archlinux-logo.png|100px]]&lt;br /&gt;
Arch Linux ARM with Phosh as the UI selection, maintained by the DanctNIX community. &lt;br /&gt;
&lt;br /&gt;
The latest image can be downloaded [https://github.com/dreemurrs-embedded/Pine64-Arch/releases here]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM ===&lt;br /&gt;
[[File:Manjaro-logo.svg|100px]]&lt;br /&gt;
The PineTab &amp;quot;Early Adopter&amp;quot; edition is currently the only device supported by Manjaro ARM.&lt;br /&gt;
&lt;br /&gt;
Images with several different environments, including Phosh and Plasma, are available for the &amp;quot;Dev&amp;quot; pre-release can be downloaded [https://osdn.net/projects/manjaro-arm/storage/pinetab/ here]&lt;br /&gt;
&lt;br /&gt;
Images for the Early Adopter version can be downloaded [https://github.com/manjaro-arm/pinetab-images/releases here].&lt;br /&gt;
Both Beta releases and weekly unstable builds for Phosh and Plasma Mobile can be found there.&lt;br /&gt;
&lt;br /&gt;
=== Mobian ===&lt;br /&gt;
[[File:Debian-logo.png|100px]]&lt;br /&gt;
Mobian is a project providing Debian images for mobile devices. &lt;br /&gt;
&lt;br /&gt;
PineTab images can be downloaded [https://images.mobian-project.org/pinetab/ here]. Password is '''1234'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sailfish OS ===&lt;br /&gt;
&lt;br /&gt;
[[File:SailfishOS logo.png|100px]]&lt;br /&gt;
&lt;br /&gt;
You can get SailfishOS on your with the flash-it script, which will write an image on a SD card. https://github.com/sailfish-on-dontbeevil/flash-it&lt;br /&gt;
&lt;br /&gt;
There is a forum discussion with further information.&lt;br /&gt;
&lt;br /&gt;
http://forum.pine64.org/showthread.php?tid=11850&lt;br /&gt;
&lt;br /&gt;
Many things are still broken but Bluetooth, Audio, Rotation and Keyboard are working.&lt;br /&gt;
&lt;br /&gt;
== Installation instructions ==&lt;br /&gt;
For instructions on how to install the operating systems to the eMMC or microSD card see [[PinePhone Installation Instructions]]. The information is almost the same for the PineTab, as it is a very similar device. Do not try to use the PinePhone images though, use the PineTab images linked above.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
To test an OS, just flash its image onto an microSD card, plug it into PineTab, and reboot.&lt;br /&gt;
Note that USB stick won't work.&lt;br /&gt;
Also note that you need to &amp;quot;flash&amp;quot;, not just copy the file onto the card.&lt;br /&gt;
Also remember that you need to unpack image file if it's packed!&lt;br /&gt;
&lt;br /&gt;
You can do it using Ubuntu Touch installed on the PineTab! For now, only Mobian is supported by the guide below.&lt;br /&gt;
&lt;br /&gt;
* First, make sure you have enough free disk space and empty Downloads directory on the PineTab (while not strictly necessary, empty Downloads dir will simplify your typing. You can just move all files from there to another directory).&lt;br /&gt;
* Turn off Sleep when idle in the settings. Settings &amp;gt; Battery &amp;gt; Sleep when idle: Never&lt;br /&gt;
* Go to the Mobian link above and download compressed image (the one ending with .img.gz) - usual recommendation is to download latest, i.e. lowest one.&lt;br /&gt;
* Open terminal and type this in it:&lt;br /&gt;
  cd Downloads&lt;br /&gt;
  ls&lt;br /&gt;
* It should show you the name of the file you've just downloaded&lt;br /&gt;
* This file is compressed, so first you need to uncompress it. Type this into terminal:&lt;br /&gt;
  gunzip *.gz &amp;amp;&amp;amp; echo done&lt;br /&gt;
* This command will take some time (you won't see any progress until it's done). It either will succeed (and print &amp;quot;done&amp;quot;) and fail (and print why).&lt;br /&gt;
* Now, let's have a look at disks. Type this into terminal:&lt;br /&gt;
  lsblk&lt;br /&gt;
* It should show you a tree of disks and their partitions. If you don't have microSD card inserted yet, all of them begin with mmcblk2. Also, some of them have something in the &amp;quot;MOUNTPOINT&amp;quot; column&lt;br /&gt;
* Insert microSD card into PineTab. Note that all information on it will be deleted, so don't insert one with valuable information on it!&lt;br /&gt;
* type `lsblk` into terminal again.&lt;br /&gt;
* Note that now tree of disks has one or more new entries - starting with mmcblk0 - that's partitions of your microSD card.&lt;br /&gt;
* Confirm that size of mmcblk0 is close to size of the microSD card, and all lines starting with mmcblk0 have empty &amp;quot;MOUNTPOINT&amp;quot; column.&lt;br /&gt;
* now type this:&lt;br /&gt;
  sudo dd if=`ls` of=/dev/mmcblk0 bs=1M status=progress&lt;br /&gt;
* It will take some time, depending on speed of your microSD card and size of image file&lt;br /&gt;
* Now, reboot your PineTab - type this into terminal:&lt;br /&gt;
  sudo reboot&lt;br /&gt;
* PineTab should boot from the microSD you've just flashed&lt;br /&gt;
&lt;br /&gt;
== Tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
=== Reset ===&lt;br /&gt;
&lt;br /&gt;
If your PineTab is in unknown state or doesn't want to start: Press power button for 7-8s. It makes a sound and you know it's totally off. 3 seconds after, power button  again for 2-3s and it will start to boot.&lt;br /&gt;
&lt;br /&gt;
=== Power Off While Charging ===&lt;br /&gt;
&lt;br /&gt;
When plugging your Pinetab into a charger, it automatically powers on. Use the above &amp;quot;Reset&amp;quot; instruction (holding the power button in for several seconds) to turn it off. This will allow your Pinetab to charge without being powered on. &lt;br /&gt;
&lt;br /&gt;
=== Display rotated 90° on Arch ARM ===&lt;br /&gt;
With the following command you can turn the display to landscape:&lt;br /&gt;
&lt;br /&gt;
* echo 1 | sudo tee /sys/class/graphics/fbcon/rotate&lt;br /&gt;
&lt;br /&gt;
This command does not persist a reboot.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [https://pine64.com/product/pinetab-10-1-linux-tablet/ The PineTab on the Pine64 store]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=140 The PineTab section of the Pine64 forums]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTab]] [[Category:Allwinner A64]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone_Carrier_Support&amp;diff=10990</id>
		<title>PinePhone Carrier Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone_Carrier_Support&amp;diff=10990"/>
		<updated>2021-08-08T15:24:49Z</updated>

		<summary type="html">&lt;p&gt;Strit: Added Danish CBB carrier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under construction}}&lt;br /&gt;
&lt;br /&gt;
{{hint|MMS currently doesn't work in any distribution on the PinePhone without a [[PinePhone_Carrier_Support#MMS_workarounds|script]]! This means images and group chats will not work in text messages.}}&lt;br /&gt;
&lt;br /&gt;
This page contains hints on setting up cellular network connectivity for specific carriers.&lt;br /&gt;
For more general information, see [[PinePhone#Modem_and_carrier_support|Modem and carrier support]]. For the APN settings see [[PinePhone APN Settings]].&lt;br /&gt;
&lt;br /&gt;
= Check compatibility =&lt;br /&gt;
To check if the PinePhone is supported on your carrier:&lt;br /&gt;
&lt;br /&gt;
Search for your carrier on [https://www.frequencycheck.com/ frequencycheck.com] and compare the carrier's LTE/GSM/WCDMA frequencies to the PinePhone's supported frequencies (listed in the [https://www.quectel.com/UploadFile/Product/Quectel_EG25-G_LTE_Specification_V1.1.pdf modem specification sheet]).&lt;br /&gt;
&lt;br /&gt;
It is likely that there will be a few frequencies that your carrier uses which are not supported by the PinePhone. Not all of the carrier's frequencies need to be supported by the PinePhone for it to work - as long as ''most'' of them are supported, you will still get good coverage.&lt;br /&gt;
&lt;br /&gt;
= Tested and working carriers =&lt;br /&gt;
&lt;br /&gt;
The following is a list of carriers which has been tested by users and confirmed to be working (excerpt):&lt;br /&gt;
&lt;br /&gt;
== Asia ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
| Japan || SoftBank || Not tested || Unsupported by carrier || No || No || Mobian Phosh, December 2020&lt;br /&gt;
|-&lt;br /&gt;
| Japan || Rakuten Mobile || Unsupported by carrier || Unsupported by carrier || Yes || Yes || Mobian Phosh, January 2020&lt;br /&gt;
|-&lt;br /&gt;
| Japan || Rakuten Mobile || Unsupported by carrier || Unsupported by carrier || Yes || No || Manjaro Plasma Mobile February 2021&lt;br /&gt;
|-&lt;br /&gt;
| Japan || Docomo || Yes || Not tested || Yes || Yes || Mobian Phosh, February 2021&lt;br /&gt;
|-&lt;br /&gt;
| India || Vodafone / Vi India || Yes || Not tested || Yes || Yes || DanctNIX (Arch Linux ARM) with Phosh, March 2021&lt;br /&gt;
|-&lt;br /&gt;
| South Korea || KT || Yes || Not tested || Yes || Yes || Manjaro Phosh, June 2021&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Africa ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Test || Test || Yes || Yes || Yes || Yes || TestOS with Phosh, 20201129&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Europe ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Sweden || Telenor SE || Not tested || Not tested || Yes || Not tested || Manjaro Plasma Mobile beta2&lt;br /&gt;
|-&lt;br /&gt;
| UK     || Three || Yes || Not tested || Yes || Yes || Manjaro Plasma Mobile beta2&lt;br /&gt;
|-&lt;br /&gt;
| UK     || Vodafone || Yes || Not tested || Yes || Yes || ALARM &amp;amp; pmOS (Phosh?), modem FW latest - 26 Feb 21&lt;br /&gt;
|-&lt;br /&gt;
| France     || Orange || Yes || Not tested || Yes || Yes || Manjaro Phosh Beta6 and later - 9 march 2021&lt;br /&gt;
|-&lt;br /&gt;
| France     || SFR || Yes || Not tested || Yes || Yes || Manjaro Phosh Beta6 and later - 9 march 2021&lt;br /&gt;
|-&lt;br /&gt;
| France     || Free || Yes || Not tested || Yes || Not tested || ArchLinux - 30 July 2021&lt;br /&gt;
|-&lt;br /&gt;
| Czech Republic     || O2 || Yes (only on 2G) || Not tested || Yes || Yes || Mobian Phosh (20210517 image up to date) - 2 June 2021&lt;br /&gt;
|-&lt;br /&gt;
| Germany     || Congstar || Yes || Not tested || Yes || Yes (IPv4 &amp;amp; IPv6) || Mobian (Megi's kernel 5.13.0-rc4, apt up-to-date) with Phosh, 2021-06-07&lt;br /&gt;
|-&lt;br /&gt;
| Germany     || Telekom  || Yes || Not tested || Yes || Not tested        || Mobian Phosh (5.10-sunxi64), 2021-07-28&lt;br /&gt;
|-&lt;br /&gt;
| Germany     || O2 / Telefonica  || Yes || Not tested || Yes || Not tested        || KPlasma&lt;br /&gt;
|-&lt;br /&gt;
| Hungary     || Telekom  || Yes || Not tested || Yes || Yes (IPv4)        || Manjaro Phosh Beta 12, 2021-07-30&lt;br /&gt;
|-&lt;br /&gt;
| Denmark     || CBB  || Yes || Not tested || Yes || Yes       || Manjaro Plasma Mobile Beta 5, 2021-06-30&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== North America ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| USA || T-Mobile || Yes || No || Yes || Yes || &lt;br /&gt;
* Arch Linux Arm 2020/11/29  &lt;br /&gt;
* Mobian - Phosh &lt;br /&gt;
* Manjaro - KDE Plasma Mobile&lt;br /&gt;
|-&lt;br /&gt;
| USA || MetroPCS (T-Mobile) || Yes || No || Yes || Yes || &lt;br /&gt;
*Arch Linux Arm (Phosh,SXMO) 2021/04/29 &lt;br /&gt;
*Manjaro - Phosh 2021/04/29 &lt;br /&gt;
*Mobian - Phosh 2021/3/20&lt;br /&gt;
|-&lt;br /&gt;
| USA || T-Mobile || Yes - buggy || No || Yes - buggy || Yes - buggy || &lt;br /&gt;
*Manjaro - Plasma Dev 2020/11/21  &lt;br /&gt;
*Ubuntu Touch - 2020/11/26 &lt;br /&gt;
*KDE Neon 2020/11/02&lt;br /&gt;
|-&lt;br /&gt;
| USA || Mint Mobile (T-Mobile) || Yes || Not tested || Yes || Yes || &lt;br /&gt;
*Mobian - Phosh 2021/3/14&lt;br /&gt;
*postMarketOS - Phosh, Sxmo, Plasma Mobile 2021/5/26&lt;br /&gt;
*Ubuntu Touch 2021/5/24&lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || Yes || Not tested || Yes || Yes || &lt;br /&gt;
*Mobian - Phosh 2021/3/1&lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || No || No || No || No ||&lt;br /&gt;
*Ubuntu Touch 2021/5/24 (You can occasionally get the settings to work with Verizon, but it seems like the settings automatically changes the carrier to the wrong one after a few minutes) &lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || Not tested || Not tested || Yes || Not via gui || &lt;br /&gt;
*Manjaro - KDE Plasma Mobile 2021/5/10 &lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || Yes || Not tested || Yes || Not via gui || &lt;br /&gt;
*Manjaro - Phosh 2021/5/31 &lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || Yes || Not tested || Yes || Yes || &lt;br /&gt;
*postmarketOS - Phosh 2021/5/31 &lt;br /&gt;
|-&lt;br /&gt;
| USA || Verizon || Yes || Not tested || Yes || Yes || &lt;br /&gt;
*Arch - Phosh 2021/5/31 &lt;br /&gt;
|-&lt;br /&gt;
| Canada || Freedom || Yes || Not tested || Yes || Yes || &lt;br /&gt;
*Arch Pinephone - Phosh (APN: internet.windmobile.ca), 2021/4/25 &lt;br /&gt;
|-&lt;br /&gt;
| USA || FaithWireless (AT&amp;amp;T) || Yes || No || Yes || Yes || &lt;br /&gt;
*Arch Linux Arm - Phosh 2021/04/29  (version 0.10.1-1, see the [[PinePhone_Carrier_Support#AT.26T|AT&amp;amp;T issues]] below.)&lt;br /&gt;
|-&lt;br /&gt;
| USA || Consumer Cellular (AT&amp;amp;T) || Yes || No || Yes || Yes || &lt;br /&gt;
*Manjaro - Phosh 2021/06/26&lt;br /&gt;
|-&lt;br /&gt;
| USA || Google Fi (T-Mobile) || Yes || No || Yes || Yes || &lt;br /&gt;
*Arch Linux Arm - Phosh 0.10.2 2021/05/29&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== South America ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Test || Test || Yes || Yes || Yes || Yes || TestOS with Phosh, 20201129&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Australia / Oceania ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Test || Test || Yes || Yes || Yes || Yes || TestOS with Phosh, 20201129&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Middle East  ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Country || Carrier name || SMS working || MMS working || Calls working || Data working || Tested OS (with version) and UI&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| Cellcom prepay|| receive+notify|| NA || ring+ notify || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| Golan TC || receive+notify|| NA || ring+ notify || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| Partner prepay || receive+notify|| NA || ring+ notify || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| Pelephone prepay|| receive+notify|| NA || ring+ notify || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| Hot prepay|| receive+notify|| NA || ring+ notify || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Israel|| 019 prepay|| No || NA ||Bars only || NA || on PmOS Sxmo May 14 2021.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Special carrier notes =&lt;br /&gt;
&lt;br /&gt;
{{Warning|This section contains providers which do not work or require special settings or actions to work.}}&lt;br /&gt;
&lt;br /&gt;
Some carriers might support only certain frequencies or might require certain settings in Ofono or ModemManager. The following is a list of collected notes for carriers regarding special settings, hints or information:&lt;br /&gt;
&lt;br /&gt;
== USA ==&lt;br /&gt;
=== AT&amp;amp;T ===&lt;br /&gt;
According to [https://ltefix.com/wp-content/uploads/USA-Major-Carriers-Bands-Frequencies-CA.pdf this page], AT&amp;amp;T's primary bands are 12 and 17 - 700ac and 700 MHz respectively. The PinePhone seems to work out-of-the-box with AT&amp;amp;T. If you transfer a SIM card from another phone you were using with AT&amp;amp;T, you need to activate the PinePhone through [https://www.att.com/buy/wireless/byod/byod AT&amp;amp;T's website]. Calls and SMS messages work. VoLTE is as yet untested.&lt;br /&gt;
&lt;br /&gt;
However, it is likely AT&amp;amp;T will drop support with their network upgrade in the near future like their child company Cricket Wireless already has. [https://www.att.com/ecms/dam/att/consumer/help/pdf/Devices-Working-on-ATT-Network.pdf This page] lists their supported devices for their new network.&lt;br /&gt;
&lt;br /&gt;
=== Consumer Cellular ===&lt;br /&gt;
&lt;br /&gt;
Consumer Cellular is a MVNO that uses both AT&amp;amp;T and T-Mobile networks. On the AT&amp;amp;T network LTE data works without special configuration. If you transfer a SIM card from another phone to the PinePhone, you may need to contact customer support in order for them to register the IMEI association to the correct hardware; in one case it was first incorrectly identified as a Samsung Google Nexus Prime before later being correctly identified by the modem model Quectel EG25-G. Customer support also explicitly enabled VoLTE on the device. After VoLTE instructions on this site were followed and APN instructions on the Consumer Cellular site were followed, VoLTE was confirmed working.&lt;br /&gt;
&lt;br /&gt;
=== Cricket Wireless ===&lt;br /&gt;
Cricket wireless is a MVNO that uses AT&amp;amp;T's network. VoLTE was fully supported, but the PinePhone is no longer considered a compatible device in the US by the carrier (as of March 2021).&lt;br /&gt;
&lt;br /&gt;
=== SimpleMobile ===&lt;br /&gt;
SimpleMobile is a T-Mobile prepaid MVNO operating in the United States. 4G LTE, VoLTE, data, and SMS all work on the PinePhone after activation. Activation can be done online without extra software or assistance, go to https://www.simplemobile.com/activation/byopcollectsim and make sure you have your SIM card and IMEI ready.&lt;br /&gt;
&lt;br /&gt;
=== Sprint ===&lt;br /&gt;
Sprint is currently not supported due to unknown reasons. Any input regarding this issue is highly appreciated.&lt;br /&gt;
&lt;br /&gt;
=== T-Mobile ===&lt;br /&gt;
According to [https://ltefix.com/wp-content/uploads/USA-Major-Carriers-Bands-Frequencies-CA.pdf this page],&lt;br /&gt;
T-Mobile's primary frequency band for the United States is 12 (700ac MHz).&lt;br /&gt;
&lt;br /&gt;
T-Mobile's bands and protocols are summarized on&lt;br /&gt;
[https://www.frequencycheck.com/carriers/t-mobile-united-states this page].&lt;br /&gt;
&lt;br /&gt;
While the PinePhone's modem does support all LTE bands that T-Mobile uses in the US (And is one of the best choices for band support with the PinePhone's modem in the US), VoLTE is still listed as &amp;quot;Under development&amp;quot; by the modem manufacturer. T-Mobile's system also does not list the PinePhone as a compatible device due to this lack of official VoLTE support. The modem is capable of working on T-Mobile with VoLTE support enabled.&lt;br /&gt;
&lt;br /&gt;
=== Verizon ===&lt;br /&gt;
According to [https://ltefix.com/wp-content/uploads/USA-Major-Carriers-Bands-Frequencies-CA.pdf this page],&lt;br /&gt;
Verizon's primary frequency band for the United States is 13 (700 MHz). Verizon's bands and protocols are summarized on&lt;br /&gt;
[https://www.frequencycheck.com/carriers/verizon-wireless-united-states this page]. According to the same page, Verizon might restrict their network to only approved devices.&lt;br /&gt;
&lt;br /&gt;
Some users reported that they were able to activate their Verizon SIM by using an Verizon-approved burner phone and then inserting the SIM into the PinePhone.&lt;br /&gt;
&lt;br /&gt;
=== Google Fi ===&lt;br /&gt;
Only T-Mobile service works currently, not US Cellular or Sprint.&lt;br /&gt;
The APN is h2g2.&lt;br /&gt;
Information from [https://forum.pine64.org/showthread.php?tid=11675&amp;amp;page=7 the forum].&lt;br /&gt;
&lt;br /&gt;
Bear in mind that initial activation of the SIM card is not possible without an Android phone running Google Apps. &lt;br /&gt;
&lt;br /&gt;
It should also be noted that Google uses a non-standard MMS implementation that is unlikely to be supported on the PinePhone at any point.&lt;br /&gt;
&lt;br /&gt;
== Europe ==&lt;br /&gt;
=== Telekom Germany ===&lt;br /&gt;
With low signal, there may be loud interference noise audible in calls on the receiving end. It has not yet been tested whether or not this problem is carrier specific. An easy fix is extending the modem antenna with aluminum foil (or similar) inside the back cover of the phone.&lt;br /&gt;
&lt;br /&gt;
= Known issues =&lt;br /&gt;
Known issues:&lt;br /&gt;
* The [https://www.frequencycheck.com/models FrequencyCheck model page] does not list either Pine64 or the PinePhone.&lt;br /&gt;
* T-Mobile's system does not list the PinePhone as a compatible device due to the lack of official VoLTE support from the manufacturer, despite the fact that it does work.&lt;br /&gt;
* MMS doesn't currently work in any distribution on the PinePhone by default. This means images and group chats will not work in text messages.&lt;br /&gt;
* Some providers may allow only certain known devices identified by their [https://en.wikipedia.org/wiki/Type_Allocation_Code Type Allocation Code].&lt;br /&gt;
&lt;br /&gt;
= MMS workarounds =&lt;br /&gt;
These scripts allow partial MMS support on a [[PinePhone]]:&lt;br /&gt;
&lt;br /&gt;
* JMMS: [https://git.sr.ht/~amindfv/jmms]&lt;br /&gt;
* silvermms: [https://gitlab.com/5ilver/silvermms]&lt;br /&gt;
* MMS via Matrix with mmmpuppet: [[PinePhone MMS with Matrix]]&lt;br /&gt;
&lt;br /&gt;
There is a Haskel MMS client. MMS can also be manually composed with mmsd on the command line.&lt;br /&gt;
&lt;br /&gt;
= Resources =&lt;br /&gt;
* IMEI - [https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity International Mobile Equipment Identity]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]]&lt;/div&gt;</summary>
		<author><name>Strit</name></author>
	</entry>
</feed>