xref: /openbmc/u-boot/include/i8042.h (revision 2a055ea53260ac8addeeb94eb671172844bc9106)
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 CONFIG_KIRQ_EN	(1 << 0)
24  #define CONFIG_MIRQ_EN	(1 << 1)
25  #define CONFIG_SET_BIST	(1 << 2)
26  #define CONFIG_KCLK_DIS	(1 << 4)
27  #define CONFIG_MCLK_DIS	(1 << 5)
28  #define CONFIG_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