linux/drivers/scsi/mpt3sas/mpi/mpi2_image.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright 2016-2020 Broadcom Limited. All rights reserved.
 *
 *          Name: mpi2_image.h
 * Description: Contains definitions for firmware and other component images
 * Creation Date: 04/02/2018
 *       Version: 02.06.04
 *
 *
 * Version History
 * ---------------
 *
 * Date      Version   Description
 * --------  --------  ------------------------------------------------------
 * 08-01-18  02.06.00  Initial version for MPI 2.6.5.
 * 08-14-18  02.06.01  Corrected define for MPI26_IMAGE_HEADER_SIGNATURE0_MPI26
 * 08-28-18  02.06.02  Added MPI2_EXT_IMAGE_TYPE_RDE
 * 09-07-18  02.06.03  Added MPI26_EVENT_PCIE_TOPO_PI_16_LANES
 * 12-17-18  02.06.04  Addd MPI2_EXT_IMAGE_TYPE_PBLP
 *			Shorten some defines to be compatible with DOS
 * 06-24-19  02.06.05  Whitespace adjustments to help with identifier
 *			checking tool.
 * 10-02-19  02.06.06  Added MPI26_IMAGE_HEADER_SIG1_COREDUMP
 *                     Added MPI2_FLASH_REGION_COREDUMP
 */
#ifndef MPI2_IMAGE_H
#define MPI2_IMAGE_H


/*FW Image Header */
pMpi2FWImageHeader_t;

/*Signature field */
#define MPI2_FW_HEADER_SIGNATURE_OFFSET
#define MPI2_FW_HEADER_SIGNATURE_MASK
#define MPI2_FW_HEADER_SIGNATURE
#define MPI26_FW_HEADER_SIGNATURE

/*Signature0 field */
#define MPI2_FW_HEADER_SIGNATURE0_OFFSET
#define MPI2_FW_HEADER_SIGNATURE0
/*Last byte is defined by architecture */
#define MPI26_FW_HEADER_SIGNATURE0_BASE
#define MPI26_FW_HEADER_SIGNATURE0_ARC_0
#define MPI26_FW_HEADER_SIGNATURE0_ARC_1
#define MPI26_FW_HEADER_SIGNATURE0_ARC_2
/*legacy (0x5AEAA55A) */
#define MPI26_FW_HEADER_SIGNATURE0_ARC_3
#define MPI26_FW_HEADER_SIGNATURE0
#define MPI26_FW_HEADER_SIGNATURE0_3516
#define MPI26_FW_HEADER_SIGNATURE0_4008

/*Signature1 field */
#define MPI2_FW_HEADER_SIGNATURE1_OFFSET
#define MPI2_FW_HEADER_SIGNATURE1
#define MPI26_FW_HEADER_SIGNATURE1

/*Signature2 field */
#define MPI2_FW_HEADER_SIGNATURE2_OFFSET
#define MPI2_FW_HEADER_SIGNATURE2
#define MPI26_FW_HEADER_SIGNATURE2

/*defines for using the ProductID field */
#define MPI2_FW_HEADER_PID_TYPE_MASK
#define MPI2_FW_HEADER_PID_TYPE_SAS

#define MPI2_FW_HEADER_PID_PROD_MASK
#define MPI2_FW_HEADER_PID_PROD_A
#define MPI2_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI
#define MPI2_FW_HEADER_PID_PROD_IR_SCSI

#define MPI2_FW_HEADER_PID_FAMILY_MASK
/*SAS ProductID Family bits */
#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS
#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS
#define MPI25_FW_HEADER_PID_FAMILY_3108_SAS
#define MPI26_FW_HEADER_PID_FAMILY_3324_SAS
#define MPI26_FW_HEADER_PID_FAMILY_3516_SAS

/*use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */

/*use MPI2_IOCFACTS_CAPABILITY_ defines for IOCCapabilities field */

#define MPI2_FW_HEADER_IMAGESIZE_OFFSET
#define MPI2_FW_HEADER_NEXTIMAGE_OFFSET

#define MPI26_FW_HEADER_BOOTFLAGS_OFFSET
#define MPI2_FW_HEADER_BOOTFLAGS_ISSI32M_FLAG
#define MPI2_FW_HEADER_BOOTFLAGS_W25Q256JW_FLAG
/*This image has a auto-discovery version of SPI */
#define MPI2_FW_HEADER_BOOTFLAGS_AUTO_SPI_FLAG


#define MPI2_FW_HEADER_VERNMHWAT_OFFSET

#define MPI2_FW_HEADER_WHAT_SIGNATURE

#define MPI2_FW_HEADER_SIZE


/****************************************************************************
 *              Component Image Format and related defines                  *
 ****************************************************************************/

/*Maximum number of Hash Exclusion entries in a Component Image Header */
#define MPI26_COMP_IMG_HDR_NUM_HASH_EXCL

