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