brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · c06d399 Raw
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