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