<?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=Sigmaris</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=Sigmaris"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/Sigmaris"/>
	<updated>2026-06-18T22:03:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Mainline_Hardware_Decoding&amp;diff=14494</id>
		<title>Mainline Hardware Decoding</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Mainline_Hardware_Decoding&amp;diff=14494"/>
		<updated>2022-10-16T14:23:25Z</updated>

		<summary type="html">&lt;p&gt;Sigmaris: /* rkvdec */ Added note about what's currently supported in mainline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{hint|This page is incomplete, you're welcome to improve it.}}&lt;br /&gt;
&lt;br /&gt;
'''Mainline Hardware Decoding''' refers to video decoding done using hardware accelerators on the mainline Linux kernel (i.e. what sits in Linus' tree).&lt;br /&gt;
&lt;br /&gt;
On most consumer-oriented SoCs, there is what is referred to as a VPU (Video Processing Unit). The VPU is responsible for power-efficient encoding and decoding of videos. Hardware-accelerated video decoding can be useful to get smoother video playback on your devices, lower power consumption, and lower CPU utilisation. Below is information regarding various hardware PINE64 uses and software that works with it.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
Here's a table of the current support for different hardware. &amp;quot;In review&amp;quot; means the patch series to enable support has been posted to the mailing lists but is undergoing review, &amp;quot;linux-next&amp;quot; means it has been accepted and staged for the next Linux merge window.&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; {{Diagonal split header|Codec|SoC}}&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | RK3328&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | RK3399&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | RK3566&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | RK3588&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | JPEG&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | MPEG-2&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;| linux-next&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | MPEG-4 Part 2/H.263&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | VP8&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;| linux-next&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | H.264/AVC&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;| linux-next &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | H.265/HEVC&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;| In review&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;| In review&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | VP9&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;| Yes&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | AVS2&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | AV1&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| N/A&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&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;only Hantro, not rkvdec2, so with a maximum resolution of 1080p for now&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cedrus ==&lt;br /&gt;
&lt;br /&gt;
In 2018, Bootlin launched a crowdfunding campaign to bring a open source Allwinner VPU driver to mainline Linux, which came to be called Cedrus. The Cedrus media driver (For Allwinner SOCs such as A64) supported by mainline Linux supports H.264 and H.265 video decoding as of Linux 5.10, and with 5.11 came VP8 decoding support and a H.264 stateless video decoder interface. For more information refer to the [https://linux-sunxi.org/Sunxi-Cedrus#Codec_Support Sunxi wiki].&lt;br /&gt;
&lt;br /&gt;
== Hantro ==&lt;br /&gt;
&lt;br /&gt;
The Hantro media driver supports Rockchip and NXP SoCs including the RK3399 used in the Pinebook Pro and RockPro64. In November 2020 it [https://www.cnx-software.com/2020/11/24/hantro-h1-hardware-accelerated-video-encoding-support-in-mainline-linux/ was announced] that Bootlin was working on encoding support for the driver.&lt;br /&gt;
&lt;br /&gt;
== rkvdec ==&lt;br /&gt;
&lt;br /&gt;
rkvdec is the video decoding hardware that's developed by Rockchip presumably in house. It's what Rockchip uses for decoding 4K H.264/AVC, VP9 and H.265/HEVC content. The driver in mainline linux for the first generation rkvdec (used in RK3328 and RK3399) supports VP9 and H.264, [https://patchwork.kernel.org/project/linux-rockchip/list/?series=659401 patches for HEVC support] are also in the process of review.&lt;br /&gt;
&lt;br /&gt;
RK3566, RK3568 and likely RK3588 use a second generation of rkvdec called rkvdec2. No mainline driver for this exists yet. The rkvdec instance on RK3588 additionally supports the [https://en.wikipedia.org/wiki/Audio_Video_Standard AVS2 video codec].&lt;br /&gt;
&lt;br /&gt;
== rkdjpeg ==&lt;br /&gt;
&lt;br /&gt;
rkdjpeg is Rockchip's in-house hardware accelerated JPEG decoder. It can be found on the RK3566 and RK3568 as well as the RK3588.&lt;br /&gt;
&lt;br /&gt;
No mainline driver exists for it so far.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== GStreamer ==&lt;br /&gt;
H.264 video decoding is possible when using GStreamer built from source, or an application utilizing it such as [https://github.com/Rafostar/clapper Clapper] or [https://flathub.org/apps/details/org.sigxcpu.Livi µPlayer]. µPlayer includes a indicator of when hardware acceleration is properly working and in use.&lt;br /&gt;
&lt;br /&gt;
== FFmpeg ==&lt;br /&gt;
&lt;br /&gt;
Mainline FFmpeg currently lacks the necessary patches to use the v4l2-requests based API, but [https://github.com/jernejsk/FFmpeg a fork that can utilise it exists].&lt;br /&gt;
&lt;br /&gt;
With the patched ffmpeg, you can utilise hardware decoding using the &amp;lt;code&amp;gt;-hwaccel drm&amp;lt;/code&amp;gt; parameter, e.g.:&lt;br /&gt;
&lt;br /&gt;
 ffmpeg -hwaccel drm -i input.mp4 -f null - -benchmark&lt;br /&gt;
&lt;br /&gt;
to measure how fast it decodes.&lt;br /&gt;
&lt;br /&gt;
= More Resources =&lt;br /&gt;
&lt;br /&gt;
* [https://xnux.eu/devices/feature/cedrus-pp.html Megi's Cedrus Information]&lt;br /&gt;
&lt;br /&gt;
* [https://briandaniels.me/2021/06/27/hardware-accelerated-video-playback-on-the-pinephone.html HW accelerated GStreamer playback on the PinePhone]&lt;br /&gt;
&lt;br /&gt;
* [https://briandaniels.me/2021/07/06/hardware-accelerated-video-playback-on-the-pinephone-with-clapper.html HW accelerated Clapper video player on the PinePhone]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[Mainline Hardware Encoding]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]] [[Category:ROCKPro64]] [[Category:Rockchip RK3566]] [[Category:Rockchip RK3399]] [[Category:PineBook Pro]] [[Category:PinePhone Pro]] [[Category:PineNote]] [[Category:Rockchip RK3588]] [[Category:Rockchip RK3328]] [[Category:ROCK64]] [[Category:Allwinner A64]] [[Category:PinePhone]] [[Category:A64-LTS]] [[Category:SOPine]]&lt;/div&gt;</summary>
		<author><name>Sigmaris</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12553</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12553"/>
		<updated>2022-02-16T12:00:35Z</updated>

		<summary type="html">&lt;p&gt;Sigmaris: Added info about rkvdec on rk3566 based on https://github.com/JeffyCN/rockchip_mirrors/blob/6e316ddc107607781377c8e62a72254caecadae1/osal/mpp_soc.cpp#L631&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;|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>Sigmaris</name></author>
	</entry>
</feed>