/*Hash Exclusion Format */
pMpi26HashExclusionFormat_t;

/*FW Image Header */
pMpi26ComponentImageHeader_t;


/**** Definitions for Signature0 field ****/
#define MPI26_IMAGE_HEADER_SIGNATURE0_MPI26

/**** Definitions for Signature1 field ****/
#define MPI26_IMAGE_HEADER_SIG1_APPLICATION
#define MPI26_IMAGE_HEADER_SIG1_CBB
#define MPI26_IMAGE_HEADER_SIG1_MFG
#define MPI26_IMAGE_HEADER_SIG1_BIOS
#define MPI26_IMAGE_HEADER_SIG1_HIIM
#define MPI26_IMAGE_HEADER_SIG1_HIIA
#define MPI26_IMAGE_HEADER_SIG1_CPLD
#define MPI26_IMAGE_HEADER_SIG1_SPD
#define MPI26_IMAGE_HEADER_SIG1_NVDATA
#define MPI26_IMAGE_HEADER_SIG1_GAS_GAUGE
#define MPI26_IMAGE_HEADER_SIG1_PBLP
/* little-endian "DUMP" */
#define MPI26_IMAGE_HEADER_SIG1_COREDUMP

/**** Definitions for Signature2 field ****/
#define MPI26_IMAGE_HEADER_SIGNATURE2_VALUE

/**** Offsets for Image Header Fields ****/
#define MPI26_IMAGE_HEADER_SIGNATURE0_OFFSET
#define MPI26_IMAGE_HEADER_LOAD_ADDRESS_OFFSET
#define MPI26_IMAGE_HEADER_DATA_SIZE_OFFSET
#define MPI26_IMAGE_HEADER_START_ADDRESS_OFFSET
#define MPI26_IMAGE_HEADER_SIGNATURE1_OFFSET
#define MPI26_IMAGE_HEADER_FLASH_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_FLASH_SIZE_OFFSET
#define MPI26_IMAGE_HEADER_VERSION_STRING_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_BUILD_DATE_STRING_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_BUILD_TIME_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_ENVIROMENT_VAR_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_APPLICATION_SPECIFIC_OFFSET
#define MPI26_IMAGE_HEADER_SIGNATURE2_OFFSET
#define MPI26_IMAGE_HEADER_HEADER_SIZE_OFFSET
#define MPI26_IMAGE_HEADER_CRC_OFFSET
#define MPI26_IMAGE_HEADER_NOT_FLASH_IMAGE_OFFSET
#define MPI26_IMAGE_HEADER_COMPRESSED_OFFSET
#define MPI26_IMAGE_HEADER_SECONDARY_FLASH_OFFSET_OFFSET
#define MPI26_IMAGE_HEADER_RMC_INTERFACE_VER_OFFSET
#define MPI26_IMAGE_HEADER_COMPONENT_IMAGE_VER_OFFSET
#define MPI26_IMAGE_HEADER_HASH_EXCLUSION_OFFSET
#define MPI26_IMAGE_HEADER_NEXT_IMAGE_HEADER_OFFSET_OFFSET


#define MPI26_IMAGE_HEADER_SIZE


/*Extended Image Header */
pMpi2ExtImageHeader_t;

/*useful offsets */
#define MPI2_EXT_IMAGE_IMAGETYPE_OFFSET
#define MPI2_EXT_IMAGE_IMAGESIZE_OFFSET
#define MPI2_EXT_IMAGE_NEXTIMAGE_OFFSET
#define MPI2_EXT_IMAGE_PACKAGEVERSION_OFFSET

#define MPI2_EXT_IMAGE_HEADER_SIZE

/*defines for the ImageType field */
#define MPI2_EXT_IMAGE_TYPE_UNSPECIFIED
#define MPI2_EXT_IMAGE_TYPE_FW
#define MPI2_EXT_IMAGE_TYPE_NVDATA
#define MPI2_EXT_IMAGE_TYPE_BOOTLOADER
#define MPI2_EXT_IMAGE_TYPE_INITIALIZATION
#define MPI2_EXT_IMAGE_TYPE_FLASH_LAYOUT
#define MPI2_EXT_IMAGE_TYPE_SUPPORTED_DEVICES
#define MPI2_EXT_IMAGE_TYPE_MEGARAID
#define MPI2_EXT_IMAGE_TYPE_ENCRYPTED_HASH
#define MPI2_EXT_IMAGE_TYPE_RDE
#define MPI2_EXT_IMAGE_TYPE_PBLP
#define MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC
#define MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC

#define MPI2_EXT_IMAGE_TYPE_MAX

/*FLASH Layout Extended Image Data */

/*
 *Host code (drivers, BIOS, utilities, etc.) should check NumberOfLayouts and
 *RegionsPerLayout at runtime before using Layout[] and Region[].
 */

pMpi2FlashRegion_t;

pMpi2FlashLayout_t;

pMpi2FlashLayoutData_t;

