diff --git a/RESEARCH.md b/RESEARCH.md index d091845..3e9602a 100644 --- a/RESEARCH.md +++ b/RESEARCH.md @@ -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.