X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fi8042.h;h=8d69fa13bc2a8ee150058644e528e3ee904c80af;hb=d3976cc2feddedf4283b9a567c8157e0ccb4226e;hp=963061920cbb3b94a28f54b0b20699842bf78b0b;hpb=5b9c79a81db80c3f9e50c77477957cd803429af8;p=oweals%2Fu-boot.git diff --git a/include/i8042.h b/include/i8042.h index 963061920c..8d69fa13bc 100644 --- a/include/i8042.h +++ b/include/i8042.h @@ -1,8 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2002 ELTEC Elektronik AG * Frank Gottschling - * - * SPDX-License-Identifier: GPL-2.0+ */ /* i8042.h - Intel 8042 keyboard driver header */ @@ -10,70 +9,67 @@ #ifndef _I8042_H_ #define _I8042_H_ -#ifdef __I386__ -#include -#include -#define in8(p) inb(p) -#define out8(p,v) outb(v,p) -#endif - /* defines */ -#define I8042_DATA_REG (CONFIG_SYS_ISA_IO + 0x0060) /* keyboard i/o buffer */ -#define I8042_STATUS_REG (CONFIG_SYS_ISA_IO + 0x0064) /* keyboard status read */ -#define I8042_COMMAND_REG (CONFIG_SYS_ISA_IO + 0x0064) /* keyboard ctrl write */ +#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 */ -enum { - /* Output register (I8042_DATA_REG) has data for system */ - I8042_STATUS_OUT_DATA = 1 << 0, - I8042_STATUS_IN_DATA = 1 << 1, -}; +/* Status register bit defines */ +#define STATUS_OBF (1 << 0) +#define STATUS_IBF (1 << 1) -#define KBD_US 0 /* default US layout */ -#define KBD_GER 1 /* german layout */ +/* 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) -#define KBD_TIMEOUT 1000 /* 1 sec */ -#define KBD_RESET_TRIES 3 +/* 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 */ +#define CMD_DRAIN_OUTPUT 0xf4 /* drain output buffer */ +#define CMD_RESET_KBD 0xff /* reset keyboard */ -#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 */ +/* i8042 command result */ +#define KBC_TEST_OK 0x55 +#define KBD_ACK 0xfa +#define KBD_POR 0xaa -#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 */ +/* keyboard scan codes */ -/* exports */ +#define KBD_US 0 /* default US layout */ +#define KBD_GER 1 /* german layout */ -/** - * Flush all buffer from keyboard controller to host. - */ -void i8042_flush(void); +#define KBD_TIMEOUT 1000 /* 1 sec */ +#define KBD_RESET_TRIES 3 -/** - * 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); +#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 */ -int i8042_kbd_init(void); -int i8042_tstc(void); -int i8042_getc(void); +#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 */ #endif /* _I8042_H_ */