1a9643ea8Slogwang /*- 2a9643ea8Slogwang * Kernel interface to machine-dependent clock driver. 3a9643ea8Slogwang * Garrett Wollman, September 1994. 4a9643ea8Slogwang * This file is in the public domain. 5a9643ea8Slogwang * 6a9643ea8Slogwang * $FreeBSD$ 7a9643ea8Slogwang */ 8a9643ea8Slogwang 9a9643ea8Slogwang #ifndef _MACHINE_CLOCK_H_ 10a9643ea8Slogwang #define _MACHINE_CLOCK_H_ 11a9643ea8Slogwang 12a9643ea8Slogwang #ifdef _KERNEL 13a9643ea8Slogwang /* 14a9643ea8Slogwang * i386 to clock driver interface. 15a9643ea8Slogwang * XXX large parts of the driver and its interface are misplaced. 16a9643ea8Slogwang */ 17a9643ea8Slogwang extern int clkintr_pending; 18a9643ea8Slogwang extern u_int i8254_freq; 19a9643ea8Slogwang extern int i8254_max_count; 20a9643ea8Slogwang extern uint64_t tsc_freq; 21a9643ea8Slogwang extern int tsc_is_invariant; 22a9643ea8Slogwang extern int tsc_perf_stat; 23a9643ea8Slogwang #ifdef SMP 24a9643ea8Slogwang extern int smp_tsc; 25a9643ea8Slogwang #endif 26a9643ea8Slogwang 27a9643ea8Slogwang void i8254_init(void); 28a9643ea8Slogwang void i8254_delay(int); 29a9643ea8Slogwang void clock_init(void); 30a9643ea8Slogwang 31a9643ea8Slogwang /* 32a9643ea8Slogwang * Driver to clock driver interface. 33a9643ea8Slogwang */ 34a9643ea8Slogwang 35a9643ea8Slogwang void startrtclock(void); 36a9643ea8Slogwang void init_TSC(void); 37*22ce4affSfengbojiang void resume_TSC(void); 38a9643ea8Slogwang 39a9643ea8Slogwang #define HAS_TIMER_SPKR 1 40a9643ea8Slogwang int timer_spkr_acquire(void); 41a9643ea8Slogwang int timer_spkr_release(void); 42a9643ea8Slogwang void timer_spkr_setfreq(int freq); 43a9643ea8Slogwang 44a9643ea8Slogwang #endif /* _KERNEL */ 45a9643ea8Slogwang 46a9643ea8Slogwang #endif /* !_MACHINE_CLOCK_H_ */ 47