Difference between revisions of "Quartz64 Development"

From PINE64
Jump to navigation Jump to search
(→‎Partially Working: USB 3 is broken, hooray)
(→‎Partially Working: Update status of USB3)
Line 142: Line 142:


* PCI-Express Controller — everything but devices that need cache coherency (e.g. dGPUs) should work
* PCI-Express Controller — everything but devices that need cache coherency (e.g. dGPUs) should work
* USB 3.0 — only works without any length of cable between the device and the host due to a hardware bug that seriously impairs the signal quality, thanks to the SATA port's coupling capacitors.
* USB 3.0 — only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.
* SDMMC1 (Wi-Fi) — AP6256 working, BL602 needs some work to make it flash firmware
* SDMMC1 (Wi-Fi) — AP6256 working, BL602 needs some work to make it flash firmware
* I<sup>2</sup>C &mdash; works but is not yet exposed to the Pi-bus
* I<sup>2</sup>C &mdash; works but is not yet exposed to the Pi-bus

Revision as of 15:06, 8 August 2021

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.

Overview

Upstreaming Status

Function Status Component Notes
Video Output Needs porting rockchipdrm/VOP-v2
3D Acceleration Linux Mainline Upstream Mesa panfrost
Video Decode Linux Staging Not in ffmpeg[1] hantro-vpu, using v4l2-requests Necessary device tree changes in review
Audio Needs porting snd-soc-rockchip-i2s? i2s i2s fix vad pdm spdif
Linux Mainline rk817-codec As of 5.14
u-boot Waiting on ATF sources
Device Tree Basic Quartz64 Model A device tree in linux-next[2]
Gigabit Ethernet Linux Mainline rk3566-gmac As of 5.14[3]
Linux Mainline yt8511-phy As of 5.14[4]
IOMMU Linux Mainline rockchip-iommu As of 5.14[5]
GPIO In review[6] gpio-rockchip
pinctrl Linux Mainline
Thermal Regulation Linux Mainline rockchip-thermal As of 5.14[7]
PCIe In review[8] pcie-dw-rockchip
Power Management Linux Mainline rockchip-pm-domain As of 5.14[9]
Voltage Control In review[10] rk3568-pmu-io-voltage-domain
SPI Linux Mainline spi-rockchip As of 5.14[11]
Battery In review[12] rk817-charger In the BSP tree this is handled by rk817_battery.c and rk817_charger.c
Microphone linux-next[13] rockchip-saradc Headphone jack mic seems to connect to SARADC_VIN2_HP_HOOK, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work
USB 2.0 In review[14] rockchip-usb2phy
e-Ink Needs reversing ebc-dev? See RK3566 EBC Reverse-Engineering

Current Status

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.

According to pgwipeout, I/O device performance is within expected ranges now.

Working

  • eMMC
  • SDMMC0 (SD cards)
  • GMAC (Gigabit Ethernet)
  • USB 2.0
  • SATA 2
  • SATA 3
  • UART
    • UART 0 (Pi-bus)
    • UART 1 (Bluetooth)
    • UART 2 (Pi-bus, debug)
  • Video Decode
    • VP8
  • Battery

Partially Working

  • PCI-Express Controller — everything but devices that need cache coherency (e.g. dGPUs) should work
  • USB 3.0 — only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.
  • SDMMC1 (Wi-Fi) — AP6256 working, BL602 needs some work to make it flash firmware
  • I2C — works but is not yet exposed to the Pi-bus
  • GIC — needs errata published by Rockchip to get upstream to add device-specific workarounds[15]

Confirmed Broken

  • Nothing!

Needs Testing

  • GPU — Need a VOP-v2 DRM driver to get display output
  • Audio — Needs I2S driver
  • E-Paper
  • SPI

Resources

Repositories

Other

Board/SoC Documentation

Booting

Boot Order

The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:

  • SPI NOR flash
  • SPI NAND flash
  • SD-Card
  • eMMC

... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip flash/boot tools.

Bootloader Flashing

As per pgwipeout's commit message:

  • Make a partition named uboot as partition number 1 at 8 MiB to 16 MiB
  • dd if=idblock.bin of=/dev/<mmc/sd> seek=64
  • dd if=uboot.img of=/dev/<mmc/sd>1

BSP Image Layout