coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
vpd_tables.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause */
2
3
/* Ported from mosys project (http://code.google.com/p/mosys/). */
4
5
#ifndef __LIB_VPD_TABLES_H__
6
#define __LIB_VPD_TABLES_H__
7
8
#include <
stdint.h
>
9
10
#define VPD_ENTRY_MAGIC "_SM_"
11
#define VPD_INFO_MAGIC \
12
"\xfe"
/* type: VPD header */
\
13
"\x09"
/* key length, 9 = 1 + 8 */
\
14
"\x01"
/* info version, 1 */
\
15
"gVpdInfo"
/* signature, 8 bytes */
\
16
"\x04"
/* value length */
17
18
/* Google specific VPD info */
19
struct
google_vpd_info
{
20
union
{
21
struct
{
22
uint8_t
type
;
23
uint8_t
key_len
;
24
uint8_t
info_ver
;
25
uint8_t
signature
[8];
26
uint8_t
value_len
;
27
}
tlv
;
28
uint8_t
magic
[12];
29
}
header
;
30
uint32_t
size
;
31
}
__packed
;
32
33
/* Entry */
34
struct
vpd_entry
{
35
uint8_t
anchor_string
[4];
36
uint8_t
entry_cksum
;
37
uint8_t
entry_length
;
38
uint8_t
major_ver
;
39
uint8_t
minor_ver
;
40
uint16_t
max_size
;
41
uint8_t
entry_rev
;
42
uint8_t
format_area
[5];
43
uint8_t
inter_anchor_string
[5];
44
uint8_t
inter_anchor_cksum
;
45
uint16_t
table_length
;
46
uint32_t
table_address
;
47
uint16_t
table_entry_count
;
48
uint8_t
bcd_revision
;
49
}
__packed
;
50
51
/* Header */
52
struct
vpd_header
{
53
uint8_t
type
;
54
uint8_t
length
;
55
uint16_t
handle
;
56
}
__packed
;
57
58
/* Type 0 - firmware information */
59
struct
vpd_table_firmware
{
60
uint8_t
vendor
;
61
uint8_t
version
;
62
uint16_t
start_address
;
63
uint8_t
release_date
;
64
uint8_t
rom_size_64k_blocks
;
65
uint32_t
characteristics
;
66
uint8_t
extension
[2];
/* v2.4+ */
67
uint8_t
major_ver
;
/* v2.4+ */
68
uint8_t
minor_ver
;
/* v2.4+ */
69
uint8_t
ec_major_ver
;
/* v2.4+ */
70
uint8_t
ec_minor_ver
;
/* v2.4+ */
71
}
__packed
;
72
73
/* Type 1 - system information */
74
struct
vpd_table_system
{
75
uint8_t
manufacturer
;
76
uint8_t
name
;
77
uint8_t
version
;
78
uint8_t
serial_number
;
79
uint8_t
uuid
[16];
80
uint8_t
wakeup_type
;
81
uint8_t
sku_number
;
/* v2.4+ */
82
uint8_t
family
;
/* v2.4+ */
83
}
__packed
;
84
85
/* Type 127 - end of table */
86
struct
vpd_table_eot
{
87
struct
vpd_header
header
;
88
}
__packed
;
89
90
/* Type 241 - binary blob pointer */
91
struct
vpd_table_binary_blob_pointer
{
92
uint8_t
struct_major_version
;
93
uint8_t
struct_minor_version
;
94
uint8_t
vendor
;
95
uint8_t
description
;
96
uint8_t
major_version
;
97
uint8_t
minor_version
;
98
uint8_t
variant
;
99
uint8_t
reserved
[5];
100
uint8_t
uuid
[16];
101
uint32_t
offset
;
102
uint32_t
size
;
103
}
__packed
;
104
105
/* The length and number of strings defined here is not a limitation of VPD.
106
* These numbers were deemed good enough during development. */
107
#define VPD_MAX_STRINGS 10
108
#define VPD_MAX_STRING_LENGTH 64
109
110
#endif
/* __LIB_VPD_TABLES_H__ */
stdint.h
uint16_t
unsigned short uint16_t
Definition:
stdint.h:11
uint32_t
unsigned int uint32_t
Definition:
stdint.h:14
uint8_t
unsigned char uint8_t
Definition:
stdint.h:8
google_vpd_info
Definition:
vpd_tables.h:19
google_vpd_info::type
uint8_t type
Definition:
vpd_tables.h:22
google_vpd_info::header
union google_vpd_info::@107 header
google_vpd_info::key_len
uint8_t key_len
Definition:
vpd_tables.h:23
google_vpd_info::value_len
uint8_t value_len
Definition:
vpd_tables.h:26
google_vpd_info::size
uint32_t size
Definition:
vpd_tables.h:30
google_vpd_info::signature
uint8_t signature[8]
Definition:
vpd_tables.h:25
google_vpd_info::tlv
struct google_vpd_info::@107::@108 tlv
google_vpd_info::info_ver
uint8_t info_ver
Definition:
vpd_tables.h:24
google_vpd_info::magic
uint8_t magic[12]
Definition:
vpd_tables.h:28
vpd_entry
Definition:
vpd_tables.h:34
vpd_entry::inter_anchor_string
uint8_t inter_anchor_string[5]
Definition:
vpd_tables.h:43
vpd_entry::major_ver
uint8_t major_ver
Definition:
vpd_tables.h:38
vpd_entry::table_entry_count
uint16_t table_entry_count
Definition:
vpd_tables.h:47
vpd_entry::table_length
uint16_t table_length
Definition:
vpd_tables.h:45
vpd_entry::entry_rev
uint8_t entry_rev
Definition:
vpd_tables.h:41
vpd_entry::minor_ver
uint8_t minor_ver
Definition:
vpd_tables.h:39
vpd_entry::anchor_string
uint8_t anchor_string[4]
Definition:
vpd_tables.h:35
vpd_entry::entry_cksum
uint8_t entry_cksum
Definition:
vpd_tables.h:36
vpd_entry::max_size
uint16_t max_size
Definition:
vpd_tables.h:40
vpd_entry::format_area
uint8_t format_area[5]
Definition:
vpd_tables.h:42
vpd_entry::inter_anchor_cksum
uint8_t inter_anchor_cksum
Definition:
vpd_tables.h:44
vpd_entry::table_address
uint32_t table_address
Definition:
vpd_tables.h:46
vpd_entry::bcd_revision
uint8_t bcd_revision
Definition:
vpd_tables.h:48
vpd_entry::entry_length
uint8_t entry_length
Definition:
vpd_tables.h:37
vpd_header
Definition:
vpd_tables.h:52
vpd_header::handle
uint16_t handle
Definition:
vpd_tables.h:55
vpd_header::type
uint8_t type
Definition:
vpd_tables.h:53
vpd_header::length
uint8_t length
Definition:
vpd_tables.h:54
vpd_table_binary_blob_pointer
Definition:
vpd_tables.h:91
vpd_table_binary_blob_pointer::offset
uint32_t offset
Definition:
vpd_tables.h:101
vpd_table_binary_blob_pointer::size
uint32_t size
Definition:
vpd_tables.h:102
vpd_table_binary_blob_pointer::major_version
uint8_t major_version
Definition:
vpd_tables.h:96
vpd_table_binary_blob_pointer::variant
uint8_t variant
Definition:
vpd_tables.h:98
vpd_table_binary_blob_pointer::description
uint8_t description
Definition:
vpd_tables.h:95
vpd_table_binary_blob_pointer::struct_minor_version
uint8_t struct_minor_version
Definition:
vpd_tables.h:93
vpd_table_binary_blob_pointer::reserved
uint8_t reserved[5]
Definition:
vpd_tables.h:99
vpd_table_binary_blob_pointer::vendor
uint8_t vendor
Definition:
vpd_tables.h:94
vpd_table_binary_blob_pointer::minor_version
uint8_t minor_version
Definition:
vpd_tables.h:97
vpd_table_binary_blob_pointer::struct_major_version
uint8_t struct_major_version
Definition:
vpd_tables.h:92
vpd_table_binary_blob_pointer::uuid
uint8_t uuid[16]
Definition:
vpd_tables.h:100
vpd_table_eot
Definition:
vpd_tables.h:86
vpd_table_eot::header
struct vpd_header header
Definition:
vpd_tables.h:87
vpd_table_firmware
Definition:
vpd_tables.h:59
vpd_table_firmware::rom_size_64k_blocks
uint8_t rom_size_64k_blocks
Definition:
vpd_tables.h:64
vpd_table_firmware::minor_ver
uint8_t minor_ver
Definition:
vpd_tables.h:68
vpd_table_firmware::extension
uint8_t extension[2]
Definition:
vpd_tables.h:66
vpd_table_firmware::ec_minor_ver
uint8_t ec_minor_ver
Definition:
vpd_tables.h:70
vpd_table_firmware::start_address
uint16_t start_address
Definition:
vpd_tables.h:62
vpd_table_firmware::major_ver
uint8_t major_ver
Definition:
vpd_tables.h:67
vpd_table_firmware::release_date
uint8_t release_date
Definition:
vpd_tables.h:63
vpd_table_firmware::ec_major_ver
uint8_t ec_major_ver
Definition:
vpd_tables.h:69
vpd_table_firmware::vendor
uint8_t vendor
Definition:
vpd_tables.h:60
vpd_table_firmware::characteristics
uint32_t characteristics
Definition:
vpd_tables.h:65
vpd_table_firmware::version
uint8_t version
Definition:
vpd_tables.h:61
vpd_table_system
Definition:
vpd_tables.h:74
vpd_table_system::sku_number
uint8_t sku_number
Definition:
vpd_tables.h:81
vpd_table_system::manufacturer
uint8_t manufacturer
Definition:
vpd_tables.h:75
vpd_table_system::uuid
uint8_t uuid[16]
Definition:
vpd_tables.h:79
vpd_table_system::serial_number
uint8_t serial_number
Definition:
vpd_tables.h:78
vpd_table_system::version
uint8_t version
Definition:
vpd_tables.h:77
vpd_table_system::family
uint8_t family
Definition:
vpd_tables.h:82
vpd_table_system::name
uint8_t name
Definition:
vpd_tables.h:76
vpd_table_system::wakeup_type
uint8_t wakeup_type
Definition:
vpd_tables.h:80
__packed
struct google_vpd_info __packed
src
drivers
vpd
vpd_tables.h
Generated by
1.9.1