summaryrefslogtreecommitdiff
path: root/include/i8042.h
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2012-10-12 14:02:01 +0000
committerTom Rini <trini@ti.com>2012-10-19 15:25:43 -0700
commitef94f7fa64190876c08b68eb1b067c5e6d3085f5 (patch)
treef15bec7f1c5f5741192fd359b9544725495983f7 /include/i8042.h
parentddd8418f7f390a39d460e6ab98e8e668f0cf617c (diff)
downloadu-boot-imx-ef94f7fa64190876c08b68eb1b067c5e6d3085f5.zip
u-boot-imx-ef94f7fa64190876c08b68eb1b067c5e6d3085f5.tar.gz
u-boot-imx-ef94f7fa64190876c08b68eb1b067c5e6d3085f5.tar.bz2
input: Use finer grain udelays while waitng for the i8042 keyboard buffer to empty
On x86, the i8042 keyboard controller driver frequently waits for the keyboard input buffer to be empty to make sure the controller has had a chance to process the data it was given. The way the delay loop was structured, if the controller hadn't cleared the corresponding status bit immediately, it would wait 1ms before checking again. If the keyboard responded quickly but not instantly, the driver would still wait a full 1ms when perhaps 1us would have been sufficient. Because udelay is a busy wait anyway, this change decreases the delay between checks to 1us. Also, this change gets rid of a hardcoded 250ms delay. On Stumpy, this saves 100-150ms during boot. Signed-off-by: Gabe Black <gabeblack@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'include/i8042.h')
-rw-r--r--include/i8042.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/i8042.h b/include/i8042.h
index 1395289..aeb3f09 100644
--- a/include/i8042.h
+++ b/include/i8042.h
@@ -39,6 +39,12 @@
#define I8042_STATUS_REG (CONFIG_SYS_ISA_IO + 0x0064) /* keyboard status read */
#define I8042_COMMAND_REG (CONFIG_SYS_ISA_IO + 0x0064) /* 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,
+};
+
#define KBD_US 0 /* default US layout */
#define KBD_GER 1 /* german layout */