evidence · 3.2 KiB

dts-divergence.md

Committed at docs/evidence/dts-divergence.md. This is what grounds the requirements that cite it.

Open raw source

How our board DTS diverges from the reference

nix/dts/k230-tdisplay.dts derives from canaan/k230-canmv-v3-lcd.dts, which is the right base: U-Boot on this hardware prints Model: kendryte k230 canmv v3.0.

Compiled against the real k230.dtsi from the pinned Xuantie tree — 55,156 byte DTB, and every node verified present in the output rather than assumed.

referencethis board
modelCanaan CanMV-K230LILYGO T-Display-K230
compatiblecanaan,canmv-k230lilygo,t-display-k230, then the Canaan strings
panelST7701, 480×800RM69A10, 568×1232
touchedt,edt-ft5306 @ 0x38goodix,gt9895 @ 0x5d
panel dtsidisplay-st7701-480x800.dtsidisplay-rm69a10-568x1232.dtsi
vth_line109

Everything else is carried over unchanged: &uart0, &uart3, &usb0, &usb1, &i2c3, &i2c4, &mipi0, and both MMC controllers with the reference’s delay-line values.

What is NOT diverged, and why that is worth saying

GPIO22 reset and GPIO25 backlight are the reference’s values, not ours. &lcd { dsi_reset-gpios = <&gpio0_ports 22 GPIO_ACTIVE_HIGH>; backlight_gpio-gpios = <&gpio0_ports 25 GPIO_ACTIVE_HIGH>; } is copied verbatim. Before reading that file, docs/dts-evidence.md listed “whether IO25 gates a rail” as unestablished and we had no polarity for the reset at all.

The touch GPIOs are unchanged too — RST 24, INT 23 — even though the chip differs. Confirmed against the schematic.

No pinctrl. There is none in the Linux device tree for this SoC at all; FPIOA muxing is inherited from U-Boot’s own DTS. A board .dts here cannot set pin functions.

Known-unverified

Stage 1 logo timing, pending its build

nix/patches/uboot-k230/0004-rm69a10-logo-port.patch carries only the four LILYGO logo files and the RM69A10 Kconfig symbols after the SDK overlay. Its stage-1 connector table deliberately differs from LILYGO: pixel clock/lane rate 49.5 MHz/594 Mbps, PLL {3, 97, 0x17}, hs_freq 0x87, and pixel clock divider 11; VID_MODE_CFG=0xbf02 and DPI_COLOR_CODING=0x105 match Linux. The partial-area 31/30/12 sequence is replaced by 13 00, as in display-rm69a10-568x1232.dtsi. The port has not been built or run; these are source choices, not panel evidence.

Stage-1 framebuffer reservation, pending its build

nix/dts/k230-tdisplay.dts now adds /reserved-memory/framebuffer@10000000: a 4 MiB no-map region for the stage-1 XRGB scanout. nix/device-tree.nix passes its address, size, and unit-address token as DTS preprocessor definitions from nix/boot-splash.nix; the same address attribute feeds U-Boot’s Kconfig fragment. The DTS has not yet been built into a DTB, so the node’s encoded reg and its kernel effect remain unverified.