1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
/*
* COPYRIGHT (c) 1998 by Radstone Technology
*
*
* THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
* AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU.
*
* You are hereby granted permission to use, copy, modify, and distribute
* this file, provided that this notice, plus the above copyright notice
* and disclaimer, appears in all copies. Radstone Technology will provide
* no support for this code.
*
*/
#ifndef _I8042_P_H_
#define _I8042_P_H_
#ifdef __cplusplus
extern "C" {
#endif
#define KBD_CTR_WRITE_COMMAND 0x60
#define KBD_CTR_READ_COMMAND 0x20
#define KBD_CTR_TEST_PASSWORD 0xA4
#define KBD_CTR_LOAD_PASSWORD 0xA5
#define KBD_CTR_ENABLE_PASSWORD 0xA6
#define KBD_CTR_DISABLE_AUX 0xA7
#define KBD_CTR_ENABLE_AUX 0xA8
#define KBD_CTR_AUXLINES_TEST 0xA9
#define KBD_CTR_SELFTEST 0xAA
#define KBD_CTR_KBDLINES_TEST 0xAB
#define KBD_CTR_DISABLE_KBD 0xAD
#define KBD_CTR_ENABLE_KBD 0xAE
#define KBD_CTR_WRITE_AUX 0xD4
#define KBD_CTR_READ_REV 0xD5
#define KBD_CTR_READ_VER 0xD6
#define KBD_CTR_READ_MODEL 0xD7
/* Keyboard Controller Data */
#define KBD_CTR_SELFTEST_PASSED 0x55
#define KBD_CTR_PASSWORD_INSTALLED 0xFA
#define KBD_CTR_PASSWORD_NOT_INSTALLED 0xF1
/* Controller Command Byte bit definitions. */
#define KBD_CMD_BYTE_DISABLE_AUX 0x20
#define KBD_CMD_BYTE_DISABLE_KBD 0x10
#define KBD_CMD_ENABLE_AUX_INT 0x02
#define KBD_CMD_ENABLE_KBD_INT 0x01
/* Keyboard Controller Status byte masks */
#define KBD_OBF_MASK 0x1 /* Output buffer full */
#define KBD_IBF_MASK 0x2 /* Input buffer full */
#define KBD_FROM_AUX_MASK 0x20 /* Byte from Aux Port. */
/* Interface Test Results */
#define INTERFACE_NO_ERROR 0x00
#define CLOCK_STUCK_LOW 0x01
#define CLOCK_STUCK_HIGH 0x02
#define DATA_STUCK_LOW 0x03
#define DATA_STUCK_HIGH 0x04
/* Timeout */
#define KBD_TIMEOUT 500000 /* Effectively ISA read access times */
/* Keyboard Commands */
#define KBD_CMD_SET_LEDS 0xed /* Set/Reset LEDs */
#define KBD_CMD_ECHO 0xee /* request keyboard echo resp. "EE" */
#define KBD_CMD_SEL_SCAN_CODE 0xf0 /* Scan codes 1,2,3 or 0 = rquest current. */
#define KBD_CMD_READ_ID 0xf2 /* Request for two byte response */
#define KBD_CMD_SET_RATE 0xf3 /* Set tellematic Rate */
#define KBD_CMD_ENABLE 0xf4 /* Clears Buffer and Starts Scanning. */
#define KBD_CMD_DISABLE 0xf5 /* reset to power up */
#define KBD_CMD_SET_DEFAULT 0xf6
#define KBD_CMD_SET_ALL_TLMTIC 0xf7 /* Set all keys telematic */
#define KBD_CMD_SET_ALL_MKBR 0xf8 /* Set all keys Make /Break */
#define KBD_CMD_SET_ALL_MAKE 0xf9 /* Set all keys Make only */
#define KBD_CMD_SET_KEY_TLMTIC 0xfb /* Set individual key telemativ */
#define KBD_CMD_SET_KEY_MKBR 0xfc /* set individual key make/break */
#define KBD_CMD_SET_KEY_MK 0xfd /* set individual key make only */
#define KBD_CMD_RESEND 0xfe /* request to resend last transfer */
#define KBD_CMD_RESET 0xff /* request to start a program reset */
#define KBD_CMD_ACK 0xfa /* keyboard ack after reset */
#define KBD_CMD_BAT 0xaa /* Keyboard Bat completion Response */
/*
* Define LED encodings for use with the KbdSetLEDs command
*/
#define KBD_LED_CAPS 0x04
#define KBD_LED_NUM 0x02
#define KBD_LED_SCROLL 0x01
/*
* Define two code scan codes in keycode order
*/
#define KEY_TWO_KEY 0xe0
#define KEY_ALT 0x38
#define KEY_CONTROL 0x1d
#define KEY_INSERT 0x52
#define KEY_DELETE 0x53
#define KEY_LEFT_ARROW 0x4b
#define KEY_HOME 0x47
#define KEY_END 0x4F
#define KEY_UP_ARROW 0x48
#define KEY_DOWN_ARROW 0x50
#define KEY_PAGE_UP 0x49
#define KEY_PAGE_DOWN 0x51
#define KEY_RIGHT_ARROW 0x4d
#define KEY_KEYPAD_SLASH 0x35
#define KEY_KEYPAD_ENTER 0x1c
#define KEY_SYS_REQUEST 0x2a
#define KEY_PRINT_SCREEN 0x37
#define KEY_LEFT_SHIFT 0x2a
#define KEY_RIGHT_SHIFT 0x36
#define KEY_TAB 0x0f
#define KEY_CAPS_LOCK 0x3a
#define KEY_NUM_LOCK 0x45
#define KEY_SCROLL_LOCK 0x46
#define KEY_ESC 0x01
#define KEY_F1 0x3b
#define KEY_F2 0x3c
#define KEY_F3 0x3d
#define KEY_F4 0x3e
#define KEY_F5 0x3f
#define KEY_F6 0x40
#define KEY_F7 0x41
#define KEY_F8 0x42
#define KEY_F9 0x43
#define KEY_F10 0x44
#define KEY_F11 0x57
#define KEY_F12 0x58
/*
* ASCII control codes
*/
#define ASCII_NUL 0x00
#define ASCII_SOH 0x01
#define ASCII_STX 0x02
#define ASCII_ETX 0x03
#define ASCII_EOT 0x04
#define ASCII_ENQ 0x05
#define ASCII_ACK 0x06
#define ASCII_BEL 0x07
#define ASCII_BS 0x08
#define ASCII_HT 0x09
#define ASCII_LF 0x0a
#define ASCII_VT 0x0b
#define ASCII_FF 0x0c
#define ASCII_CR 0x0d
#define ASCII_SO 0x0e
#define ASCII_SI 0x0f
#define ASCII_DLE 0x10
#define ASCII_XON 0x11
#define ASCII_DC1 0x11
#define ASCII_DC2 0x12
#define ASCII_XOFF 0x13
#define ASCII_DC3 0x13
#define ASCII_DC4 0x14
#define ASCII_NAK 0x15
#define ASCII_SYN 0x16
#define ASCII_ETB 0x17
#define ASCII_CAN 0x18
#define ASCII_EM 0x19
#define ASCII_SUB 0x1a
#define ASCII_ESC 0x1b
#define ASCII_FS 0x1c
#define ASCII_GS 0x1d
#define ASCII_RS 0x1e
#define ASCII_US 0x1f
#define ASCII_DEL 0x7f
#define ASCII_SYSRQ 0x80
#define ASCII_CSI 0x9b
/*
* Exported functions
*/
extern boolean i8042_probe(int minor);
extern void i8042_init(int minor);
#if CONSOLE_USE_INTERRUPTS
extern void i8042_initialize_interrupts(int minor);
#else
extern int i8042_inbyte_nonblocking_polled(
int minor
);
#endif /* CONSOLE_USE_INTERRUPTS */
#ifdef __cplusplus
}
#endif
#endif /* _I8042_P_H_ */
|