Files
bfe-core1106-sdk/patches
NoahandClaude Opus 5 4a5481b6a5 Instrument the dwc3 OTG path to test the guard
The guard alone did not fix flare-edge#160: with dr_mode="otg" and the live
re-init skipped, the controller still died 14s after carrier-on under load
(carrier 54.1s, first Tx timeout 63.4s, HC died 68.4s).

That means either the OTG event path is not the trigger, or the harm comes from
somewhere else in it. dr_mode="host" removes far more than this one call: it
also skips dwc3_otgregs_init() and hands port-power control to xHCI instead of
the OTG block.

IRQ 47 is shared between dwc3-otg and xhci-hcd, so /proc/interrupts cannot say
whether OTG events fire at all. CONFIG_DYNAMIC_DEBUG is off, so dev_dbg is
compiled out and invisible.

So this build logs, ratelimited and always compiled:
  - every OTG hardware event with its OEVT value, role and restart flag
  - each time the guard skips a re-init on a live host

Run under load, that answers whether the OTG path is even active during the
failure window, instead of guessing a third patch.

Also worth measuring: load accelerates this dramatically -- 452-587s idle
versus 9-14s under line-rate traffic -- so idle soaks are not comparable to
load tests and earlier comparisons need re-reading with that in mind.

Refs flare-edge#160

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MVGTC78dgCGfRANNKjoPea
2026-09-22 17:34:51 -06:00
..

The Kernel Patch Series

The delta that forward-ports the vendor Rockchip 5.10.160 RV1106 support onto a pristine upstream linux-6.18.46, as a reviewable, subsystem-split series. Every patch applies cleanly onto pristine 6.18.46 (git apply --check), and the whole set reproduces the 223-file / ~136K-line delta that boots and is hardware-verified on warden-c8a3 (see ../kernel/rv1106-enablement/).

Build it with ../build/build-kernel.sh (fetch pristine -> apply these -> configure with ../build/warden_defconfig -> zImage + rv1106-warden.dtb).

The Series

Patch Scope
05-build-wiring.patch top-level drivers/{Kconfig,Makefile} (wire in rknpu)
10-clk-rv1106.patch CRU clock driver (clk-rv1106.c, reuses rv1126 data)
15-pinctrl.patch pinctrl-rockchip RV1106 iomux
20-arch-dts-bindings.patch arch/arm DTs (rv1106.dtsi, rv1106-warden.dts, pinctrl), mach, configs, include/dt-bindings
25-usb-phy.patch inno-usb2 phy
30-drm-vop-panel-rgb.patch VOP (rgb_dclk_pol=0 + WIN1 scanout), panel-simple bus-format, rockchip_rgb
35-mailbox-hpmcu.patch rockchip-mailbox (rv1106 num_chans=1)
40-pvtm-soc.patch PVTM (core+pmu) + include/soc/rockchip/pvtm.h
45-npu-rknpu.patch open GPL rknpu 0.9.2 driver + rknpu_ioctl.h uapi
50-rga.patch RGA 2D (rga3) + drivers/video wiring
60-wifi-aic8800.patch out-of-tree AIC8800 wifi/BT (the 88.5K-line vendor blob)
70-audio-codec.patch rv1106_codec + I2S wiring
80-misc-thermal-rtc-adc.patch tsadc, rtc-rockchip, saradc, trng, otp, gmac, goodix touch

License

Everything in this directory is a derivative work of the Linux kernel and of GPL-2.0 vendor kernel code: GPL-2.0-only (or the per-file SPDX identifier where one is present), the same license the whole repository carries.

Provenance & regeneration

Baseline: linux-6.18.46 from kernel.org (build/linux-6.18.46.tar.xz.sha256 pins the tarball). The series was generated by overlaying the hardware-verified source tree onto pristine (build artifacts excluded) and splitting git diff by subsystem. Licensing/origin of each block is tracked in ../kernel/rv1106-enablement/PROVENANCE.md.

Whitespace: 60-wifi-aic8800.patch carries the vendor blob's trailing-whitespace verbatim; git apply --whitespace=nowarn (the build wrapper) accepts it. Do not re-flow vendor code; it must stay diffable against future vendor drops.