kernel: full-SoC DT transplant — batch-1 peripherals at parity on 6.18
Move from the hand-built minimal DT to the vendor rv1106.dtsi (full SoC: pinctrl, gpio×5, dmac, cru+grf_cru, all peripherals), with our lean board DTS (rv1106-warden.dts) enabling only the wall-HMI's needs — no camera/ISP/CSI. Two deltas made it boot on 6.18: overwrite boot-mode.h with the vendor's (extra BOOT_* constants) and DELETE the psci node (no secure monitor → SMC fault → "Attempted to kill the idle task"). Recipe in dts/README.md. Verified on warden-c8a3 (uname 6.18.46, full WardenOS userspace): pinctrl, gpio0-4, pl330 DMA, uart1/2/4 (ttyS1/2/4), i2c3, dw-wdt (watchdog0) all probe. DRIVER-PARITY.md tracks the remaining ports (VOP display, AIC8800 wifi, rknpu, usb2phy, saradc-compat, RGA) toward full parity with the 5.10 kernel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017wB8KB3MMQztRDXCMCkPrf
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b5a448fa84
commit
79ef2df67a
@@ -0,0 +1,26 @@
|
||||
# RV1106 6.18 devicetree
|
||||
|
||||
- **`rv1106-warden.dts`** — our board DT. `#include`s the vendor `rv1106.dtsi`
|
||||
(the full SoC: pinctrl, gpio×5, 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.
|
||||
@@ -0,0 +1,61 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* WardenOS 86-Panel board DT for the self-built Linux 6.18 forward-port.
|
||||
*
|
||||
* Includes the full vendor rv1106.dtsi (SoC nodes + pinctrl + gpio + dmac), then
|
||||
* enables only what our wall-HMI needs — no camera/ISP/CSI. Grows one driver
|
||||
* batch at a time toward full parity with the 5.10 kernel (DRIVER-PARITY.md).
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "rv1106.dtsi"
|
||||
|
||||
/ {
|
||||
model = "WardenOS 86-Panel (RV1106)";
|
||||
compatible = "rockchip,rv1106-warden", "rockchip,rv1106";
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial2:115200n8";
|
||||
bootargs = "earlycon=uart8250,mmio32,0xff4c0000 console=ttyS2,115200n8 earlyprintk rootwait";
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>; /* 256 MiB */
|
||||
};
|
||||
};
|
||||
|
||||
/* --- console --- */
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* --- eMMC rootfs (M3) --- */
|
||||
&emmc {
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* --- batch 1: mainline peripherals (wire DT + config) --- */
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdt {
|
||||
status = "okay";
|
||||
};
|
||||
Reference in New Issue
Block a user