1/* 2 * Code specific to PKUnity SoC and UniCore ISA 3 * 4 * Maintained by GUAN Xue-tao <gxt@mprc.pku.edu.cn> 5 * Copyright (C) 2001-2011 Guan Xuetao 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 */ 11#ifndef _I8042_UNICORE32_H 12#define _I8042_UNICORE32_H 13 14#include <mach/hardware.h> 15 16/* 17 * Names. 18 */ 19#define I8042_KBD_PHYS_DESC "isa0060/serio0" 20#define I8042_AUX_PHYS_DESC "isa0060/serio1" 21#define I8042_MUX_PHYS_DESC "isa0060/serio%d" 22 23/* 24 * IRQs. 25 */ 26#define I8042_KBD_IRQ IRQ_PS2_KBD 27#define I8042_AUX_IRQ IRQ_PS2_AUX 28 29/* 30 * Register numbers. 31 */ 32#define I8042_COMMAND_REG PS2_COMMAND 33#define I8042_STATUS_REG PS2_STATUS 34#define I8042_DATA_REG PS2_DATA 35 36#define I8042_REGION_START (resource_size_t)(PS2_DATA) 37#define I8042_REGION_SIZE (resource_size_t)(16) 38 39static inline int i8042_read_data(void) 40{ 41 return readb(I8042_DATA_REG); 42} 43 44static inline int i8042_read_status(void) 45{ 46 return readb(I8042_STATUS_REG); 47} 48 49static inline void i8042_write_data(int val) 50{ 51 writeb(val, I8042_DATA_REG); 52} 53 54static inline void i8042_write_command(int val) 55{ 56 writeb(val, I8042_COMMAND_REG); 57} 58 59static inline int i8042_platform_init(void) 60{ 61 if (!request_mem_region(I8042_REGION_START, I8042_REGION_SIZE, "i8042")) 62 return -EBUSY; 63 64 i8042_reset = I8042_RESET_ALWAYS; 65 return 0; 66} 67 68static inline void i8042_platform_exit(void) 69{ 70 release_mem_region(I8042_REGION_START, I8042_REGION_SIZE); 71} 72 73#endif /* _I8042_UNICORE32_H */ 74