mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	Currently ifdtool only supports writing one file (-w) at a time. This looks verbose when generating u-boot.rom for x86 targets. This change allows at most 16 files to be written simultaneously. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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"
 | |
| 
 | |
| #define WRITE_MAX	16
 | |
| 
 | |
| 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;
 | |
| };
 |