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