mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-24 02:05:01 +00:00
Stub out easter egg, in case BIOS wants to implement one.
BUG=none TEST=manual Type 'xyzzy' at dev-mode BIOS screen. What happens next depends on the BIOS. Change-Id: Ifdb49eb6cb53ecee91f576be91679bd5a232f008 Reviewed-on: http://gerrit.chromium.org/gerrit/7656 Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
@@ -43,6 +43,13 @@
|
||||
#define VbAssert(expr)
|
||||
#endif
|
||||
|
||||
/* Optional, up to the BIOS */
|
||||
#ifdef VBOOT_EASTER_EGG
|
||||
#define VBEASTEREGG(A,B) VbExEasterEgg(A,B)
|
||||
#else
|
||||
#define VBEASTEREGG(A,B)
|
||||
#endif
|
||||
|
||||
/* Combine [msw] and [lsw] uint16s to a uint32_t with its [msw] and
|
||||
* [lsw] forming the most and least signficant 16-bit words.
|
||||
*/
|
||||
|
||||
@@ -19,5 +19,7 @@ VbError_t VbDisplayDebugInfo(VbCommonParams* cparams, VbNvContext *vncptr);
|
||||
VbError_t VbCheckDisplayKey(VbCommonParams* cparams, uint32_t key,
|
||||
VbNvContext *vncptr);
|
||||
|
||||
void VbExEasterEgg(VbCommonParams* cparams, VbNvContext *vncptr);
|
||||
|
||||
#endif /* VBOOT_REFERENCE_VBOOT_DISPLAY_H_ */
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ VbError_t VbBootNormal(VbCommonParams* cparams, LoadKernelParams* p) {
|
||||
/* Developer mode delays. All must be multiples of DEV_DELAY_INCREMENT */
|
||||
#define DEV_DELAY_INCREMENT 250 /* Delay each loop, in msec */
|
||||
#define DEV_DELAY_BEEP1 20000 /* Beep for first time at this time */
|
||||
#define DEV_DELAY_BEEP2 21000 /* Beep for second time at this time */
|
||||
#define DEV_DELAY_BEEP2 20500 /* Beep for second time at this time */
|
||||
#define DEV_DELAY_TIMEOUT 30000 /* Give up at this time */
|
||||
#define DEV_DELAY_TIMEOUT_SHORT 2000 /* Give up at this time (short delay) */
|
||||
|
||||
@@ -153,7 +153,7 @@ VbError_t VbBootDeveloper(VbCommonParams* cparams, LoadKernelParams* p) {
|
||||
case ' ':
|
||||
case 0x1B:
|
||||
/* Enter, space, or ESC = reboot to recovery */
|
||||
VBDEBUG(("VbBootDeveloper() - user pressed ENTER/SPACE/ESC"));
|
||||
VBDEBUG(("VbBootDeveloper() - user pressed ENTER/SPACE/ESC\n"));
|
||||
VbSetRecoveryRequest(VBNV_RECOVERY_RW_DEV_SCREEN);
|
||||
return 1;
|
||||
case 0x04:
|
||||
@@ -185,7 +185,6 @@ VbError_t VbBootDeveloper(VbCommonParams* cparams, LoadKernelParams* p) {
|
||||
default:
|
||||
VbCheckDisplayKey(cparams, key, &vnc);
|
||||
break;
|
||||
/* TODO: xyzzy easter egg check */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -461,8 +461,19 @@ VbError_t VbDisplayDebugInfo(VbCommonParams* cparams, VbNvContext *vncptr) {
|
||||
}
|
||||
|
||||
|
||||
#define MAGIC_WORD_LEN 5
|
||||
#define MAGIC_WORD "xyzzy"
|
||||
static uint8_t MagicBuffer[MAGIC_WORD_LEN];
|
||||
|
||||
VbError_t VbCheckDisplayKey(VbCommonParams* cparams, uint32_t key,
|
||||
VbNvContext *vncptr) {
|
||||
int i;
|
||||
|
||||
/* Update key buffer */
|
||||
for(i=1; i<MAGIC_WORD_LEN; i++)
|
||||
MagicBuffer[i-1] = MagicBuffer[i];
|
||||
/* Save as lower-case ASCII */
|
||||
MagicBuffer[MAGIC_WORD_LEN-1] = (key | 0x20) & 0xFF;
|
||||
|
||||
if ('\t' == key) {
|
||||
/* Tab = display debug info */
|
||||
@@ -488,5 +499,9 @@ VbError_t VbCheckDisplayKey(VbCommonParams* cparams, uint32_t key,
|
||||
return VbDisplayScreen(cparams, disp_current_screen, 1, vncptr);
|
||||
}
|
||||
|
||||
if (0 == Memcmp(MagicBuffer, MAGIC_WORD, MAGIC_WORD_LEN)) {
|
||||
VBEASTEREGG(cparams, vncptr);
|
||||
}
|
||||
|
||||
return VBERROR_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user