diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2018-03-08 15:43:12 +0100 |
---|---|---|
committer | Philipp Deppenwiese <zaolin.daisuki@gmail.com> | 2018-09-09 17:51:37 +0000 |
commit | 28cee59ca294422056d983fc06d5d8d5800a4390 (patch) | |
tree | 2dab3f2423f474a9075dc9c9d56ad997d6c4ed77 /src/vendorcode/google/chromeos/vpd_tables.h | |
parent | c4b0fd0a86db280ad1a8d8572218dc42fd5bb7e4 (diff) |
drivers/vpd: Add VPD support
VPD reference: https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/README.md
Copy ChromeOS VPD driver to add support for VPD without CROMEOS.
Possible use case:
* Storing calibration data
* Storing MAC address
* Storing serial
* Storing boot options
+ Now it's possible to define the VPD space by choosing
one of the following enums: VPD_ANY, VPD_RW, VPD_RO.
+ CHROMEOS selects now VPD as part of it.
+ VPD is implemented as driver.
Change-Id: Id9263bd39bf25d024e93daa57053fefcb1adc53a
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/25046
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/vendorcode/google/chromeos/vpd_tables.h')
-rw-r--r-- | src/vendorcode/google/chromeos/vpd_tables.h | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/src/vendorcode/google/chromeos/vpd_tables.h b/src/vendorcode/google/chromeos/vpd_tables.h deleted file mode 100644 index 822ed08b0f..0000000000 --- a/src/vendorcode/google/chromeos/vpd_tables.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014 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. - * - * Ported from mosys project (http://code.google.com/p/mosys/). - */ - -#ifndef __LIB_VPD_TABLES_H__ -#define __LIB_VPD_TABLES_H__ - -#include <compiler.h> -#include <inttypes.h> - -#define VPD_ENTRY_MAGIC "_SM_" -#define VPD_INFO_MAGIC \ - "\xfe" /* type: VPD header */ \ - "\x09" /* key length, 9 = 1 + 8 */ \ - "\x01" /* info version, 1 */ \ - "gVpdInfo" /* signature, 8 bytes */ \ - "\x04" /* value length */ - -/* Google specific VPD info */ -struct google_vpd_info { - union { - struct { - uint8_t type; - uint8_t key_len; - uint8_t info_ver; - uint8_t signature[8]; - uint8_t value_len; - } tlv; - uint8_t magic[12]; - } header; - uint32_t size; -} __packed; - -/* Entry */ -struct vpd_entry { - uint8_t anchor_string[4]; - uint8_t entry_cksum; - uint8_t entry_length; - uint8_t major_ver; - uint8_t minor_ver; - uint16_t max_size; - uint8_t entry_rev; - uint8_t format_area[5]; - uint8_t inter_anchor_string[5]; - uint8_t inter_anchor_cksum; - uint16_t table_length; - uint32_t table_address; - uint16_t table_entry_count; - uint8_t bcd_revision; -} __packed; - -/* Header */ -struct vpd_header { - uint8_t type; - uint8_t length; - uint16_t handle; -} __packed; - -/* Type 0 - firmware information */ -struct vpd_table_firmware { - uint8_t vendor; - uint8_t version; - uint16_t start_address; - uint8_t release_date; - uint8_t rom_size_64k_blocks; - uint32_t characteristics; - uint8_t extension[2]; /* v2.4+ */ - uint8_t major_ver; /* v2.4+ */ - uint8_t minor_ver; /* v2.4+ */ - uint8_t ec_major_ver; /* v2.4+ */ - uint8_t ec_minor_ver; /* v2.4+ */ -} __packed; - -/* Type 1 - system information */ -struct vpd_table_system { - uint8_t manufacturer; - uint8_t name; - uint8_t version; - uint8_t serial_number; - uint8_t uuid[16]; - uint8_t wakeup_type; - uint8_t sku_number; /* v2.4+ */ - uint8_t family; /* v2.4+ */ -} __packed; - -/* Type 127 - end of table */ -struct vpd_table_eot { - struct vpd_header header; -} __packed; - -/* Type 241 - binary blob pointer */ -struct vpd_table_binary_blob_pointer { - uint8_t struct_major_version; - uint8_t struct_minor_version; - uint8_t vendor; - uint8_t description; - uint8_t major_version; - uint8_t minor_version; - uint8_t variant; - uint8_t reserved[5]; - uint8_t uuid[16]; - uint32_t offset; - uint32_t size; -} __packed; - -/* The length and number of strings defined here is not a limitation of VPD. - * These numbers were deemed good enough during development. */ -#define VPD_MAX_STRINGS 10 -#define VPD_MAX_STRING_LENGTH 64 - -#endif /* __LIB_VPD_TABLES_H__ */ |