aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/megaraid/megaraid_sas_fusion.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/megaraid/megaraid_sas_fusion.h')
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_fusion.h36
1 files changed, 34 insertions, 2 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
index ced6dc0cf8e8..473005c99b44 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
@@ -35,8 +35,13 @@
35#define _MEGARAID_SAS_FUSION_H_ 35#define _MEGARAID_SAS_FUSION_H_
36 36
37/* Fusion defines */ 37/* Fusion defines */
38#define MEGASAS_MAX_SZ_CHAIN_FRAME 1024 38#define MEGASAS_CHAIN_FRAME_SZ_MIN 1024
39#define MFI_FUSION_ENABLE_INTERRUPT_MASK (0x00000009) 39#define MFI_FUSION_ENABLE_INTERRUPT_MASK (0x00000009)
40#define MEGASAS_MAX_CHAIN_SHIFT 5
41#define MEGASAS_MAX_CHAIN_SIZE_UNITS_MASK 0x400000
42#define MEGASAS_MAX_CHAIN_SIZE_MASK 0x3E0
43#define MEGASAS_256K_IO 128
44#define MEGASAS_1MB_IO (MEGASAS_256K_IO * 4)
40#define MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE 256 45#define MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE 256
41#define MEGASAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST 0xF0 46#define MEGASAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST 0xF0
42#define MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST 0xF1 47#define MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST 0xF1
@@ -89,6 +94,12 @@ enum MR_RAID_FLAGS_IO_SUB_TYPE {
89#define MEGASAS_FP_CMD_LEN 16 94#define MEGASAS_FP_CMD_LEN 16
90#define MEGASAS_FUSION_IN_RESET 0 95#define MEGASAS_FUSION_IN_RESET 0
91#define THRESHOLD_REPLY_COUNT 50 96#define THRESHOLD_REPLY_COUNT 50
97#define JBOD_MAPS_COUNT 2
98
99enum MR_FUSION_ADAPTER_TYPE {
100 THUNDERBOLT_SERIES = 0,
101 INVADER_SERIES = 1,
102};
92 103
93/* 104/*
94 * Raid Context structure which describes MegaRAID specific IO Parameters 105 * Raid Context structure which describes MegaRAID specific IO Parameters
@@ -117,7 +128,9 @@ struct RAID_CONTEXT {
117 u8 numSGE; 128 u8 numSGE;
118 __le16 configSeqNum; 129 __le16 configSeqNum;
119 u8 spanArm; 130 u8 spanArm;
120 u8 resvd2[3]; 131 u8 priority;
132 u8 numSGEExt;
133 u8 resvd2;
121}; 134};
122 135
123#define RAID_CTX_SPANARM_ARM_SHIFT (0) 136#define RAID_CTX_SPANARM_ARM_SHIFT (0)
@@ -486,6 +499,7 @@ struct MPI2_IOC_INIT_REQUEST {
486#define MAX_PHYSICAL_DEVICES 256 499#define MAX_PHYSICAL_DEVICES 256
487#define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES) 500#define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES)
488#define MR_DCMD_LD_MAP_GET_INFO 0x0300e101 501#define MR_DCMD_LD_MAP_GET_INFO 0x0300e101
502#define MR_DCMD_SYSTEM_PD_MAP_GET_INFO 0x0200e102
489#define MR_DCMD_CTRL_SHARED_HOST_MEM_ALLOC 0x010e8485 /* SR-IOV HB alloc*/ 503#define MR_DCMD_CTRL_SHARED_HOST_MEM_ALLOC 0x010e8485 /* SR-IOV HB alloc*/
490#define MR_DCMD_LD_VF_MAP_GET_ALL_LDS_111 0x03200200 504#define MR_DCMD_LD_VF_MAP_GET_ALL_LDS_111 0x03200200
491#define MR_DCMD_LD_VF_MAP_GET_ALL_LDS 0x03150200 505#define MR_DCMD_LD_VF_MAP_GET_ALL_LDS 0x03150200
@@ -789,6 +803,21 @@ struct MR_FW_RAID_MAP_EXT {
789 struct MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES_EXT]; 803 struct MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES_EXT];
790}; 804};
791 805
806/*
807 * * define MR_PD_CFG_SEQ structure for system PDs
808 * */
809struct MR_PD_CFG_SEQ {
810 __le16 seqNum;
811 __le16 devHandle;
812 u8 reserved[4];
813} __packed;
814
815struct MR_PD_CFG_SEQ_NUM_SYNC {
816 __le32 size;
817 __le32 count;
818 struct MR_PD_CFG_SEQ seq[1];
819} __packed;
820
792struct fusion_context { 821struct fusion_context {
793 struct megasas_cmd_fusion **cmd_list; 822 struct megasas_cmd_fusion **cmd_list;
794 dma_addr_t req_frames_desc_phys; 823 dma_addr_t req_frames_desc_phys;
@@ -828,9 +857,12 @@ struct fusion_context {
828 u32 current_map_sz; 857 u32 current_map_sz;
829 u32 drv_map_sz; 858 u32 drv_map_sz;
830 u32 drv_map_pages; 859 u32 drv_map_pages;
860 struct MR_PD_CFG_SEQ_NUM_SYNC *pd_seq_sync[JBOD_MAPS_COUNT];
861 dma_addr_t pd_seq_phys[JBOD_MAPS_COUNT];
831 u8 fast_path_io; 862 u8 fast_path_io;
832 struct LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES_EXT]; 863 struct LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES_EXT];
833 LD_SPAN_INFO log_to_span[MAX_LOGICAL_DRIVES_EXT]; 864 LD_SPAN_INFO log_to_span[MAX_LOGICAL_DRIVES_EXT];
865 u8 adapter_type;
834}; 866};
835 867
836union desc_value { 868union desc_value {