xref: /openbmc/u-boot/tools/ifdtool.h (revision e8f80a5a)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */
2cd392fe8SSimon Glass /*
3cd392fe8SSimon Glass  * ifdtool - Manage Intel Firmware Descriptor information
4cd392fe8SSimon Glass  *
5cd392fe8SSimon Glass  * Copyright (C) 2011 The ChromiumOS Authors.
6cd392fe8SSimon Glass  *
7cd392fe8SSimon Glass  * From Coreboot project
8cd392fe8SSimon Glass  */
9cd392fe8SSimon Glass 
10cd392fe8SSimon Glass #include <stdint.h>
11cd392fe8SSimon Glass 
12cd392fe8SSimon Glass #define __packed	__attribute__((packed))
13cd392fe8SSimon Glass 
14cd392fe8SSimon Glass #define IFDTOOL_VERSION "1.1-U-Boot"
15cd392fe8SSimon Glass 
16673ed2f8SBin Meng #define WRITE_MAX	16
17673ed2f8SBin Meng 
18cd392fe8SSimon Glass enum spi_frequency {
19cd392fe8SSimon Glass 	SPI_FREQUENCY_20MHZ = 0,
20cd392fe8SSimon Glass 	SPI_FREQUENCY_33MHZ = 1,
21cd392fe8SSimon Glass 	SPI_FREQUENCY_50MHZ = 4,
22cd392fe8SSimon Glass };
23cd392fe8SSimon Glass 
24cd392fe8SSimon Glass enum component_density {
25cd392fe8SSimon Glass 	COMPONENT_DENSITY_512KB = 0,
26cd392fe8SSimon Glass 	COMPONENT_DENSITY_1MB   = 1,
27cd392fe8SSimon Glass 	COMPONENT_DENSITY_2MB   = 2,
28cd392fe8SSimon Glass 	COMPONENT_DENSITY_4MB   = 3,
29cd392fe8SSimon Glass 	COMPONENT_DENSITY_8MB   = 4,
30cd392fe8SSimon Glass 	COMPONENT_DENSITY_16MB  = 5,
31cd392fe8SSimon Glass };
32cd392fe8SSimon Glass 
33cd392fe8SSimon Glass /* flash descriptor */
34cd392fe8SSimon Glass struct __packed fdbar_t {
35cd392fe8SSimon Glass 	uint32_t flvalsig;
36cd392fe8SSimon Glass 	uint32_t flmap0;
37cd392fe8SSimon Glass 	uint32_t flmap1;
38cd392fe8SSimon Glass 	uint32_t flmap2;
39cd392fe8SSimon Glass 	uint8_t  reserved[0xefc - 0x20];
40cd392fe8SSimon Glass 	uint32_t flumap1;
41cd392fe8SSimon Glass };
42cd392fe8SSimon Glass 
43cd392fe8SSimon Glass #define MAX_REGIONS	5
44cd392fe8SSimon Glass 
45cd392fe8SSimon Glass /* regions */
46cd392fe8SSimon Glass struct __packed frba_t {
47cd392fe8SSimon Glass 	uint32_t flreg[MAX_REGIONS];
48cd392fe8SSimon Glass };
49cd392fe8SSimon Glass 
50cd392fe8SSimon Glass /* component section */
51cd392fe8SSimon Glass struct __packed fcba_t {
52cd392fe8SSimon Glass 	uint32_t flcomp;
53cd392fe8SSimon Glass 	uint32_t flill;
54cd392fe8SSimon Glass 	uint32_t flpb;
55cd392fe8SSimon Glass };
56cd392fe8SSimon Glass 
57cd392fe8SSimon Glass #define MAX_STRAPS	18
58cd392fe8SSimon Glass 
59cd392fe8SSimon Glass /* pch strap */
60cd392fe8SSimon Glass struct __packed fpsba_t {
61cd392fe8SSimon Glass 	uint32_t pchstrp[MAX_STRAPS];
62cd392fe8SSimon Glass };
63cd392fe8SSimon Glass 
64cd392fe8SSimon Glass /* master */
65cd392fe8SSimon Glass struct __packed fmba_t {
66cd392fe8SSimon Glass 	uint32_t flmstr1;
67cd392fe8SSimon Glass 	uint32_t flmstr2;
68cd392fe8SSimon Glass 	uint32_t flmstr3;
69cd392fe8SSimon Glass };
70cd392fe8SSimon Glass 
71cd392fe8SSimon Glass /* processor strap */
72cd392fe8SSimon Glass struct __packed fmsba_t {
73cd392fe8SSimon Glass 	uint32_t data[8];
74cd392fe8SSimon Glass };
75cd392fe8SSimon Glass 
76cd392fe8SSimon Glass /* ME VSCC */
77cd392fe8SSimon Glass struct vscc_t {
78cd392fe8SSimon Glass 	uint32_t jid;
79cd392fe8SSimon Glass 	uint32_t vscc;
80cd392fe8SSimon Glass };
81cd392fe8SSimon Glass 
82cd392fe8SSimon Glass struct vtba_t {
83cd392fe8SSimon Glass 	/* Actual number of entries specified in vtl */
84cd392fe8SSimon Glass 	struct vscc_t entry[8];
85cd392fe8SSimon Glass };
86cd392fe8SSimon Glass 
87cd392fe8SSimon Glass struct region_t {
88cd392fe8SSimon Glass 	int base, limit, size;
89cd392fe8SSimon Glass };
90