drivers/scsi/mpt3sas/mpi/mpi2_image.h

Source file repositories/reference/linux-study-clean/drivers/scsi/mpt3sas/mpi/mpi2_image.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/mpt3sas/mpi/mpi2_image.h
Extension
.h
Size
19390 bytes
Lines
503
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef MPI2_IMAGE_H
#define MPI2_IMAGE_H


/*FW Image Header */
typedef struct _MPI2_FW_IMAGE_HEADER {
	U32 Signature;		/*0x00 */
	U32 Signature0;		/*0x04 */
	U32 Signature1;		/*0x08 */
	U32 Signature2;		/*0x0C */
	MPI2_VERSION_UNION MPIVersion;	/*0x10 */
	MPI2_VERSION_UNION FWVersion;	/*0x14 */
	MPI2_VERSION_UNION NVDATAVersion;	/*0x18 */
	MPI2_VERSION_UNION PackageVersion;	/*0x1C */
	U16 VendorID;		/*0x20 */
	U16 ProductID;		/*0x22 */
	U16 ProtocolFlags;	/*0x24 */
	U16 Reserved26;		/*0x26 */
	U32 IOCCapabilities;	/*0x28 */
	U32 ImageSize;		/*0x2C */
	U32 NextImageHeaderOffset;	/*0x30 */
	U32 Checksum;		/*0x34 */
	U32 Reserved38;		/*0x38 */
	U32 Reserved3C;		/*0x3C */
	U32 Reserved40;		/*0x40 */
	U32 Reserved44;		/*0x44 */
	U32 Reserved48;		/*0x48 */
	U32 Reserved4C;		/*0x4C */
	U32 Reserved50;		/*0x50 */
	U32 Reserved54;		/*0x54 */
	U32 Reserved58;		/*0x58 */
	U32 Reserved5C;		/*0x5C */
	U32 BootFlags;		/*0x60 */
	U32 FirmwareVersionNameWhat;	/*0x64 */
	U8 FirmwareVersionName[32];	/*0x68 */
	U32 VendorNameWhat;	/*0x88 */
	U8 VendorName[32];	/*0x8C */
	U32 PackageNameWhat;	/*0x88 */
	U8 PackageName[32];	/*0x8C */
	U32 ReservedD0;		/*0xD0 */
	U32 ReservedD4;		/*0xD4 */
	U32 ReservedD8;		/*0xD8 */
	U32 ReservedDC;		/*0xDC */
	U32 ReservedE0;		/*0xE0 */
	U32 ReservedE4;		/*0xE4 */
	U32 ReservedE8;		/*0xE8 */
	U32 ReservedEC;		/*0xEC */
	U32 ReservedF0;		/*0xF0 */
	U32 ReservedF4;		/*0xF4 */
	U32 ReservedF8;		/*0xF8 */
	U32 ReservedFC;		/*0xFC */
} MPI2_FW_IMAGE_HEADER, *PTR_MPI2_FW_IMAGE_HEADER,
	Mpi2FWImageHeader_t, *pMpi2FWImageHeader_t;

/*Signature field */
#define MPI2_FW_HEADER_SIGNATURE_OFFSET         (0x00)
#define MPI2_FW_HEADER_SIGNATURE_MASK           (0xFF000000)
#define MPI2_FW_HEADER_SIGNATURE                (0xEA000000)
#define MPI26_FW_HEADER_SIGNATURE               (0xEB000000)

/*Signature0 field */
#define MPI2_FW_HEADER_SIGNATURE0_OFFSET        (0x04)
#define MPI2_FW_HEADER_SIGNATURE0               (0x5AFAA55A)
/*Last byte is defined by architecture */
#define MPI26_FW_HEADER_SIGNATURE0_BASE         (0x5AEAA500)
#define MPI26_FW_HEADER_SIGNATURE0_ARC_0        (0x5A)
#define MPI26_FW_HEADER_SIGNATURE0_ARC_1        (0x00)
#define MPI26_FW_HEADER_SIGNATURE0_ARC_2        (0x01)
/*legacy (0x5AEAA55A) */
#define MPI26_FW_HEADER_SIGNATURE0_ARC_3        (0x02)
#define MPI26_FW_HEADER_SIGNATURE0 \
	(MPI26_FW_HEADER_SIGNATURE0_BASE+MPI26_FW_HEADER_SIGNATURE0_ARC_0)
#define MPI26_FW_HEADER_SIGNATURE0_3516 \
	(MPI26_FW_HEADER_SIGNATURE0_BASE+MPI26_FW_HEADER_SIGNATURE0_ARC_1)
#define MPI26_FW_HEADER_SIGNATURE0_4008 \
	(MPI26_FW_HEADER_SIGNATURE0_BASE+MPI26_FW_HEADER_SIGNATURE0_ARC_3)

/*Signature1 field */
#define MPI2_FW_HEADER_SIGNATURE1_OFFSET        (0x08)
#define MPI2_FW_HEADER_SIGNATURE1               (0xA55AFAA5)
#define MPI26_FW_HEADER_SIGNATURE1              (0xA55AEAA5)

/*Signature2 field */
#define MPI2_FW_HEADER_SIGNATURE2_OFFSET        (0x0C)
#define MPI2_FW_HEADER_SIGNATURE2               (0x5AA55AFA)
#define MPI26_FW_HEADER_SIGNATURE2              (0x5AA55AEA)

/*defines for using the ProductID field */
#define MPI2_FW_HEADER_PID_TYPE_MASK            (0xF000)
#define MPI2_FW_HEADER_PID_TYPE_SAS             (0x2000)

Annotation

Implementation Notes