brintos

brintos / linux-shallow public Read only

0
0
Text · 13.5 KiB · 2c6e548 Raw
273 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 *  Copyright 2018-2023 Broadcom Inc. All rights reserved.4 */5#ifndef MPI30_IMAGE_H6#define MPI30_IMAGE_H     17struct mpi3_comp_image_version {8	__le16     build_num;9	__le16     customer_id;10	u8         phase_minor;11	u8         phase_major;12	u8         gen_minor;13	u8         gen_major;14};15 16struct mpi3_hash_exclusion_format {17	__le32                     offset;18	__le32                     size;19};20 21#define MPI3_IMAGE_HASH_EXCUSION_NUM                           (4)22struct mpi3_component_image_header {23	__le32                            signature0;24	__le32                            load_address;25	__le32                            data_size;26	__le32                            start_offset;27	__le32                            signature1;28	__le32                            flash_offset;29	__le32                            image_size;30	__le32                            version_string_offset;31	__le32                            build_date_string_offset;32	__le32                            build_time_string_offset;33	__le32                            environment_variable_offset;34	__le32                            application_specific;35	__le32                            signature2;36	__le32                            header_size;37	__le32                            crc;38	__le32                            flags;39	__le32                            secondary_flash_offset;40	__le32                            etp_offset;41	__le32                            etp_size;42	union mpi3_version_union             rmc_interface_version;43	union mpi3_version_union             etp_interface_version;44	struct mpi3_comp_image_version        component_image_version;45	struct mpi3_hash_exclusion_format     hash_exclusion[MPI3_IMAGE_HASH_EXCUSION_NUM];46	__le32                            next_image_header_offset;47	union mpi3_version_union             security_version;48	__le32                            reserved84[31];49};50 51#define MPI3_IMAGE_HEADER_SIGNATURE0_MPI3                     (0xeb00003e)52#define MPI3_IMAGE_HEADER_LOAD_ADDRESS_INVALID                (0x00000000)53#define MPI3_IMAGE_HEADER_SIGNATURE1_APPLICATION              (0x20505041)54#define MPI3_IMAGE_HEADER_SIGNATURE1_FIRST_MUTABLE            (0x20434d46)55#define MPI3_IMAGE_HEADER_SIGNATURE1_BSP                      (0x20505342)56#define MPI3_IMAGE_HEADER_SIGNATURE1_ROM_BIOS                 (0x534f4942)57#define MPI3_IMAGE_HEADER_SIGNATURE1_HII_X64                  (0x4d494948)58#define MPI3_IMAGE_HEADER_SIGNATURE1_HII_ARM                  (0x41494948)59#define MPI3_IMAGE_HEADER_SIGNATURE1_CPLD                     (0x444c5043)60#define MPI3_IMAGE_HEADER_SIGNATURE1_SPD                      (0x20445053)61#define MPI3_IMAGE_HEADER_SIGNATURE1_GAS_GAUGE                (0x20534147)62#define MPI3_IMAGE_HEADER_SIGNATURE1_PBLP                     (0x504c4250)63#define MPI3_IMAGE_HEADER_SIGNATURE1_MANIFEST                 (0x464e414d)64#define MPI3_IMAGE_HEADER_SIGNATURE1_OEM                      (0x204d454f)65#define MPI3_IMAGE_HEADER_SIGNATURE1_RMC                      (0x20434d52)66#define MPI3_IMAGE_HEADER_SIGNATURE1_SMM                      (0x204d4d53)67#define MPI3_IMAGE_HEADER_SIGNATURE1_PSW                      (0x20575350)68#define MPI3_IMAGE_HEADER_SIGNATURE2_VALUE                    (0x50584546)69#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_MASK         (0x00000030)70#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_CDI          (0x00000000)71#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_DI           (0x00000010)72#define MPI3_IMAGE_HEADER_FLAGS_SIGNED_NVDATA                 (0x00000008)73#define MPI3_IMAGE_HEADER_FLAGS_REQUIRES_ACTIVATION           (0x00000004)74#define MPI3_IMAGE_HEADER_FLAGS_COMPRESSED                    (0x00000002)75#define MPI3_IMAGE_HEADER_FLAGS_FLASH                         (0x00000001)76#define MPI3_IMAGE_HEADER_SIGNATURE0_OFFSET                   (0x00)77#define MPI3_IMAGE_HEADER_LOAD_ADDRESS_OFFSET                 (0x04)78#define MPI3_IMAGE_HEADER_DATA_SIZE_OFFSET                    (0x08)79#define MPI3_IMAGE_HEADER_START_OFFSET_OFFSET                 (0x0c)80#define MPI3_IMAGE_HEADER_SIGNATURE1_OFFSET                   (0x10)81#define MPI3_IMAGE_HEADER_FLASH_OFFSET_OFFSET                 (0x14)82#define MPI3_IMAGE_HEADER_FLASH_SIZE_OFFSET                   (0x18)83#define MPI3_IMAGE_HEADER_VERSION_STRING_OFFSET_OFFSET        (0x1c)84#define MPI3_IMAGE_HEADER_BUILD_DATE_STRING_OFFSET_OFFSET     (0x20)85#define MPI3_IMAGE_HEADER_BUILD_TIME_OFFSET_OFFSET            (0x24)86#define MPI3_IMAGE_HEADER_ENVIROMENT_VAR_OFFSET_OFFSET        (0x28)87#define MPI3_IMAGE_HEADER_APPLICATION_SPECIFIC_OFFSET         (0x2c)88#define MPI3_IMAGE_HEADER_SIGNATURE2_OFFSET                   (0x30)89#define MPI3_IMAGE_HEADER_HEADER_SIZE_OFFSET                  (0x34)90#define MPI3_IMAGE_HEADER_CRC_OFFSET                          (0x38)91#define MPI3_IMAGE_HEADER_FLAGS_OFFSET                        (0x3c)92#define MPI3_IMAGE_HEADER_SECONDARY_FLASH_OFFSET_OFFSET       (0x40)93#define MPI3_IMAGE_HEADER_ETP_OFFSET_OFFSET                   (0x44)94#define MPI3_IMAGE_HEADER_ETP_SIZE_OFFSET                     (0x48)95#define MPI3_IMAGE_HEADER_RMC_INTERFACE_VER_OFFSET            (0x4c)96#define MPI3_IMAGE_HEADER_ETP_INTERFACE_VER_OFFSET            (0x50)97#define MPI3_IMAGE_HEADER_COMPONENT_IMAGE_VER_OFFSET          (0x54)98#define MPI3_IMAGE_HEADER_HASH_EXCLUSION_OFFSET               (0x5c)99#define MPI3_IMAGE_HEADER_NEXT_IMAGE_HEADER_OFFSET_OFFSET     (0x7c)100#define MPI3_IMAGE_HEADER_SIZE                                (0x100)101#ifndef MPI3_CI_MANIFEST_MPI_MAX102#define MPI3_CI_MANIFEST_MPI_MAX                               (1)103#endif104struct mpi3_ci_manifest_mpi_comp_image_ref {105	__le32                                signature1;106	__le32                                reserved04[3];107	struct mpi3_comp_image_version            component_image_version;108	__le32                                component_image_version_string_offset;109	__le32                                crc;110};111 112struct mpi3_ci_manifest_mpi {113	u8                                       manifest_type;114	u8                                       reserved01[3];115	__le32                                   reserved04[3];116	u8                                       num_image_references;117	u8                                       release_level;118	__le16                                   reserved12;119	__le16                                   reserved14;120	__le16                                   flags;121	__le32                                   reserved18[2];122	__le16                                   vendor_id;123	__le16                                   device_id;124	__le16                                   subsystem_vendor_id;125	__le16                                   subsystem_id;126	__le32                                   reserved28[2];127	union mpi3_version_union                    package_security_version;128	__le32                                   reserved34;129	struct mpi3_comp_image_version               package_version;130	__le32                                   package_version_string_offset;131	__le32                                   package_build_date_string_offset;132	__le32                                   package_build_time_string_offset;133	__le32                                   reserved4c;134	__le32                                   diag_authorization_identifier[16];135	struct mpi3_ci_manifest_mpi_comp_image_ref   component_image_ref[MPI3_CI_MANIFEST_MPI_MAX];136};137 138#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_DEV                        (0x00)139#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_PREALPHA                   (0x10)140#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_ALPHA                      (0x20)141#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_BETA                       (0x30)142#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_RC                         (0x40)143#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_GCA                        (0x50)144#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_POINT                      (0x60)145#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTHORIZATION                 (0x01)146#define MPI3_CI_MANIFEST_MPI_SUBSYSTEMID_IGNORED                   (0xffff)147#define MPI3_CI_MANIFEST_MPI_PKG_VER_STR_OFF_UNSPECIFIED           (0x00000000)148#define MPI3_CI_MANIFEST_MPI_PKG_BUILD_DATE_STR_OFF_UNSPECIFIED    (0x00000000)149#define MPI3_CI_MANIFEST_MPI_PKG_BUILD_TIME_STR_OFF_UNSPECIFIED    (0x00000000)150union mpi3_ci_manifest {151	struct mpi3_ci_manifest_mpi               mpi;152	__le32                                dword[1];153};154 155#define MPI3_CI_MANIFEST_TYPE_MPI                                  (0x00)156struct mpi3_extended_image_header {157	u8                                image_type;158	u8                                reserved01[3];159	__le32                            checksum;160	__le32                            image_size;161	__le32                            next_image_header_offset;162	__le32                            reserved10[4];163	__le32                            identify_string[8];164};165 166#define MPI3_EXT_IMAGE_IMAGETYPE_OFFSET         (0x00)167#define MPI3_EXT_IMAGE_IMAGESIZE_OFFSET         (0x08)168#define MPI3_EXT_IMAGE_NEXTIMAGE_OFFSET         (0x0c)169#define MPI3_EXT_IMAGE_HEADER_SIZE              (0x40)170#define MPI3_EXT_IMAGE_TYPE_UNSPECIFIED             (0x00)171#define MPI3_EXT_IMAGE_TYPE_NVDATA                  (0x03)172#define MPI3_EXT_IMAGE_TYPE_SUPPORTED_DEVICES       (0x07)173#define MPI3_EXT_IMAGE_TYPE_ENCRYPTED_HASH          (0x09)174#define MPI3_EXT_IMAGE_TYPE_RDE                     (0x0a)175#define MPI3_EXT_IMAGE_TYPE_AUXILIARY_PROCESSOR     (0x0b)176#define MPI3_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC    (0x80)177#define MPI3_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC    (0xff)178struct mpi3_supported_device {179	__le16                     device_id;180	__le16                     vendor_id;181	__le16                     device_id_mask;182	__le16                     reserved06;183	u8                         low_pci_rev;184	u8                         high_pci_rev;185	__le16                     reserved0a;186	__le32                     reserved0c;187};188 189#ifndef MPI3_SUPPORTED_DEVICE_MAX190#define MPI3_SUPPORTED_DEVICE_MAX                      (1)191#endif192struct mpi3_supported_devices_data {193	u8                         image_version;194	u8                         reserved01;195	u8                         num_devices;196	u8                         reserved03;197	__le32                     reserved04;198	struct mpi3_supported_device   supported_device[MPI3_SUPPORTED_DEVICE_MAX];199};200 201#ifndef MPI3_PUBLIC_KEY_MAX202#define MPI3_PUBLIC_KEY_MAX                      (1)203#endif204struct mpi3_encrypted_hash_entry {205	u8                         hash_image_type;206	u8                         hash_algorithm;207	u8                         encryption_algorithm;208	u8                         flags;209	__le16                     public_key_size;210	__le16                     signature_size;211	__le32                     public_key[MPI3_PUBLIC_KEY_MAX];212};213#define MPI3_HASH_IMAGE_TYPE_KEY_WITH_HASH           (0x03)214#define MPI3_HASH_IMAGE_TYPE_KEY_WITH_HASH_1_OF_2    (0x04)215#define MPI3_HASH_IMAGE_TYPE_KEY_WITH_HASH_2_OF_2    (0x05)216#define MPI3_HASH_ALGORITHM_VERSION_MASK             (0xe0)217#define MPI3_HASH_ALGORITHM_VERSION_NONE             (0x00)218#define MPI3_HASH_ALGORITHM_VERSION_SHA1             (0x20)219#define MPI3_HASH_ALGORITHM_VERSION_SHA2             (0x40)220#define MPI3_HASH_ALGORITHM_VERSION_SHA3             (0x60)221#define MPI3_HASH_ALGORITHM_SIZE_MASK                (0x1f)222#define MPI3_HASH_ALGORITHM_SIZE_UNUSED              (0x00)223#define MPI3_HASH_ALGORITHM_SIZE_SHA256              (0x01)224#define MPI3_HASH_ALGORITHM_SIZE_SHA512              (0x02)225#define MPI3_HASH_ALGORITHM_SIZE_SHA384              (0x03)226#define MPI3_ENCRYPTION_ALGORITHM_UNUSED             (0x00)227#define MPI3_ENCRYPTION_ALGORITHM_RSA256             (0x01)228#define MPI3_ENCRYPTION_ALGORITHM_RSA512             (0x02)229#define MPI3_ENCRYPTION_ALGORITHM_RSA1024            (0x03)230#define MPI3_ENCRYPTION_ALGORITHM_RSA2048            (0x04)231#define MPI3_ENCRYPTION_ALGORITHM_RSA4096            (0x05)232#define MPI3_ENCRYPTION_ALGORITHM_RSA3072            (0x06)233 234/* hierarchical signature system (hss) */235#define MPI3_ENCRYPTION_ALGORITHM_ML_DSA_87	    (0x0b)236#define MPI3_ENCRYPTION_ALGORITHM_ML_DSA_65	    (0x0c)237#define MPI3_ENCRYPTION_ALGORITHM_ML_DSA_44	    (0x0d)238#define MPI3_ENCRYPTED_HASH_ENTRY_FLAGS_PAIRED_KEY_MASK		(0x0f)239 240#ifndef MPI3_ENCRYPTED_HASH_ENTRY_MAX241#define MPI3_ENCRYPTED_HASH_ENTRY_MAX               (1)242#endif243struct mpi3_encrypted_hash_data {244	u8                                  image_version;245	u8                                  num_hash;246	__le16                              reserved02;247	__le32                              reserved04;248	struct mpi3_encrypted_hash_entry        encrypted_hash_entry[MPI3_ENCRYPTED_HASH_ENTRY_MAX];249};250 251#ifndef MPI3_AUX_PROC_DATA_MAX252#define MPI3_AUX_PROC_DATA_MAX               (1)253#endif254struct mpi3_aux_processor_data {255	u8                         boot_method;256	u8                         num_load_addr;257	u8                         reserved02;258	u8                         type;259	__le32                     version;260	__le32                     load_address[8];261	__le32                     reserved28[22];262	__le32                     aux_processor_data[MPI3_AUX_PROC_DATA_MAX];263};264 265#define MPI3_AUX_PROC_DATA_OFFSET                                     (0x80)266#define MPI3_AUXPROCESSOR_BOOT_METHOD_MO_MSG                          (0x00)267#define MPI3_AUXPROCESSOR_BOOT_METHOD_MO_DOORBELL                     (0x01)268#define MPI3_AUXPROCESSOR_BOOT_METHOD_COMPONENT                       (0x02)269#define MPI3_AUXPROCESSOR_TYPE_ARM_A15                                (0x00)270#define MPI3_AUXPROCESSOR_TYPE_ARM_M0                                 (0x01)271#define MPI3_AUXPROCESSOR_TYPE_ARM_R4                                 (0x02)272#endif273