svn_rev_026
remove udelay_masked and all udelay implementations
This commit is contained in:
parent
d2bf9bf488
commit
8df97fc2db
|
@ -215,29 +215,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay x useconds AND perserve advance timstamp value */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo, tmp;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = get_timer (0); /* get current timestamp */
|
|
||||||
if ( (tmo + tmp + 1) < tmp )/* if setting this forward will roll time stamp */
|
|
||||||
reset_timer_masked (); /* reset "advancing" timestamp to 0, set lastinc value */
|
|
||||||
else
|
|
||||||
tmo += tmp; /* else, set advancing stamp wake up time */
|
|
||||||
while (get_timer_masked () < tmo)/* loop till event */
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -257,29 +234,6 @@ ulong get_timer_masked (void)
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is derived from PowerPC code (read timebase as long long).
|
* This function is derived from PowerPC code (read timebase as long long).
|
||||||
* On ARM it just returns the timer value.
|
* On ARM it just returns the timer value.
|
||||||
|
|
|
@ -326,20 +326,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
|
|
||||||
tmo += get_timer (0);
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo)
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -363,29 +349,6 @@ ulong get_timer_masked (void)
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
} else {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(CONFIG_S3C4510B)
|
#elif defined(CONFIG_S3C4510B)
|
||||||
|
|
||||||
ulong get_timer (ulong base)
|
ulong get_timer (ulong base)
|
||||||
|
@ -393,19 +356,6 @@ ulong get_timer (ulong base)
|
||||||
return timestamp - base;
|
return timestamp - base;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
u32 ticks;
|
|
||||||
|
|
||||||
ticks = (usec * CFG_HZ) / 1000000;
|
|
||||||
|
|
||||||
ticks += get_timer (0);
|
|
||||||
|
|
||||||
while (get_timer (0) < ticks)
|
|
||||||
/*NOP*/;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
|
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
|
||||||
/* No timer routines for IntegratorAP/CM720T as yet */
|
/* No timer routines for IntegratorAP/CM720T as yet */
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -87,11 +87,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay_masked(usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -120,24 +115,6 @@ ulong get_timer_masked (void)
|
||||||
return get_timer_raw()/TIMER_LOAD_VAL;
|
return get_timer_raw()/TIMER_LOAD_VAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
tmo = CFG_HZ_CLOCK / 1000;
|
|
||||||
tmo *= usec;
|
|
||||||
tmo /= 1000;
|
|
||||||
|
|
||||||
endtime = get_timer_raw () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_raw ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reset the cpu by setting up the watchdog timer and let him time out
|
* Reset the cpu by setting up the watchdog timer and let him time out
|
||||||
* or toggle a GPIO pin on the AT91RM9200DK board
|
* or toggle a GPIO pin on the AT91RM9200DK board
|
||||||
|
|
|
@ -79,22 +79,6 @@ ulong get_timer_masked (void)
|
||||||
return TCN1;
|
return TCN1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong endtime = get_timer_masked() + usec;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay_masked(usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reset the cpu by setting up the watchdog timer and let him time out
|
* Reset the cpu by setting up the watchdog timer and let him time out
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -82,20 +82,6 @@ void set_timer(ulong t)
|
||||||
timer_ticks = t;
|
timer_ticks = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay(ulong usec)
|
|
||||||
{
|
|
||||||
ulong start = get_timer_masked();
|
|
||||||
ulong end;
|
|
||||||
|
|
||||||
if (!timer_inited)
|
|
||||||
reset_timer();
|
|
||||||
|
|
||||||
/* Only 1ms resolution :-( */
|
|
||||||
end = usec / 1000;
|
|
||||||
while (get_timer(start) < end)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_cpu (ulong ignored)
|
void reset_cpu (ulong ignored)
|
||||||
{
|
{
|
||||||
ulong tc;
|
ulong tc;
|
||||||
|
|
|
@ -98,19 +98,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong start = get_timer(0);
|
|
||||||
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= (timer_load_val * 100);
|
|
||||||
tmo /= 1000;
|
|
||||||
|
|
||||||
while ((ulong)(get_timer_masked () - start) < tmo)
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -134,29 +121,6 @@ ulong get_timer_masked (void)
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= (timer_load_val * 100);
|
|
||||||
tmo /= 1000;
|
|
||||||
} else {
|
|
||||||
tmo = usec * (timer_load_val * 100);
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reset the cpu by setting up the watchdog timer and let him time out
|
* reset the cpu by setting up the watchdog timer and let him time out
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -214,30 +214,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay x useconds AND preserve advance timestamp value */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo, tmp;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = get_timer (0); /* get current timestamp */
|
|
||||||
if( (tmo + tmp + 1) < tmp ) /* if setting this fordward will roll time stamp */
|
|
||||||
reset_timer_masked (); /* reset "advancing" timestamp to 0, set lastdec value */
|
|
||||||
else
|
|
||||||
tmo += tmp; /* else, set advancing stamp wake up time */
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo) /* loop till event */
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -264,34 +240,3 @@ ulong get_timer_masked (void)
|
||||||
|
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_INNOVATOROMAP1510
|
|
||||||
#define LOOPS_PER_MSEC 60 /* tuned on omap1510 */
|
|
||||||
volatile int i, time_remaining = LOOPS_PER_MSEC*usec;
|
|
||||||
for (i=time_remaining; i>0; i--) { }
|
|
||||||
#else
|
|
||||||
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
|
@ -80,30 +80,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay x useconds AND perserve advance timstamp value */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo, tmp;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = get_timer (0); /* get current timestamp */
|
|
||||||
if( (tmo + tmp + 1) < tmp ) /* if setting this fordward will roll time stamp */
|
|
||||||
reset_timer_masked (); /* reset "advancing" timestamp to 0, set lastdec value */
|
|
||||||
else
|
|
||||||
tmo += tmp; /* else, set advancing stamp wake up time */
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo)/* loop till event */
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -130,27 +106,3 @@ ulong get_timer_masked (void)
|
||||||
|
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -78,30 +78,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay x useconds AND perserve advance timstamp value */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo, tmp;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = get_timer (0); /* get current timestamp */
|
|
||||||
if( (tmo + tmp + 1) < tmp ) /* if setting this fordward will roll time stamp */
|
|
||||||
reset_timer_masked (); /* reset "advancing" timestamp to 0, set lastdec value */
|
|
||||||
else
|
|
||||||
tmo += tmp; /* else, set advancing stamp wake up time */
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo)/* loop till event */
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -128,27 +104,3 @@ ulong get_timer_masked (void)
|
||||||
|
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
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 */
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -210,12 +210,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay x useconds AND perserve advance timstamp value */
|
|
||||||
void udelay(unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay_masked(usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -248,24 +242,4 @@ ulong get_timer_masked (void)
|
||||||
return get_timer_raw() / TIMER_LOAD_VAL;
|
return get_timer_raw() / TIMER_LOAD_VAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
|
|
||||||
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_CLOCK; /* 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 */
|
|
||||||
tmo = usec * CFG_HZ_CLOCK;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
reset_timer_masked (); /* set "advancing" timestamp to 0, set lastdec vaule */
|
|
||||||
|
|
||||||
while (get_timer_raw () < tmo) /* wait for time stamp to overtake tick number.*/
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* CONFIG_INTEGRATOR */
|
#endif /* CONFIG_INTEGRATOR */
|
||||||
|
|
|
@ -77,25 +77,6 @@ void set_timer(unsigned long t)
|
||||||
} while (hi_new != hi);
|
} while (hi_new != hi);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* For short delays only. It will overflow after a few seconds.
|
|
||||||
*/
|
|
||||||
void udelay(unsigned long usec)
|
|
||||||
{
|
|
||||||
unsigned long now, end;
|
|
||||||
|
|
||||||
now = sysreg_read(COUNT);
|
|
||||||
|
|
||||||
end = ((usec * (get_tbclk() / 10000)) + 50) / 100;
|
|
||||||
end += now;
|
|
||||||
|
|
||||||
while (now > end)
|
|
||||||
now = sysreg_read(COUNT);
|
|
||||||
|
|
||||||
while (now < end)
|
|
||||||
now = sysreg_read(COUNT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int set_interrupt_handler(unsigned int nr, void (*handler)(void),
|
static int set_interrupt_handler(unsigned int nr, void (*handler)(void),
|
||||||
unsigned int priority)
|
unsigned int priority)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,34 +64,6 @@ int interrupt_init(void)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay(unsigned long usec)
|
|
||||||
{
|
|
||||||
unsigned long delay, start, stop;
|
|
||||||
unsigned long cclk;
|
|
||||||
cclk = (CONFIG_CCLK_HZ);
|
|
||||||
|
|
||||||
while ( usec > 1 ) {
|
|
||||||
/*
|
|
||||||
* how many clock ticks to delay?
|
|
||||||
* - request(in useconds) * clock_ticks(Hz) / useconds/second
|
|
||||||
*/
|
|
||||||
if (usec < 1000) {
|
|
||||||
delay = (usec * (cclk/244)) >> 12 ;
|
|
||||||
usec = 0;
|
|
||||||
} else {
|
|
||||||
delay = (1000 * (cclk/244)) >> 12 ;
|
|
||||||
usec -= 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
asm volatile (" %0 = CYCLES;": "=g"(start));
|
|
||||||
do {
|
|
||||||
asm volatile (" %0 = CYCLES; ": "=g"(stop));
|
|
||||||
} while (stop - start < delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void timer_init(void)
|
void timer_init(void)
|
||||||
{
|
{
|
||||||
*pTCNTL = 0x1;
|
*pTCNTL = 0x1;
|
||||||
|
|
|
@ -412,26 +412,6 @@ void set_timer(ulong t)
|
||||||
write_mmcr_word(SC520_GPTMR0CTL, 0x6001);
|
write_mmcr_word(SC520_GPTMR0CTL, 0x6001);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void udelay(unsigned long usec)
|
|
||||||
{
|
|
||||||
int m=0;
|
|
||||||
long u;
|
|
||||||
|
|
||||||
read_mmcr_word(SC520_SWTMRMILLI);
|
|
||||||
read_mmcr_word(SC520_SWTMRMICRO);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
|
|
||||||
m += read_mmcr_word(SC520_SWTMRMILLI);
|
|
||||||
u = read_mmcr_word(SC520_SWTMRMICRO) + (m * 1000);
|
|
||||||
|
|
||||||
if (usec <= u) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int ssi_set_interface(int freq, int lsb_first, int inv_clock, int inv_phase)
|
int ssi_set_interface(int freq, int lsb_first, int inv_clock, int inv_phase)
|
||||||
|
|
|
@ -100,40 +100,4 @@ static u16 read_pit(void)
|
||||||
return ((inb(PIT_BASE + PIT_T0) << 8) | low);
|
return ((inb(PIT_BASE + PIT_T0) << 8) | low);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* this is not very exact */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
int counter;
|
|
||||||
int wraps;
|
|
||||||
|
|
||||||
if (!timer_init_done) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
counter = read_pit();
|
|
||||||
wraps = usec/1000;
|
|
||||||
usec = usec%1000;
|
|
||||||
|
|
||||||
usec*=1194;
|
|
||||||
usec/=1000;
|
|
||||||
usec+=counter;
|
|
||||||
if (usec > 1194) {
|
|
||||||
usec-=1194;
|
|
||||||
wraps++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
int new_count = read_pit();
|
|
||||||
|
|
||||||
if (((new_count < usec) && !wraps) || wraps < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_count > counter) {
|
|
||||||
wraps--;
|
|
||||||
}
|
|
||||||
counter = new_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -52,11 +52,6 @@ void ixp425_udelay(unsigned long usec)
|
||||||
while (!(*IXP425_OSST & IXP425_OSST_TIMER_1_PEND));
|
while (!(*IXP425_OSST & IXP425_OSST_TIMER_1_PEND));
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
while (usec--) ixp425_udelay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ulong reload_constant = 0xfffffff0;
|
static ulong reload_constant = 0xfffffff0;
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
|
|
|
@ -226,35 +226,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo,tmp;
|
|
||||||
|
|
||||||
/* normalize */
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (usec > 1) {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tmo = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* check for rollover during this delay */
|
|
||||||
tmp = get_timer (0);
|
|
||||||
if ((tmp + tmo) < tmp )
|
|
||||||
reset_timer_masked(); /* timer would roll over */
|
|
||||||
else
|
|
||||||
tmo += tmp;
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -277,31 +248,3 @@ ulong get_timer_masked (void)
|
||||||
|
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
/* normalize */
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
} else {
|
|
||||||
if (usec > 1) {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
} else {
|
|
||||||
tmo = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -171,12 +171,6 @@ void set_timer (ulong t)
|
||||||
/* nop */
|
/* nop */
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay_masked (usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
OSCR = 0;
|
OSCR = 0;
|
||||||
|
@ -186,26 +180,3 @@ ulong get_timer_masked (void)
|
||||||
{
|
{
|
||||||
return OSCR;
|
return OSCR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
} else {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -179,20 +179,6 @@ void set_timer (ulong t)
|
||||||
timestamp = t;
|
timestamp = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 8;
|
|
||||||
|
|
||||||
tmo += get_timer (0);
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo)
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* reset time */
|
/* reset time */
|
||||||
|
@ -215,26 +201,3 @@ ulong get_timer_masked (void)
|
||||||
|
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 8;
|
|
||||||
} else {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*8);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer(0) + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -187,12 +187,6 @@ void set_timer (ulong t)
|
||||||
/* nop */
|
/* nop */
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay_masked (usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
OSCR = 0;
|
OSCR = 0;
|
||||||
|
@ -202,26 +196,3 @@ ulong get_timer_masked (void)
|
||||||
{
|
{
|
||||||
return OSCR;
|
return OSCR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo;
|
|
||||||
ulong endtime;
|
|
||||||
signed long diff;
|
|
||||||
|
|
||||||
if (usec >= 1000) {
|
|
||||||
tmo = usec / 1000;
|
|
||||||
tmo *= CFG_HZ;
|
|
||||||
tmo /= 1000;
|
|
||||||
} else {
|
|
||||||
tmo = usec * CFG_HZ;
|
|
||||||
tmo /= (1000*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
endtime = get_timer_masked () + tmo;
|
|
||||||
|
|
||||||
do {
|
|
||||||
ulong now = get_timer_masked ();
|
|
||||||
diff = endtime - now;
|
|
||||||
} while (diff >= 0);
|
|
||||||
}
|
|
||||||
|
|
|
@ -57,6 +57,5 @@ void setenv (char *, char *);
|
||||||
/* cpu/.../interrupt.c */
|
/* cpu/.../interrupt.c */
|
||||||
void reset_timer_masked (void);
|
void reset_timer_masked (void);
|
||||||
ulong get_timer_masked (void);
|
ulong get_timer_masked (void);
|
||||||
void udelay_masked (unsigned long usec);
|
|
||||||
|
|
||||||
#endif /* _U_BOOT_ARM_H_ */
|
#endif /* _U_BOOT_ARM_H_ */
|
||||||
|
|
Loading…
Reference in New Issue