<?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=Herostrat</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=Herostrat"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/Herostrat"/>
	<updated>2026-05-11T23:35:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13201</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13201"/>
		<updated>2022-06-19T15:22:22Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: Battery Patch is now v7 and was resend&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:#F99; text-align:center;&amp;quot;|Needs porting&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;. Ethernet might still be broken on production version? Need more data points.&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:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20220520183037.2566-2-macroalpha82@gmail.com/]&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: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; | 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;
! 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 &amp;amp;mdash; needs EBC driver&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 &amp;amp;mdash; needs 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;
=== 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_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_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>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13200</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13200"/>
		<updated>2022-06-19T15:13:29Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: VOP2 mainline for 5.19-rc1&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:#F99; text-align:center;&amp;quot;|Needs porting&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;. Ethernet might still be broken on production version? Need more data points.&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:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=630567&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: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; | 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;
! 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 &amp;amp;mdash; needs EBC driver&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 &amp;amp;mdash; needs 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;
=== 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_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_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>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13020</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=13020"/>
		<updated>2022-05-12T08:02:20Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: vop2 in 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;
! 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: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/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&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;
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:#F99; text-align:center;&amp;quot;|Needs porting&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:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=614265]&amp;lt;/sup&amp;gt;&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 and MPEG-4&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;3&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=640635]&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;
|&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;
| &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;
| &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: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/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&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: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/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&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=630567&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: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; | 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;
! 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 &amp;amp;mdash; needs EBC driver&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 &amp;amp;mdash; needs 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;
=== 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 (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_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, 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>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8416</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8416"/>
		<updated>2020-12-15T19:42:44Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-FCC-SDOC%20certification%20S20072502302001.pdf PineCube FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-CE-EMC%20certification%20S20072502301001.pdf PineCube CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-ROHS%20Test%20Report.pdf PineCube ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/CH-5A-DV-V2.0%20Specification.pdf PineCube Camera Module Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
* GPIO Header Pinout: ([[:File:PineCube_GPIO.pdf|PDF]], [https://pine64.gami.ee/pinecube/gpio-pinout.html HTML])&lt;br /&gt;
[[File:PineCube_GPIO_Pinout.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Case information:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20Case%203D.zip PinePhone 3D file]&lt;br /&gt;
&lt;br /&gt;
[[File:PineCube_Case-1.jpg|400px]]  [[File:PineCube_Case-2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
Please note:&lt;br /&gt;
&lt;br /&gt;
* this list is most likely not complete&lt;br /&gt;
* no review of functionality is done here, it only serves as a collection of efforts&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
| Additional Fixes for AXP209 driver&lt;br /&gt;
| https://lore.kernel.org/lkml/20201031182137.1879521-8-contact@paulk.fr/&lt;br /&gt;
| tdb (5.11?)&lt;br /&gt;
|-&lt;br /&gt;
| Device Tree Fixes&lt;br /&gt;
| https://lore.kernel.org/lkml/20201003234842.1121077-1-icenowy@aosc.io/&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| PineCube Board Support&lt;br /&gt;
| https://patchwork.ozlabs.org/project/uboot/list/?series=210044&lt;br /&gt;
| expected in v2021.01&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
| No known mainlining efforts yet&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/danielfullmer/pinecube-nixos danielfullmer's Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
[https://elimo.io Elimo Engineering] integrated support for the PineCube into Buildroot.&lt;br /&gt;
&lt;br /&gt;
This has not been merged into upstream Buildroot yet, but you can find the repo on [https://github.com/elimo-engineering/buildroot Elimo's GitHub account] and build instructions in the [https://github.com/elimo-engineering/buildroot/tree/pine64/pinecube/board/pine64/pinecube board support directory] readme.&lt;br /&gt;
The most important thing that this provides is support for the S3's DDR3 in u-boot. Unfortunately mainline u-boot does not have that yet, but the u-boot patches from [https://github.com/danielfullmer/pinecube-nixos Daniel Fullmer's NixOS repo] were easy enough to use on buildroot.&lt;br /&gt;
This should get you a functional system that boots to a console on UART0. It's pretty fast too, getting there in 1.5 seconds from u-boot to login prompt.&lt;br /&gt;
&lt;br /&gt;
=== Armbian ===&lt;br /&gt;
Armbian Builds for PineCube are [https://www.armbian.com/pinecube/ available for download], once again thanks to [https://github.com/armbian/build/pull/2364/files the work] of Icenowy Zheng.&lt;br /&gt;
Although not officially supported ([https://www.armbian.com/download/?device_support=No+official+support+(CSC) CSC Status] it enables the usage of Debian and Ubuntu.&lt;br /&gt;
&lt;br /&gt;
A serial console can be established with 1520008N1 (no hardware flow control). Login credentials are as usual in Armbian root 1234. &lt;br /&gt;
&lt;br /&gt;
=== Stock Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [https://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
You can either setup a machine for the build environment, or use a Vagrant virtual machine provided by [https://elimo.io Elimo Engineering]&lt;br /&gt;
&lt;br /&gt;
====== On a dedicated machine ======&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Using Vagrant ======&lt;br /&gt;
&lt;br /&gt;
You can avoid setting up your machine and just use Vagrant to spin up a development environment in a VM.&lt;br /&gt;
&lt;br /&gt;
Just clone the [https://github.com/elimo-engineering/pinecube-sdk-vagrant Elimo Engineering repo] and follow the instructions in the [https://github.com/elimo-engineering/pinecube-sdk-vagrant/blob/main/README.md readme file]&lt;br /&gt;
&lt;br /&gt;
After spinning up the VM, you just need to run the build:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Community Projects ==&lt;br /&gt;
&lt;br /&gt;
Share your project with a PineCube here!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineCube]] [[Category:Allwinner(Sochip) S3]]&lt;/div&gt;</summary>
		<author><name>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8415</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8415"/>
		<updated>2020-12-15T18:36:57Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-FCC-SDOC%20certification%20S20072502302001.pdf PineCube FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-CE-EMC%20certification%20S20072502301001.pdf PineCube CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-ROHS%20Test%20Report.pdf PineCube ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/CH-5A-DV-V2.0%20Specification.pdf PineCube Camera Module Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
* GPIO Header Pinout: ([[:File:PineCube_GPIO.pdf|PDF]], [https://pine64.gami.ee/pinecube/gpio-pinout.html HTML])&lt;br /&gt;
[[File:PineCube_GPIO_Pinout.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Case information:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20Case%203D.zip PinePhone 3D file]&lt;br /&gt;
&lt;br /&gt;
[[File:PineCube_Case-1.jpg|400px]]  [[File:PineCube_Case-2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
Please note:&lt;br /&gt;
&lt;br /&gt;
* this list is most likely not complete&lt;br /&gt;
* no review of functionality is done here, it only serves as a collection of efforts&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
| Additional Fixes for AXP209 driver&lt;br /&gt;
| https://lore.kernel.org/lkml/20201031182137.1879521-8-contact@paulk.fr/&lt;br /&gt;
| tdb (5.11?)&lt;br /&gt;
|-&lt;br /&gt;
| Device Tree Fixes&lt;br /&gt;
| https://lore.kernel.org/lkml/20201003234842.1121077-1-icenowy@aosc.io/&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| PineCube Board Support&lt;br /&gt;
| https://patchwork.ozlabs.org/project/uboot/list/?series=210044&lt;br /&gt;
| expected in v2021.01&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
| No known mainlining efforts yet&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/danielfullmer/pinecube-nixos danielfullmer's Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
[https://elimo.io Elimo Engineering] integrated support for the PineCube into Buildroot.&lt;br /&gt;
&lt;br /&gt;
This has not been merged into upstream Buildroot yet, but you can find the repo on [https://github.com/elimo-engineering/buildroot Elimo's GitHub account] and build instructions in the [https://github.com/elimo-engineering/buildroot/tree/pine64/pinecube/board/pine64/pinecube board support directory] readme.&lt;br /&gt;
The most important thing that this provides is support for the S3's DDR3 in u-boot. Unfortunately mainline u-boot does not have that yet, but the u-boot patches from [https://github.com/danielfullmer/pinecube-nixos Daniel Fullmer's NixOS repo] were easy enough to use on buildroot.&lt;br /&gt;
This should get you a functional system that boots to a console on UART0. It's pretty fast too, getting there in 1.5 seconds from u-boot to login prompt.&lt;br /&gt;
&lt;br /&gt;
=== Armbian ===&lt;br /&gt;
Armbian Builds for PineCube are [https://www.armbian.com/pinecube/ available for download], once again thanks to [https://github.com/armbian/build/pull/2364/files the work] of Icenowy Zheng.&lt;br /&gt;
Although not officially supported ([https://www.armbian.com/download/?device_support=No+official+support+(CSC) CSC Status] it enables the usage of Debian and Ubuntu.&lt;br /&gt;
&lt;br /&gt;
=== Stock Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [https://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
You can either setup a machine for the build environment, or use a Vagrant virtual machine provided by [https://elimo.io Elimo Engineering]&lt;br /&gt;
&lt;br /&gt;
====== On a dedicated machine ======&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Using Vagrant ======&lt;br /&gt;
&lt;br /&gt;
You can avoid setting up your machine and just use Vagrant to spin up a development environment in a VM.&lt;br /&gt;
&lt;br /&gt;
Just clone the [https://github.com/elimo-engineering/pinecube-sdk-vagrant Elimo Engineering repo] and follow the instructions in the [https://github.com/elimo-engineering/pinecube-sdk-vagrant/blob/main/README.md readme file]&lt;br /&gt;
&lt;br /&gt;
After spinning up the VM, you just need to run the build:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Community Projects ==&lt;br /&gt;
&lt;br /&gt;
Share your project with a PineCube here!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineCube]] [[Category:Allwinner(Sochip) S3]]&lt;/div&gt;</summary>
		<author><name>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8363</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8363"/>
		<updated>2020-12-02T19:49:39Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-FCC-SDOC%20certification%20S20072502302001.pdf PineCube FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-CE-EMC%20certification%20S20072502301001.pdf PineCube CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-ROHS%20Test%20Report.pdf PineCube ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/CH-5A-DV-V2.0%20Specification.pdf PineCube Camera Module Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
* GPIO Header Pinout: ([[:File:PineCube_GPIO.pdf|PDF]], [https://pine64.gami.ee/pinecube/gpio-pinout.html HTML])&lt;br /&gt;
[[File:PineCube_GPIO_Pinout.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
Please note:&lt;br /&gt;
&lt;br /&gt;
* this list is most likely not complete&lt;br /&gt;
* no review of functionality is done here, it only serves as a collection of efforts&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| expected in 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
| Additional Fixes for AXP209 driver&lt;br /&gt;
| https://lore.kernel.org/lkml/20201031182137.1879521-8-contact@paulk.fr/&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| Device Tree Fixes&lt;br /&gt;
| https://lore.kernel.org/lkml/20201003234842.1121077-1-icenowy@aosc.io/&lt;br /&gt;
| expected in 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet Alias for WiFi&lt;br /&gt;
| https://lore.kernel.org/lkml/20201124225940.3750388-1-icenowy@aosc.io/&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| PineCube Board Support&lt;br /&gt;
| https://patchwork.ozlabs.org/project/uboot/list/?series=210044&lt;br /&gt;
| expected in v2021.01&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
| No known mainlining efforts yet&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/danielfullmer/pinecube-nixos danielfullmer's Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
[https://elimo.io Elimo Engineering] integrated support for the PineCube into Buildroot.&lt;br /&gt;
&lt;br /&gt;
This has not been merged into upstream Buildroot yet, but you can find the repo on [https://github.com/elimo-engineering/buildroot Elimo's GitHub account] and build instructions in the [https://github.com/elimo-engineering/buildroot/tree/pine64/pinecube/board/pine64/pinecube board support directory] readme.&lt;br /&gt;
The most important thing that this provides is support for the S3's DDR3 in u-boot. Unfortunately mainline u-boot does not have that yet, but the u-boot patches from [https://github.com/danielfullmer/pinecube-nixos Daniel Fullmer's NixOS repo] were easy enough to use on buildroot.&lt;br /&gt;
This should get you a functional system that boots to a console on UART0. It's pretty fast too, getting there in 1.5 seconds from u-boot to login prompt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stock Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [https://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
You can either setup a machine for the build environment, or use a Vagrant virtual machine provided by [https://elimo.io Elimo Engineering]&lt;br /&gt;
&lt;br /&gt;
====== On a dedicated machine ======&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Using Vagrant ======&lt;br /&gt;
&lt;br /&gt;
You can avoid setting up your machine and just use Vagrant to spin up a development environment in a VM.&lt;br /&gt;
&lt;br /&gt;
Just clone the [https://github.com/elimo-engineering/pinecube-sdk-vagrant Elimo Engineering repo] and follow the instructions in the [https://github.com/elimo-engineering/pinecube-sdk-vagrant/blob/main/README.md readme file]&lt;br /&gt;
&lt;br /&gt;
After spinning up the VM, you just need to run the build:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PineCube]] [[Category:Allwinner(Sochip) S3]]&lt;/div&gt;</summary>
		<author><name>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8362</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=8362"/>
		<updated>2020-12-02T19:38:23Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: Updated Kernel Upstreaming Effort&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-FCC-SDOC%20certification%20S20072502302001.pdf PineCube FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-CE-EMC%20certification%20S20072502301001.pdf PineCube CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-ROHS%20Test%20Report.pdf PineCube ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/CH-5A-DV-V2.0%20Specification.pdf PineCube Camera Module Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
* GPIO Header Pinout: ([[:File:PineCube_GPIO.pdf|PDF]], [https://pine64.gami.ee/pinecube/gpio-pinout.html HTML])&lt;br /&gt;
[[File:PineCube_GPIO_Pinout.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| expected in 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
| Device Tree Fixes&lt;br /&gt;
| https://lore.kernel.org/lkml/20201003234842.1121077-1-icenowy@aosc.io/&lt;br /&gt;
| expected in 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet Alias for WiFi&lt;br /&gt;
| https://lore.kernel.org/lkml/20201124225940.3750388-1-icenowy@aosc.io/&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| PineCube Board Support&lt;br /&gt;
| https://patchwork.ozlabs.org/project/uboot/list/?series=210044&lt;br /&gt;
| expected in v2021.01&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/danielfullmer/pinecube-nixos danielfullmer's Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
[https://elimo.io Elimo Engineering] integrated support for the PineCube into Buildroot.&lt;br /&gt;
&lt;br /&gt;
This has not been merged into upstream Buildroot yet, but you can find the repo on [https://github.com/elimo-engineering/buildroot Elimo's GitHub account] and build instructions in the [https://github.com/elimo-engineering/buildroot/tree/pine64/pinecube/board/pine64/pinecube board support directory] readme.&lt;br /&gt;
The most important thing that this provides is support for the S3's DDR3 in u-boot. Unfortunately mainline u-boot does not have that yet, but the u-boot patches from [https://github.com/danielfullmer/pinecube-nixos Daniel Fullmer's NixOS repo] were easy enough to use on buildroot.&lt;br /&gt;
This should get you a functional system that boots to a console on UART0. It's pretty fast too, getting there in 1.5 seconds from u-boot to login prompt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stock Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [https://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
You can either setup a machine for the build environment, or use a Vagrant virtual machine provided by [https://elimo.io Elimo Engineering]&lt;br /&gt;
&lt;br /&gt;
====== On a dedicated machine ======&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Using Vagrant ======&lt;br /&gt;
&lt;br /&gt;
You can avoid setting up your machine and just use Vagrant to spin up a development environment in a VM.&lt;br /&gt;
&lt;br /&gt;
Just clone the [https://github.com/elimo-engineering/pinecube-sdk-vagrant Elimo Engineering repo] and follow the instructions in the [https://github.com/elimo-engineering/pinecube-sdk-vagrant/blob/main/README.md readme file]&lt;br /&gt;
&lt;br /&gt;
After spinning up the VM, you just need to run the build:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PineCube]] [[Category:Allwinner(Sochip) S3]]&lt;/div&gt;</summary>
		<author><name>Herostrat</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=7693</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=7693"/>
		<updated>2020-10-16T18:08:48Z</updated>

		<summary type="html">&lt;p&gt;Herostrat: add section with mainlining effort&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [http://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [http://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [http://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [http://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [http://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [http://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| expected in 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stock Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [http://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Herostrat</name></author>
	</entry>
</feed>