Commit 85049d4c authored by Tony Lindgren's avatar Tony Lindgren

ARM: OMAP: Add sched_clock() for 32k timer

Add sched_clock() for 32k timer
parent 59a2e980
...@@ -296,13 +296,22 @@ static inline void omap_32k_timer_stop(void) ...@@ -296,13 +296,22 @@ static inline void omap_32k_timer_stop(void)
} }
/* /*
* Rounds down to nearest usec * Rounds down to nearest usec. Note that this will overflow for larger values.
*/ */
static inline unsigned long omap_32k_ticks_to_usecs(unsigned long ticks_32k) static inline unsigned long omap_32k_ticks_to_usecs(unsigned long ticks_32k)
{ {
return (ticks_32k * 5*5*5*5*5*5) >> 9; return (ticks_32k * 5*5*5*5*5*5) >> 9;
} }
/*
* Rounds down to nearest nsec.
*/
static inline unsigned long long
omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
{
return (unsigned long long) ticks_32k * 1000 * 5*5*5*5*5*5 >> 9;
}
static unsigned long omap_32k_last_tick = 0; static unsigned long omap_32k_last_tick = 0;
/* /*
...@@ -314,6 +323,15 @@ static unsigned long omap_32k_timer_gettimeoffset(void) ...@@ -314,6 +323,15 @@ static unsigned long omap_32k_timer_gettimeoffset(void)
return omap_32k_ticks_to_usecs(now - omap_32k_last_tick); return omap_32k_ticks_to_usecs(now - omap_32k_last_tick);
} }
/*
* Returns current time from boot in nsecs. It's OK for this to wrap
* around for now, as it's just a relative time stamp.
*/
unsigned long long sched_clock(void)
{
return omap_32k_ticks_to_nsecs(omap_32k_sync_timer_read());
}
/* /*
* Timer interrupt for 32KHz timer. When dynamic tick is enabled, this * Timer interrupt for 32KHz timer. When dynamic tick is enabled, this
* function is also called from other interrupts to remove latency * function is also called from other interrupts to remove latency
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment