Files
OpenCellular/firmware/include/gbb_header.h
Randall Spangler 5eb7cdba0e Fix handling of enter and space in developer screens.
At DEV screen:
- Space triggers TONORM
- Enter is ignored unless new GBB flag is set

At TONORM screen:
- Enter always means YES
- Space is ignored

So, if you hold the space key at the dev screen, you'll go to tonorm
and stay there until you press Enter or Esc.  If you hold the Enter
key at the dev screen, nothing will happen.

Add a GBB flag to allow Enter to trigger the TONORM screen; this will
be used by FAFT testing.

BRANCH=all
BUG=chrome-os-partner:12699
TEST=manual

1. press enter at dev screen.  nothing happens.
2. press space at dev screen.  tonorm.
3. press space at tonorm.  nothing happens.
4. press enter at tonorm.  turns off dev mode.

Change-Id: I9f3128d5114e1486911cc4d76d0ccd5649de1680
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/30456
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
2012-08-16 17:40:51 -07:00

85 lines
3.3 KiB
C

/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* Data structure of Google Binary Block (GBB)
*/
#ifndef VBOOT_REFERENCE_GBB_HEADER_H_
#define VBOOT_REFERENCE_GBB_HEADER_H_
#include "sysincludes.h"
#define GBB_HEADER_SIZE 128
#define GBB_SIGNATURE "$GBB"
#define GBB_SIGNATURE_SIZE 4
/* GBB version constants.
*
* If the major version is different than the reader can handle, it
* shouldn't attempt to parse the GBB.
*
* If the minor version is different, the reader can still parse it.
* If the minor version is greater than expected, new fields were
* added in a way which does not interfere with the old fields. If
* it's less than expected, some of the fields expected by the reader
* aren't initialized, and the reader should return default values for
* those fields. */
#define GBB_MAJOR_VER 1
#define GBB_MINOR_VER 1
/* Maximum length of a HWID in bytes, counting terminating null. */
#define GBB_HWID_MAX_SIZE 256
/* Flags for .flags field */
/* Reduce the dev screen delay to 2 sec from 30 sec to speedup factory. */
#define GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0x00000001
/* BIOS should load option ROMs from arbitrary PCI devices. We'll never enable
* this ourselves because it executes non-verified code, but if a customer wants
* to void their warranty and set this flag in the read-only flash, they should
* be able to do so. */
#define GBB_FLAG_LOAD_OPTION_ROMS 0x00000002
/* The factory flow may need the BIOS to boot a non-ChromeOS kernel if the
* dev-switch is on. This flag allows that. */
#define GBB_FLAG_ENABLE_ALTERNATE_OS 0x00000004
/* Force dev switch on, regardless of physical/keyboard dev switch position. */
#define GBB_FLAG_FORCE_DEV_SWITCH_ON 0x00000008
/* Allow booting from USB in dev mode even if dev_boot_usb=0. */
#define GBB_FLAG_FORCE_DEV_BOOT_USB 0x00000010
/* Disable firmware rollback protection. */
#define GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK 0x00000020
/* Allow Enter key to trigger dev->tonorm screen transition */
#define GBB_FLAG_ENTER_TRIGGERS_TONORM 0x00000040
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct GoogleBinaryBlockHeader {
/* Fields present in version 1.0 */
uint8_t signature[GBB_SIGNATURE_SIZE]; /* GBB_SIGNATURE "$GBB" */
uint16_t major_version; /* See GBB_MAJOR_VER */
uint16_t minor_version; /* See GBB_MINOR_VER */
uint32_t header_size; /* size of GBB header in bytes */
uint32_t flags; /* Flags (see GBB_FLAG_*), should be 0 for 1.0. */
uint32_t hwid_offset; /* HWID offset from start of header */
uint32_t hwid_size; /* HWID size in bytes */
uint32_t rootkey_offset; /* Root Key offset from start of header */
uint32_t rootkey_size; /* Root Key size in bytes */
uint32_t bmpfv_offset; /* BMP FV offset from start of header */
uint32_t bmpfv_size; /* BMP FV size in bytes */
uint32_t recovery_key_offset; /* Recovery Key offset from start of header */
uint32_t recovery_key_size; /* Recovery Key size in bytes */
uint8_t pad[80]; /* To match GBB_HEADER_SIZE. Initialize to 0. */
} __attribute__((packed)) GoogleBinaryBlockHeader;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* VBOOT_REFERENCE_GBB_HEADER_H_ */