Appendix · reference

RK3399 IO domain controller

Voltage routing for IO banks — both PMU and SoC instances attach cleanly.

The RK3399 IO domain controller is a small but critical block: it tells the SoC what voltage each external IO bank is running at (1.8 V vs 3.3 V) so the input buffer trip points and slew rates are programmed correctly. Get it wrong and signals look fine on a scope but the SoC samples them at the wrong threshold, producing the kind of bug that manifests as “this peripheral is flaky” without any obvious cause.

The chip has two instances — one on the PMU (always-on) power island and one in the SoC GRF — because some of the IO banks live on the PMU side and some on the main SoC side.

Identity

PropertyValue
BlockRK3399 IO domain controller (PMU + SoC instances)
DTS compatiblerockchip,rk3399-pmu-io-voltage-domain and rockchip,rk3399-io-voltage-domain
BindingsOne regulator-supply property per IO bank, naming maps a regulator to a domain
Linux driverdrivers/soc/rockchip/io-domain.c

Driver

● working

Both PMU and SoC IO domain instances attach cleanly. Both come from the upstream FreeBSD-extras Rockchip support; the Honeyguide overlay configures them via DTS supplies.

The driver reads the regulator voltage for each named supply (vcc1-supplyvccN-supply) and writes the corresponding bit in the GRF IO_VSEL register (PMU instance) or PMUGRF_SOC_CON* (SoC instance) to tell the IO buffers whether they’re 1.8 V or 3.3 V. This happens once at attach; there is no runtime per-bank voltage switching on this hardware.

Driver path in the FreeBSD tree (mainline, not under our overlay): sys/dev/iicbus/pmic/rockchip/ and adjacent — the iodomain logic lives alongside the rest of the RK3399 GRF / PMU support.

Verify on running hardware:

# Look for both attached instances
dmesg | grep -i iodomain
# Expect: rk_iodomain0 / rk_iodomain1 (or equivalent — names vary by tree)

Why this matters

If iodomain were wrong, expect:

Today none of those symptoms point at iodomain on this board, which is the strongest signal that both instances are doing their job.

Status

QuestionAnswer
Probes?Yes — both PMU and SoC instances
Misconfiguration risk?Low — DTS supplies match Linux mainline
Open work?None