1 /* SPDX-License-Identifier: GPL-2.0-only */
6 /* Ports for the 8254 timer chip */
7 #define TIMER0_PORT 0x40
8 #define TIMER1_PORT 0x41
9 #define TIMER2_PORT 0x42
10 #define TIMER_MODE_PORT 0x43
12 /* Meaning of the mode bits */
13 #define TIMER0_SEL 0x00
14 #define TIMER1_SEL 0x40
15 #define TIMER2_SEL 0x80
16 #define READBACK_SEL 0xC0
18 #define LATCH_COUNT 0x00
19 #define LOBYTE_ACCESS 0x10
20 #define HIBYTE_ACCESS 0x20
21 #define WORD_ACCESS 0x30
30 #define BINARY_COUNT 0x00
31 #define BCD_COUNT 0x01
33 /* Timers tick over at this rate */
34 #define TICKS_PER_MS 1193
36 /* Parallel Peripheral Controller Port B */
37 #define PPC_PORTB 0x61
39 /* Meaning of the port bits */
40 #define PPCB_T2OUT 0x20 /* Bit 5 */
41 #define PPCB_SPKR 0x02 /* Bit 1 */
42 #define PPCB_T2GATE 0x01 /* Bit 0 */
44 void setup_i8254(void);
45 unsigned long calibrate_tsc_with_pit(void);
46 void beep(unsigned int frequency_hz
, unsigned int duration_msec
);
48 #endif /* PC80_I8254_H */