/*****************************************************************************1* Copyright 2003 - 2008 Broadcom Corporation. All rights reserved.2*3* Unless you and Broadcom execute a separate written software license4* agreement governing use of this software, this software is licensed to you5* under the terms of the GNU General Public License version 2, available at6* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").7*8* Notwithstanding the above, under no circumstances may you combine this9* software in any way with any other Broadcom software provided under a10* license other than the GPL, without Broadcom's express prior written11* consent.12*****************************************************************************/1314#include <linux/version.h>15#include <linux/types.h>16#include <linux/module.h>17#include <csp/tmrHw.h>1819#include <mach/timer.h>20/* The core.c file initializes timers 1 and 3 as a linux clocksource. */21/* The real time clock should probably be the real linux clocksource. */22/* In the meantime, this file should agree with core.c as to the */23/* profiling timer. If the clocksource is moved to rtc later, then */24/* we can init the profiling timer here instead. */2526/* Timer 1 provides 25MHz resolution syncrhonized to scheduling and APM timing */27/* Timer 3 provides bus freqeuncy sychronized to ACLK, but spread spectrum will */28/* affect synchronization with scheduling and APM timing. */2930#define PROF_TIMER 13132timer_tick_rate_t timer_get_tick_rate(void)33{34return tmrHw_getCountRate(PROF_TIMER);35}3637timer_tick_count_t timer_get_tick_count(void)38{39return tmrHw_GetCurrentCount(PROF_TIMER); /* change downcounter to upcounter */40}4142timer_msec_t timer_ticks_to_msec(timer_tick_count_t ticks)43{44static int tickRateMsec;4546if (tickRateMsec == 0) {47tickRateMsec = timer_get_tick_rate() / 1000;48}4950return ticks / tickRateMsec;51}5253timer_msec_t timer_get_msec(void)54{55return timer_ticks_to_msec(timer_get_tick_count());56}5758EXPORT_SYMBOL(timer_get_tick_count);59EXPORT_SYMBOL(timer_ticks_to_msec);60EXPORT_SYMBOL(timer_get_tick_rate);61EXPORT_SYMBOL(timer_get_msec);626364