0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 #ifndef __T4_HW_H
0036 #define __T4_HW_H
0037
0038 #include <linux/types.h>
0039
0040 enum {
0041 NCHAN = 4,
0042 MAX_MTU = 9600,
0043 EEPROMSIZE = 17408,
0044 EEPROMVSIZE = 32768,
0045 EEPROMPFSIZE = 1024,
0046 RSS_NENTRIES = 2048,
0047 T6_RSS_NENTRIES = 4096,
0048 TCB_SIZE = 128,
0049 NMTUS = 16,
0050 NCCTRL_WIN = 32,
0051 NTX_SCHED = 8,
0052 PM_NSTATS = 5,
0053 T6_PM_NSTATS = 7,
0054 MBOX_LEN = 64,
0055 TRACE_LEN = 112,
0056 FILTER_OPT_LEN = 36,
0057 };
0058
0059 enum {
0060 CIM_NUM_IBQ = 6,
0061 CIM_NUM_OBQ = 6,
0062 CIM_NUM_OBQ_T5 = 8,
0063 CIMLA_SIZE = 2048,
0064 CIM_PIFLA_SIZE = 64,
0065 CIM_MALA_SIZE = 64,
0066 CIM_IBQ_SIZE = 128,
0067 CIM_OBQ_SIZE = 128,
0068 TPLA_SIZE = 128,
0069 ULPRX_LA_SIZE = 512,
0070 };
0071
0072
0073 enum ctxt_type {
0074 CTXT_EGRESS,
0075 CTXT_INGRESS,
0076 CTXT_FLM,
0077 CTXT_CNM,
0078 };
0079
0080 enum {
0081 SF_PAGE_SIZE = 256,
0082 SF_SEC_SIZE = 64 * 1024,
0083 };
0084
0085 enum { RSP_TYPE_FLBUF, RSP_TYPE_CPL, RSP_TYPE_INTR };
0086
0087 enum { MBOX_OWNER_NONE, MBOX_OWNER_FW, MBOX_OWNER_DRV };
0088
0089 enum {
0090 SGE_MAX_WR_LEN = 512,
0091 SGE_CTXT_SIZE = 24,
0092 SGE_NTIMERS = 6,
0093 SGE_NCOUNTERS = 4,
0094 SGE_NDBQTIMERS = 8,
0095 SGE_MAX_IQ_SIZE = 65520,
0096
0097 SGE_TIMER_RSTRT_CNTR = 6,
0098 SGE_TIMER_UPD_CIDX = 7,
0099
0100 SGE_EQ_IDXSIZE = 64,
0101
0102 SGE_INTRDST_PCI = 0,
0103 SGE_INTRDST_IQ = 1,
0104
0105 SGE_UPDATEDEL_NONE = 0,
0106 SGE_UPDATEDEL_INTR = 1,
0107 SGE_UPDATEDEL_STPG = 2,
0108 SGE_UPDATEDEL_BOTH = 3,
0109
0110 SGE_HOSTFCMODE_NONE = 0,
0111 SGE_HOSTFCMODE_IQ = 1,
0112 SGE_HOSTFCMODE_STPG = 2,
0113 SGE_HOSTFCMODE_BOTH = 3,
0114
0115 SGE_FETCHBURSTMIN_16B = 0,
0116 SGE_FETCHBURSTMIN_32B = 1,
0117 SGE_FETCHBURSTMIN_64B = 2,
0118 SGE_FETCHBURSTMIN_128B = 3,
0119
0120 SGE_FETCHBURSTMAX_64B = 0,
0121 SGE_FETCHBURSTMAX_128B = 1,
0122 SGE_FETCHBURSTMAX_256B = 2,
0123 SGE_FETCHBURSTMAX_512B = 3,
0124
0125 SGE_CIDXFLUSHTHRESH_1 = 0,
0126 SGE_CIDXFLUSHTHRESH_2 = 1,
0127 SGE_CIDXFLUSHTHRESH_4 = 2,
0128 SGE_CIDXFLUSHTHRESH_8 = 3,
0129 SGE_CIDXFLUSHTHRESH_16 = 4,
0130 SGE_CIDXFLUSHTHRESH_32 = 5,
0131 SGE_CIDXFLUSHTHRESH_64 = 6,
0132 SGE_CIDXFLUSHTHRESH_128 = 7,
0133
0134 SGE_INGPADBOUNDARY_SHIFT = 5,
0135 };
0136
0137
0138 enum pcie_memwin {
0139 MEMWIN_NIC = 0,
0140 MEMWIN_RSVD1 = 1,
0141 MEMWIN_RSVD2 = 2,
0142 MEMWIN_RDMA = 3,
0143 MEMWIN_RSVD4 = 4,
0144 MEMWIN_FOISCSI = 5,
0145 MEMWIN_CSIOSTOR = 6,
0146 MEMWIN_RSVD7 = 7,
0147 };
0148
0149 struct sge_qstat {
0150 __be32 qid;
0151 __be16 cidx;
0152 __be16 pidx;
0153 };
0154
0155
0156
0157
0158 struct rsp_ctrl {
0159 __be32 hdrbuflen_pidx;
0160 __be32 pldbuflen_qid;
0161 union {
0162 u8 type_gen;
0163 __be64 last_flit;
0164 };
0165 };
0166
0167 #define RSPD_NEWBUF_S 31
0168 #define RSPD_NEWBUF_V(x) ((x) << RSPD_NEWBUF_S)
0169 #define RSPD_NEWBUF_F RSPD_NEWBUF_V(1U)
0170
0171 #define RSPD_LEN_S 0
0172 #define RSPD_LEN_M 0x7fffffff
0173 #define RSPD_LEN_G(x) (((x) >> RSPD_LEN_S) & RSPD_LEN_M)
0174
0175 #define RSPD_QID_S RSPD_LEN_S
0176 #define RSPD_QID_M RSPD_LEN_M
0177 #define RSPD_QID_G(x) RSPD_LEN_G(x)
0178
0179 #define RSPD_GEN_S 7
0180
0181 #define RSPD_TYPE_S 4
0182 #define RSPD_TYPE_M 0x3
0183 #define RSPD_TYPE_G(x) (((x) >> RSPD_TYPE_S) & RSPD_TYPE_M)
0184
0185
0186 #define QINTR_CNT_EN_S 0
0187 #define QINTR_CNT_EN_V(x) ((x) << QINTR_CNT_EN_S)
0188 #define QINTR_CNT_EN_F QINTR_CNT_EN_V(1U)
0189
0190 #define QINTR_TIMER_IDX_S 1
0191 #define QINTR_TIMER_IDX_M 0x7
0192 #define QINTR_TIMER_IDX_V(x) ((x) << QINTR_TIMER_IDX_S)
0193 #define QINTR_TIMER_IDX_G(x) (((x) >> QINTR_TIMER_IDX_S) & QINTR_TIMER_IDX_M)
0194
0195
0196
0197
0198 #define FLASH_START(start) ((start) * SF_SEC_SIZE)
0199 #define FLASH_MAX_SIZE(nsecs) ((nsecs) * SF_SEC_SIZE)
0200
0201 enum {
0202
0203
0204
0205 FLASH_EXP_ROM_START_SEC = 0,
0206 FLASH_EXP_ROM_NSECS = 6,
0207 FLASH_EXP_ROM_START = FLASH_START(FLASH_EXP_ROM_START_SEC),
0208 FLASH_EXP_ROM_MAX_SIZE = FLASH_MAX_SIZE(FLASH_EXP_ROM_NSECS),
0209
0210
0211
0212
0213
0214 FLASH_IBFT_START_SEC = 6,
0215 FLASH_IBFT_NSECS = 1,
0216 FLASH_IBFT_START = FLASH_START(FLASH_IBFT_START_SEC),
0217 FLASH_IBFT_MAX_SIZE = FLASH_MAX_SIZE(FLASH_IBFT_NSECS),
0218
0219
0220
0221
0222 FLASH_BOOTCFG_START_SEC = 7,
0223 FLASH_BOOTCFG_NSECS = 1,
0224 FLASH_BOOTCFG_START = FLASH_START(FLASH_BOOTCFG_START_SEC),
0225 FLASH_BOOTCFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_BOOTCFG_NSECS),
0226
0227
0228
0229
0230 FLASH_FW_START_SEC = 8,
0231 FLASH_FW_NSECS = 16,
0232 FLASH_FW_START = FLASH_START(FLASH_FW_START_SEC),
0233 FLASH_FW_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FW_NSECS),
0234
0235
0236
0237 FLASH_FWBOOTSTRAP_START_SEC = 27,
0238 FLASH_FWBOOTSTRAP_NSECS = 1,
0239 FLASH_FWBOOTSTRAP_START = FLASH_START(FLASH_FWBOOTSTRAP_START_SEC),
0240 FLASH_FWBOOTSTRAP_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FWBOOTSTRAP_NSECS),
0241
0242
0243
0244
0245 FLASH_ISCSI_CRASH_START_SEC = 29,
0246 FLASH_ISCSI_CRASH_NSECS = 1,
0247 FLASH_ISCSI_CRASH_START = FLASH_START(FLASH_ISCSI_CRASH_START_SEC),
0248 FLASH_ISCSI_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_ISCSI_CRASH_NSECS),
0249
0250
0251
0252
0253 FLASH_FCOE_CRASH_START_SEC = 30,
0254 FLASH_FCOE_CRASH_NSECS = 1,
0255 FLASH_FCOE_CRASH_START = FLASH_START(FLASH_FCOE_CRASH_START_SEC),
0256 FLASH_FCOE_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FCOE_CRASH_NSECS),
0257
0258
0259
0260
0261
0262
0263
0264 FLASH_CFG_START_SEC = 31,
0265 FLASH_CFG_NSECS = 1,
0266 FLASH_CFG_START = FLASH_START(FLASH_CFG_START_SEC),
0267 FLASH_CFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_CFG_NSECS),
0268
0269
0270
0271
0272
0273 FLASH_MIN_SIZE = FLASH_CFG_START + FLASH_CFG_MAX_SIZE,
0274
0275 FLASH_FPGA_CFG_START_SEC = 15,
0276 FLASH_FPGA_CFG_START = FLASH_START(FLASH_FPGA_CFG_START_SEC),
0277
0278
0279
0280
0281 };
0282
0283 #undef FLASH_START
0284 #undef FLASH_MAX_SIZE
0285
0286 #define SGE_TIMESTAMP_S 0
0287 #define SGE_TIMESTAMP_M 0xfffffffffffffffULL
0288 #define SGE_TIMESTAMP_V(x) ((__u64)(x) << SGE_TIMESTAMP_S)
0289 #define SGE_TIMESTAMP_G(x) (((__u64)(x) >> SGE_TIMESTAMP_S) & SGE_TIMESTAMP_M)
0290
0291 #define I2C_DEV_ADDR_A0 0xa0
0292 #define I2C_DEV_ADDR_A2 0xa2
0293 #define I2C_PAGE_SIZE 0x100
0294 #define SFP_DIAG_TYPE_ADDR 0x5c
0295 #define SFP_DIAG_TYPE_LEN 0x1
0296 #define SFP_DIAG_ADDRMODE BIT(2)
0297 #define SFP_DIAG_IMPLEMENTED BIT(6)
0298 #define SFF_8472_COMP_ADDR 0x5e
0299 #define SFF_8472_COMP_LEN 0x1
0300 #define SFF_REV_ADDR 0x1
0301 #define SFF_REV_LEN 0x1
0302
0303 #endif