diff options
| -rw-r--r-- | drivers/input/i8042.c | 9 | ||||
| -rw-r--r-- | include/i8042.h | 6 | 
2 files changed, 9 insertions, 6 deletions
| diff --git a/drivers/input/i8042.c b/drivers/input/i8042.c index c3bc5360c..6839c6bac 100644 --- a/drivers/input/i8042.c +++ b/drivers/input/i8042.c @@ -607,11 +607,10 @@ static void kbd_led_set(void)  static int kbd_input_empty(void)  { -	int kbdTimeout = KBD_TIMEOUT; +	int kbdTimeout = KBD_TIMEOUT * 1000; -	/* wait for input buf empty */ -	while ((in8(I8042_STATUS_REG) & 0x02) && kbdTimeout--) -		udelay(1000); +	while ((in8(I8042_STATUS_REG) & I8042_STATUS_IN_DATA) && kbdTimeout--) +		udelay(1);  	return kbdTimeout != -1;  } @@ -625,8 +624,6 @@ static int kbd_reset(void)  	out8(I8042_DATA_REG, 0xff); -	udelay(250000); -  	if (kbd_input_empty() == 0)  		return -1; diff --git a/include/i8042.h b/include/i8042.h index 13952899b..aeb3f090d 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 */ |