#endif
        } adapterOperations3;
 
-       u8          pad[0x800-0x7EC];
+       struct {
+#if defined(__BIG_ENDIAN_BITFIELD)
+       u8 reserved:7;
+       /* Indicates whether the CPLD image is part of
+        *  the package and stored in flash
+        */
+       u8 cpld_in_flash:1;
+#else
+       u8 cpld_in_flash:1;
+       u8 reserved:7;
+#endif
+       u8 reserved1[3];
+       /* Null terminated string. Has the version
+        *  information if cpld_in_flash = FALSE
+        */
+       u8 userCodeDefinition[12];
+       } cpld;  /* Valid only if upgradableCPLD is TRUE */
+
+       struct {
+       #if defined(__BIG_ENDIAN_BITFIELD)
+               u16 reserved:8;
+               u16 fw_swaps_bbu_vpd_info:1;
+               u16 support_pd_map_target_id:1;
+               u16 support_ses_ctrl_in_multipathcfg:1;
+               u16 image_upload_supported:1;
+               u16 support_encrypted_mfc:1;
+               u16 supported_enc_algo:1;
+               u16 support_ibutton_less:1;
+               u16 ctrl_info_ext_supported:1;
+       #else
+
+               u16 ctrl_info_ext_supported:1;
+               u16 support_ibutton_less:1;
+               u16 supported_enc_algo:1;
+               u16 support_encrypted_mfc:1;
+               u16 image_upload_supported:1;
+               /* FW supports LUN based association and target port based */
+               u16 support_ses_ctrl_in_multipathcfg:1;
+               /* association for the SES device connected in multipath mode */
+               /* FW defines Jbod target Id within MR_PD_CFG_SEQ */
+               u16 support_pd_map_target_id:1;
+               /* FW swaps relevant fields in MR_BBU_VPD_INFO_FIXED to
+                *  provide the data in little endian order
+                */
+               u16 fw_swaps_bbu_vpd_info:1;
+               u16 reserved:8;
+       #endif
+               } adapter_operations4;
+       u8 pad[0x800-0x7FE]; /* 0x7FE pad to 2K for expansion */
 } __packed;
 
 /*
 typedef union _MFI_CAPABILITIES {
        struct {
 #if   defined(__BIG_ENDIAN_BITFIELD)
-               u32     reserved:20;
-               u32     support_qd_throttling:1;
-               u32     support_fp_rlbypass:1;
-               u32     support_vfid_in_ioframe:1;
-               u32     support_ext_io_size:1;
-               u32     support_ext_queue_depth:1;
-               u32     security_protocol_cmds_fw:1;
-               u32     support_core_affinity:1;
-               u32     support_ndrive_r1_lb:1;
-               u32     support_max_255lds:1;
-               u32     support_fastpath_wb:1;
-               u32     support_additional_msix:1;
-               u32     support_fp_remote_lun:1;
+       u32     reserved:19;
+       u32 support_pd_map_target_id:1;
+       u32     support_qd_throttling:1;
+       u32     support_fp_rlbypass:1;
+       u32     support_vfid_in_ioframe:1;
+       u32     support_ext_io_size:1;
+       u32             support_ext_queue_depth:1;
+       u32     security_protocol_cmds_fw:1;
+       u32     support_core_affinity:1;
+       u32     support_ndrive_r1_lb:1;
+       u32             support_max_255lds:1;
+       u32             support_fastpath_wb:1;
+       u32     support_additional_msix:1;
+       u32     support_fp_remote_lun:1;
 #else
-               u32     support_fp_remote_lun:1;
-               u32     support_additional_msix:1;
-               u32     support_fastpath_wb:1;
-               u32     support_max_255lds:1;
-               u32     support_ndrive_r1_lb:1;
-               u32     support_core_affinity:1;
-               u32     security_protocol_cmds_fw:1;
-               u32     support_ext_queue_depth:1;
-               u32     support_ext_io_size:1;
-               u32     support_vfid_in_ioframe:1;
-               u32     support_fp_rlbypass:1;
-               u32     support_qd_throttling:1;
-               u32     reserved:20;
+       u32     support_fp_remote_lun:1;
+       u32     support_additional_msix:1;
+       u32             support_fastpath_wb:1;
+       u32             support_max_255lds:1;
+       u32     support_ndrive_r1_lb:1;
+       u32     support_core_affinity:1;
+       u32     security_protocol_cmds_fw:1;
+       u32             support_ext_queue_depth:1;
+       u32     support_ext_io_size:1;
+       u32     support_vfid_in_ioframe:1;
+       u32     support_fp_rlbypass:1;
+       u32     support_qd_throttling:1;
+       u32     support_pd_map_target_id:1;
+       u32     reserved:19;
 #endif
        } mfi_capabilities;
        __le32          reg;
        u32 crash_dump_drv_support;
        u32 crash_dump_app_support;
        u32 secure_jbod_support;
+       u32 support_morethan256jbod; /* FW support for more than 256 PD/JBOD */
        bool use_seqnum_jbod_fp;   /* Added for PD sequence */
        spinlock_t crashdump_lock;