Appendix · reference
Hardware reference
Combined chip manifest for the PinePhone Pro and PineTab2; board-specific tables live next to it.
A flat catalog of every chip we touch on both target boards, with bus
addresses, GPIO/IRQ pin assignments, and a one-line note on driver
status. This remains the quick cross-board lookup table. For board-first
reading, use PinePhone Pro hardware,
PinePhone Pro components,
PineTab2 hardware, and
PineTab2 components.
GPIO notation is Rockchip-style: GPIOx_Pyz where x is the bank,
y is the group letter (A/B/C/D), and z is the pin within the
group. The decimal number after each pin (= n) is the
bank-offset value used in .dtso files (bank * 32 + group * 8 + z).
PinePhone Pro (RK3399S)
SoC and memory
| Component | Part | Bus / Address | Notes |
|---|
| SoC | Rockchip RK3399S | — | 2× A72 @ 1.5 GHz + 4× A53 @ 1.0 GHz, voltage-locked variant of RK3399 |
| RAM | 4 GiB LPDDR4 | — | Full SMP, 6 cores active |
| eMMC | 128 GiB | sdhci @ 0xfe330000 | 25 MHz/8-bit, HS200 not enabled |
| microSD (boot) | user-supplied | sdmmc / DWMMC @ 0xfe320000 | 50 MHz/4-bit, primary boot |
| WiFi SDIO | AP6255 / BCM43455 | sdio0 / DWMMC @ 0xfe310000 | SDIO function 1, in-band IRQ pending |
| SPI NOR | GD25LQ128 (16 MiB) | spi1 | rk2aw + Megi U-Boot 2024.04. mx25l driver missing JEDEC ID 0xc86018 |
Power management
| Component | Part | Bus / Address | Notes |
|---|
| PMIC | Rockchip RK818 | DTS &i2c0 addr 0x1c | Custom Honeyguide driver |
| Big-cluster regulator | SYR827 | DTS &i2c0 addr 0x40 | vdd_cpu_b (A72 big-cluster VDD) per upstream PPP DTS. No in-tree fan53555 driver — U-Boot defaults hold the rail. |
| GPU regulator | SYR828 | DTS &i2c0 addr 0x41 | vdd_gpu (Mali-T860 VDD) per upstream PPP DTS — NOT “A53 little cluster VDD” as earlier notes claimed. No in-tree fan53555 driver. |
| IO domains | RK3399 internal | MMIO | Both PMU and SoC iodomain attached |
| Battery gauge | RK818 internal | via PMIC | Driver loads; user-facing battery/charger policy pending |
| USB-C controller | FUSB302B | DTS &i2c4 addr 0x22 | Sink-mode PD r3.0 (9 V / 3 A) negotiated; charger raises input limit on Transition_Sink → Ready. FreeBSD logs the same 7-bit address as shifted addr 0x44 on iicbus3. See component-fusb302. |
Display and GPU
| Component | Part | Bus / Address | Notes |
|---|
| GPU | ARM Mali-T860 MP4 | MMIO 0xff9a0000 | panfrost driver, GLES 3.1 via mesa; Sway no longer forced to pixman |
| VOP-Lit | RK3399 VOP | MMIO 0xff8f0000 | 720×1440 @ 60 Hz |
| MIPI DSI bridge | Synopsys DW-MIPI-DSI | MMIO 0xff960000 | 4-lane, custom dw_mipi_dsi driver |
| Display panel | HX8394-controlled IPS | DSI | 720×1440, panel_hx8394 driver |
| Backlight | PWM-controlled | pwm0 | pwm_backlight driver |
| HDMI | Synopsys DW-HDMI | MMIO 0xff940000 | Compiled, untested |
Audio
| Component | Part | Bus / Address | Pins / IRQ |
|---|
| Codec | Realtek RT5640 (ALC5640) | DTS &i2c1 addr 0x1c | HP-detect GPIO4_D4 is in DTS; routing policy pending |
| I2S0 controller | RK3399 I2S0 (8-channel) | MMIO 0xff880000 | BCLK 3.072 MHz, LRCK 48 kHz |
| Speaker amp | AwiNic AW8737SCSR | enable GPIO0_B3 | simple_amplifier(4) asserts enable on PCMTRIG_START, drops it on _STOP (commits 3b23d2f + be6f2f1). |
| MIC bias | RT5640 MICBIAS1 | — | Headset mic on IN2P |
Connectivity
| Component | Part | Bus / Address | Pins / IRQ |
|---|
| WiFi | Broadcom BCM43455 (in AP6255) | sdio0 / DWMMC @ 0xfe310000 | WL_REG_ON = GPIO0_B2 (16). Native bwfm(4) SDIO path loads firmware, PPP-specific NVRAM, and CLM; scan, WPA2/PSK association, EAPOL, DHCP, SDIO IRQ delivery, and post-discovery 50 MHz SDIO clocking work on hardware. Still partial pending long-idle, broader AP/auth coverage, and upstream-shaped cleanup. |
| Bluetooth | Broadcom BCM4345C5 (in AP6255) | uart0 @ 1.5/3.0 Mbaud | BT_HOST_WAKE = GPIO0_PA4 (4), BT_DEV_WAKE = GPIO2_PD2 (26), BT_REG_ON = GPIO0_PB1. Crystal 37.4 MHz (Murata Type-1MW build). |
| Cellular modem | Quectel EG25-G | usb (internal) | Regulators: GPIO1_C7 + GPIO4_C7. Control: W_DISABLE_N = GPIO0_B0, AP_READY = GPIO0_B4, PWRKEY = GPIO0_B5, RESET = GPIO3_B0, STATUS = GPIO3_A6. mise run modem:power:phone drives the sequence. |
| GPS | via EG25-G | NMEA on modem USB port | Depends on modem power-on; not integrated yet |
| Component | Part | Bus / Address | Pins / IRQ |
|---|
| Touchscreen | Goodix GT917S | DTS &i2c3 addr 0x14 | IRQ on GPIO3_B5, reset GPIO3_B4. FreeBSD logs shifted addr 0x28 on iicbus1. 5-touch, interrupt-driven in X11 and Wayland. |
| Power button | GPIO key | gpiokeys0 | KEY_POWER mapped via gpiokeys_codes.c patch |
| Ring-indicator | GPIO key | gpiokeys1 | KEY_WAKEUP mapped via gpiokeys_codes.c patch |
| Volume buttons | SARADC keys | saradc ch1 | adc-keys path working on hardware via local rk_saradc + rk_adc_keys. Live capture showed KEY_VOLUMEUP near 0-21 mV, KEY_VOLUMEDOWN near 0.30-0.63 V, idle near 1.79 V. |
| Accel/Gyro | InvenSense MPU-6500 | DTS &i2c4 addr 0x68 | Raw sysctls working under dev.mpu6500.0.*; IRQ, calibration, and orientation policy still pending. |
| Light/proximity | Sensortek STK3311 | DTS &i2c3 addr 0x48 | IRQ-backed near plus raw ALS/PS sysctls under dev.stk3311.0.*; proximity-screen policy is opt-in. |
| Magnetometer | Voltafield AF8133J | DTS &i2c4 addr 0x1c | Polled raw-axis driver candidate; bench confirmation pending. |
USB and peripherals
| Component | Part | Bus / Address | Notes |
|---|
| USB3 OTG | Synopsys DWC3 | MMIO 0xfe800000 | CDC Ethernet gadget on ue0. dr_mode = peripheral. |
| USB2 host | EHCI/OHCI | MMIO 0xfe380000 | Modem + peripherals |
| USB-C PHY | RK3399 TCPHY | MMIO 0xff7c0000 | USB3 + DP alt mode |
| USB2 PHY | RK3399 USB2PHY | MMIO 0xff770000 | OTG + host |
| Watchdog | Synopsys DW WDT | MMIO 0xff848000 | dwwdt0 attached |
| Notification LEDs | GPIO R/G/B | GPIO4_D2/D5/D6 | /dev/led/led-{red,green,blue} working; omfreebdy phone-led wraps it. |
| Vibrator | GPIO motor | gpio3 RK_PB1 | Linux-compatible gpio-vibrator node with a local EV_FF / FF_RUMBLE driver candidate. Earlier “GPIO1_C7” was hand-counted; canonical pin is gpio3 RK_PB1 per upstream PPP DTS. |
| Privacy switches | 6 hardware kill switches | — | Switch #6 enables UART on 3.5 mm jack |
Console serial
- 1500000 baud, 8N1, no flow control on the 3.5 mm headphone jack
- Privacy switch #6 must be ON to route serial
- FT232 USB-serial adapter on
/dev/ttyUSB1 — CP2102 on /dev/ttyUSB0
cannot do 1500000 baud
- 3.3 V TTL only; 5 V will damage the SoC
PineTab2 (RK3566)
The PineTab2 shares the Quartz64 RK3566 driver foundation but adds
tablet-specific peripherals that are mostly unsupported on FreeBSD
today. Phase 3+ work; not actively brought up.
SoC and memory
| Component | Part | Bus / Address | Notes |
|---|
| SoC | Rockchip RK3566 | — | 4× Cortex-A55 @ 1.8 GHz |
| RAM | 4 GiB / 8 GiB LPDDR4 | — | |
| eMMC | 64 GiB / 128 GiB | sdhci0 | HS200 198 MHz with covacat sdhci_fdt patches |
| microSD | user-supplied | sdhci1 | |
| GPU | ARM Mali-G52 MP2 | MMIO | Bifrost/Valhall — panfrost won’t fit, needs panthor |
| TSADC | RK3566 TSADC | MMIO 0xfe710000 | Causes reboots; remove via fdt rm in loader.conf |
Power management
| Component | Part | Bus / Address | Notes |
|---|
| PMIC | Rockchip RK817 | i2c0 addr 0x20 | Partial FreeBSD support |
| Battery gauge | RK817 internal | via PMIC | |
| USB-C controller | FUSB302 ×2 | i2c | Two USB-C ports |
| Component | Part | Bus / Address | Notes |
|---|
| Display panel | BOE TH101MB31IG002-28A | MIPI DSI | 10.1” 1280×800 IPS. No FreeBSD MIPI DSI framework — bring up via micro-HDMI instead. |
| HDMI | Synopsys DW-HDMI | MMIO | DW-HDMI driver works (covacat fixes) |
| Touchscreen | Goodix GT9xx | i2c | Adapt PinePhone Pro driver |
| Keyboard | Pogo pin USB 2.0 | usb | Standard USB HID |
Connectivity
| Component | Part | Bus / Address | Notes |
|---|
| WiFi/BT combo | Bestechnic BES2600 | sdio | Out-of-tree driver even on Linux. Use a USB dongle. |
| Ethernet (EQOS) | RK3566 GMAC | MMIO | 1 Gbps with covacat patches |
| USB 3.0 | RK3566 xHCI | MMIO | Combophy selection critical — wrong DTB breaks hardware |
Console serial
- 1500000 baud via USB-C UART dongle (ships with the device)
- Plug into the USB-C port furthest from the power button (only
green light should be on)
- Adapter has an SD BOOT MASKROM switch to bypass eMMC/SPI boot
Cross-references
- Repo root
HARDWARE.md
has TODO lists, working/partial/broken status, and Linux driver
references for every chip.
- The PinePhone Pro schematic support map
groups the same hardware by board-level function and links each block
to the work log that brought it up.
- The mainline Linux DTS files (
rk3399-pinephone-pro.dts,
rk3566-pinetab2-v2.0.dts) are the source of truth for pin
assignments; FreeBSD imports them under
sys/contrib/device-tree/src/arm64/rockchip/.
- For the porting strategy and history behind these choices, see
Porting research.