Newer Intel chips require a Management Engine which requires a particular format for the SPI flash that contains the boot loader. Add a tool that supports creating and modifying these ROM images. This tool is from Chrome OS but has been cleaned up to use U-Boot style and to add comments. A few features have been added also. Signed-off-by: Simon Glass <sjg@chromium.org>master
parent
e5901c94e3
commit
cd392fe8a0
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,88 @@ |
||||
/*
|
||||
* ifdtool - Manage Intel Firmware Descriptor information |
||||
* |
||||
* Copyright (C) 2011 The ChromiumOS Authors. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0 |
||||
* |
||||
* From Coreboot project |
||||
*/ |
||||
|
||||
#include <stdint.h> |
||||
|
||||
#define __packed __attribute__((packed)) |
||||
|
||||
#define IFDTOOL_VERSION "1.1-U-Boot" |
||||
|
||||
enum spi_frequency { |
||||
SPI_FREQUENCY_20MHZ = 0, |
||||
SPI_FREQUENCY_33MHZ = 1, |
||||
SPI_FREQUENCY_50MHZ = 4, |
||||
}; |
||||
|
||||
enum component_density { |
||||
COMPONENT_DENSITY_512KB = 0, |
||||
COMPONENT_DENSITY_1MB = 1, |
||||
COMPONENT_DENSITY_2MB = 2, |
||||
COMPONENT_DENSITY_4MB = 3, |
||||
COMPONENT_DENSITY_8MB = 4, |
||||
COMPONENT_DENSITY_16MB = 5, |
||||
}; |
||||
|
||||
/* flash descriptor */ |
||||
struct __packed fdbar_t { |
||||
uint32_t flvalsig; |
||||
uint32_t flmap0; |
||||
uint32_t flmap1; |
||||
uint32_t flmap2; |
||||
uint8_t reserved[0xefc - 0x20]; |
||||
uint32_t flumap1; |
||||
}; |
||||
|
||||
#define MAX_REGIONS 5 |
||||
|
||||
/* regions */ |
||||
struct __packed frba_t { |
||||
uint32_t flreg[MAX_REGIONS]; |
||||
}; |
||||
|
||||
/* component section */ |
||||
struct __packed fcba_t { |
||||
uint32_t flcomp; |
||||
uint32_t flill; |
||||
uint32_t flpb; |
||||
}; |
||||
|
||||
#define MAX_STRAPS 18 |
||||
|
||||
/* pch strap */ |
||||
struct __packed fpsba_t { |
||||
uint32_t pchstrp[MAX_STRAPS]; |
||||
}; |
||||
|
||||
/* master */ |
||||
struct __packed fmba_t { |
||||
uint32_t flmstr1; |
||||
uint32_t flmstr2; |
||||
uint32_t flmstr3; |
||||
}; |
||||
|
||||
/* processor strap */ |
||||
struct __packed fmsba_t { |
||||
uint32_t data[8]; |
||||
}; |
||||
|
||||
/* ME VSCC */ |
||||
struct vscc_t { |
||||
uint32_t jid; |
||||
uint32_t vscc; |
||||
}; |
||||
|
||||
struct vtba_t { |
||||
/* Actual number of entries specified in vtl */ |
||||
struct vscc_t entry[8]; |
||||
}; |
||||
|
||||
struct region_t { |
||||
int base, limit, size; |
||||
}; |
Loading…
Reference in new issue