1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun #ifndef _I8042_IP22_H 3*4882a593Smuzhiyun #define _I8042_IP22_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <asm/sgi/ioc.h> 6*4882a593Smuzhiyun #include <asm/sgi/ip22.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun /* 10*4882a593Smuzhiyun * Names. 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define I8042_KBD_PHYS_DESC "hpc3ps2/serio0" 14*4882a593Smuzhiyun #define I8042_AUX_PHYS_DESC "hpc3ps2/serio1" 15*4882a593Smuzhiyun #define I8042_MUX_PHYS_DESC "hpc3ps2/serio%d" 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* 18*4882a593Smuzhiyun * IRQs. 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #define I8042_KBD_IRQ SGI_KEYBD_IRQ 22*4882a593Smuzhiyun #define I8042_AUX_IRQ SGI_KEYBD_IRQ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun /* 25*4882a593Smuzhiyun * Register numbers. 26*4882a593Smuzhiyun */ 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define I8042_COMMAND_REG ((unsigned long)&sgioc->kbdmouse.command) 29*4882a593Smuzhiyun #define I8042_STATUS_REG ((unsigned long)&sgioc->kbdmouse.command) 30*4882a593Smuzhiyun #define I8042_DATA_REG ((unsigned long)&sgioc->kbdmouse.data) 31*4882a593Smuzhiyun i8042_read_data(void)32*4882a593Smuzhiyunstatic inline int i8042_read_data(void) 33*4882a593Smuzhiyun { 34*4882a593Smuzhiyun return sgioc->kbdmouse.data; 35*4882a593Smuzhiyun } 36*4882a593Smuzhiyun i8042_read_status(void)37*4882a593Smuzhiyunstatic inline int i8042_read_status(void) 38*4882a593Smuzhiyun { 39*4882a593Smuzhiyun return sgioc->kbdmouse.command; 40*4882a593Smuzhiyun } 41*4882a593Smuzhiyun i8042_write_data(int val)42*4882a593Smuzhiyunstatic inline void i8042_write_data(int val) 43*4882a593Smuzhiyun { 44*4882a593Smuzhiyun sgioc->kbdmouse.data = val; 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun i8042_write_command(int val)47*4882a593Smuzhiyunstatic inline void i8042_write_command(int val) 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun sgioc->kbdmouse.command = val; 50*4882a593Smuzhiyun } 51*4882a593Smuzhiyun i8042_platform_init(void)52*4882a593Smuzhiyunstatic inline int i8042_platform_init(void) 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun #if 0 55*4882a593Smuzhiyun /* XXX sgi_kh is a virtual address */ 56*4882a593Smuzhiyun if (!request_mem_region(sgi_kh, sizeof(struct hpc_keyb), "i8042")) 57*4882a593Smuzhiyun return -EBUSY; 58*4882a593Smuzhiyun #endif 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun i8042_reset = I8042_RESET_ALWAYS; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun return 0; 63*4882a593Smuzhiyun } 64*4882a593Smuzhiyun i8042_platform_exit(void)65*4882a593Smuzhiyunstatic inline void i8042_platform_exit(void) 66*4882a593Smuzhiyun { 67*4882a593Smuzhiyun #if 0 68*4882a593Smuzhiyun release_mem_region(JAZZ_KEYBOARD_ADDRESS, sizeof(struct hpc_keyb)); 69*4882a593Smuzhiyun #endif 70*4882a593Smuzhiyun } 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun #endif /* _I8042_IP22_H */ 73