1 /* 2 * drivers/s390/char/keyboard.h 3 * ebcdic keycode functions for s390 console drivers 4 * 5 * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 7 */ 8 9 #include <linux/tty.h> 10 #include <linux/tty_flip.h> 11 #include <linux/keyboard.h> 12 13 #define NR_FN_HANDLER 20 14 15 struct kbd_data; 16 17 typedef void (fn_handler_fn)(struct kbd_data *); 18 19 /* 20 * FIXME: explain key_maps tricks. 21 */ 22 23 struct kbd_data { 24 struct tty_struct *tty; 25 unsigned short **key_maps; 26 char **func_table; 27 fn_handler_fn **fn_handler; 28 struct kbdiacruc *accent_table; 29 unsigned int accent_table_size; 30 unsigned int diacr; 31 unsigned short sysrq; 32 }; 33 34 struct kbd_data *kbd_alloc(void); 35 void kbd_free(struct kbd_data *); 36 void kbd_ascebc(struct kbd_data *, unsigned char *); 37 38 void kbd_keycode(struct kbd_data *, unsigned int); 39 int kbd_ioctl(struct kbd_data *, struct file *, unsigned int, unsigned long); 40 41 /* 42 * Helper Functions. 43 */ 44 static inline void 45 kbd_put_queue(struct tty_struct *tty, int ch) 46 { 47 tty_insert_flip_char(tty, ch, 0); 48 tty_schedule_flip(tty); 49 } 50 51 static inline void 52 kbd_puts_queue(struct tty_struct *tty, char *cp) 53 { 54 while (*cp) 55 tty_insert_flip_char(tty, *cp++, 0); 56 tty_schedule_flip(tty); 57 } 58