Round 34: ROOT CAUSE - mtu3 node never bound; simple-mfd fix; payload 9c55f520

This commit is contained in:
vhaudiquet
2026-08-30 19:46:49 +02:00
parent 15fa3b22f5
commit 4bda8d7711
+44
View File
@@ -1297,3 +1297,47 @@ from pumpkin minus all USB/PHY configs.
| prompt but keys do nothing | keyboard not enumerated (pogo not seated?) or stdin mux — re-seat keyboard and power-cycle |
Awaiting user reboot report.
## Round 34 — [ROOT CAUSE] mtu3 node never bound; "No USB controllers found"
Round 33 report: "no usb controller detected" — matches
usb-uclass.c:467 `No USB controllers found`, printed when
`controllers_initialized == 0`, i.e. NO UCLASS_USB bus device was even
probed (a probed-but-failed controller would have printed
"Bus usb@11200000: probe failed, error N"). So the xHCI node was never
BOUND. Not a driver/pin problem: xhci-mtk.o was linked, the dtb had
mac+ippc+phys, and pinctrl is irrelevant to the controller.
### Root cause (found in source, drivers/core/root.c)
`dm_scan_fdt_node()` walks ONLY the immediate subnodes of a bound node.
Recursion into a node's children happens solely when some driver binds
that node (bus drivers recurse via dm_scan_fdt_dev, e.g. the generic
simple-bus driver's uclass post_bind, drivers/core/simple-bus.c).
`usb@11200000` is a child of `ssusb@11201000` ("mediatek,mtu3"), which
has NO U-Boot driver ⇒ its subtree was never scanned ⇒ usb_host never
bound ⇒ zero UCLASS_USB devices. MMC/video bind because they are
direct children of /soc (simple-bus).
### Fix (u-boot `75fe5bc9`, payload `9c55f520…`)
The R33 overlay now also sets
`compatible = "mediatek,mt8183-mtu3", "mediatek,mtu3", "simple-mfd"`
on ssusb: the generic simple-bus driver binds the node (CONFIG_SIMPLE_BUS=y)
and its post_bind scans the xhci child. No MMIO touched by that driver
(empty `ranges` → plat read skipped harmlessly).
Build OK, `_start` still 0x4C001000, dtb verified (simple-mfd present).
Flashed `9c55f520…`, cmp OK, vbutil body verification succeeded.
### Decision tree for the reboot
| observation | meaning |
|---|---|
| banner → `Bus usb@11200000: ...` lines → `N USB Device(s) found` → prompt; typing works | WORKING |
| banner → `Bus usb@11200000: probe failed, error -N` | xhci/phy/clk probe failed at stage N — transcribe |
| banner → `Scanning bus ... failed, error N` | root-hub enumeration failed — transcribe |
| `Bus usb@11200000: No USB Device found` then prompt | controller OK, nothing on the bus — re-seat the keyboard on the pogo pins, power-cycle |
| `No USB controllers found` again | binding still failing — next step: krane_fb_log in lists_bind_fdt path |
Awaiting user reboot report.