/* * Code specific to PKUnity SoC and UniCore ISA * * Maintained by GUAN Xue-tao <gxt@mprc.pku.edu.cn> * Copyright (C) 2001-2011 Guan Xuetao * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef _I8042_UNICORE32_H #define _I8042_UNICORE32_H #include <mach/hardware.h> /* * Names. */ #define I8042_KBD_PHYS_DESC "isa0060/serio0" #define I8042_AUX_PHYS_DESC "isa0060/serio1" #define I8042_MUX_PHYS_DESC "isa0060/serio%d" /* * IRQs. */ #define I8042_KBD_IRQ IRQ_PS2_KBD #define I8042_AUX_IRQ IRQ_PS2_AUX /* * Register numbers. */ #define I8042_COMMAND_REG PS2_COMMAND #define I8042_STATUS_REG PS2_STATUS #define I8042_DATA_REG PS2_DATA #define I8042_REGION_START (resource_size_t)(PS2_DATA) #define I8042_REGION_SIZE (resource_size_t)(16) static inline int i8042_read_data(void) { return readb(I8042_DATA_REG); } static inline int i8042_read_status(void) { return readb(I8042_STATUS_REG); } static inline void i8042_write_data(int val) { writeb(val, I8042_DATA_REG); } static inline void i8042_write_command(int val) { writeb(val, I8042_COMMAND_REG); } static inline int i8042_platform_init(void) { if (!request_mem_region(I8042_REGION_START, I8042_REGION_SIZE, "i8042")) return -EBUSY; i8042_reset = I8042_RESET_ALWAYS; return 0; } static inline void i8042_platform_exit(void) { release_mem_region(I8042_REGION_START, I8042_REGION_SIZE); } #endif /* _I8042_UNICORE32_H */