From 75acd9e69f906cbd880a17ee4ca705ad7caa92c0 Mon Sep 17 00:00:00 2001 From: Alexander Krutwig Date: Wed, 1 Apr 2015 15:33:25 +0200 Subject: bsps: Convert clock drivers to use a timecounter Update #2271. --- c/src/lib/libbsp/arm/beagle/clock.c | 35 ++++-------- c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c | 2 + c/src/lib/libbsp/arm/gba/clock/clockdrv.c | 2 + .../libbsp/arm/lpc176x/include/lpc-clock-config.h | 1 + .../libbsp/arm/lpc24xx/include/lpc-clock-config.h | 2 + .../libbsp/arm/lpc32xx/include/lpc-clock-config.h | 2 + c/src/lib/libbsp/arm/nds/clock/clock.c | 2 + c/src/lib/libbsp/arm/raspberrypi/clock/clockdrv.c | 12 +--- .../libbsp/arm/shared/arm-a9mpcore-clock-config.c | 48 ++++++---------- .../arm/shared/armv7m/clock/armv7m-clock-config.c | 65 ++++++++++++---------- .../libbsp/arm/shared/lpc/clock/lpc-clock-config.c | 37 ++++++------ c/src/lib/libbsp/arm/tms570/clock/clock.c | 40 +++++-------- 12 files changed, 110 insertions(+), 138 deletions(-) (limited to 'c/src/lib/libbsp/arm') diff --git a/c/src/lib/libbsp/arm/beagle/clock.c b/c/src/lib/libbsp/arm/beagle/clock.c index 66aba1b84b..912d904197 100644 --- a/c/src/lib/libbsp/arm/beagle/clock.c +++ b/c/src/lib/libbsp/arm/beagle/clock.c @@ -15,11 +15,12 @@ */ #include +#include #include #include -#ifdef ARM_MULTILIB_ARCH_V4 +static struct timecounter beagle_clock_tc; static omap_timer_registers_t regs_v1 = { .TIDR = OMAP3_TIMER_TIDR, @@ -115,8 +116,6 @@ static struct omap_timer *timer = &am335x_timer; #endif -static int done = 0; - #if IS_AM335X #define FRCLOCK_HZ (16*1500000) #endif @@ -181,20 +180,14 @@ omap3_frclock_init(void) /* Start timer, without prescaler */ mmio_set(fr_timer->base + fr_timer->regs->TCLR, OMAP3_TCLR_OVF_TRG | OMAP3_TCLR_AR | OMAP3_TCLR_ST); - done = 1; } -static inline uint32_t -read_frc(void) +static uint32_t +beagle_clock_get_timecount(struct timecounter *tc) { - if (done == 0) { - return 0; - } return mmio_read(fr_timer->base + fr_timer->regs->TCRR); } -static uint32_t last_tick_nanoseconds; - static void beagle_clock_initialize(void) { @@ -262,12 +255,16 @@ beagle_clock_initialize(void) while(mmio_read(AM335X_WDT_BASE+AM335X_WDT_WWPS) != 0) ; #endif + /* Install timecounter */ \ + beagle_clock_tc.tc_get_timecount = beagle_clock_get_timecount; + beagle_clock_tc.tc_counter_mask = 0xffffffff; + beagle_clock_tc.tc_frequency = FRCLOCK_HZ; + beagle_clock_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; + rtems_timecounter_install(&beagle_clock_tc); } static void beagle_clock_at_tick(void) { - last_tick_nanoseconds = read_frc(); - mmio_write(timer->base + timer->regs->TISR, OMAP3_TISR_MAT_IT_FLAG | OMAP3_TISR_OVF_IT_FLAG | OMAP3_TISR_TCAR_IT_FLAG); @@ -315,14 +312,6 @@ static void beagle_clock_cleanup(void) mmio_clear(fr_timer->base + fr_timer->regs->TCLR, OMAP3_TCLR_ST); } -static inline uint32_t beagle_clock_nanoseconds_since_last_tick(void) -{ - /* this arithmetic also works if read_frc() wraps around, as long - * as the subtraction wraps around too - */ - return (read_frc() - (uint64_t) last_tick_nanoseconds) * 1000000000 / FRCLOCK_HZ; -} - #define Clock_driver_support_at_tick() beagle_clock_at_tick() #define Clock_driver_support_initialize_hardware() beagle_clock_initialize() #define Clock_driver_support_install_isr(isr, old_isr) \ @@ -332,10 +321,6 @@ static inline uint32_t beagle_clock_nanoseconds_since_last_tick(void) } while (0) #define Clock_driver_support_shutdown_hardware() beagle_clock_cleanup() -#define Clock_driver_nanoseconds_since_last_tick \ - beagle_clock_nanoseconds_since_last_tick /* Include shared source clock driver code */ #include "../../shared/clockdrv_shell.h" - -#endif /* ARM_MULTILIB_ARCH_V4 */ diff --git a/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c b/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c index 499a27904c..121b2c9d32 100644 --- a/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c +++ b/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c @@ -68,4 +68,6 @@ void Clock_isr(void * arg); assert(status == RTEMS_SUCCESSFUL); \ } while (0) +#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER + #include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/gba/clock/clockdrv.c b/c/src/lib/libbsp/arm/gba/clock/clockdrv.c index 72d0b81e32..ff171110b9 100644 --- a/c/src/lib/libbsp/arm/gba/clock/clockdrv.c +++ b/c/src/lib/libbsp/arm/gba/clock/clockdrv.c @@ -92,4 +92,6 @@ void Clock_driver_support_initialize_hardware(void) GBA_REG_TM3CNT = (0x00c0|GBA_TMCNT_PS); } +#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER + #include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/lpc176x/include/lpc-clock-config.h b/c/src/lib/libbsp/arm/lpc176x/include/lpc-clock-config.h index c72575f719..3eef02152e 100644 --- a/c/src/lib/libbsp/arm/lpc176x/include/lpc-clock-config.h +++ b/c/src/lib/libbsp/arm/lpc176x/include/lpc-clock-config.h @@ -33,6 +33,7 @@ extern "C" { #define LPC_CLOCK_INTERRUPT LPC176X_IRQ_TIMER_0 #define LPC_CLOCK_TIMER_BASE TMR0_BASE_ADDR +#define LPC_CLOCK_TIMECOUNTER_BASE TMR1_BASE_ADDR #define LPC_CLOCK_REFERENCE LPC176X_PCLK #define LPC_CLOCK_MODULE_ENABLE() \ lpc176x_module_enable( LPC176X_MODULE_TIMER_0, LPC176X_MODULE_PCLK_DEFAULT ) diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/lpc-clock-config.h b/c/src/lib/libbsp/arm/lpc24xx/include/lpc-clock-config.h index 1edab4eb02..5e6b469e0f 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/include/lpc-clock-config.h +++ b/c/src/lib/libbsp/arm/lpc24xx/include/lpc-clock-config.h @@ -35,6 +35,8 @@ extern "C" { #define LPC_CLOCK_TIMER_BASE TMR0_BASE_ADDR +#define LPC_CLOCK_TIMECOUNTER_BASE TMR1_BASE_ADDR + #define LPC_CLOCK_REFERENCE LPC24XX_PCLK #define LPC_CLOCK_MODULE_ENABLE() \ diff --git a/c/src/lib/libbsp/arm/lpc32xx/include/lpc-clock-config.h b/c/src/lib/libbsp/arm/lpc32xx/include/lpc-clock-config.h index accd0d256a..2b676b433f 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/include/lpc-clock-config.h +++ b/c/src/lib/libbsp/arm/lpc32xx/include/lpc-clock-config.h @@ -44,6 +44,8 @@ extern "C" { #define LPC_CLOCK_TIMER_BASE LPC32XX_BASE_TIMER_0 +#define LPC_CLOCK_TIMECOUNTER_BASE LPC32XX_BASE_TIMER_1 + #define LPC_CLOCK_REFERENCE LPC32XX_PERIPH_CLK #define LPC_CLOCK_MODULE_ENABLE() diff --git a/c/src/lib/libbsp/arm/nds/clock/clock.c b/c/src/lib/libbsp/arm/nds/clock/clock.c index a24f8cc788..1e239d44d9 100644 --- a/c/src/lib/libbsp/arm/nds/clock/clock.c +++ b/c/src/lib/libbsp/arm/nds/clock/clock.c @@ -81,4 +81,6 @@ void Clock_driver_support_initialize_hardware (void) TIMER_DATA (0) = TIMER_FREQ_64 ((uint16_t) freq); } +#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER + #include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/raspberrypi/clock/clockdrv.c b/c/src/lib/libbsp/arm/raspberrypi/clock/clockdrv.c index 533873cf19..f765485570 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/clock/clockdrv.c +++ b/c/src/lib/libbsp/arm/raspberrypi/clock/clockdrv.c @@ -72,14 +72,6 @@ static void raspberrypi_clock_cleanup(void) } } -/* - * Return the nanoseconds since last tick - */ -static uint32_t raspberrypi_clock_nanoseconds_since_last_tick(void) -{ - return 0; -} - #define Clock_driver_support_at_tick() raspberrypi_clock_at_tick() #define Clock_driver_support_initialize_hardware() raspberrypi_clock_initialize() @@ -92,8 +84,6 @@ static uint32_t raspberrypi_clock_nanoseconds_since_last_tick(void) #define Clock_driver_support_shutdown_hardware() raspberrypi_clock_cleanup() -#define Clock_driver_nanoseconds_since_last_tick \ - raspberrypi_clock_nanoseconds_since_last_tick - +#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER #include "../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c index f2ce07e3b6..8e2e153b46 100644 --- a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c +++ b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -17,14 +17,11 @@ #include #include #include +#include #define A9MPCORE_GT ((volatile a9mpcore_gt *) BSP_ARM_A9MPCORE_GT_BASE) -static uint64_t a9mpcore_clock_last_tick_k; - -static uint32_t a9mpcore_clock_last_tick_cmpvallower; - -static uint32_t a9mpcore_clock_autoinc; +static struct timecounter a9mpcore_tc; /* This is defined in clockdrv_shell.h */ void Clock_isr(rtems_irq_hdl_param arg); @@ -39,13 +36,6 @@ static void a9mpcore_clock_at_tick(void) { volatile a9mpcore_gt *gt = A9MPCORE_GT; - /* - * FIXME: Now the _TOD_Get_with_nanoseconds() yields wrong values until - * _TOD_Tickle_ticks() managed to update the uptime. See also PR2180. - */ - a9mpcore_clock_last_tick_cmpvallower = - gt->cmpvallower - a9mpcore_clock_autoinc; - gt->irqst = A9MPCORE_GT_IRQST_EFLG; } @@ -80,6 +70,13 @@ static uint64_t a9mpcore_clock_get_counter(volatile a9mpcore_gt *gt) return ((uint64_t) cu2 << 32) | cl; } +static uint32_t a9mpcore_clock_get_timecount(struct timecounter *tc) +{ + volatile a9mpcore_gt *gt = A9MPCORE_GT; + + return gt->cntrlower; +} + static void a9mpcore_clock_initialize(void) { volatile a9mpcore_gt *gt = A9MPCORE_GT; @@ -98,14 +95,16 @@ static void a9mpcore_clock_initialize(void) gt->cmpvalupper = (uint32_t) (cmpval >> 32); gt->autoinc = interval; - a9mpcore_clock_last_tick_k = (UINT64_C(1000000000) << 32) / periphclk; - a9mpcore_clock_last_tick_cmpvallower = (uint32_t) cmpval - interval; - a9mpcore_clock_autoinc = interval; - gt->ctrl = A9MPCORE_GT_CTRL_AUTOINC_EN | A9MPCORE_GT_CTRL_IRQ_EN | A9MPCORE_GT_CTRL_COMP_EN | A9MPCORE_GT_CTRL_TMR_EN; + + a9mpcore_tc.tc_get_timecount = a9mpcore_clock_get_timecount; + a9mpcore_tc.tc_counter_mask = 0xffffffff; + a9mpcore_tc.tc_frequency = periphclk; + a9mpcore_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; + rtems_timecounter_install(&a9mpcore_tc); } CPU_Counter_ticks _CPU_Counter_read(void) @@ -147,16 +146,6 @@ static void a9mpcore_clock_cleanup(void) } } -static uint32_t a9mpcore_clock_nanoseconds_since_last_tick(void) -{ - volatile a9mpcore_gt *gt = A9MPCORE_GT; - uint64_t k = a9mpcore_clock_last_tick_k; - uint32_t n = a9mpcore_clock_last_tick_cmpvallower; - uint32_t c = gt->cntrlower; - - return (uint32_t) (((c - n) * k) >> 32); -} - #define Clock_driver_support_at_tick() \ a9mpcore_clock_at_tick() @@ -165,15 +154,12 @@ static uint32_t a9mpcore_clock_nanoseconds_since_last_tick(void) #define Clock_driver_support_install_isr(isr, old_isr) \ do { \ - a9mpcore_clock_handler_install(); \ + a9mpcore_clock_handler_install(); \ old_isr = NULL; \ } while (0) #define Clock_driver_support_shutdown_hardware() \ a9mpcore_clock_cleanup() -#define Clock_driver_nanoseconds_since_last_tick \ - a9mpcore_clock_nanoseconds_since_last_tick - /* Include shared source clock driver code */ #include "../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c b/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c index 8e4ae338f8..e78684c8d2 100644 --- a/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c +++ b/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c @@ -13,6 +13,7 @@ */ #include +#include #include #include @@ -22,15 +23,35 @@ /* This is defined in clockdrv_shell.h */ static void Clock_isr(void *arg); -#define _ARMV7M_Systick_get_factor(freq) \ - ((1000000000ULL << 32) / (freq)) +static rtems_timecounter_simple _ARMV7M_TC; -#ifdef BSP_ARMV7M_SYSTICK_FREQUENCY - #define _ARMV7M_Systick_factor \ - _ARMV7M_Systick_get_factor(BSP_ARMV7M_SYSTICK_FREQUENCY) -#else - static uint64_t _ARMV7M_Systick_factor; -#endif +static uint32_t _ARMV7M_TC_get(rtems_timecounter_simple *tc) +{ + volatile ARMV7M_Systick *systick = _ARMV7M_Systick; + + return systick->cvr; +} + +static bool _ARMV7M_TC_is_pending(rtems_timecounter_simple *tc) +{ + volatile ARMV7M_SCB *scb = _ARMV7M_SCB; + + return ((scb->icsr & ARMV7M_SCB_ICSR_PENDSTSET) != 0); +} + +static uint32_t _ARMV7M_TC_get_timecount(struct timecounter *tc) +{ + return rtems_timecounter_simple_downcounter_get( + tc, + _ARMV7M_TC_get, + _ARMV7M_TC_is_pending + ); +} + +static void _ARMV7M_TC_tick(void) +{ + rtems_timecounter_simple_downcounter_tick(&_ARMV7M_TC, _ARMV7M_TC_get); +} static void _ARMV7M_Systick_at_tick(void) { @@ -67,15 +88,18 @@ static void _ARMV7M_Systick_initialize(void) uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); uint64_t interval = (freq * us_per_tick) / 1000000ULL; - #ifndef BSP_ARMV7M_SYSTICK_FREQUENCY - _ARMV7M_Systick_factor = _ARMV7M_Systick_get_factor(freq); - #endif - systick->rvr = (uint32_t) interval; systick->cvr = 0; systick->csr = ARMV7M_SYSTICK_CSR_ENABLE | ARMV7M_SYSTICK_CSR_TICKINT | ARMV7M_SYSTICK_CSR_CLKSOURCE; + + rtems_timecounter_simple_install( + &_ARMV7M_TC, + freq, + interval, + _ARMV7M_TC_get_timecount + ); } static void _ARMV7M_Systick_cleanup(void) @@ -85,19 +109,7 @@ static void _ARMV7M_Systick_cleanup(void) systick->csr = 0; } -static uint32_t _ARMV7M_Systick_nanoseconds_since_last_tick(void) -{ - volatile ARMV7M_Systick *systick = _ARMV7M_Systick; - volatile ARMV7M_SCB *scb = _ARMV7M_SCB; - uint32_t rvr = systick->rvr; - uint32_t c = rvr - systick->cvr; - - if ((scb->icsr & ARMV7M_SCB_ICSR_PENDSTSET) != 0) { - c = rvr - systick->cvr + rvr; - } - - return (uint32_t) ((c * _ARMV7M_Systick_factor) >> 32); -} +#define Clock_driver_timecounter_tick() _ARMV7M_TC_tick() #define Clock_driver_support_at_tick() \ _ARMV7M_Systick_at_tick() @@ -114,9 +126,6 @@ static uint32_t _ARMV7M_Systick_nanoseconds_since_last_tick(void) #define Clock_driver_support_shutdown_hardware() \ _ARMV7M_Systick_cleanup() -#define Clock_driver_nanoseconds_since_last_tick \ - _ARMV7M_Systick_nanoseconds_since_last_tick - /* Include shared source clock driver code */ #include "../../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/shared/lpc/clock/lpc-clock-config.c b/c/src/lib/libbsp/arm/shared/lpc/clock/lpc-clock-config.c index 05c94a6b2c..a55ba0e33c 100644 --- a/c/src/lib/libbsp/arm/shared/lpc/clock/lpc-clock-config.c +++ b/c/src/lib/libbsp/arm/shared/lpc/clock/lpc-clock-config.c @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2009-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * @@ -21,6 +21,7 @@ */ #include +#include #include #include @@ -33,6 +34,16 @@ void Clock_isr(rtems_irq_hdl_param arg); static volatile lpc_timer *const lpc_clock = (volatile lpc_timer *) LPC_CLOCK_TIMER_BASE; +static volatile lpc_timer *const lpc_timecounter = + (volatile lpc_timer *) LPC_CLOCK_TIMECOUNTER_BASE; + +static struct timecounter lpc_clock_tc; + +static uint32_t lpc_clock_tc_get_timecount(struct timecounter *tc) +{ + return lpc_timecounter->tc; +} + static void lpc_clock_at_tick(void) { lpc_clock->ir = LPC_TIMER_IR_MR0; @@ -56,6 +67,7 @@ static void lpc_clock_handler_install(void) static void lpc_clock_initialize(void) { + uint32_t mask; uint64_t interval = ((uint64_t) LPC_CLOCK_REFERENCE * (uint64_t) rtems_configuration_get_microseconds_per_tick()) / 1000000; @@ -85,6 +97,13 @@ static void lpc_clock_initialize(void) /* Enable timer */ lpc_clock->tcr = LPC_TIMER_TCR_EN; + + /* Install timecounter */ + lpc_clock_tc.tc_get_timecount = lpc_clock_tc_get_timecount; + lpc_clock_tc.tc_counter_mask = 0xffffffff; + lpc_clock_tc.tc_frequency = LPC_CLOCK_REFERENCE; + lpc_clock_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; + rtems_timecounter_install(&lpc_clock_tc); } static void lpc_clock_cleanup(void) @@ -105,18 +124,6 @@ static void lpc_clock_cleanup(void) } } -static uint32_t lpc_clock_nanoseconds_since_last_tick(void) -{ - uint64_t k = (1000000000ULL << 32) / LPC_CLOCK_REFERENCE; - uint64_t c = lpc_clock->tc; - - if ((lpc_clock->ir & LPC_TIMER_IR_MR0) != 0) { - c = lpc_clock->tc + lpc_clock->mr0; - } - - return (uint32_t) ((c * k) >> 32); -} - #define Clock_driver_support_at_tick() lpc_clock_at_tick() #define Clock_driver_support_initialize_hardware() lpc_clock_initialize() #define Clock_driver_support_install_isr(isr, old_isr) \ @@ -126,8 +133,6 @@ static uint32_t lpc_clock_nanoseconds_since_last_tick(void) } while (0) #define Clock_driver_support_shutdown_hardware() lpc_clock_cleanup() -#define Clock_driver_nanoseconds_since_last_tick \ - lpc_clock_nanoseconds_since_last_tick /* Include shared source clock driver code */ #include "../../../../shared/clockdrv_shell.h" diff --git a/c/src/lib/libbsp/arm/tms570/clock/clock.c b/c/src/lib/libbsp/arm/tms570/clock/clock.c index 4dba949c86..d438a3da34 100644 --- a/c/src/lib/libbsp/arm/tms570/clock/clock.c +++ b/c/src/lib/libbsp/arm/tms570/clock/clock.c @@ -30,13 +30,14 @@ #include #include #include +#include -/** - * holds HW counter value since last interrupt event - * sets in tms570_clock_driver_support_at_tick - * used in tms570_clock_driver_nanoseconds_since_last_tick - */ -static uint32_t tms570_rti_last_tick_fcr0; +static struct timecounter tms570_rti_tc; + +static uint32_t tms570_rti_get_timecount(struct timecounter tc) +{ + return TMS570_RTI.RTIFRC0; +} /** * @brief Initialize the HW peripheral for clock driver @@ -72,6 +73,12 @@ static void tms570_clock_driver_support_initialize_hardware( void ) TMS570_RTI.RTISETINTENA = 0x1; /* enable timer */ TMS570_RTI.RTIGCTRL = 1; + /* set timecounter */ + tms570_rti_tc.tc_get_timecount = tms570_rti_get_timecount; + tms570_rti_tc.tc_counter_mask = 0xffffffff; + tms570_rti_tc.tc_frequency = BSP_PLL_OUT_CLOCK; + tms570_rti_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; + rtems_timecounter_install(&tms570_rti_tc); } /** @@ -82,7 +89,6 @@ static void tms570_clock_driver_support_initialize_hardware( void ) static void tms570_clock_driver_support_at_tick( void ) { TMS570_RTI.RTIINTFLAG = 0x00000001; - tms570_rti_last_tick_fcr0 = TMS570_RTI.RTICOMP0 - TMS570_RTI.RTIUDCP0; } /** @@ -124,24 +130,6 @@ static void tms570_clock_driver_support_shutdown_hardware( void ) TMS570_RTI.RTICLEARINTENA = 0x20000; } -/** - * @brief returns the nanoseconds since last tick - * - * Return the nanoseconds since last tick - * - * @retval x nanoseconds - * - */ -static uint32_t tms570_clock_driver_nanoseconds_since_last_tick( void ) -{ - uint32_t actual_fcr0 = TMS570_RTI.RTIFRC0; - uint32_t usec_since_tick; - - usec_since_tick = actual_fcr0 - tms570_rti_last_tick_fcr0; - - return usec_since_tick * 1000; -} - #define Clock_driver_support_initialize_hardware \ tms570_clock_driver_support_initialize_hardware #define Clock_driver_support_at_tick \ @@ -150,8 +138,6 @@ static uint32_t tms570_clock_driver_nanoseconds_since_last_tick( void ) tms570_clock_driver_support_initialize_hardware #define Clock_driver_support_shutdown_hardware \ tms570_clock_driver_support_shutdown_hardware -#define Clock_driver_nanoseconds_since_last_tick \ - tms570_clock_driver_nanoseconds_since_last_tick #define Clock_driver_support_install_isr(Clock_isr, Old_ticker ) \ tms570_clock_driver_support_install_isr( Clock_isr ) -- cgit v1.2.3