Files
bfe-core1106-sdk/kernel/rv1106-enablement/dts
BFE EngineeringandClaude Fable 5 3d3b35459e 6.18 boot-splash chain: seamless VOP takeover, drm-logo reservation, gzip kernel, chosen-bootargs dedup
Kernel-side captures for the flare-edge warden-bootimprovements work,
photon-verified on warden-c8a3:

- rockchip_drm_vop.c vop_initial(): when U-Boot left the VOP scanning the
  boot logo (window enabled, not in standby), skip the AHB/dclk resets and
  window disables, and hold clocks + a runtime-PM reference until the first
  real vop_enable() drops them. The logo now survives the DRM bind; the
  only remaining blank is ~1.3s at the splash's own first modeset.
  KNOWN LOOSE END: a deferred-probe rebind runs the takeover twice and the
  first bind's held references are never dropped (a clk/PM leak that keeps
  the VOP domain on -- harmless for an always-on HMI, should be released in
  unbind eventually).
- rv1106-warden.dts: /reserved-memory/drm-logo@0 placeholder that U-Boot's
  fdt fixup stamps with the logo framebuffer (observed: addr=0xdf00000
  size=0x71000, kernel reserves it 'map non-reusable'); chosen bootargs
  drop earlyprintk (with earlycon it doubled every console line at 115200).
- Kernel config switched KERNEL_XZ -> KERNEL_GZIP: post-'Starting kernel'
  silence 4.2s -> 0.8s; the zImage grows past the old 11.95MB cap, which
  flare-edge sdk-patches 0007 removes (fdt_addr_r 12M -> 128M).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014L3eBF6wBXC55uJoZuUfS6
2026-09-01 16:57:46 -06:00
..

RV1106 6.18 devicetree

  • rv1106-warden.dts: our board DT. #includes the vendor rv1106.dtsi (the full SoC: pinctrl, gpiox5, dmac, cru+grf_cru, uart, emmc, i2c, saradc, watchdog, usb, vop, npu, rga, ...), then enables only what the wall-HMI needs. No camera/ISP/CSI. Grows one driver batch at a time (see ../DRIVER-PARITY.md).
  • rv1106-warden-m2.dts: the earlier standalone minimal DT used to bring up M2/M3 before the full-SoC transplant; kept for reference.

Transplanting the vendor SoC DT onto 6.18 (recipe)

Copy into arch/arm/boot/dts/rockchip/ of the 6.18 tree: rv1106.dtsi, rv1106-pinctrl.dtsi, rockchip-pinconf.dtsi. Copy the vendor-only dt-bindings headers into include/dt-bindings/: soc/rockchip-system-status.h, suspend/rockchip-rv1106.h, display/media-bus-format.h, and overwrite soc/rockchip,boot-mode.h with the vendor's (it has extra BOOT_CHARGING/UMS/PANIC/WATCHDOG constants the DT uses). Then the two hardware deltas:

  1. Delete the psci node from rv1106.dtsi. RV1106 has no secure monitor in our boot chain, so arm,psci-1.0 + method="smc" makes the SMC call fault -> Oops - bad mode -> Attempted to kill the idle task. (Confirmed on c8a3.)
  2. Enable the peripherals in the board DTS (&uart2, &emmc, ...).

Verified on warden-c8a3: pinctrl, gpio0-4, pl330 DMA, uart1/2/4, i2c3, dw-wdt all probe; full WardenOS userspace boots.