[PATCH] bsp/tms570: fix get time resolution after infrastructure change to timecounter.

Premysl Houdek kom541000 at gmail.com
Wed Jul 15 11:46:36 UTC 2015


Signed-off-by: Premysl Houdek <kom541000 at gmail.com>
---
 c/src/lib/libbsp/arm/tms570/clock/clock.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/c/src/lib/libbsp/arm/tms570/clock/clock.c b/c/src/lib/libbsp/arm/tms570/clock/clock.c
index 98ee5d9..0770570 100644
--- a/c/src/lib/libbsp/arm/tms570/clock/clock.c
+++ b/c/src/lib/libbsp/arm/tms570/clock/clock.c
@@ -50,12 +50,17 @@ static void tms570_clock_driver_support_initialize_hardware( void )
 {
 
   uint32_t microsec_per_tick = rtems_configuration_get_microseconds_per_tick();
+  uint32_t tc_frequency = 1000000;
+  uint32_t tc_prescaller;
 
   rtems_counter_initialize_converter(BSP_PLL_OUT_CLOCK);
 
+  tc_prescaller = (BSP_PLL_OUT_CLOCK + tc_frequency) / (tc_frequency * 2);
+  tc_frequency = (BSP_PLL_OUT_CLOCK + tc_prescaller) / (tc_prescaller * 2);
+
   /* Hardware specific initialize */
   TMS570_RTI.RTIGCTRL = 0;
-  TMS570_RTI.RTICPUC0 = BSP_PLL_OUT_CLOCK /1000000 / 2; /* prescaler */
+  TMS570_RTI.RTICPUC0 = tc_prescaller; /* prescaler */
   TMS570_RTI.RTITBCTRL = 2;
   TMS570_RTI.RTICAPCTRL = 0;
   TMS570_RTI.RTICOMPCTRL = 0;
@@ -76,7 +81,7 @@ static void tms570_clock_driver_support_initialize_hardware( void )
   /* 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_frequency = tc_frequency;
   tms570_rti_tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER;
   rtems_timecounter_install(&tms570_rti_tc);
 }
-- 
1.9.1



More information about the devel mailing list