summaryrefslogtreecommitdiffstats
path: root/include/asm-parisc/keyboard.h
blob: e477610177d29f0c31faaeee2dac59df829cc964 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
 *  linux/include/asm-parisc/keyboard.h
 *
 *  Original by Geert Uytterhoeven
 *  updates by Alex deVries <adevries@thepuffingroup.com>
 *  portions copyright (1999) The Puffin Group
 *  mostly rewritten by Philipp Rumpf <prumpf@tux.org>,
 *   Copyright 2000 Philipp Rumpf
 */

/*
 *  We try to keep the amount of generic code as low as possible -
 *  we want to support all HIL, PS/2, and untranslated USB keyboards
 */

#ifndef _PARISC_KEYBOARD_H
#define _PARISC_KEYBOARD_H

#include <linux/config.h>

#ifdef __KERNEL__
#ifdef CONFIG_VT

/*  These are basically the generic functions / variables.  The only
 *  unexpected detail is the initialization sequence for the keyboard
 *  driver is something like this:
 *
 *  detect keyboard port
 *  detect keyboard
 *  call register_kbd_ops 
 *  wait for init_hw
 *
 *  only after init_hw has been called you're allowed to call
 *  handle_scancode.  This means you either have to be extremely
 *  careful or use a global flag or something - I strongly suggest
 *  the latter.    prumpf */

extern struct kbd_ops {
	int (*setkeycode)(unsigned int, unsigned int);
	int (*getkeycode)(unsigned int);
	int (*translate)(unsigned char, unsigned char *, char);
	char (*unexpected_up)(unsigned char);
	void (*leds)(unsigned char);
	void (*init_hw)(void);

	unsigned char sysrq_key;
	unsigned char *sysrq_xlate;
} *kbd_ops;

#define kbd_setkeycode		(*kbd_ops->setkeycode)
#define kbd_getkeycode		(*kbd_ops->getkeycode)
#define kbd_translate		(*kbd_ops->translate)
#define kbd_unexpected_up	(*kbd_ops->unexpected_up)
#define kbd_leds		(*kbd_ops->leds)
#define kbd_init_hw		(*kbd_ops->init_hw)

#define SYSRQ_KEY		(kbd_ops->sysrq_key)
#define	kbd_sysrq_xlate		(kbd_ops->sysrq_xlate)
extern unsigned char hp_ps2kbd_sysrq_xlate[128]; 	/* from drivers/char/hp_keyb.c */

extern void register_kbd_ops(struct kbd_ops *ops);

#endif /* CONFIG_VT */

#endif /* __KERNEL__ */

#endif /* __ASMPARISC_KEYBOARD_H */