1 #ifndef _LINUX_I8042_H
2 #define _LINUX_I8042_H
3 
4 /*
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 as published by
7  * the Free Software Foundation.
8  */
9 
10 #include <linux/types.h>
11 
12 /*
13  * Standard commands.
14  */
15 
16 #define I8042_CMD_CTL_RCTR	0x0120
17 #define I8042_CMD_CTL_WCTR	0x1060
18 #define I8042_CMD_CTL_TEST	0x01aa
19 
20 #define I8042_CMD_KBD_DISABLE	0x00ad
21 #define I8042_CMD_KBD_ENABLE	0x00ae
22 #define I8042_CMD_KBD_TEST	0x01ab
23 #define I8042_CMD_KBD_LOOP	0x11d2
24 
25 #define I8042_CMD_AUX_DISABLE	0x00a7
26 #define I8042_CMD_AUX_ENABLE	0x00a8
27 #define I8042_CMD_AUX_TEST	0x01a9
28 #define I8042_CMD_AUX_SEND	0x10d4
29 #define I8042_CMD_AUX_LOOP	0x11d3
30 
31 #define I8042_CMD_MUX_PFX	0x0090
32 #define I8042_CMD_MUX_SEND	0x1090
33 
34 /*
35  * Status register bits.
36  */
37 
38 #define I8042_STR_PARITY	0x80
39 #define I8042_STR_TIMEOUT	0x40
40 #define I8042_STR_AUXDATA	0x20
41 #define I8042_STR_KEYLOCK	0x10
42 #define I8042_STR_CMDDAT	0x08
43 #define I8042_STR_MUXERR	0x04
44 #define I8042_STR_IBF		0x02
45 #define I8042_STR_OBF		0x01
46 
47 /*
48  * Control register bits.
49  */
50 
51 #define I8042_CTR_KBDINT	0x01
52 #define I8042_CTR_AUXINT	0x02
53 #define I8042_CTR_IGNKEYLOCK	0x08
54 #define I8042_CTR_KBDDIS	0x10
55 #define I8042_CTR_AUXDIS	0x20
56 #define I8042_CTR_XLATE		0x40
57 
58 struct serio;
59 
60 #if defined(CONFIG_SERIO_I8042) || defined(CONFIG_SERIO_I8042_MODULE)
61 
62 void i8042_lock_chip(void);
63 void i8042_unlock_chip(void);
64 int i8042_command(unsigned char *param, int command);
65 int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
66 					struct serio *serio));
67 int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
68 				       struct serio *serio));
69 
70 #else
71 
i8042_lock_chip(void)72 static inline void i8042_lock_chip(void)
73 {
74 }
75 
i8042_unlock_chip(void)76 static inline void i8042_unlock_chip(void)
77 {
78 }
79 
i8042_command(unsigned char * param,int command)80 static inline int i8042_command(unsigned char *param, int command)
81 {
82 	return -ENODEV;
83 }
84 
i8042_install_filter(bool (* filter)(unsigned char data,unsigned char str,struct serio * serio))85 static inline int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
86 					struct serio *serio))
87 {
88 	return -ENODEV;
89 }
90 
i8042_remove_filter(bool (* filter)(unsigned char data,unsigned char str,struct serio * serio))91 static inline int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
92 				       struct serio *serio))
93 {
94 	return -ENODEV;
95 }
96 
97 #endif
98 
99 #endif
100