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