11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ebcdic keycode functions for s390 console drivers 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4a53c8fab3f87c995c30ac226a03af95361243144Heiko Carstens * Copyright IBM Corp. 2003 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/tty.h> 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/tty_flip.h> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/keyboard.h> 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NR_FN_HANDLER 20 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data; 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void (fn_handler_fn)(struct kbd_data *); 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FIXME: explain key_maps tricks. 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data { 23ba186e7d17ea874f2a56385806e0ef213f58a1ddJiri Slaby struct tty_port *port; 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short **key_maps; 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char **func_table; 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds fn_handler_fn **fn_handler; 2704c71976500352d02f60616d2b960267d8c5fe24Samuel Thibault struct kbdiacruc *accent_table; 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int accent_table_size; 2904c71976500352d02f60616d2b960267d8c5fe24Samuel Thibault unsigned int diacr; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short sysrq; 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data *kbd_alloc(void); 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_free(struct kbd_data *); 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_ascebc(struct kbd_data *, unsigned char *); 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_keycode(struct kbd_data *, unsigned int); 3865c56e073e4fd10385283561b91189572e33b519Heiko Carstensint kbd_ioctl(struct kbd_data *, unsigned int, unsigned long); 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Helper Functions. 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 434448aaf0faafff3f275d15937c28b6346760e028Adrian Bunkstatic inline void 44ba186e7d17ea874f2a56385806e0ef213f58a1ddJiri Slabykbd_put_queue(struct tty_port *port, int ch) 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4692a19f9cec9a80ad93c06e115822deb729e2c6adJiri Slaby tty_insert_flip_char(port, ch, 0); 476732c8bb8671acbdac6cdc93dd72ddd581dd5e25Jiri Slaby tty_schedule_flip(port); 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 504448aaf0faafff3f275d15937c28b6346760e028Adrian Bunkstatic inline void 51ba186e7d17ea874f2a56385806e0ef213f58a1ddJiri Slabykbd_puts_queue(struct tty_port *port, char *cp) 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds while (*cp) 5492a19f9cec9a80ad93c06e115822deb729e2c6adJiri Slaby tty_insert_flip_char(port, *cp++, 0); 556732c8bb8671acbdac6cdc93dd72ddd581dd5e25Jiri Slaby tty_schedule_flip(port); 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 57