1 /*
2  *  WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3  *  ---------------------------------------------------------------
4  *  This file will be removed as soon as we have converted
5  *  hp_psaux.c and hp_keyb.c to the input layer !
6  *
7  */
8 
9 
10 /*
11  *  linux/include/asm-parisc/keyboard.h
12  *
13  *  Original by Geert Uytterhoeven
14  *  updates by Alex deVries <adevries@thepuffingroup.com>
15  *  portions copyright (1999) The Puffin Group
16  *  mostly rewritten by Philipp Rumpf <prumpf@tux.org>,
17  *   Copyright 2000 Philipp Rumpf
18  */
19 
20 /*
21  *  We try to keep the amount of generic code as low as possible -
22  *  we want to support all HIL, PS/2, and untranslated USB keyboards
23  */
24 
25 #ifndef _PARISC_KEYBOARD_H
26 #define _PARISC_KEYBOARD_H
27 
28 #include <linux/config.h>
29 
30 #ifdef __KERNEL__
31 #ifdef CONFIG_VT
32 
33 #include <linux/kernel.h>
34 #include <linux/kd.h>
35 
36 /*  These are basically the generic functions / variables.  The only
37  *  unexpected detail is the initialization sequence for the keyboard
38  *  driver is something like this:
39  *
40  *  detect keyboard port
41  *  detect keyboard
42  *  call register_kbd_ops
43  *  wait for init_hw
44  *
45  *  only after init_hw has been called you're allowed to call
46  *  handle_scancode.  This means you either have to be extremely
47  *  careful or use a global flag or something - I strongly suggest
48  *  the latter.    prumpf */
49 
50 extern struct kbd_ops {
51 	int (*setkeycode)(unsigned int, unsigned int);
52 	int (*getkeycode)(unsigned int);
53 	int (*translate)(unsigned char, unsigned char *, char);
54 	char (*unexpected_up)(unsigned char);
55 	void (*leds)(unsigned char);
56 	void (*init_hw)(void);
57 
58 	unsigned char sysrq_key;
59 	unsigned char *sysrq_xlate;
60 } *kbd_ops;
61 
62 #define kbd_setkeycode		(*kbd_ops->setkeycode)
63 #define kbd_getkeycode		(*kbd_ops->getkeycode)
64 #define kbd_translate		(*kbd_ops->translate)
65 #define kbd_unexpected_up	(*kbd_ops->unexpected_up)
66 #define kbd_leds		(*kbd_ops->leds)
67 #define kbd_init_hw		(*kbd_ops->init_hw)
68 
69 #define SYSRQ_KEY		(kbd_ops->sysrq_key)
70 #define	kbd_sysrq_xlate		(kbd_ops->sysrq_xlate)
71 extern unsigned char hp_ps2kbd_sysrq_xlate[128]; 	/* from drivers/char/hp_keyb.c */
72 
73 extern void unregister_kbd_ops(void);
74 extern void register_kbd_ops(struct kbd_ops *ops);
75 
76 #endif /* CONFIG_VT */
77 
78 #endif /* __KERNEL__ */
79 
80 #endif /* __ASMPARISC_KEYBOARD_H */
81