diff options
| author | Jim Lin <jilin@nvidia.com> | 2013-08-13 19:04:22 +0800 | 
|---|---|---|
| committer | Marek Vasut <marex@denx.de> | 2013-08-26 21:56:35 +0200 | 
| commit | 07551f23434f35b67aa8e6cf5ccd68ca417c73e6 (patch) | |
| tree | 5cede537e555b8f6b74438b381e930fe20794354 /common/usb_kbd.c | |
| parent | b63056d6a40a22f859feeae9329e0e842d57302e (diff) | |
| download | olio-uboot-2014.01-07551f23434f35b67aa8e6cf5ccd68ca417c73e6.tar.xz olio-uboot-2014.01-07551f23434f35b67aa8e6cf5ccd68ca417c73e6.zip | |
console: usb: kbd: To improve TFTP booting performance
TFTP booting is slow when a USB keyboard is installed and
stdin has usbkbd added.
This fix is to change Ctrl-C polling for USB keyboard to every second
when NET transfer is running.
Signed-off-by: Jim Lin <jilin@nvidia.com>
Diffstat (limited to 'common/usb_kbd.c')
| -rw-r--r-- | common/usb_kbd.c | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 2ca3767ec..89e30e88f 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -104,6 +104,11 @@ struct usb_kbd_pdata {  	uint8_t		flags;  }; +extern int __maybe_unused net_busy_flag; + +/* The period of time between two calls of usb_kbd_testc(). */ +static unsigned long __maybe_unused kbd_testc_tms; +  /* Generic keyboard event polling. */  void usb_kbd_generic_poll(void)  { @@ -365,6 +370,16 @@ static int usb_kbd_getc(void)  	struct usb_device *usb_kbd_dev;  	struct usb_kbd_pdata *data; +#ifdef CONFIG_CMD_NET +	/* +	 * If net_busy_flag is 1, NET transfer is running, +	 * then we check key-pressed every second (first check may be +	 * less than 1 second) to improve TFTP booting performance. +	 */ +	if (net_busy_flag && (get_timer(kbd_testc_tms) < CONFIG_SYS_HZ)) +		return 0; +	kbd_testc_tms = get_timer(0); +#endif  	dev = stdio_get_by_name(DEVNAME);  	usb_kbd_dev = (struct usb_device *)dev->priv;  	data = usb_kbd_dev->privptr; |