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
50extern 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)
71extern unsigned char hp_ps2kbd_sysrq_xlate[128]; 	/* from drivers/char/hp_keyb.c */
72
73extern void unregister_kbd_ops(void);
74extern void register_kbd_ops(struct kbd_ops *ops);
75
76#endif /* CONFIG_VT */
77
78#endif /* __KERNEL__ */
79
80#endif /* __ASMPARISC_KEYBOARD_H */
81