Difference between revisions of "Quartz64 Development"

From PINE64
Jump to navigation Jump to search
(→‎Current Status: Promote Audio to partially working, point out why e-paper is untested)
(→‎Upstreaming Status: fix component name for i2s-tdm audio)
Line 30: Line 30:
! scope="row" rowspan="2" | Audio  
! scope="row" rowspan="2" | Audio  
| colspan="2"  style="background:#F99; text-align:center;"|Needs porting
| colspan="2"  style="background:#F99; text-align:center;"|Needs porting
| <code>snd-soc-rockchip-i2s?</code>
| <code>rockchip-i2s-tdm</code>
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://github.com/CounterPillow/linux/compare/quartz64-5.14...CounterPillow:quartz-audio port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://github.com/CounterPillow/linux/compare/quartz64-5.14...CounterPillow:quartz-audio port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.
|-
|-

Revision as of 14:24, 9 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 rockchip-i2s-tdm i2s i2s fix vad pdm spdif A port of the i2s-tdm driver for mainline exists, but the code quality isn't good enough for submitting it upstream.
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]
  • Audio
    • Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.
    • no HDMI or SPDIF yet

Confirmed Broken

  • Nothing!

Needs Testing

  • GPU — need a VOP-v2 DRM driver to get display output
  • E-Paper — needs EBC driver
  • 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