|
|
|
@ -292,20 +292,24 @@ ulong get_timer_masked (void) |
|
|
|
|
void udelay_masked (unsigned long usec) |
|
|
|
|
{ |
|
|
|
|
ulong tmo; |
|
|
|
|
ulong endtime; |
|
|
|
|
signed long diff; |
|
|
|
|
|
|
|
|
|
if(usec >= 1000){ /* if "big" number, spread normalization to seconds */ |
|
|
|
|
if (usec >= 1000) { /* if "big" number, spread normalization to seconds */ |
|
|
|
|
tmo = usec / 1000; /* start to normalize for usec to ticks per sec */ |
|
|
|
|
tmo *= CFG_HZ; /* find number of "ticks" to wait to achieve target */ |
|
|
|
|
tmo /= 1000; /* finish normalize. */ |
|
|
|
|
}else{ /* else small number, don't kill it prior to HZ multiply */ |
|
|
|
|
} else { /* else small number, don't kill it prior to HZ multiply */ |
|
|
|
|
tmo = usec * CFG_HZ; |
|
|
|
|
tmo /= (1000*1000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reset_timer_masked (); /* set "advancing" timestamp to 0, set lastdec vaule */ |
|
|
|
|
endtime = get_timer_masked () + tmo; |
|
|
|
|
|
|
|
|
|
while (get_timer_masked () < tmo) /* wait for time stamp to overtake tick number.*/ |
|
|
|
|
/*NOP*/; |
|
|
|
|
do { |
|
|
|
|
ulong now = get_timer_masked (); |
|
|
|
|
diff = endtime - now; |
|
|
|
|
} while (diff >= 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|