18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci#ifndef _I8042_IP22_H 38c2ecf20Sopenharmony_ci#define _I8042_IP22_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <asm/sgi/ioc.h> 68c2ecf20Sopenharmony_ci#include <asm/sgi/ip22.h> 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci/* 108c2ecf20Sopenharmony_ci * Names. 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#define I8042_KBD_PHYS_DESC "hpc3ps2/serio0" 148c2ecf20Sopenharmony_ci#define I8042_AUX_PHYS_DESC "hpc3ps2/serio1" 158c2ecf20Sopenharmony_ci#define I8042_MUX_PHYS_DESC "hpc3ps2/serio%d" 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci/* 188c2ecf20Sopenharmony_ci * IRQs. 198c2ecf20Sopenharmony_ci */ 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#define I8042_KBD_IRQ SGI_KEYBD_IRQ 228c2ecf20Sopenharmony_ci#define I8042_AUX_IRQ SGI_KEYBD_IRQ 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci/* 258c2ecf20Sopenharmony_ci * Register numbers. 268c2ecf20Sopenharmony_ci */ 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#define I8042_COMMAND_REG ((unsigned long)&sgioc->kbdmouse.command) 298c2ecf20Sopenharmony_ci#define I8042_STATUS_REG ((unsigned long)&sgioc->kbdmouse.command) 308c2ecf20Sopenharmony_ci#define I8042_DATA_REG ((unsigned long)&sgioc->kbdmouse.data) 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic inline int i8042_read_data(void) 338c2ecf20Sopenharmony_ci{ 348c2ecf20Sopenharmony_ci return sgioc->kbdmouse.data; 358c2ecf20Sopenharmony_ci} 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistatic inline int i8042_read_status(void) 388c2ecf20Sopenharmony_ci{ 398c2ecf20Sopenharmony_ci return sgioc->kbdmouse.command; 408c2ecf20Sopenharmony_ci} 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic inline void i8042_write_data(int val) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci sgioc->kbdmouse.data = val; 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistatic inline void i8042_write_command(int val) 488c2ecf20Sopenharmony_ci{ 498c2ecf20Sopenharmony_ci sgioc->kbdmouse.command = val; 508c2ecf20Sopenharmony_ci} 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistatic inline int i8042_platform_init(void) 538c2ecf20Sopenharmony_ci{ 548c2ecf20Sopenharmony_ci#if 0 558c2ecf20Sopenharmony_ci /* XXX sgi_kh is a virtual address */ 568c2ecf20Sopenharmony_ci if (!request_mem_region(sgi_kh, sizeof(struct hpc_keyb), "i8042")) 578c2ecf20Sopenharmony_ci return -EBUSY; 588c2ecf20Sopenharmony_ci#endif 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci i8042_reset = I8042_RESET_ALWAYS; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci return 0; 638c2ecf20Sopenharmony_ci} 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_cistatic inline void i8042_platform_exit(void) 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci#if 0 688c2ecf20Sopenharmony_ci release_mem_region(JAZZ_KEYBOARD_ADDRESS, sizeof(struct hpc_keyb)); 698c2ecf20Sopenharmony_ci#endif 708c2ecf20Sopenharmony_ci} 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci#endif /* _I8042_IP22_H */ 73