xref: /openbmc/linux/drivers/input/serio/i8042.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
21da177e4SLinus Torvalds #ifndef _I8042_H
31da177e4SLinus Torvalds #define _I8042_H
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds 
61da177e4SLinus Torvalds /*
71da177e4SLinus Torvalds  *  Copyright (c) 1999-2002 Vojtech Pavlik
81da177e4SLinus Torvalds  */
91da177e4SLinus Torvalds 
101da177e4SLinus Torvalds /*
111da177e4SLinus Torvalds  * Arch-dependent inline functions and defines.
121da177e4SLinus Torvalds  */
131da177e4SLinus Torvalds 
141da177e4SLinus Torvalds #if defined(CONFIG_MACH_JAZZ)
151da177e4SLinus Torvalds #include "i8042-jazzio.h"
16f47831faSThomas Bogendoerfer #elif defined(CONFIG_SGI_HAS_I8042)
171da177e4SLinus Torvalds #include "i8042-ip22io.h"
18f1782447SThomas Bogendoerfer #elif defined(CONFIG_SNI_RM)
19f1782447SThomas Bogendoerfer #include "i8042-snirm.h"
200b57ee9eSAdrian Bunk #elif defined(CONFIG_SPARC)
211da177e4SLinus Torvalds #include "i8042-sparcio.h"
22*fdd7c961SHuacai Chen #elif defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_LOONGARCH)
238761b9b5SHuacai Chen #include "i8042-acpipnpio.h"
241da177e4SLinus Torvalds #else
251da177e4SLinus Torvalds #include "i8042-io.h"
261da177e4SLinus Torvalds #endif
271da177e4SLinus Torvalds 
281da177e4SLinus Torvalds /*
291da177e4SLinus Torvalds  * This is in 50us units, the time we wait for the i8042 to react. This
301da177e4SLinus Torvalds  * has to be long enough for the i8042 itself to timeout on sending a byte
311da177e4SLinus Torvalds  * to a non-existent mouse.
321da177e4SLinus Torvalds  */
331da177e4SLinus Torvalds 
341da177e4SLinus Torvalds #define I8042_CTL_TIMEOUT	10000
351da177e4SLinus Torvalds 
361da177e4SLinus Torvalds /*
371da177e4SLinus Torvalds  * Return codes.
381da177e4SLinus Torvalds  */
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds #define I8042_RET_CTL_TEST	0x55
411da177e4SLinus Torvalds 
421da177e4SLinus Torvalds /*
431da177e4SLinus Torvalds  * Expected maximum internal i8042 buffer size. This is used for flushing
441da177e4SLinus Torvalds  * the i8042 buffers.
451da177e4SLinus Torvalds  */
461da177e4SLinus Torvalds 
471da177e4SLinus Torvalds #define I8042_BUFFER_SIZE	16
481da177e4SLinus Torvalds 
491da177e4SLinus Torvalds /*
501da177e4SLinus Torvalds  * Number of AUX ports on controllers supporting active multiplexing
511da177e4SLinus Torvalds  * specification
521da177e4SLinus Torvalds  */
531da177e4SLinus Torvalds 
541da177e4SLinus Torvalds #define I8042_NUM_MUX_PORTS	4
551da177e4SLinus Torvalds 
561da177e4SLinus Torvalds /*
571da177e4SLinus Torvalds  * Debug.
581da177e4SLinus Torvalds  */
591da177e4SLinus Torvalds 
601da177e4SLinus Torvalds #ifdef DEBUG
611da177e4SLinus Torvalds static unsigned long i8042_start_time;
621da177e4SLinus Torvalds #define dbg_init() do { i8042_start_time = jiffies; } while (0)
631da177e4SLinus Torvalds #define dbg(format, arg...)							\
641da177e4SLinus Torvalds 	do {									\
651da177e4SLinus Torvalds 		if (i8042_debug)						\
664eb3c30bSJoe Perches 			printk(KERN_DEBUG KBUILD_MODNAME ": [%d] " format,	\
674eb3c30bSJoe Perches 			       (int) (jiffies - i8042_start_time), ##arg);	\
681da177e4SLinus Torvalds 	} while (0)
69e1443d28SStephen Chandler Paul 
70e1443d28SStephen Chandler Paul #define filter_dbg(filter, data, format, args...)		\
71e1443d28SStephen Chandler Paul 	do {							\
72e1443d28SStephen Chandler Paul 		if (!i8042_debug)				\
73e1443d28SStephen Chandler Paul 			break;					\
74e1443d28SStephen Chandler Paul 								\
75e1443d28SStephen Chandler Paul 		if (!filter || i8042_unmask_kbd_data)		\
76e1443d28SStephen Chandler Paul 			dbg("%02x " format, data, ##args);	\
77e1443d28SStephen Chandler Paul 		else						\
78e1443d28SStephen Chandler Paul 			dbg("** " format, ##args);		\
79e1443d28SStephen Chandler Paul 	} while (0)
801da177e4SLinus Torvalds #else
811da177e4SLinus Torvalds #define dbg_init() do { } while (0)
824eb3c30bSJoe Perches #define dbg(format, arg...)							\
834eb3c30bSJoe Perches 	do {									\
844eb3c30bSJoe Perches 		if (0)								\
854eb3c30bSJoe Perches 			printk(KERN_DEBUG pr_fmt(format), ##arg);		\
864eb3c30bSJoe Perches 	} while (0)
87e1443d28SStephen Chandler Paul 
88e1443d28SStephen Chandler Paul #define filter_dbg(filter, data, format, args...) do { } while (0)
891da177e4SLinus Torvalds #endif
901da177e4SLinus Torvalds 
911da177e4SLinus Torvalds #endif /* _I8042_H */
92