@ -22,6 +22,7 @@
# include <mach/hardware.h>
/* Generic stuff */
# include <asm/sched_clock.h>
# include <asm/mach/map.h>
# include <asm/mach/time.h>
# include <asm/mach/irq.h>
@ -353,12 +354,18 @@ static struct clocksource clocksource_u300_1mhz = {
* this wraps around for now , since it is just a relative time
* stamp . ( Inspired by OMAP implementation . )
*/
static DEFINE_CLOCK_DATA ( cd ) ;
unsigned long long notrace sched_clock ( void )
{
return clocksource_cyc2ns ( clocksource_u300_1mhz . read (
& clocksource_u300_1mhz ) ,
clocksource_u300_1mhz . mult ,
clocksource_u300_1mhz . shift ) ;
u32 cyc = readl ( U300_TIMER_APP_VBASE + U300_TIMER_APP_GPT2CC ) ;
return cyc_to_sched_clock ( & cd , cyc , ( u32 ) ~ 0 ) ;
}
static void notrace u300_update_sched_clock ( void )
{
u32 cyc = readl ( U300_TIMER_APP_VBASE + U300_TIMER_APP_GPT2CC ) ;
update_sched_clock ( & cd , cyc , ( u32 ) ~ 0 ) ;
}
@ -376,6 +383,8 @@ static void __init u300_timer_init(void)
clk_enable ( clk ) ;
rate = clk_get_rate ( clk ) ;
init_sched_clock ( & cd , u300_update_sched_clock , 32 , rate ) ;
/*
* Disable the " OS " and " DD " timers - these are designed for Symbian !
* Example usage in cnh1601578 cpu subsystem pd_timer_app . c