Blame view

include/i8042.h 2.51 KB
1df49e27b   wdenk   Initial revision
1
2
3
4
  /*
   * (C) Copyright 2002 ELTEC Elektronik AG
   * Frank Gottschling <fgottschling@eltec.de>
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
5
   * SPDX-License-Identifier:	GPL-2.0+
1df49e27b   wdenk   Initial revision
6
7
8
9
10
11
12
13
   */
  
  /* i8042.h - Intel 8042 keyboard driver header */
  
  #ifndef _I8042_H_
  #define _I8042_H_
  
  /* defines */
835dd0005   Bin Meng   x86: i8042: Clean...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  #define I8042_DATA_REG	0x60	/* keyboard i/o buffer */
  #define I8042_STS_REG	0x64	/* keyboard status read */
  #define I8042_CMD_REG	0x64	/* keyboard ctrl write */
  
  /* Status register bit defines */
  #define STATUS_OBF	(1 << 0)
  #define STATUS_IBF	(1 << 1)
  
  /* Configuration byte bit defines */
  #define CONFIG_KIRQ_EN	(1 << 0)
  #define CONFIG_MIRQ_EN	(1 << 1)
  #define CONFIG_SET_BIST	(1 << 2)
  #define CONFIG_KCLK_DIS	(1 << 4)
  #define CONFIG_MCLK_DIS	(1 << 5)
  #define CONFIG_AT_TRANS	(1 << 6)
  
  /* i8042 commands */
  #define CMD_RD_CONFIG	0x20	/* read configuration byte */
  #define CMD_WR_CONFIG	0x60	/* write configuration byte */
  #define CMD_SELF_TEST	0xaa	/* controller self-test */
  #define CMD_KBD_DIS	0xad	/* keyboard disable */
  #define CMD_KBD_EN	0xae	/* keyboard enable */
  #define CMD_SET_KBD_LED	0xed	/* set keyboard led */
8226a3e99   Simon Glass   input: i8042: Mak...
37
  #define CMD_DRAIN_OUTPUT 0xf4   /* drain output buffer */
835dd0005   Bin Meng   x86: i8042: Clean...
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
68
69
70
71
72
73
  #define CMD_RESET_KBD	0xff	/* reset keyboard */
  
  /* i8042 command result */
  #define KBC_TEST_OK	0x55
  #define KBD_ACK		0xfa
  #define KBD_POR		0xaa
  
  /* keyboard scan codes */
  
  #define KBD_US		0	/* default US layout */
  #define KBD_GER		1	/* german layout */
  
  #define KBD_TIMEOUT	1000	/* 1 sec */
  #define KBD_RESET_TRIES	3
  
  #define AS		0	/* normal character index */
  #define SH		1	/* shift index */
  #define CN		2	/* control index */
  #define NM		3	/* numeric lock index */
  #define AK		4	/* right alt key */
  #define CP		5	/* capslock index */
  #define ST		6	/* stop output index */
  #define EX		7	/* extended code index */
  #define ES		8	/* escape and extended code index */
  
  #define NORMAL		0x0000	/* normal key */
  #define STP		0x0001	/* scroll lock stop output*/
  #define NUM		0x0002	/* numeric lock */
  #define CAPS		0x0004	/* capslock */
  #define SHIFT		0x0008	/* shift */
  #define CTRL		0x0010	/* control*/
  #define EXT		0x0020	/* extended scan code 0xe0 */
  #define ESC		0x0040	/* escape key press */
  #define E1		0x0080	/* extended scan code 0xe1 */
  #define BRK		0x0100	/* make break flag for keyboard */
  #define ALT		0x0200	/* right alt */
1df49e27b   wdenk   Initial revision
74
75
  
  /* exports */
45fe668f5   Louis Yung-Chieh Lo   input: i8042: Pro...
76
77
78
79
80
81
82
83
84
85
86
87
  /**
   * Flush all buffer from keyboard controller to host.
   */
  void i8042_flush(void);
  
  /**
   * Disables the keyboard so that key strokes no longer generate scancodes to
   * the host.
   *
   * @return 0 if ok, -1 if keyboard input was found while disabling
   */
  int i8042_disable(void);
1df49e27b   wdenk   Initial revision
88
  #endif /* _I8042_H_ */