xref: /OK3568_Linux_fs/kernel/drivers/input/serio/i8042.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun #ifndef _I8042_H
3*4882a593Smuzhiyun #define _I8042_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun /*
7*4882a593Smuzhiyun  *  Copyright (c) 1999-2002 Vojtech Pavlik
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun /*
11*4882a593Smuzhiyun  * Arch-dependent inline functions and defines.
12*4882a593Smuzhiyun  */
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #if defined(CONFIG_MACH_JAZZ)
15*4882a593Smuzhiyun #include "i8042-jazzio.h"
16*4882a593Smuzhiyun #elif defined(CONFIG_SGI_HAS_I8042)
17*4882a593Smuzhiyun #include "i8042-ip22io.h"
18*4882a593Smuzhiyun #elif defined(CONFIG_SNI_RM)
19*4882a593Smuzhiyun #include "i8042-snirm.h"
20*4882a593Smuzhiyun #elif defined(CONFIG_SPARC)
21*4882a593Smuzhiyun #include "i8042-sparcio.h"
22*4882a593Smuzhiyun #elif defined(CONFIG_X86) || defined(CONFIG_IA64)
23*4882a593Smuzhiyun #include "i8042-x86ia64io.h"
24*4882a593Smuzhiyun #else
25*4882a593Smuzhiyun #include "i8042-io.h"
26*4882a593Smuzhiyun #endif
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /*
29*4882a593Smuzhiyun  * This is in 50us units, the time we wait for the i8042 to react. This
30*4882a593Smuzhiyun  * has to be long enough for the i8042 itself to timeout on sending a byte
31*4882a593Smuzhiyun  * to a non-existent mouse.
32*4882a593Smuzhiyun  */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define I8042_CTL_TIMEOUT	10000
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun /*
37*4882a593Smuzhiyun  * Return codes.
38*4882a593Smuzhiyun  */
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #define I8042_RET_CTL_TEST	0x55
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /*
43*4882a593Smuzhiyun  * Expected maximum internal i8042 buffer size. This is used for flushing
44*4882a593Smuzhiyun  * the i8042 buffers.
45*4882a593Smuzhiyun  */
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define I8042_BUFFER_SIZE	16
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /*
50*4882a593Smuzhiyun  * Number of AUX ports on controllers supporting active multiplexing
51*4882a593Smuzhiyun  * specification
52*4882a593Smuzhiyun  */
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #define I8042_NUM_MUX_PORTS	4
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun /*
57*4882a593Smuzhiyun  * Debug.
58*4882a593Smuzhiyun  */
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #ifdef DEBUG
61*4882a593Smuzhiyun static unsigned long i8042_start_time;
62*4882a593Smuzhiyun #define dbg_init() do { i8042_start_time = jiffies; } while (0)
63*4882a593Smuzhiyun #define dbg(format, arg...)							\
64*4882a593Smuzhiyun 	do {									\
65*4882a593Smuzhiyun 		if (i8042_debug)						\
66*4882a593Smuzhiyun 			printk(KERN_DEBUG KBUILD_MODNAME ": [%d] " format,	\
67*4882a593Smuzhiyun 			       (int) (jiffies - i8042_start_time), ##arg);	\
68*4882a593Smuzhiyun 	} while (0)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define filter_dbg(filter, data, format, args...)		\
71*4882a593Smuzhiyun 	do {							\
72*4882a593Smuzhiyun 		if (!i8042_debug)				\
73*4882a593Smuzhiyun 			break;					\
74*4882a593Smuzhiyun 								\
75*4882a593Smuzhiyun 		if (!filter || i8042_unmask_kbd_data)		\
76*4882a593Smuzhiyun 			dbg("%02x " format, data, ##args);	\
77*4882a593Smuzhiyun 		else						\
78*4882a593Smuzhiyun 			dbg("** " format, ##args);		\
79*4882a593Smuzhiyun 	} while (0)
80*4882a593Smuzhiyun #else
81*4882a593Smuzhiyun #define dbg_init() do { } while (0)
82*4882a593Smuzhiyun #define dbg(format, arg...)							\
83*4882a593Smuzhiyun 	do {									\
84*4882a593Smuzhiyun 		if (0)								\
85*4882a593Smuzhiyun 			printk(KERN_DEBUG pr_fmt(format), ##arg);		\
86*4882a593Smuzhiyun 	} while (0)
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define filter_dbg(filter, data, format, args...) do { } while (0)
89*4882a593Smuzhiyun #endif
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #endif /* _I8042_H */
92