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