2011-01-15 18:28:19 +08:00
/*
* 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 .
*/
2011-02-26 21:21:18 +08:00
# define I8042_COMMAND_REG PS2_COMMAND
# define I8042_STATUS_REG PS2_STATUS
# define I8042_DATA_REG PS2_DATA
2011-02-18 18:38:33 +08:00
2011-02-26 21:21:18 +08:00
# define I8042_REGION_START (resource_size_t)(PS2_DATA)
2011-02-18 18:38:33 +08:00
# define I8042_REGION_SIZE (resource_size_t)(16)
2011-01-15 18:28:19 +08:00
static inline int i8042_read_data ( void )
{
2011-02-18 18:38:33 +08:00
return readb ( I8042_DATA_REG ) ;
2011-01-15 18:28:19 +08:00
}
static inline int i8042_read_status ( void )
{
2011-02-18 18:38:33 +08:00
return readb ( I8042_STATUS_REG ) ;
2011-01-15 18:28:19 +08:00
}
static inline void i8042_write_data ( int val )
{
2011-02-18 18:38:33 +08:00
writeb ( val , I8042_DATA_REG ) ;
2011-01-15 18:28:19 +08:00
}
static inline void i8042_write_command ( int val )
{
2011-02-18 18:38:33 +08:00
writeb ( val , I8042_COMMAND_REG ) ;
2011-01-15 18:28:19 +08:00
}
static inline int i8042_platform_init ( void )
{
2011-02-25 17:58:00 +08:00
if ( ! request_mem_region ( I8042_REGION_START , I8042_REGION_SIZE , " i8042 " ) )
2011-01-15 18:28:19 +08:00
return - EBUSY ;
2016-10-01 12:07:35 -07:00
i8042_reset = I8042_RESET_ALWAYS ;
2011-01-15 18:28:19 +08:00
return 0 ;
}
static inline void i8042_platform_exit ( void )
{
2011-02-25 17:58:00 +08:00
release_mem_region ( I8042_REGION_START , I8042_REGION_SIZE ) ;
2011-01-15 18:28:19 +08:00
}
# endif /* _I8042_UNICORE32_H */