2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/*
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * fusion.h
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald *
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Solaris MegaRAID device driver for SAS2.0 controllers
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Copyright (c) 2008-2012, LSI Logic Corporation.
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * All rights reserved.
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald *
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Version:
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Author:
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Swaminathan K S
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Arun Chandrashekhar
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Manju R
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Rasheed
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * Shakeel Bukhari
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#ifndef _FUSION_H_
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define _FUSION_H_
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define U64 uint64_t
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define U32 uint32_t
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define U16 uint16_t
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define U8 uint8_t
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define S8 char
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define S16 short
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define S32 int
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* MPI2 defines */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_REPLY_POST_HOST_INDEX_OFFSET (0x6C)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_FUNCTION_IOC_INIT (0x02) /* IOC Init */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WHOINIT_HOST_DRIVER (0x04)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MAJOR (0x02)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MINOR (0x00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MAJOR_MASK (0xFF00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MAJOR_SHIFT (8)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MINOR_MASK (0x00FF)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION_MINOR_SHIFT (0)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_VERSION ((MPI2_VERSION_MAJOR << MPI2_VERSION_MAJOR_SHIFT) | \
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_VERSION_MINOR)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_UNIT (0x10)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_DEV (0x00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_UNIT_MASK (0xFF00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_UNIT_SHIFT (8)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_DEV_MASK (0x00FF)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION_DEV_SHIFT (0)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_HEADER_VERSION ((MPI2_HEADER_VERSION_UNIT \
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald << 8) | \
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_HEADER_VERSION_DEV)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG (0x8000)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG (0x0400)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP (0x0003)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG (0x0200)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD (0x0100)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP (0x0004)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_FUNCTION_SCSI_IO_REQUEST (0x00) /* SCSI IO */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x06)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO (0x00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SGE_FLAGS_64_BIT_ADDRESSING (0x02)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_CONTROL_WRITE (0x01000000)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_SCSIIO_CONTROL_READ (0x02000000)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_MASK (0x0E)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_RPY_DESCRIPT_FLAGS_UNUSED (0x0F)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_RPY_DESCRIPT_FLAGS_SCSI_IO_SUCCESS (0x00)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK (0x0F)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_FLUSH_KEY_VALUE (0x0)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRITE_SEQUENCE_OFFSET (0x00000004)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_1ST_KEY_VALUE (0xF)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_2ND_KEY_VALUE (0x4)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_3RD_KEY_VALUE (0xB)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_4TH_KEY_VALUE (0x2)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_5TH_KEY_VALUE (0x7)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_WRSEQ_6TH_KEY_VALUE (0xD)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* Invader defines */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_TYPE_CUDA 0x2
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH 0x4000
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_RL_FLAGS_GRANT_DESTINATION_CPU0 0x00
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_RL_FLAGS_GRANT_DESTINATION_CPU1 0x10
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_RL_FLAGS_GRANT_DESTINATION_CUDA 0x80
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_RL_FLAGS_SEQ_NUM_ENABLE 0x8
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_NSEG_FLAGS_SHIFT 4
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_PD_INVALID 0xFFFF
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_SPAN_DEPTH 8
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_SPAN_DEPTH (MAX_SPAN_DEPTH)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_ROW_SIZE 32
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_ROW_SIZE (MAX_ROW_SIZE)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_LOGICAL_DRIVES 64
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_LOGICAL_DRIVES (MAX_LOGICAL_DRIVES)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_VIEWS (MAX_LOGICAL_DRIVES)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_ARRAYS 128
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_ARRAYS (MAX_ARRAYS)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_PHYSICAL_DEVICES 256
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* get the mapping information of LD */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MR_DCMD_LD_MAP_GET_INFO 0x0300e101
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#ifndef MPI2_POINTER
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#define MPI2_POINTER *
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#endif
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#pragma pack(1)
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI25_IEEE_SGE_CHAIN64
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 Address;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Length;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 NextChainOffset;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Flags;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI25_IEEE_SGE_CHAIN64, MPI2_POINTER PTR_MPI25_IEEE_SGE_CHAIN64,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi25IeeeSgeChain64_t, MPI2_POINTER pMpi25IeeeSgeChain64_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_SGE_SIMPLE_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 FlagsLength;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald union
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Address32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 Address64;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } u1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SGE_SIMPLE_UNION, MPI2_POINTER PTR_MPI2_SGE_SIMPLE_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SGESimpleUnion_t, MPI2_POINTER pMpi2SGESimpleUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 CDB[20]; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 PrimaryReferenceTag; /* 0x14 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 PrimaryApplicationTag; /* 0x18 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 PrimaryApplicationTagMask; /* 0x1A */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 TransferLength; /* 0x1C */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SCSI_IO_CDB_EEDP32, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_EEDP32,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2ScsiIoCdbEedp32_t, MPI2_POINTER pMpi2ScsiIoCdbEedp32_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_SGE_CHAIN_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Length;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 NextChainOffset;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Flags;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald union
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Address32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 Address64;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } u1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SGE_CHAIN_UNION, MPI2_POINTER PTR_MPI2_SGE_CHAIN_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SGEChainUnion_t, MPI2_POINTER pMpi2SGEChainUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_IEEE_SGE_SIMPLE32
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Address;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 FlagsLength;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_IEEE_SGE_SIMPLE32, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE32,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2IeeeSgeSimple32_t, MPI2_POINTER pMpi2IeeeSgeSimple32_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_IEEE_SGE_SIMPLE64
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 Address;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Length;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Reserved2;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Flags;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_IEEE_SGE_SIMPLE64, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE64,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2IeeeSgeSimple64_t, MPI2_POINTER pMpi2IeeeSgeSimple64_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef union _MPI2_IEEE_SGE_SIMPLE_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_SIMPLE32 Simple32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_SIMPLE64 Simple64;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_IEEE_SGE_SIMPLE_UNION, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2IeeeSgeSimpleUnion_t, MPI2_POINTER pMpi2IeeeSgeSimpleUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef MPI2_IEEE_SGE_SIMPLE32 MPI2_IEEE_SGE_CHAIN32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef MPI2_IEEE_SGE_SIMPLE64 MPI2_IEEE_SGE_CHAIN64;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef union _MPI2_IEEE_SGE_CHAIN_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_CHAIN32 Chain32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_CHAIN64 Chain64;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_IEEE_SGE_CHAIN_UNION, MPI2_POINTER PTR_MPI2_IEEE_SGE_CHAIN_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2IeeeSgeChainUnion_t, MPI2_POINTER pMpi2IeeeSgeChainUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef union _MPI2_SGE_IO_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_SGE_SIMPLE_UNION MpiSimple;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_SGE_CHAIN_UNION MpiChain;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_IEEE_SGE_CHAIN_UNION IeeeChain;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SGE_IO_UNION, MPI2_POINTER PTR_MPI2_SGE_IO_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SGEIOUnion_t, MPI2_POINTER pMpi2SGEIOUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef union
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 CDB32[32];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_SCSI_IO_CDB_EEDP32 EEDP32;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_SGE_SIMPLE_UNION SGE;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SCSI_IO_CDB_UNION, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2ScsiIoCdb_t, MPI2_POINTER pMpi2ScsiIoCdb_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* Default Request Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 RequestFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 LMID; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 DescriptorTypeDependent; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_DEFAULT_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_DEFAULT_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2DefaultRequestDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2DefaultRequestDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* High Priority Request Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 RequestFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 LMID; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved1; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2HighPriorityRequestDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2HighPriorityRequestDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* SCSI IO Request Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_SCSI_IO_REQUEST_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 RequestFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 LMID; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 DevHandle; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SCSI_IO_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_SCSI_IO_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SCSIIORequestDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2SCSIIORequestDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* SCSI Target Request Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 RequestFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 LMID; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 IoIndex; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SCSITargetRequestDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2SCSITargetRequestDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* RAID Accelerator Request Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 RequestFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 LMID; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2RAIDAcceleratorRequestDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2RAIDAcceleratorRequestDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* Default Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_DEFAULT_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 DescriptorTypeDependent1; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 DescriptorTypeDependent2; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_DEFAULT_REPLY_DESCRIPTOR, MPI2_POINTER PTR_MPI2_DEFAULT_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2DefaultReplyDescriptor_t, MPI2_POINTER pMpi2DefaultReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* Address Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_ADDRESS_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 ReplyFrameAddress; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_ADDRESS_REPLY_DESCRIPTOR, MPI2_POINTER PTR_MPI2_ADDRESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2AddressReplyDescriptor_t, MPI2_POINTER pMpi2AddressReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* SCSI IO Success Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 TaskTag; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved1; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2SCSIIOSuccessReplyDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2SCSIIOSuccessReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* TargetAssist Success Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 SequenceNumber; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Reserved1; /* 0x05 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 IoIndex; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2TargetAssistSuccessReplyDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2TargetAssistSuccessReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* Target Command Buffer Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 VP_ID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Flags; /* 0x03 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 InitiatorDevHandle; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 IoIndex; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2TargetCommandBufferReplyDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2TargetCommandBufferReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* RAID Accelerator Success Reply Descriptor */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ReplyFlags; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MSIxIndex; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SMID; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Reserved; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER PTR_MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2RAIDAcceleratorSuccessReplyDescriptor_t,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_POINTER pMpi2RAIDAcceleratorSuccessReplyDescriptor_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* union of Reply Descriptors */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef union _MPI2_REPLY_DESCRIPTORS_UNION
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_DEFAULT_REPLY_DESCRIPTOR Default;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_ADDRESS_REPLY_DESCRIPTOR AddressReply;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR SCSIIOSuccess;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR TargetAssistSuccess;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR TargetCommandBuffer;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR RAIDAcceleratorSuccess;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 Words;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_REPLY_DESCRIPTORS_UNION, MPI2_POINTER PTR_MPI2_REPLY_DESCRIPTORS_UNION,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2ReplyDescriptorsUnion_t, MPI2_POINTER pMpi2ReplyDescriptorsUnion_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald/* IOCInit Request message */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MPI2_IOC_INIT_REQUEST
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald{
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 WhoInit; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Reserved1; /* 0x01 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ChainOffset; /* 0x02 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Function; /* 0x03 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved2; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Reserved3; /* 0x06 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 MsgFlags; /* 0x07 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 VP_ID; /* 0x08 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 VF_ID; /* 0x09 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved4; /* 0x0A */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 MsgVersion; /* 0x0C */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 HeaderVersion; /* 0x0E */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Reserved5; /* 0x10 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved6; /* 0x14 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 Reserved7; /* 0x16 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 HostMSIxVectors; /* 0x17 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 Reserved8; /* 0x18 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 SystemRequestFrameSize; /* 0x1A */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 ReplyDescriptorPostQueueDepth; /* 0x1C */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 ReplyFreeQueueDepth; /* 0x1E */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 SenseBufferAddressHigh; /* 0x20 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 SystemReplyAddressHigh; /* 0x24 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 SystemRequestFrameBaseAddress; /* 0x28 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 ReplyDescriptorPostQueueAddress; /* 0x30 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 ReplyFreeQueueAddress; /* 0x38 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 TimeStamp; /* 0x40 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MPI2_IOC_INIT_REQUEST, MPI2_POINTER PTR_MPI2_IOC_INIT_REQUEST,
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald Mpi2IOCInitRequest_t, MPI2_POINTER pMpi2IOCInitRequest_t;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_DEV_HANDLE_INFO {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* Send bitmap of LDs that are idle with respect to FP */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 curDevHdl;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* bitmap of valid device handles. */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 validHandles;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 reserved;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x04 dev handles for all the paths. */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 devHandle[2];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_DEV_HANDLE_INFO; /* 0x08, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_ARRAY_INFO {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 pd[MAX_RAIDMAP_ROW_SIZE];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_ARRAY_INFO; /* 0x40, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_QUAD_ELEMENT {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 logStart; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 logEnd; /* 0x08 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 offsetInSpan; /* 0x10 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 diff; /* 0x18 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved1; /* 0x1C */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_QUAD_ELEMENT; /* 0x20, Total size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_SPAN_INFO {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 noElements; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved1; /* 0x04 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_QUAD_ELEMENT quads[MAX_RAIDMAP_SPAN_DEPTH]; /* 0x08 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_SPAN_INFO; /* 0x108, Total size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_LD_SPAN_ { /* SPAN structure */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x00, starting block number in array */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 startBlk;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x08, number of blocks */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 numBlks;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x10, array reference */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 arrayRef;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 reserved[6]; /* 0x12 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_LD_SPAN; /* 0x18, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_SPAN_BLOCK_INFO {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* number of rows/span */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 num_rows;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_LD_SPAN span; /* 0x08 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_SPAN_INFO block_span_info; /* 0x20 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_SPAN_BLOCK_INFO; /* 0x128, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_LD_RAID {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald struct {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 fpCapable :1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved5 :3;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 ldPiMode :4;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 pdPiMode :4;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* FDE or controller encryption (MR_LD_ENCRYPTION_TYPE) */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 encryptionType :8;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 fpWriteCapable :1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 fpReadCapable :1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 fpWriteAcrossStripe:1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 fpReadAcrossStripe:1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved4 :8;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } capability; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved6;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 size; /* 0x08, LD size in blocks */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 spanDepth; /* 0x10, Total Number of Spans */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 level; /* 0x11, RAID level */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x12, shift-count to get stripe size (0=512, 1=1K, 7=64K, etc.) */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 stripeShift;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 rowSize; /* 0x13, number of disks in a row */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x14, number of data disks in a row */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 rowDataSize;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 writeMode; /* 0x15, WRITE_THROUGH or WRITE_BACK */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x16, To differentiate between RAID1 and RAID1E */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 PRL;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 SRL; /* 0x17 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 targetId; /* 0x18, ld Target Id. */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x1a, state of ld, state corresponds to MR_LD_STATE */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ldState;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x1b, Pre calculate region type requests based on MFC etc.. */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 regTypeReqOnWrite;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 modFactor; /* 0x1c, same as rowSize */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /*
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * 0x1d, region lock type used for read, valid only if
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * regTypeOnReadIsValid=1
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 regTypeReqOnRead;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 seqNum; /* 0x1e, LD sequence number */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald struct {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* This LD requires sync command before completing */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 ldSyncRequired:1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved:31;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } flags; /* 0x20 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 reserved3[0x5C]; /* 0x24 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_LD_RAID; /* 0x80, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_LD_SPAN_MAP {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_LD_RAID ldRaid; /* 0x00 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x80, needed for GET_ARM() - R0/1/5 only. */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 dataArmMap[MAX_RAIDMAP_ROW_SIZE];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_SPAN_BLOCK_INFO spanBlock[MAX_RAIDMAP_SPAN_DEPTH]; /* 0xA0 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} MR_LD_SPAN_MAP; /* 0x9E0 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _MR_FW_RAID_MAP {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* total size of this structure, including this field */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 totalSize;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald union {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* Simple method of version checking variables */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald struct {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 maxLd;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 maxSpanDepth;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 maxRowSize;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 maxPdCount;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 maxArrays;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } validationInfo;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 version[5];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 reserved1[5];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald } u1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 ldCount; /* count of lds */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 Reserved1;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /*
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * 0x20 This doesn't correspond to
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * FW Ld Tgt Id to LD, but will purge. For example: if tgt Id is 4
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * and FW LD is 2, and there is only one LD, FW will populate the
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * array like this. [0xFF, 0xFF, 0xFF, 0xFF, 0x0.....]. This is to
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * help reduce the entire structure size if there are few LDs or
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald * driver is looking info for 1 LD only.
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ldTgtIdToLd[MAX_RAIDMAP_LOGICAL_DRIVES+ \
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MAX_RAIDMAP_VIEWS]; /* 0x20 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* timeout value used by driver in FP IOs */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 fpPdIoTimeoutSec;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 reserved2[7];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_ARRAY_INFO arMapInfo[MAX_RAIDMAP_ARRAYS]; /* 0x00a8 */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_DEV_HANDLE_INFO devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald /* 0x28a8-[0 -MAX_RAIDMAP_LOGICAL_DRIVES+MAX_RAIDMAP_VIEWS+1]; */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald MR_LD_SPAN_MAP ldSpanMap[1];
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald}MR_FW_RAID_MAP; /* 0x3288, Total Size */
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldtypedef struct _LD_TARGET_SYNC {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ldTargetId;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 reserved;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 seqNum;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald} LD_TARGET_SYNC;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#pragma pack()
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonaldstruct IO_REQUEST_INFO {
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 ldStartBlock;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U32 numBlocks;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 ldTgtId;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 isRead;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U16 devHandle;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U64 pdBlock;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 fpOkForIo;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald U8 ldPI;
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald};
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald
2ffc8bca2d4d633ffdea78ed925cd1ca63584844Dan McDonald#endif /* _FUSION_H_ */