summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2019-05-22 17:24:48 -0700
committerDuncan Laurie <dlaurie@google.com>2019-05-23 00:37:42 +0000
commit5c4d3e6396e25be57df602844cf209fecc74b078 (patch)
tree208694afb44812fd666551682bffe95c96856d48
parentbf5ea44f176dfd227e13c91ad072b4eea5dbd4a0 (diff)
downloadvboot-5c4d3e6396e25be57df602844cf209fecc74b078.tar.gz
Revert "vboot: remove deprecated GoogleBinaryBlockHeader"
This reverts commit cf16fe26f7e91693d98d3e4eefe5b1ea90756546. BUG=none TEST=none Change-Id: I3ecdc506d33207b18986a007a1b2b206281d9a83 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1626762 Reviewed-by: Duncan Laurie <dlaurie@google.com> Commit-Queue: Duncan Laurie <dlaurie@google.com> Tested-by: Duncan Laurie <dlaurie@google.com>
-rw-r--r--firmware/include/gbb_header.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/firmware/include/gbb_header.h b/firmware/include/gbb_header.h
new file mode 100644
index 00000000..b880468d
--- /dev/null
+++ b/firmware/include/gbb_header.h
@@ -0,0 +1,114 @@
+/* Copyright (c) 2013 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 <stdint.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 2
+/* v1.2 - added field to hold sha256 digest of the HWID */
+
+/* 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
+/* Allow booting Legacy OSes in dev mode even if dev_boot_legacy=0. */
+#define GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0x00000080
+/* Allow booting using alternate keys for FAFT servo testing */
+#define GBB_FLAG_FAFT_KEY_OVERIDE 0x00000100
+/* Disable EC software sync */
+#define GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC 0x00000200
+/* Default to booting legacy OS when dev screen times out */
+#define GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0x00000400
+/* Disable PD software sync */
+#define GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC 0x00000800
+/* Disable shutdown on lid closed */
+#define GBB_FLAG_DISABLE_LID_SHUTDOWN 0x00001000
+/*
+ * Allow full fastboot capability in firmware even if
+ * dev_boot_fastboot_full_cap=0.
+ */
+#define GBB_FLAG_FORCE_DEV_BOOT_FASTBOOT_FULL_CAP 0x00002000
+/* Recovery mode always assumes manual recovery, even if EC_IN_RW=1 */
+#define GBB_FLAG_FORCE_MANUAL_RECOVERY 0x00004000
+/* Disable using FWMP */
+#define GBB_FLAG_DISABLE_FWMP 0x00008000
+/* Enable USB Device Controller */
+#define GBB_FLAG_ENABLE_UDC 0x00010000
+
+
+#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. */
+ /* Offsets (from start of header) and sizes (in bytes) of components */
+ uint32_t hwid_offset; /* HWID */
+ uint32_t hwid_size;
+ uint32_t rootkey_offset; /* Root key */
+ uint32_t rootkey_size;
+ uint32_t bmpfv_offset; /* BMP FV; deprecated in current FW */
+ uint32_t bmpfv_size;
+ uint32_t recovery_key_offset; /* Recovery key */
+ uint32_t recovery_key_size;
+ /* Added in version 1.2 */
+ uint8_t hwid_digest[32]; /* sha256 */
+
+ uint8_t pad[48]; /* To match GBB_HEADER_SIZE. Initialize to 0. */
+} __attribute__((packed)) GoogleBinaryBlockHeader;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* VBOOT_REFERENCE_GBB_HEADER_H_ */