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.
| reference | this board | |
|---|---|---|
model | Canaan CanMV-K230 | LILYGO T-Display-K230 |
compatible | canaan,canmv-k230 | lilygo,t-display-k230, then the Canaan strings |
| panel | ST7701, 480×800 | RM69A10, 568×1232 |
| touch | edt,edt-ft5306 @ 0x38 | goodix,gt9895 @ 0x5d |
| panel dtsi | display-st7701-480x800.dtsi | display-rm69a10-568x1232.dtsi |
vth_line | 10 | 9 |
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
- The GT9895 node will not probe until the
goodix_berlinbackport lands. Until then it is inert; the panel is unaffected. - The upstream non-LCD
k230-canmv-v3.dtsgives its LT9611 HDMI bridgereset-gpios = <&gpio0_ports 24>andinterrupts = <23 …>— the touch controller’s pins. We derive from the LCD variant, which has no LT9611, so there is no collision. Anyone merging HDMI support back in must resolve it. - Nothing here has been booted.
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.