2009-05-27 Fernando Nicodemos <fgnicodemos@terra.com.br>

* at91rm9200/clock/clock.c: Add support for nanoseconds since last
	tick. The resolution is not that high but better than nothing.
This commit is contained in:
Joel Sherrill
2009-05-27 14:34:24 +00:00
parent 22ed4172f7
commit 8d64f08eb8
2 changed files with 19 additions and 1 deletions

View File

@@ -1,3 +1,8 @@
2009-05-27 Fernando Nicodemos <fgnicodemos@terra.com.br>
* at91rm9200/clock/clock.c: Add support for nanoseconds since last
tick. The resolution is not that high but better than nothing.
2008-12-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* at91rm9200/clock/clock.c, lpc22xx/clock/clockdrv.c,

View File

@@ -76,6 +76,7 @@ rtems_irq_connect_data clock_isr_data = {AT91RM9200_INT_SYSIRQ,
#define Clock_driver_support_install_isr( _new, _old ) \
BSP_install_rtems_irq_handler(&clock_isr_data)
uint16_t st_pimr_value;
void Clock_driver_support_initialize_hardware(void)
{
uint32_t st_str;
@@ -83,8 +84,9 @@ void Clock_driver_support_initialize_hardware(void)
/* the system timer is driven from SLCK */
slck = at91rm9200_get_slck();
st_pimr_reload =
st_pimr_value =
(((rtems_configuration_get_microseconds_per_tick() * slck) + (1000000/2))/ 1000000);
st_pimr_reload = st_pimr_value;
/* read the status to clear the int */
st_str = ST_REG(ST_SR);
@@ -96,6 +98,17 @@ void Clock_driver_support_initialize_hardware(void)
ST_REG(ST_PIMR) = st_pimr_reload;
}
uint32_t bsp_clock_nanoseconds_since_last_tick(void)
{
uint16_t slck_counts;
slck_counts = st_pimr_value - st_pimr_reload;
return (rtems_configuration_get_microseconds_per_tick() * slck_counts * 1000)
/ st_pimr_value;
}
#define Clock_driver_nanoseconds_since_last_tick \
bsp_clock_nanoseconds_since_last_tick
#define CLOCK_VECTOR 0