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>
--
urjaman