AR100 driver fails to load its firmware #18

Closed
opened 2026-08-27 23:22:26 +00:00 by tiagoagueda · 1 comment
Owner

At every boot:

sunxi-arisc 8100000.coprocessor: Direct firmware load for sun9i-a80-arisc.bin failed with error -2

The driver carries on and works, because it talks to the vendor firmware already resident in
the coprocessor from boot0 — but that means the AR100 state depends on what the vendor
bootloader left behind, which is not something a mainline driver should rely on.

firmware/arisc-v0.0.80.bin in this repo is the board-matched blob, recovered from the eMMC
before it was repartitioned; it exists nowhere else.

Done when

  • decide whether the driver should load firmware at all, or document that it deliberately
    adopts the running instance
  • if it should load it, install the blob under the expected name and verify the handshake
    still completes
At every boot: ``` sunxi-arisc 8100000.coprocessor: Direct firmware load for sun9i-a80-arisc.bin failed with error -2 ``` The driver carries on and works, because it talks to the vendor firmware already resident in the coprocessor from boot0 — but that means the AR100 state depends on what the *vendor* bootloader left behind, which is not something a mainline driver should rely on. `firmware/arisc-v0.0.80.bin` in this repo is the board-matched blob, recovered from the eMMC before it was repartitioned; it exists nowhere else. **Done when** - [ ] decide whether the driver should load firmware at all, or document that it deliberately adopts the running instance - [ ] if it should load it, install the blob under the expected name and verify the handshake still completes
Author
Owner

Resolved 2026-08-28.

The coprocessor firmware now loads and the AR100 comes up on every boot. Two changes were
needed:

  • the blob is carried in an initramfs, so request_firmware() can succeed before the
    rootfs is mounted - populate_rootfs() is a rootfs_initcall and runs before any driver
    probes. Setup in tools/initramfs/.
  • the driver waits 3 s before its first request rather than starting as early as
    possible.

That second point is a workaround for a real fault, not a fix, and is tracked on its own as
#47. See 45-a15-cluster-solved.md.

**Resolved 2026-08-28.** The coprocessor firmware now loads and the AR100 comes up on every boot. Two changes were needed: - the blob is carried in an **initramfs**, so `request_firmware()` can succeed before the rootfs is mounted - `populate_rootfs()` is a `rootfs_initcall` and runs before any driver probes. Setup in [tools/initramfs/](../src/branch/main/tools/initramfs/). - the driver **waits 3 s** before its first request rather than starting as early as possible. That second point is a workaround for a real fault, not a fix, and is tracked on its own as #47. See [45-a15-cluster-solved.md](../src/branch/main/45-a15-cluster-solved.md).
Sign in to join this conversation.
No description provided.