Ticket #12254 (closed defect: fixed)
test-all fails on USB test
|Reported by:||Quozl||Owned by:||Quozl|
|Component:||ofw - open firmware||Version:||not specified|
|Action Needed:||no action||Verified:||no|
|Deployments affected:||Blocked By:|
The old test-all command in Open Firmware is failing on the USB hub test on XO-1.75 and XO-4 using svn head r3344.
Testing /usb@d4208000/hub@0,0 Failed to get hub descriptor Failed to get port status for port 3 Get-port-status failed for hub port 3
Only occurs if the SoC USB port is tested first, which is normal when using test-all. Can be reproduced outside test-all with:
ok test /usb@d4208000 \ the SoC port attached to the hub ok test /usb@d4208000/hub@0,0 \ the USB hub chip
Can be prevented by defining selftest as a false noop in cpu/arm/olpc/usb.fth .
hub-id returns -1 0 in the failing case, showing that the assigned-address property has changed.
assigned-address is 00000001 on first .properties after a select of the hub. But after a test of the SoC port, the hub assigned-address is 00000002. It is incremented by each test of the SoC port.
reuse-node is responsible for changing the assigned-address, the call chain above is reuse-old-node?, (make-device-node), make-device-node, make-root-hub-node, make-port-node, probe-root-hub-port, wait-connect, sagacity, selftest.
The test of the SoC USB port leads to a probe, and the probe leads to a change of address for the hub?
It would seem the simplest solution is to disable the port self test.
Not critical for manufacturing, as test-all is no longer used, instead the devices to be tested are selected by autorun-mfg-tests.