|
|
|
@ -13,6 +13,9 @@ |
|
|
|
|
|
|
|
|
|
#include <config.h> |
|
|
|
|
|
|
|
|
|
#define TIMER_BASE_CLK 1000000 |
|
|
|
|
#define US_PER_TICK (1000000 / CONFIG_SYS_HZ) |
|
|
|
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
|
/* reset CPU (jump to 0, without reset) */ |
|
|
|
@ -90,7 +93,7 @@ void cpu_wait_ticks(unsigned long ticks) |
|
|
|
|
while (get_timer(start) < ticks) ; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* initiate and setup timer0 interrupt to 1MHz
|
|
|
|
|
/* initiate and setup timer0 interrupt to configured HZ. Base clock is 1MHz.
|
|
|
|
|
* Return irq number for timer int or a negative number for |
|
|
|
|
* dealing with self |
|
|
|
|
*/ |
|
|
|
@ -98,9 +101,9 @@ int timer_interrupt_init_cpu(void) |
|
|
|
|
{ |
|
|
|
|
LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS; |
|
|
|
|
|
|
|
|
|
/* 1ms ticks */ |
|
|
|
|
/* SYS_HZ ticks per second */ |
|
|
|
|
leon2->Timer_Counter_1 = 0; |
|
|
|
|
leon2->Timer_Reload_1 = 999; /* (((1000000 / 100) - 1)) */ |
|
|
|
|
leon2->Timer_Reload_1 = (TIMER_BASE_CLK / CONFIG_SYS_HZ) - 1; |
|
|
|
|
leon2->Timer_Control_1 = |
|
|
|
|
(LEON2_TIMER_CTRL_EN | LEON2_TIMER_CTRL_RS | LEON2_TIMER_CTRL_LD); |
|
|
|
|
|
|
|
|
@ -112,14 +115,12 @@ int timer_interrupt_init_cpu(void) |
|
|
|
|
*/ |
|
|
|
|
unsigned long cpu_usec2ticks(unsigned long usec) |
|
|
|
|
{ |
|
|
|
|
/* timer set to 1kHz ==> 1 clk tick = 1 msec */ |
|
|
|
|
if (usec < 1000) |
|
|
|
|
if (usec < US_PER_TICK) |
|
|
|
|
return 1; |
|
|
|
|
return (usec / 1000); |
|
|
|
|
return usec / US_PER_TICK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
unsigned long cpu_ticks2usec(unsigned long ticks) |
|
|
|
|
{ |
|
|
|
|
/* 1tick = 1usec */ |
|
|
|
|
return ticks * 1000; |
|
|
|
|
return ticks * US_PER_TICK; |
|
|
|
|
} |
|
|
|
|