xref: /onnv-gate/usr/src/grub/grub-0.97/netboot/timer.h (revision 8044:b3af80bbf173)
1*8044SWilliam.Kucharski@Sun.COM /* Defines for routines to implement a low-overhead timer for drivers */
2*8044SWilliam.Kucharski@Sun.COM 
3*8044SWilliam.Kucharski@Sun.COM  /*
4*8044SWilliam.Kucharski@Sun.COM  * This program is free software; you can redistribute it and/or
5*8044SWilliam.Kucharski@Sun.COM  * modify it under the terms of the GNU General Public License as
6*8044SWilliam.Kucharski@Sun.COM  * published by the Free Software Foundation; either version 2, or (at
7*8044SWilliam.Kucharski@Sun.COM  * your option) any later version.
8*8044SWilliam.Kucharski@Sun.COM  */
9*8044SWilliam.Kucharski@Sun.COM 
10*8044SWilliam.Kucharski@Sun.COM #ifndef	TIMER_H
11*8044SWilliam.Kucharski@Sun.COM #define TIMER_H
12*8044SWilliam.Kucharski@Sun.COM 
13*8044SWilliam.Kucharski@Sun.COM /* Ports for the 8254 timer chip */
14*8044SWilliam.Kucharski@Sun.COM #define	TIMER2_PORT	0x42
15*8044SWilliam.Kucharski@Sun.COM #define	TIMER_MODE_PORT	0x43
16*8044SWilliam.Kucharski@Sun.COM 
17*8044SWilliam.Kucharski@Sun.COM /* Meaning of the mode bits */
18*8044SWilliam.Kucharski@Sun.COM #define	TIMER0_SEL	0x00
19*8044SWilliam.Kucharski@Sun.COM #define	TIMER1_SEL	0x40
20*8044SWilliam.Kucharski@Sun.COM #define	TIMER2_SEL	0x80
21*8044SWilliam.Kucharski@Sun.COM #define	READBACK_SEL	0xC0
22*8044SWilliam.Kucharski@Sun.COM 
23*8044SWilliam.Kucharski@Sun.COM #define	LATCH_COUNT	0x00
24*8044SWilliam.Kucharski@Sun.COM #define	LOBYTE_ACCESS	0x10
25*8044SWilliam.Kucharski@Sun.COM #define	HIBYTE_ACCESS	0x20
26*8044SWilliam.Kucharski@Sun.COM #define	WORD_ACCESS	0x30
27*8044SWilliam.Kucharski@Sun.COM 
28*8044SWilliam.Kucharski@Sun.COM #define	MODE0		0x00
29*8044SWilliam.Kucharski@Sun.COM #define	MODE1		0x02
30*8044SWilliam.Kucharski@Sun.COM #define	MODE2		0x04
31*8044SWilliam.Kucharski@Sun.COM #define	MODE3		0x06
32*8044SWilliam.Kucharski@Sun.COM #define	MODE4		0x08
33*8044SWilliam.Kucharski@Sun.COM #define	MODE5		0x0A
34*8044SWilliam.Kucharski@Sun.COM 
35*8044SWilliam.Kucharski@Sun.COM #define	BINARY_COUNT	0x00
36*8044SWilliam.Kucharski@Sun.COM #define	BCD_COUNT	0x01
37*8044SWilliam.Kucharski@Sun.COM 
38*8044SWilliam.Kucharski@Sun.COM /* Timers tick over at this rate */
39*8044SWilliam.Kucharski@Sun.COM #define CLOCK_TICK_RATE	1193180U
40*8044SWilliam.Kucharski@Sun.COM #define	TICKS_PER_MS	(CLOCK_TICK_RATE/1000)
41*8044SWilliam.Kucharski@Sun.COM 
42*8044SWilliam.Kucharski@Sun.COM /* Parallel Peripheral Controller Port B */
43*8044SWilliam.Kucharski@Sun.COM #define	PPC_PORTB	0x61
44*8044SWilliam.Kucharski@Sun.COM 
45*8044SWilliam.Kucharski@Sun.COM /* Meaning of the port bits */
46*8044SWilliam.Kucharski@Sun.COM #define	PPCB_T2OUT	0x20	/* Bit 5 */
47*8044SWilliam.Kucharski@Sun.COM #define	PPCB_SPKR	0x02	/* Bit 1 */
48*8044SWilliam.Kucharski@Sun.COM #define	PPCB_T2GATE	0x01	/* Bit 0 */
49*8044SWilliam.Kucharski@Sun.COM 
50*8044SWilliam.Kucharski@Sun.COM /* Ticks must be between 0 and 65535 (0 == 65536)
51*8044SWilliam.Kucharski@Sun.COM    because it is a 16 bit counter */
52*8044SWilliam.Kucharski@Sun.COM extern void load_timer2(unsigned int ticks);
53*8044SWilliam.Kucharski@Sun.COM extern inline int timer2_running(void);
54*8044SWilliam.Kucharski@Sun.COM extern void waiton_timer2(unsigned int ticks);
55*8044SWilliam.Kucharski@Sun.COM extern void __load_timer2(unsigned int ticks);
56*8044SWilliam.Kucharski@Sun.COM 
57*8044SWilliam.Kucharski@Sun.COM extern void setup_timers(void);
58*8044SWilliam.Kucharski@Sun.COM extern void ndelay(unsigned int nsecs);
59*8044SWilliam.Kucharski@Sun.COM extern void udelay(unsigned int usecs);
60*8044SWilliam.Kucharski@Sun.COM extern void mdelay(unsigned int msecs);
61*8044SWilliam.Kucharski@Sun.COM //extern unsigned long currticks(void);
62*8044SWilliam.Kucharski@Sun.COM 
63*8044SWilliam.Kucharski@Sun.COM struct timeval {
64*8044SWilliam.Kucharski@Sun.COM 	long tv_sec;
65*8044SWilliam.Kucharski@Sun.COM 	long tv_usec;
66*8044SWilliam.Kucharski@Sun.COM };
67*8044SWilliam.Kucharski@Sun.COM 
68*8044SWilliam.Kucharski@Sun.COM #endif	/* TIMER_H */
69