forked from Imagelibrary/rtems
2006-07-13 Jerry Needell <jerry.needell@unh.edu>
* clock/ckinit.c, include/leon.h, timer/timer.c, amba/amba.c fixed up merge from 4.6.6. Correct references to LEON3_IrqCtrl_Regs_Map.mask[x] and LEON3_Timer_Regs_Map.timer[x].
This commit is contained in:
@@ -22,28 +22,33 @@
|
||||
|
||||
#include <bsp.h>
|
||||
|
||||
extern rtems_configuration_table Configuration;
|
||||
|
||||
#define LEON3_TIMER_INDEX \
|
||||
(Configuration.User_multiprocessing_table ? \
|
||||
(Configuration.User_multiprocessing_table)->maximum_nodes + \
|
||||
(Configuration.User_multiprocessing_table)->node - 1 : 1)
|
||||
|
||||
rtems_boolean Timer_driver_Find_average_overhead;
|
||||
|
||||
rtems_boolean Timer_driver_Is_initialized = FALSE;
|
||||
|
||||
extern volatile LEON3_Timer_Regs_Map *LEON3_Timer_Regs;
|
||||
|
||||
|
||||
void Timer_initialize()
|
||||
{
|
||||
|
||||
/*
|
||||
* Timer runs long and accurate enough not to require an interrupt.
|
||||
*/
|
||||
if (LEON3_Timer_Regs) {
|
||||
if ( Timer_driver_Is_initialized == FALSE ) {
|
||||
/* approximately 1 us per countdown */
|
||||
LEON3_Timer_Regs->reload_t1 = 0xffffff;
|
||||
LEON3_Timer_Regs->value_t1 = 0xffffff;
|
||||
LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].reload = 0xffffff;
|
||||
LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].value = 0xffffff;
|
||||
} else {
|
||||
Timer_driver_Is_initialized = TRUE;
|
||||
}
|
||||
LEON3_Timer_Regs->conf_t1 = LEON3_GPTIMER_EN | LEON3_GPTIMER_LD;
|
||||
LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].conf = LEON3_GPTIMER_EN | LEON3_GPTIMER_LD;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,10 +58,10 @@ void Timer_initialize()
|
||||
|
||||
int Read_timer()
|
||||
{
|
||||
uint32_t total;
|
||||
rtems_unsigned32 total;
|
||||
|
||||
if (LEON3_Timer_Regs) {
|
||||
total = LEON3_Timer_Regs->value_t1;
|
||||
total = LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].value;
|
||||
|
||||
total = 0xffffff - total;
|
||||
|
||||
@@ -65,7 +70,7 @@ int Read_timer()
|
||||
|
||||
if ( total < LEAST_VALID )
|
||||
return 0; /* below timer resolution */
|
||||
|
||||
|
||||
return total - AVG_OVERHEAD;
|
||||
}
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user