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