Commit | Line | Data |
---|---|---|
553a05b8 MN |
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 | ||
181d683d | 10 | #include <linux/types.h> |
553a05b8 MN |
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 | ||
1ea4c161 AM |
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 | ||
181d683d DT |
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); | |
553a05b8 | 64 | int i8042_command(unsigned char *param, int command); |
181d683d | 65 | bool i8042_check_port_owner(const struct serio *); |
967c9ef9 MG |
66 | int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str, |
67 | struct serio *serio)); | |
68 | int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str, | |
69 | struct serio *serio)); | |
181d683d DT |
70 | |
71 | #else | |
72 | ||
c59690fa | 73 | static inline void i8042_lock_chip(void) |
181d683d DT |
74 | { |
75 | } | |
76 | ||
c59690fa | 77 | static inline void i8042_unlock_chip(void) |
181d683d DT |
78 | { |
79 | } | |
80 | ||
c59690fa | 81 | static inline int i8042_command(unsigned char *param, int command) |
181d683d | 82 | { |
967c9ef9 | 83 | return -ENODEV; |
181d683d DT |
84 | } |
85 | ||
c59690fa | 86 | static inline bool i8042_check_port_owner(const struct serio *serio) |
181d683d DT |
87 | { |
88 | return false; | |
89 | } | |
90 | ||
c59690fa | 91 | static inline int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str, |
967c9ef9 MG |
92 | struct serio *serio)) |
93 | { | |
94 | return -ENODEV; | |
95 | } | |
96 | ||
c59690fa | 97 | static inline int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str, |
967c9ef9 MG |
98 | struct serio *serio)) |
99 | { | |
100 | return -ENODEV; | |
101 | } | |
102 | ||
181d683d | 103 | #endif |
553a05b8 MN |
104 | |
105 | #endif |