Appendix · reference
PinePhone Pro component support matrix
Every chip, sensor, and on-SoC block on the RK3399S phone — with FreeBSD driver status, our-tree path, and upstream reference.
This is the PinePhone Pro per-component reference index. The phone is a
Rockchip RK3399S system with a few dozen distinct devices on board —
some on-SoC, some on i2c, some on SDIO, some on USB. Every one has
its own page with identity (part number, bus, GPIO/IRQ), driver
status, our-tree and upstream pointers, and open work.
The PineTab2 now has its own component matrix
so the tablet work can grow without muddying the phone’s support map.
The repo root HARDWARE.md
is the source-of-truth manifest with TODOs; this index is the
navigable, status-pilled view. The
hardware reference appendix is a flat manifest
table organized for cross-essay lookup.
Counts
Out of 45 components catalogued:
- ● working 30 working on hardware
- ◐ partial 9 partial — driver loads but flaky, disabled, or incomplete
- ○ blocked 0 blocked on a missing piece elsewhere
- · not started 6 not started
(Wave-1 + wave-2 implementation runs of 2026-04-30 moved gd25lq128
from blocked → partial, and rk-efuse / magnetometer / vibrator /
sgm3140 from not-started → partial. The 2026-05-02/03 PD bring-up
arc additionally promoted RK818 (full USB-PD sink → battery
charging), RK3399 TSADC (live cpu/gpu temps, later corrected to use
hardware QSEL rather than trim), AF8133J magnetometer (reset-gpio polarity fix → real
X/Y/Z reads), and SGM3140 (/dev/led/flash torch + flash strobe
verified by hand) from partial → working. A 2026-05-03 status pass
also promoted MPU-6500, STK3311, vibrator, and RK3399 eFuse — all
have working drivers exposing their full kernel-side feature set;
“partial” was actually about userspace policy that lives outside
each driver, not about driver completeness. See the per-component
pages for what’s left to wire into userspace nicely. TSADC moved back
to partial on 2026-05-05 after live overheat evidence exposed a readout
bug; the follow-up fixed sensor reporting with RK3399 hardware QSEL and
kernel #195 proved guarded code-domain comparator IRQs. It remains
partial because hardware TSHUT is still disarmed. The power-domain
controller also moved back to partial: the sysctl-only driver round-tripped
RGA on kernel #144, but PINEPHONE_PRO disables it after a warm-reboot
boot-refusal correlation.)
Status wording is intentionally conservative. partial usually
means “candidate code and a verifier exist, but live behaviour is
flaky or only one mode is verified.” The not-yet-phone-tested set
is: GD25LQ128 (no SPI-NOR driver attached → /dev/flash0 absent;
the bench tooling assumes a flashctl(8) that doesn’t exist in
FreeBSD), PL330 DMA (driver wired in kernel config, no consumer
yet exercises it), and rk_power_domain (driver exists but is disabled
until the attach/boot issue is isolated). Treat their pages as compile-ready /
bench-pending until bench:phone or the component-specific
verifier captures real PinePhone Pro output.
SoC and memory
Clocks, pinctrl, DMA, power, IOMMU
SoC peripherals
USB
Display
Audio
Power
Wireless and modem
Sensors
Cameras
Notes on cataloguing
The PineTab2 (RK3566) shares the family — same PMIC family (RK817 vs
RK818), same touchscreen vendor, same DSI panel topology — but is
catalogued separately under PineTab2 hardware
and PineTab2 components
because the SoC and several peripherals differ.
A few component pages flag specific discrepancies between the upstream
PinePhone Pro DTS, our schematic notes, and live driver behaviour:
- FUSB302 — mainline/local DTS place the controller at
&i2c4
address 0x22; FreeBSD logs the same 7-bit address as shifted
address 0x44 on iicbus3. Older notes mixed this with i2c0.
- SYR828 — labelled
vdd_gpu in the upstream DTS, not “A53 little
cluster VDD” as some of our older notes claimed.
- AP6255 — the WiFi side has host-side SDIO IRQ delivery after the
Rockchip bit-24 mask fix, and the SDIO bridge now requests a post-discovery
run clock so the card leaves probe speed. The open work is boot/idle polish
and larger transfer receipts; see the finishing plan §WiFi.
When in doubt, the per-component page wins over the index. The index
exists to find pages, not to summarize them — every one-line cell here
is reductive.