@ -33,6 +33,14 @@
# error: interrupts not implemented yet
# endif
# if defined(CONFIG_PXA27X) || defined(CONFIG_CPU_MONAHANS)
# define TIMER_FREQ_HZ 3250000
# elif defined(CONFIG_PXA250)
# define TIMER_FREQ_HZ 3686400
# else
# error "Timer frequency unknown - please config PXA CPU type"
# endif
int interrupt_init ( void )
{
/* nothing happens here - we don't setup any IRQs */
@ -67,7 +75,10 @@ void reset_timer_masked (void)
ulong get_timer_masked ( void )
{
return OSCR ;
unsigned long long ticks = get_ticks ( ) ;
return ( ( ( ticks / TIMER_FREQ_HZ ) * 1000 ) +
( ( ticks % TIMER_FREQ_HZ ) * 1000 ) / TIMER_FREQ_HZ ) ;
}
void udelay_masked ( unsigned long usec )
@ -78,17 +89,17 @@ void udelay_masked (unsigned long usec)
if ( usec > = 1000 ) {
tmo = usec / 1000 ;
tmo * = CONFIG_SYS _HZ;
tmo * = TIMER_FREQ _HZ;
tmo / = 1000 ;
} else {
tmo = usec * CONFIG_SYS _HZ;
tmo = usec * TIMER_FREQ _HZ;
tmo / = ( 1000 * 1000 ) ;
}
endtime = get_timer_masked ( ) + tmo ;
endtime = get_ticks ( ) + tmo ;
do {
ulong now = get_timer_masked ( ) ;
ulong now = get_ticks ( ) ;
diff = endtime - now ;
} while ( diff > = 0 ) ;
}
@ -99,7 +110,7 @@ void udelay_masked (unsigned long usec)
*/
unsigned long long get_ticks ( void )
{
return get_timer ( 0 ) ;
return OSCR ;
}
/*
@ -109,6 +120,6 @@ unsigned long long get_ticks(void)
ulong get_tbclk ( void )
{
ulong tbclk ;
tbclk = CONFIG_SYS _HZ;
tbclk = TIMER_FREQ _HZ;
return tbclk ;
}