2005-04-17 02:20:36 +04:00
/*
* ebcdic keycode functions for s390 console drivers
*
2012-07-20 13:15:04 +04:00
* Copyright IBM Corp . 2003
2005-04-17 02:20:36 +04:00
* Author ( s ) : Martin Schwidefsky ( schwidefsky @ de . ibm . com ) ,
*/
# include <linux/tty.h>
# include <linux/tty_flip.h>
# include <linux/keyboard.h>
# define NR_FN_HANDLER 20
struct kbd_data ;
typedef void ( fn_handler_fn ) ( struct kbd_data * ) ;
/*
* FIXME : explain key_maps tricks .
*/
struct kbd_data {
2012-04-02 15:54:18 +04:00
struct tty_port * port ;
2005-04-17 02:20:36 +04:00
unsigned short * * key_maps ;
char * * func_table ;
fn_handler_fn * * fn_handler ;
2007-10-17 10:27:04 +04:00
struct kbdiacruc * accent_table ;
2005-04-17 02:20:36 +04:00
unsigned int accent_table_size ;
2007-10-17 10:27:04 +04:00
unsigned int diacr ;
2005-04-17 02:20:36 +04:00
unsigned short sysrq ;
} ;
struct kbd_data * kbd_alloc ( void ) ;
void kbd_free ( struct kbd_data * ) ;
void kbd_ascebc ( struct kbd_data * , unsigned char * ) ;
void kbd_keycode ( struct kbd_data * , unsigned int ) ;
2011-02-25 16:28:30 +03:00
int kbd_ioctl ( struct kbd_data * , unsigned int , unsigned long ) ;
2005-04-17 02:20:36 +04:00
/*
* Helper Functions .
*/
2005-11-09 08:34:42 +03:00
static inline void
2012-04-02 15:54:18 +04:00
kbd_put_queue ( struct tty_port * port , int ch )
2005-04-17 02:20:36 +04:00
{
2013-01-03 18:53:03 +04:00
tty_insert_flip_char ( port , ch , 0 ) ;
2013-01-03 18:53:07 +04:00
tty_schedule_flip ( port ) ;
2005-04-17 02:20:36 +04:00
}
2005-11-09 08:34:42 +03:00
static inline void
2012-04-02 15:54:18 +04:00
kbd_puts_queue ( struct tty_port * port , char * cp )
2005-04-17 02:20:36 +04:00
{
while ( * cp )
2013-01-03 18:53:03 +04:00
tty_insert_flip_char ( port , * cp + + , 0 ) ;
2013-01-03 18:53:07 +04:00
tty_schedule_flip ( port ) ;
2005-04-17 02:20:36 +04:00
}