/*defines for the RegionType field */
#define MPI2_FLASH_REGION_UNUSED
#define MPI2_FLASH_REGION_FIRMWARE
#define MPI2_FLASH_REGION_BIOS
#define MPI2_FLASH_REGION_NVDATA
#define MPI2_FLASH_REGION_FIRMWARE_BACKUP
#define MPI2_FLASH_REGION_MFG_INFORMATION
#define MPI2_FLASH_REGION_CONFIG_1
#define MPI2_FLASH_REGION_CONFIG_2
#define MPI2_FLASH_REGION_MEGARAID
#define MPI2_FLASH_REGION_COMMON_BOOT_BLOCK
#define MPI2_FLASH_REGION_INIT
#define MPI2_FLASH_REGION_CBB_BACKUP
#define MPI2_FLASH_REGION_SBR
#define MPI2_FLASH_REGION_SBR_BACKUP
#define MPI2_FLASH_REGION_HIIM
#define MPI2_FLASH_REGION_HIIA
#define MPI2_FLASH_REGION_CTLR
#define MPI2_FLASH_REGION_IMR_FIRMWARE
#define MPI2_FLASH_REGION_MR_NVDATA
#define MPI2_FLASH_REGION_CPLD
#define MPI2_FLASH_REGION_PSOC
#define MPI2_FLASH_REGION_COREDUMP

/*ImageRevision */
#define MPI2_FLASH_LAYOUT_IMAGE_REVISION

/*Supported Devices Extended Image Data */

/*
 *Host code (drivers, BIOS, utilities, etc.) should check NumberOfDevices at
 *runtime before using SupportedDevice[].
 */

pMpi2SupportedDevice_t;

pMpi2SupportedDevicesData_t;

/*ImageRevision */
#define MPI2_SUPPORTED_DEVICES_IMAGE_REVISION

/*Init Extended Image Data */

pMpi2InitImageFooter_t;

/*defines for the BootFlags field */
#define MPI2_INIT_IMAGE_BOOTFLAGS_OFFSET

/*defines for the ImageSize field */
#define MPI2_INIT_IMAGE_IMAGESIZE_OFFSET

/*defines for the Signature0 field */
#define MPI2_INIT_IMAGE_SIGNATURE0_OFFSET
#define MPI2_INIT_IMAGE_SIGNATURE0

/*defines for the Signature1 field */
#define MPI2_INIT_IMAGE_SIGNATURE1_OFFSET
#define MPI2_INIT_IMAGE_SIGNATURE1

/*defines for the Signature2 field */
#define MPI2_INIT_IMAGE_SIGNATURE2_OFFSET
#define MPI2_INIT_IMAGE_SIGNATURE2

/*Signature fields as individual bytes */
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_0
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_1
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_2
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_3

#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_4
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_5
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_6
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_7

#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_8
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_9
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_A
#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_B

/*defines for the ResetVector field */
#define MPI2_INIT_IMAGE_RESETVECTOR_OFFSET


/* Encrypted Hash Extended Image Data */

pMpi25EncryptedHashEntry_t;

/* values for HashImageType */
#define MPI25_HASH_IMAGE_TYPE_UNUSED
#define MPI25_HASH_IMAGE_TYPE_FIRMWARE
#define MPI25_HASH_IMAGE_TYPE_BIOS

#define MPI26_HASH_IMAGE_TYPE_UNUSED
#define MPI26_HASH_IMAGE_TYPE_FIRMWARE
#define MPI26_HASH_IMAGE_TYPE_BIOS
#define MPI26_HASH_IMAGE_TYPE_KEY_HASH

/* values for HashAlgorithm */
#define MPI25_HASH_ALGORITHM_UNUSED
#define MPI25_HASH_ALGORITHM_SHA256

#define MPI26_HASH_ALGORITHM_VER_MASK
#define MPI26_HASH_ALGORITHM_VER_NONE
#define MPI26_HASH_ALGORITHM_VER_SHA1
#define MPI26_HASH_ALGORITHM_VER_SHA2
#define MPI26_HASH_ALGORITHM_VER_SHA3
#define MPI26_HASH_ALGORITHM_SIZE_MASK
#define MPI26_HASH_ALGORITHM_SIZE_256
#define MPI26_HASH_ALGORITHM_SIZE_512


/* values for EncryptionAlgorithm */
#define MPI25_ENCRYPTION_ALG_UNUSED
#define MPI25_ENCRYPTION_ALG_RSA256

#define MPI26_ENCRYPTION_ALG_UNUSED
#define MPI26_ENCRYPTION_ALG_RSA256
#define MPI26_ENCRYPTION_ALG_RSA512
#define MPI26_ENCRYPTION_ALG_RSA1024
#define MPI26_ENCRYPTION_ALG_RSA2048
#define MPI26_ENCRYPTION_ALG_RSA4096

pMpi25EncryptedHashData_t;


#endif /* MPI2_IMAGE_H */