freebsd-dev/sys/i386/include/clock.h
Mitsuru IWASAKI 29803c2003 i8254_restore is called from apm_default_resume() to reload
the countdown register.
this should not be necessary but there are broken laptops that
do not restore the countdown register on resume.
when it happnes, it messes up the hardclock interval and system clock,
which leads to the infamous "calcru: negative time" problem.

Submitted by:	kjc, iwasaki
Reviewed by:	Steve O'Hara-Smith <steveo@eircom.net> and committers.
Obtained from:	PAO3
1999-10-30 14:56:01 +00:00

52 lines
1.1 KiB
C

/*
* Kernel interface to machine-dependent clock driver.
* Garrett Wollman, September 1994.
* This file is in the public domain.
*
* $FreeBSD$
*/
#ifndef _MACHINE_CLOCK_H_
#define _MACHINE_CLOCK_H_
#ifdef KERNEL
/*
* i386 to clock driver interface.
* XXX large parts of the driver and its interface are misplaced.
*/
extern int adjkerntz;
extern int disable_rtc_set;
extern int statclock_disable;
extern u_int timer_freq;
extern int timer0_max_count;
extern u_int tsc_freq;
extern int tsc_is_broken;
extern int wall_cmos_clock;
#ifdef APIC_IO
extern int apic_8254_intr;
#endif
/*
* Driver to clock driver interface.
*/
struct clockframe;
void DELAY __P((int usec));
int acquire_timer0 __P((int rate,
void (*function)(struct clockframe *frame)));
int acquire_timer2 __P((int mode));
int release_timer0 __P((void));
int release_timer2 __P((void));
#ifndef PC98
int rtcin __P((int val));
#else
int acquire_timer1 __P((int mode));
int release_timer1 __P((void));
#endif
int sysbeep __P((int pitch, int period));
void i8254_restore __P((void));
#endif /* KERNEL */
#endif /* !_MACHINE_CLOCK_H_ */