69 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * ebcdic keycode functions for s390 console drivers4 *5 * Copyright IBM Corp. 20036 * 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 2014 15struct kbd_data;16 17extern int ebc_funcbufsize, ebc_funcbufleft;18extern char *ebc_func_table[MAX_NR_FUNC];19extern char ebc_func_buf[];20extern char *ebc_funcbufptr;21extern unsigned int ebc_keymap_count;22 23extern struct kbdiacruc ebc_accent_table[];24extern unsigned int ebc_accent_table_size;25extern unsigned short *ebc_key_maps[MAX_NR_KEYMAPS];26extern unsigned short ebc_plain_map[NR_KEYS];27 28typedef void (fn_handler_fn)(struct kbd_data *);29 30/*31 * FIXME: explain key_maps tricks.32 */33 34struct kbd_data {35 struct tty_port *port;36 unsigned short **key_maps;37 char **func_table;38 fn_handler_fn **fn_handler;39 struct kbdiacruc *accent_table;40 unsigned int accent_table_size;41 unsigned int diacr;42 unsigned short sysrq;43};44 45struct kbd_data *kbd_alloc(void);46void kbd_free(struct kbd_data *);47void kbd_ascebc(struct kbd_data *, unsigned char *);48 49void kbd_keycode(struct kbd_data *, unsigned int);50int kbd_ioctl(struct kbd_data *, unsigned int, unsigned long);51 52/*53 * Helper Functions.54 */55static inline void56kbd_put_queue(struct tty_port *port, int ch)57{58 tty_insert_flip_char(port, ch, 0);59 tty_flip_buffer_push(port);60}61 62static inline void63kbd_puts_queue(struct tty_port *port, char *cp)64{65 while (*cp)66 tty_insert_flip_char(port, *cp++, 0);67 tty_flip_buffer_push(port);68}69