Difference between revisions of "Quartz64 Development"
m (→Upstreaming Status: update tdm patchset to v4) |
(→Upstreaming Status: spdif -> mainline) |
||
Line 33: | Line 33: | ||
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] | | Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] | ||
|- | |- | ||
| colspan="2" style="background: | | colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline | ||
| <code>rockchip-spdif</code> | | <code>rockchip-spdif</code> | ||
| | | As of 5.15<sup>[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]</sup> | ||
|- | |- | ||
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline | | colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline |
Revision as of 22:09, 5 September 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 | In review[2] | rockchip-i2s-tdm
|
Downstream: i2s i2s fix vad pdm | |
Linux Mainline | rockchip-spdif
|
As of 5.15[3] | ||
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[4] | |||
Gigabit Ethernet | Linux Mainline | rk3566-gmac
|
As of 5.14[5] | |
Linux Mainline | yt8511-phy
|
As of 5.14[6] | ||
IOMMU | Linux Mainline | rockchip-iommu
|
As of 5.14[7] | |
GPIO | linux-next[8] | gpio-rockchip
|
||
pinctrl | Linux Mainline | |||
Thermal Regulation | Linux Mainline | rockchip-thermal
|
As of 5.14[9] | |
PCIe | linux-next[10] | pcie-dw-rockchip
|
||
Power Management | Linux Mainline | rockchip-pm-domain
|
As of 5.14[11] | |
Voltage Control | linux-next[12] | rk3568-pmu-io-voltage-domain
|
||
SPI | Linux Mainline | spi-rockchip
|
As of 5.14[13] | |
Battery | In review[14] | rk817-charger
|
In the BSP tree this is handled by rk817_battery.c and rk817_charger.c | |
Microphone | linux-next[15] | 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[16] | 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[17]
- Audio
- Driver for Analog audio being upstreamed by User:CounterPillow, still in review though, but it works
- no HDMI yet
Confirmed Broken
- Nothing!
Needs Testing
- GPU — need a VOP-v2 DRM driver to get display output
- E-Paper — needs EBC driver
- SPI
- SPDIF — needs some soldering and device tree changes to test, User:CounterPillow has ordered the necessary components
TODO
ebc-dev Reverse Engineering and Development
The 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.
VOP2 Porting
The VOP2 portion of the rockchip-drm
driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.
Collabora has an unpolished forward port that has some issues with HDMI, it can be found here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/tree/5.10_for_rockchip
pgwipeout has a branch for initial vop2 work/testing, very rough around the edges and does not successfully probe yet.
Investigate MCU
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.
Resources
Repositories
- pgwipeout's kernel tree
- BSP based development effort for SPL/U-Boot and Linux
- Image CI pipeline aimed at developers
- Rockchip U-Boot
- Downstream rockchip-linux kernel tree
Other
- Rockchip-SoC Patchwork Page
- Rockchip Kernel Mailing List Archive
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