diff options
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32/clock/ckinit.c')
-rw-r--r-- | c/src/lib/libbsp/sparc/erc32/clock/ckinit.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c b/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c index d78fb0ea5d..cb5cee86fc 100644 --- a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c +++ b/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c @@ -83,14 +83,14 @@ static void erc32_tc_tick( void ) ); } -static CPU_Counter_ticks erc32_counter_difference( - CPU_Counter_ticks second, - CPU_Counter_ticks first -) +static void erc32_counter_initialize( uint32_t frequency ) { - CPU_Counter_ticks period = rtems_configuration_get_microseconds_per_tick(); - - return (first + period - second) % period; + _SPARC_Counter_initialize( + _SPARC_Counter_read_address, + _SPARC_Counter_difference_clock_period, + &ERC32_MEC.Real_Time_Clock_Counter + ); + rtems_counter_initialize_converter( frequency ); } #define Clock_driver_support_initialize_hardware() \ @@ -117,11 +117,7 @@ static CPU_Counter_ticks erc32_counter_difference( rtems_configuration_get_microseconds_per_tick(), \ erc32_tc_get_timecount \ ); \ - _SPARC_Counter_initialize( \ - &ERC32_MEC.Real_Time_Clock_Counter, \ - erc32_counter_difference \ - ); \ - rtems_counter_initialize_converter( frequency ); \ + erc32_counter_initialize( frequency ); \ } while (0) #define Clock_driver_timecounter_tick() erc32_tc_tick() @@ -137,3 +133,8 @@ static CPU_Counter_ticks erc32_counter_difference( #include "../../../shared/clockdrv_shell.h" +SPARC_Counter _SPARC_Counter = { + .counter_read = _SPARC_Counter_read_address, + .counter_difference = _SPARC_Counter_difference_one, + .counter_address = (uint32_t *) &_SPARC_Counter +}; |