mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-15 06:33:45 +09:00
![Tom Rini](/assets/img/avatar_default.png)
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
154 lines
4.4 KiB
C
154 lines
4.4 KiB
C
/* SPDX-License-Identifier: Intel */
|
|
/*
|
|
* Copyright (C) 2013, Intel Corporation
|
|
* Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
|
|
*/
|
|
|
|
#ifndef __FSP_FFS_H__
|
|
#define __FSP_FFS_H__
|
|
|
|
/* Used to verify the integrity of the file */
|
|
union __packed ffs_integrity {
|
|
struct {
|
|
/*
|
|
* The IntegrityCheck.checksum.header field is an 8-bit
|
|
* checksum of the file header. The State and
|
|
* IntegrityCheck.checksum.file fields are assumed to be zero
|
|
* and the checksum is calculated such that the entire header
|
|
* sums to zero.
|
|
*/
|
|
u8 header;
|
|
/*
|
|
* If the FFS_ATTRIB_CHECKSUM (see definition below) bit of
|
|
* the Attributes field is set to one, the
|
|
* IntegrityCheck.checksum.file field is an 8-bit checksum of
|
|
* the file data. If the FFS_ATTRIB_CHECKSUM bit of the
|
|
* Attributes field is cleared to zero, the
|
|
* IntegrityCheck.checksum.file field must be initialized with
|
|
* a value of 0xAA. The IntegrityCheck.checksum.file field is
|
|
* valid any time the EFI_FILE_DATA_VALID bit is set in the
|
|
* State field.
|
|
*/
|
|
u8 file;
|
|
} checksum;
|
|
|
|
/* This is the full 16 bits of the IntegrityCheck field */
|
|
u16 checksum16;
|
|
};
|
|
|
|
/*
|
|
* Each file begins with the header that describe the
|
|
* contents and state of the files.
|
|
*/
|
|
struct __packed ffs_file_header {
|
|
/*
|
|
* This GUID is the file name.
|
|
* It is used to uniquely identify the file.
|
|
*/
|
|
struct efi_guid name;
|
|
/* Used to verify the integrity of the file */
|
|
union ffs_integrity integrity;
|
|
/* Identifies the type of file */
|
|
u8 type;
|
|
/* Declares various file attribute bits */
|
|
u8 attr;
|
|
/* The length of the file in bytes, including the FFS header */
|
|
u8 size[3];
|
|
/*
|
|
* Used to track the state of the file throughout the life of
|
|
* the file from creation to deletion.
|
|
*/
|
|
u8 state;
|
|
};
|
|
|
|
struct __packed ffs_file_header2 {
|
|
/*
|
|
* This GUID is the file name. It is used to uniquely identify the file.
|
|
* There may be only one instance of a file with the file name GUID of
|
|
* Name in any given firmware volume, except if the file type is
|
|
* EFI_FV_FILE_TYPE_FFS_PAD.
|
|
*/
|
|
struct efi_guid name;
|
|
/* Used to verify the integrity of the file */
|
|
union ffs_integrity integrity;
|
|
/* Identifies the type of file */
|
|
u8 type;
|
|
/* Declares various file attribute bits */
|
|
u8 attr;
|
|
/*
|
|
* The length of the file in bytes, including the FFS header.
|
|
* The length of the file data is either
|
|
* (size - sizeof(struct ffs_file_header)). This calculation means a
|
|
* zero-length file has a size of 24 bytes, which is
|
|
* sizeof(struct ffs_file_header). Size is not required to be a
|
|
* multiple of 8 bytes. Given a file F, the next file header is located
|
|
* at the next 8-byte aligned firmware volume offset following the last
|
|
* byte of the file F.
|
|
*/
|
|
u8 size[3];
|
|
/*
|
|
* Used to track the state of the file throughout the life of
|
|
* the file from creation to deletion.
|
|
*/
|
|
u8 state;
|
|
/*
|
|
* If FFS_ATTRIB_LARGE_FILE is set in attr, then ext_size exists
|
|
* and size must be set to zero.
|
|
* If FFS_ATTRIB_LARGE_FILE is not set then
|
|
* struct ffs_file_header is used.
|
|
*/
|
|
u32 ext_size;
|
|
};
|
|
|
|
/*
|
|
* Pseudo type. It is used as a wild card when retrieving sections.
|
|
* The section type EFI_SECTION_ALL matches all section types.
|
|
*/
|
|
#define EFI_SECTION_ALL 0x00
|
|
|
|
/* Encapsulation section Type values */
|
|
#define EFI_SECTION_COMPRESSION 0x01
|
|
#define EFI_SECTION_GUID_DEFINED 0x02
|
|
#define EFI_SECTION_DISPOSABLE 0x03
|
|
|
|
/* Leaf section Type values */
|
|
#define EFI_SECTION_PE32 0x10
|
|
#define EFI_SECTION_PIC 0x11
|
|
#define EFI_SECTION_TE 0x12
|
|
#define EFI_SECTION_DXE_DEPEX 0x13
|
|
#define EFI_SECTION_VERSION 0x14
|
|
#define EFI_SECTION_USER_INTERFACE 0x15
|
|
#define EFI_SECTION_COMPATIBILITY16 0x16
|
|
#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
|
|
#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
|
|
#define EFI_SECTION_RAW 0x19
|
|
#define EFI_SECTION_PEI_DEPEX 0x1B
|
|
#define EFI_SECTION_SMM_DEPEX 0x1C
|
|
|
|
/* Common section header */
|
|
struct __packed raw_section {
|
|
/*
|
|
* A 24-bit unsigned integer that contains the total size of
|
|
* the section in bytes, including the EFI_COMMON_SECTION_HEADER.
|
|
*/
|
|
u8 size[3];
|
|
u8 type;
|
|
};
|
|
|
|
struct __packed raw_section2 {
|
|
/*
|
|
* A 24-bit unsigned integer that contains the total size of
|
|
* the section in bytes, including the EFI_COMMON_SECTION_HEADER.
|
|
*/
|
|
u8 size[3];
|
|
u8 type;
|
|
/*
|
|
* If size is 0xFFFFFF, then ext_size contains the size of
|
|
* the section. If size is not equal to 0xFFFFFF, then this
|
|
* field does not exist.
|
|
*/
|
|
u32 ext_size;
|
|
};
|
|
|
|
#endif
|