xref: /386bsd/usr/src/kernel/include/ic/i8042.h (revision a2142627)
1 #define	KBSTATP		0x64	/* kbd controller status port (I) */
2 #define	 KBS_DIB	0x01	/* kbd data in buffer */
3 #define	 KBS_IBF	0x02	/* kbd input buffer low */
4 #define	 KBS_WARM	0x04	/* kbd input buffer low */
5 #define	 KBS_OCMD	0x08	/* kbd output buffer has command */
6 #define	 KBS_NOSEC	0x10	/* kbd security lock not engaged */
7 /* #define	 KBS_TERR	0x20	/* kbd transmission error */
8 #define	 KBS_AUXDIB	0x20	/* kbd aux port data in buffer */
9 #define	 KBS_TOERR	0x40	/* kbd timeout error */
10 #define	 KBS_PERR	0x80	/* kbd parity error */
11 
12 #define	KBCMDP		0x64	/* kbd controller port (O) */
13 #define	KBDATAP		0x60	/* kbd data port (I) */
14 #define	KBOUTP		0x60	/* kbd data port (O) */
15 
16 /*
17  * Keyboard controller commands
18  */
19 #define	K_READ		0x20	/* read keyboard controller RAM (0x20-0x3f) */
20 #define	K_WRITE		0x60	/* write keyboard controller RAM (0x20-0x3f) */
21 #define	 K__CMDBYTE	0x0	/* cmd byte address */
22 #define	 K__SECONBYTE	0x13	/* security on byte address */
23 #define	 K__SECOFFBYTE	0x14	/* security off byte address */
24 #define	 K__MAKE1BYTE	0x16	/* first make strip byte address */
25 #define	 K__MAKE2BYTE	0x17	/* second make strip byte address */
26 #define	 K__XXX		0x1D	/* byte address */
27 #define	 K__YYY		0x1F	/* byte address */
28 #define	K_ISPASSWD	0xA4	/* is there a passwd in keyboard controller ? */
29 #define	 K__YESPASSWD	0xFA	/* passwd is installed */
30 #define	 K__NOPASSWD	0xF1	/* no passwd is installed */
31 #define	K_LDPASSWD	0xA5	/* load a passwd into keyboard controller */
32 #define	K_ENAPASSWD	0xA6	/* enable a passwd into keyboard controller */
33 #define	K_DISAUX	0xA7	/* disable aux device on keyboard controller */
34 #define	K_ENAAUX	0xA8	/* enable aux device on keyboard controller */
35 #define	K_DISKEY	0xAD	/* disable keyboard on keyboard controller */
36 #define	K_ENAKEY	0xAE	/* enable keyboard on keyboard controller */
37 #define	K_READINP	0xC0	/* read input port */
38 #define	K_READOUTP	0xD0	/* read output port */
39 #define	K_WRITEOUTP	0xD1	/* write output port */
40 #define	K_SIMKEYIN	0xD2	/* simulate keyboard input */
41 #define	K_SIMAUXIN	0xD3	/* simulate aux input */
42 #define	K_AUXOUT	0xD4	/* send next byte to aux device */
43 #define	K_TEST		0xE0	/* read test inputs, bits 0 & 1 */
44 #define	K_PULSE		0xF0	/* pulse output port (0xf0-ff) */
45 #define	 K__RESET	0x0E	/* reset system */
46 
47 /*
48  * Keyboard controller command byte (K__CMDBYTE)
49  */
50 #define	KC8_TRANS	0x40	/* convert to old scan codes */
51 /*#define KC8_OLDPC	0x20	/* old 9bit codes instead of new 11bit */
52 #define	KC8_AUXDIS	0x20	/* disable aux interrupt */
53 #define	KC8_KEYDIS	0x10	/* disable keyboard */
54 #define	KC8_IGNSEC	0x08	/* ignore security lock */
55 #define	KC8_CPU		0x04	/* exit from protected mode reset */
56 #define	KC8_AUXIEN	0x02	/* enable aux interrupt */
57 #define	KC8_KEYIEN	0x01	/* enable keyboard interrupt */
58 
59 #define	ENABLE_CMDBYTE	(KC8_TRANS|KC8_IGNSEC|KC8_CPU|KC8_AUXIEN|KC8_KEYIEN)
60 #define	DISABLE_CMDBYTE	(KC8_TRANS|KC8_AUXDIS|KC8_KEYDIS|KC8_IGNSEC|KC8_CPU)
61 
62 /*
63  * Output Port Definitions
64  */
65 #define	KC8_KOUT	0x80	/* keyboard data line state */
66 #define	KC8_KCLK	0x40	/* keyboard clock line state */
67 #define	KC8_IRQ12	0x20	/* aux interrupt sent */
68 #define	KC8_IRQ1	0x10	/* keyboard interrupt sent */
69 #define	KC8_AOUT	0x08	/* aux data line state */
70 #define	KC8_ACLK	0x04	/* aux clock line state */
71 #define	KC8_GATEA20	0x02	/* gate a20  */
72 #define	KC8_RESET	0x01	/* reset */
73 
74