This seems to "fix" this for me - the delay loop is still unreliable, but atleast the recalibration attempts only take 5s instead of minutes. This is a combined diff for both my fix and the % fix.
Index: udelay.c =================================================================== --- udelay.c (revision 990) +++ udelay.c (working copy) @@ -66,6 +66,7 @@ printf("Calibrating delay loop... ");
recalibrate: + count = 1000; while (1) { timeusec = measure_delay(count); if (timeusec > 1000000 / 4) @@ -93,7 +94,7 @@ */ for (i = 0; i < 4; i++) { if (measure_delay(100) < 90) { - msg_pdbg("delay more than 10% too short, " + msg_pdbg("delay more than 10%% too short, " "recalculating... "); goto recalibrate;
Signed-off-by: Urja Rannikko urjaman@gmail.com