Ga Hing Woo (Jiaxing Hu)
I bring up new Rockchip silicon on mainline software and send the work upstream. Five of my commits are in the mainline kernel, merged in the 7.3 window and present since v7.3-rc1, applied by the IOMMU, Rockchip and networking maintainers. The first OP-TEE port for the RK3576 and a Trusted Firmware-A secure-boot fix are merged. I reverse-engineered the RK3576's NPU from vendor model files to a working driver stack, and when a published result of mine turned out to be wrong I retracted it by name. Kernel work is signed off as Jiaxing Hu; everywhere else I am gahingwoo.
Upstream contributions, accepted
Linux, iommu/rockchip: two fixes for the RK3576 NPU's IOMMU instances
Mainline, v7.3-rc1 · 2026
Take every clock the devicetree provides instead of a fixed pair, so register writes behind extra clock gates are no longer silently dropped; and acknowledge a stale page fault left by boot firmware before enabling stall, which otherwise hangs the poll. Applied by Will Deacon, IOMMU co-maintainer, with his own Signed-off-by.
Linux, arm64 dts: ArmSoM CM5 and CM5-IO board support
Mainline, v7.3-rc1 · 2026
Devicetree and binding for a new RK3576 compute module and carrier, through five review rounds. Acked-by Krzysztof Kozlowski on the binding; applied by Heiko Stübner, Rockchip SoC maintainer.
Linux, net/phy motorcomm: enable the reference clock for the YT8521
Mainline, v7.3-rc1 · 2026
Fix for crystal-less RGMII PHYs that need a SoC-sourced 25 MHz reference. Reviewed-by Andrew Lunn; Tested-by Gavin Gao on a different board; applied by Jakub Kicinski, net maintainer. An earlier attempt in the MAC driver was withdrawn on maintainer advice and redone at the PHY layer.
OP-TEE: first RK3576 platform port
merged · 2026
Ported the open-source Trusted Execution Environment to a new Rockchip SoC. Passed all 57 automated checks, reproduced on separate hardware, Reviewed-by from a Cherry Embedded Solutions maintainer. Flipper Devices later ran it on Flipper One: 114 xtest cases, 35,681 subtests, zero failures, credited by name in their developer documentation.
Trusted Firmware-A: removed a redundant secure-boot override
merged · 2026
A copy-paste build-configuration defect that would have silently broken secure boot on any build without a secure OS. Reviewed by engineers at STMicroelectronics, Arm and Rockchip.
Under review
Linux: RK3576 NPU enablement, 14 patches, PATCH v13
posted 15 Sep 2026
Bindings, power domains, IOMMU and accel/rocket changes to run the RK3576's NPU on the mainline driver. Reviewed-by ×4 (Krzysztof Kozlowski, Igor Paunovic, Abel Vesa ×2), Acked-by ×2 (Conor Dooley), Tested-by ×3 on RK3588 hardware I do not own. Tomeu Vizoso, the driver's author, has said he will review it. The root cause of the long-standing failure was a register field one word wide: a 16-bit task count where the RK3588 header assumed 12, confirmed on the list by Rockchip.
Mesa: RK3576 support in the Teflon delegate, !43804
posted · 2026
Five patches for one regular convolution on the rocket/Teflon path, deliberately the bare minimum the maintainer asked for first. Not yet reviewed.
Linux, media: RFC V4L2 driver for the RK3576 VEPU510 H.264 encoder
RFC · 2026
From-scratch encoder driver. Reviewed by Heiko Stübner and Nicolas Dufresne; on their advice, abandoned the stateful V4L2 interface in favour of the DRM/Vulkan-Video split being built for the RK3588.
What is next
- RK3576 NPU series: into the accel tree. v13 is posted, carrying Igor Paunovic's corrections to his own test reports, and the driver's author has yet to reply; the goal is for the 14 patches to be applied, so the NPU works on a stock kernel.
- Mesa: after the single regular convolution in !43804, the depthwise, pointwise and image-input layer types MobileNet is built from, as separate series.
- charsiu: an open runtime that matches or beats the vendor's performance on the mainline driver, with no vendor code in the path. Nine models already run end to end with output identical to the CPU reference.
- VEPU510 encoder: rebase on the DRM/Vulkan-Video split being built for the RK3588 once it lands, as the maintainers advised.
- edk2-rk3576: a complete, polished UEFI for the RK3576. It boots a mainline Fedora 44 desktop today; the goal is every board it builds for verified and the platform support upstreamable.
Publication
RK3576 NPU bring-up on the open driver stack: preprint, version 2
Zenodo · 2026
Version 1 reported that chained compute failed below what software could reach. Version 2 retracts that on its first page: the cause was a register field-layout error in software, and MobileNet V1 now runs end to end on the NPU and returns the CPU's class. Most of version 2 is about why a disprove-first method held a false conclusion for 38 days. Covered by CNX Software; five register-model findings independently cross-confirmed on RK3588 by a separate reverse-engineering effort.
Selected projects
- charsiu: an LLM runtime that talks to the mainline NPU driver directly, no Mesa and no vendor runtime. Nine models, Llama-3.2-1B among them, run end to end at four bits with output identical to the exact CPU arithmetic. C. github.com/gahingwoo/charsiu
- edk2-rk3576: a TianoCore UEFI port for the RK3576 that boots a mainline Fedora 44 desktop. Builds for six boards, verified on two; pinned on the Radxa forum by a Radxa engineer. C. github.com/gahingwoo/edk2-rk3576, forum.radxa.com
- kiln: local LLM and vision inference on the RK3576 NPU against a mainline kernel, using the vendor driver out of tree as a stopgap. Subject of a step-by-step tutorial in Radxa's official documentation. github.com/gahingwoo/kiln, docs.radxa.com
- rp2350-tz-tee: a minimal TrustZone-M Secure/Non-Secure example on the RP2350, with the SecureFault verified over SWD rather than trusted from source. C. github.com/gahingwoo/rp2350-tz-tee
- SoC-Consistency: static analysis of devicetree power trees, rule packs for five chip families, runs in CI. On PyPI; packaged into Arch Linux by an unaffiliated maintainer. Python. github.com/gahingwoo/SoC-Consistency
- RKDevelopTool-GUI: a Qt front end for Rockchip flashing on macOS and Linux. In the Arch AUR and on its own page in Radxa's documentation. Python, PySide6. github.com/gahingwoo/RKDevelopTool-GUI, docs.radxa.com
- lore-enhancer: a browser extension that turns lore.kernel.org's raw patch pages into a mail-client view. JavaScript. github.com/gahingwoo/lore-enhancer
Review and community
- Reviewed-by given twice on another contributor's accel/rocket patches, the second only after finding a real out-of-bounds write on v1 and seeing it fixed in v2. lore: clocks by name, lore: lifecycle fix v2
- Collabora published its own summary of the NPU work; the Rockchip kernel maintainer commented on it. Collabora's RK3576 enablement tracker cites the NPU series and the encoder RFC as its reference points. linkedin.com/posts/collabora
- EzySpeech: real-time transcription and translation into 21 languages, built for and still in use at Mt Albert Baptist Church's Sunday services, with a signed reference letter from the translation team leader. github.com/gahingwoo/ezy_speech_translate, mabc.org.nz/sundays, reference letter (PDF)
- Mt Albert Baptist website: a rebuild of the church's site, live on a subdomain the church pointed at my GitHub Pages account; not yet their default site. new.mabc.org.nz, github.com/gahingwoo/mabc-ws
- half-baked-studios: a GitHub organisation co-run with three other students, where I guide the group through embedded and firmware work. github.com/half-baked-studios
Education
Mount Albert Grammar School, Auckland
Year 13 · 2026
Secondary school student. The upstream, research and tooling work above was done alongside school.
Skills, as used in the work above
- Linux kernel
- IOMMU, devicetree and bindings, pmdomain, PHY drivers, accel subsystem, V4L2; the mailing-list workflow with b4 and checkpatch, from RFC to applied.
- Trusted execution and boot
- Trusted Firmware-A, OP-TEE, TrustZone-M on Cortex-M33, TianoCore EDK2 and UEFI.
- Hardware bring-up
- Register-level reverse engineering, ordered register tracing and differential testing against a vendor stack, SWD debugging, power and clock trees.
- Languages and tools
- C, Python, Shell, JavaScript; Qt/PySide6; Mesa and Teflon; GitHub Actions and CI.