From 74fa20748dc71556c9a53d8056eab71709143c24 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 6 Sep 2012 14:55:31 -0700 Subject: [PATCH] Check keyboard more often in recovery mode Currently we check the keyboard each 250ms. This makes for a pretty choppy experience when changing languages. Change to check every 20ms, without changing the disk check interval (which remains 1s). BUG=chrome-os-partner:13717 BRANCH=snow TEST=manual Boot into recovery Try changing language on snow with left/right arrow and see that it updates instantly. Change-Id: I2ae411bc36fdb2badac11595b099bca43f116669 Signed-off-by: Simon Glass Reviewed-on: https://gerrit.chromium.org/gerrit/32463 Commit-Ready: Tom Wai-Hong Tam Reviewed-by: Tom Wai-Hong Tam Tested-by: Tom Wai-Hong Tam --- firmware/lib/vboot_api_kernel.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index d36bcb5f31..7539f21e17 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -273,8 +273,9 @@ fallout: return VbTryLoadKernel(cparams, p, VB_DISK_FLAG_FIXED); } -/* Delay between disk checks in recovery mode */ -#define REC_DELAY_INCREMENT 250 +/* Delay in recovery mode */ +#define REC_DISK_DELAY 1000 /* Check disks every 1s */ +#define REC_KEY_DELAY 20 /* Check keys every 20ms */ /* Handle a recovery-mode boot */ VbError_t VbBootRecovery(VbCommonParams* cparams, LoadKernelParams* p) { @@ -312,18 +313,18 @@ VbError_t VbBootRecovery(VbCommonParams* cparams, LoadKernelParams* p) { /* Scan keyboard more frequently than media, since x86 platforms * don't like to scan USB too rapidly. */ - for (i = 0; i < 4; i++) { + for (i = 0; i < REC_DISK_DELAY; i += REC_KEY_DELAY) { VbCheckDisplayKey(cparams, VbExKeyboardRead(), &vnc); if (VbExIsShutdownRequested()) return VBERROR_SHUTDOWN_REQUESTED; - VbExSleepMs(REC_DELAY_INCREMENT); + VbExSleepMs(REC_KEY_DELAY); } } } /* Loop and wait for a recovery image */ while (1) { - VBDEBUG(("VbBootRecovery() attempting to load kernel\n")); + VBDEBUG(("VbBootRecovery() attempting to load kernel2\n")); retval = VbTryLoadKernel(cparams, p, VB_DISK_FLAG_REMOVABLE); /* Clear recovery requests from failed kernel loading, since we're @@ -340,7 +341,7 @@ VbError_t VbBootRecovery(VbCommonParams* cparams, LoadKernelParams* p) { /* Scan keyboard more frequently than media, since x86 platforms don't like * to scan USB too rapidly. */ - for (i = 0; i < 4; i++) { + for (i = 0; i < REC_DISK_DELAY; i += REC_KEY_DELAY) { key = VbExKeyboardRead(); /* We might want to enter dev-mode from the Insert screen if... */ if (key == 0x04 && /* user pressed Ctrl-D */ @@ -370,7 +371,7 @@ VbError_t VbBootRecovery(VbCommonParams* cparams, LoadKernelParams* p) { VbCheckDisplayKey(cparams, key, &vnc); if (VbExIsShutdownRequested()) return VBERROR_SHUTDOWN_REQUESTED; - VbExSleepMs(REC_DELAY_INCREMENT); + VbExSleepMs(REC_KEY_DELAY); } }