1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2002 ELTEC Elektronik AG
4 * Frank Gottschling <fgottschling@eltec.de>
5 */
6
7/* i8042.h - Intel 8042 keyboard driver header */
8
9#ifndef _I8042_H_
10#define _I8042_H_
11
12/* defines */
13
14#define I8042_DATA_REG	0x60	/* keyboard i/o buffer */
15#define I8042_STS_REG	0x64	/* keyboard status read */
16#define I8042_CMD_REG	0x64	/* keyboard ctrl write */
17
18/* Status register bit defines */
19#define STATUS_OBF	(1 << 0)
20#define STATUS_IBF	(1 << 1)
21
22/* Configuration byte bit defines */
23#define CFG_KIRQ_EN	(1 << 0)
24#define CFG_MIRQ_EN	(1 << 1)
25#define CFG_SET_BIST	(1 << 2)
26#define CFG_KCLK_DIS	(1 << 4)
27#define CFG_MCLK_DIS	(1 << 5)
28#define CFG_AT_TRANS	(1 << 6)
29
30/* i8042 commands */
31#define CMD_RD_CONFIG	0x20	/* read configuration byte */
32#define CMD_WR_CONFIG	0x60	/* write configuration byte */
33#define CMD_SELF_TEST	0xaa	/* controller self-test */
34#define CMD_KBD_DIS	0xad	/* keyboard disable */
35#define CMD_KBD_EN	0xae	/* keyboard enable */
36#define CMD_SET_KBD_LED	0xed	/* set keyboard led */
37#define CMD_DRAIN_OUTPUT 0xf4   /* drain output buffer */
38#define CMD_RESET_KBD	0xff	/* reset keyboard */
39
40/* i8042 command result */
41#define KBC_TEST_OK	0x55
42#define KBD_ACK		0xfa
43#define KBD_POR		0xaa
44
45/* keyboard scan codes */
46
47#define KBD_US		0	/* default US layout */
48#define KBD_GER		1	/* german layout */
49
50#define KBD_TIMEOUT	1000	/* 1 sec */
51#define KBD_RESET_TRIES	3
52
53#define AS		0	/* normal character index */
54#define SH		1	/* shift index */
55#define CN		2	/* control index */
56#define NM		3	/* numeric lock index */
57#define AK		4	/* right alt key */
58#define CP		5	/* capslock index */
59#define ST		6	/* stop output index */
60#define EX		7	/* extended code index */
61#define ES		8	/* escape and extended code index */
62
63#define NORMAL		0x0000	/* normal key */
64#define STP		0x0001	/* scroll lock stop output*/
65#define NUM		0x0002	/* numeric lock */
66#define CAPS		0x0004	/* capslock */
67#define SHIFT		0x0008	/* shift */
68#define CTRL		0x0010	/* control*/
69#define EXT		0x0020	/* extended scan code 0xe0 */
70#define ESC		0x0040	/* escape key press */
71#define E1		0x0080	/* extended scan code 0xe1 */
72#define BRK		0x0100	/* make break flag for keyboard */
73#define ALT		0x0200	/* right alt */
74
75#endif /* _I8042_H_ */
76