14baa9922SRussell King /* 24baa9922SRussell King * arch/arm/include/asm/mach/time.h 34baa9922SRussell King * 44baa9922SRussell King * Copyright (C) 2004 MontaVista Software, Inc. 54baa9922SRussell King * 64baa9922SRussell King * This program is free software; you can redistribute it and/or modify 74baa9922SRussell King * it under the terms of the GNU General Public License version 2 as 84baa9922SRussell King * published by the Free Software Foundation. 94baa9922SRussell King */ 104baa9922SRussell King #ifndef __ASM_ARM_MACH_TIME_H 114baa9922SRussell King #define __ASM_ARM_MACH_TIME_H 124baa9922SRussell King 134baa9922SRussell King #include <linux/sysdev.h> 144baa9922SRussell King 154baa9922SRussell King /* 164baa9922SRussell King * This is our kernel timer structure. 174baa9922SRussell King * 184baa9922SRussell King * - init 194baa9922SRussell King * Initialise the kernels jiffy timer source, claim interrupt 204baa9922SRussell King * using setup_irq. This is called early on during initialisation 214baa9922SRussell King * while interrupts are still disabled on the local CPU. 224baa9922SRussell King * - suspend 234baa9922SRussell King * Suspend the kernel jiffy timer source, if necessary. This 244baa9922SRussell King * is called with interrupts disabled, after all normal devices 254baa9922SRussell King * have been suspended. If no action is required, set this to 264baa9922SRussell King * NULL. 274baa9922SRussell King * - resume 284baa9922SRussell King * Resume the kernel jiffy timer source, if necessary. This 294baa9922SRussell King * is called with interrupts disabled before any normal devices 304baa9922SRussell King * are resumed. If no action is required, set this to NULL. 314baa9922SRussell King * - offset 324baa9922SRussell King * Return the timer offset in microseconds since the last timer 334baa9922SRussell King * interrupt. Note: this must take account of any unprocessed 344baa9922SRussell King * timer interrupt which may be pending. 354baa9922SRussell King */ 364baa9922SRussell King struct sys_timer { 374baa9922SRussell King struct sys_device dev; 384baa9922SRussell King void (*init)(void); 394baa9922SRussell King void (*suspend)(void); 404baa9922SRussell King void (*resume)(void); 414baa9922SRussell King #ifndef CONFIG_GENERIC_TIME 424baa9922SRussell King unsigned long (*offset)(void); 434baa9922SRussell King #endif 444baa9922SRussell King }; 454baa9922SRussell King 464baa9922SRussell King extern struct sys_timer *system_timer; 474baa9922SRussell King extern void timer_tick(void); 484baa9922SRussell King 494baa9922SRussell King /* 504baa9922SRussell King * Kernel time keeping support. 514baa9922SRussell King */ 524baa9922SRussell King struct timespec; 534baa9922SRussell King extern int (*set_rtc)(void); 544baa9922SRussell King extern void save_time_delta(struct timespec *delta, struct timespec *rtc); 554baa9922SRussell King extern void restore_time_delta(struct timespec *delta, struct timespec *rtc); 564baa9922SRussell King 574baa9922SRussell King #endif 58