TFTP booting is observed a little bit slow, especially when a USB
keyboard is installed.
The fix is to check whether Ctrl-C key is pressed every
CONFIG_CTRLC_POLL_MS ms.
If CONFIG_CTRLC_POLL_MS is not defined in configuration file, we
define it as 1000.

Signed-off-by: Jim Lin <ji...@nvidia.com>
---
 common/console.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/common/console.c b/common/console.c
index bf73178..3339a93 100644
--- a/common/console.c
+++ b/common/console.c
@@ -524,9 +524,21 @@ int vprintf(const char *fmt, va_list args)
 /* test if ctrl-c was pressed */
 static int ctrlc_disabled = 0; /* see disable_ctrl() */
 static int ctrlc_was_pressed = 0;
+#ifndef CONFIG_CTRLC_POLL_MS
+/*
+ * Process Ctrl-C every 1000 ms by default to improve performance
+ * (like TFTP boot) when interlaced with other tasks.
+ */
+#define CONFIG_CTRLC_POLL_MS 1000
+#endif
+static unsigned long ctrlc_ts = CONFIG_CTRLC_POLL_MS;
 int ctrlc(void)
 {
        if (!ctrlc_disabled && gd->have_console) {
+               if (get_timer(ctrlc_ts) < CONFIG_CTRLC_POLL_MS)
+                       return 0;
+               else
+                       ctrlc_ts = get_timer(0);
                if (tstc()) {
                        switch (getc()) {
                        case 0x03:              /* ^C - Control C */
-- 
1.7.3


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may 
contain
confidential information.  Any unauthorized review, use, disclosure or 
distribution
is prohibited.  If you are not the intended recipient, please contact the 
sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to