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