1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <endian.h> 4 #include <fmap_config.h> 5 #include <commonlib/bsd/cbfs_serialized.h> 6 7 struct cbfs_header header = { 8 .magic = cpu_to_be32(CBFS_HEADER_MAGIC), 9 .version = cpu_to_be32(CBFS_HEADER_VERSION), 10 /* 11 * The offset and romsize fields within the master header are absolute 12 * values within the boot media. As such, romsize needs to reflect 13 * the end 'offset' for a CBFS. To achieve that the current buffer 14 * representing the CBFS region's size is added to the offset of 15 * the region within a larger image. 16 */ 17 .romsize = cpu_to_be32(FMAP_SECTION_COREBOOT_START + FMAP_SECTION_COREBOOT_SIZE 18 - FMAP_SECTION_FLASH_START), 19 /* 20 * The 4 bytes are left out for two reasons: 21 * 1. the cbfs master header pointer resides there 22 * 2. some cbfs implementations assume that an image that resides 23 * below 4GB has a bootblock and get confused when the end of the 24 * image is at 4GB == 0. 25 */ 26 .bootblocksize = cpu_to_be32(4), 27 .align = cpu_to_be32(CBFS_ALIGNMENT), 28 .offset = cpu_to_be32(FMAP_SECTION_COREBOOT_START - FMAP_SECTION_FLASH_START), 29 .architecture = cpu_to_be32(CBFS_ARCHITECTURE_UNKNOWN), 30 }; 31