0001
0002
0003
0004
0005
0006
0007 #ifndef __QLCNIC_HDR_H_
0008 #define __QLCNIC_HDR_H_
0009
0010 #include <linux/kernel.h>
0011 #include <linux/types.h>
0012
0013 #include "qlcnic_hw.h"
0014
0015
0016
0017
0018
0019 enum {
0020 QLCNIC_HW_H0_CH_HUB_ADR = 0x05,
0021 QLCNIC_HW_H1_CH_HUB_ADR = 0x0E,
0022 QLCNIC_HW_H2_CH_HUB_ADR = 0x03,
0023 QLCNIC_HW_H3_CH_HUB_ADR = 0x01,
0024 QLCNIC_HW_H4_CH_HUB_ADR = 0x06,
0025 QLCNIC_HW_H5_CH_HUB_ADR = 0x07,
0026 QLCNIC_HW_H6_CH_HUB_ADR = 0x08
0027 };
0028
0029
0030 enum {
0031 QLCNIC_HW_MN_CRB_AGT_ADR = 0x15,
0032 QLCNIC_HW_MS_CRB_AGT_ADR = 0x25
0033 };
0034
0035
0036 enum {
0037 QLCNIC_HW_PS_CRB_AGT_ADR = 0x73,
0038 QLCNIC_HW_SS_CRB_AGT_ADR = 0x20,
0039 QLCNIC_HW_RPMX3_CRB_AGT_ADR = 0x0b,
0040 QLCNIC_HW_QMS_CRB_AGT_ADR = 0x00,
0041 QLCNIC_HW_SQGS0_CRB_AGT_ADR = 0x01,
0042 QLCNIC_HW_SQGS1_CRB_AGT_ADR = 0x02,
0043 QLCNIC_HW_SQGS2_CRB_AGT_ADR = 0x03,
0044 QLCNIC_HW_SQGS3_CRB_AGT_ADR = 0x04,
0045 QLCNIC_HW_C2C0_CRB_AGT_ADR = 0x58,
0046 QLCNIC_HW_C2C1_CRB_AGT_ADR = 0x59,
0047 QLCNIC_HW_C2C2_CRB_AGT_ADR = 0x5a,
0048 QLCNIC_HW_RPMX2_CRB_AGT_ADR = 0x0a,
0049 QLCNIC_HW_RPMX4_CRB_AGT_ADR = 0x0c,
0050 QLCNIC_HW_RPMX7_CRB_AGT_ADR = 0x0f,
0051 QLCNIC_HW_RPMX9_CRB_AGT_ADR = 0x12,
0052 QLCNIC_HW_SMB_CRB_AGT_ADR = 0x18
0053 };
0054
0055
0056 enum {
0057 QLCNIC_HW_NIU_CRB_AGT_ADR = 0x31,
0058 QLCNIC_HW_I2C0_CRB_AGT_ADR = 0x19,
0059 QLCNIC_HW_I2C1_CRB_AGT_ADR = 0x29,
0060
0061 QLCNIC_HW_SN_CRB_AGT_ADR = 0x10,
0062 QLCNIC_HW_I2Q_CRB_AGT_ADR = 0x20,
0063 QLCNIC_HW_LPC_CRB_AGT_ADR = 0x22,
0064 QLCNIC_HW_ROMUSB_CRB_AGT_ADR = 0x21,
0065 QLCNIC_HW_QM_CRB_AGT_ADR = 0x66,
0066 QLCNIC_HW_SQG0_CRB_AGT_ADR = 0x60,
0067 QLCNIC_HW_SQG1_CRB_AGT_ADR = 0x61,
0068 QLCNIC_HW_SQG2_CRB_AGT_ADR = 0x62,
0069 QLCNIC_HW_SQG3_CRB_AGT_ADR = 0x63,
0070 QLCNIC_HW_RPMX1_CRB_AGT_ADR = 0x09,
0071 QLCNIC_HW_RPMX5_CRB_AGT_ADR = 0x0d,
0072 QLCNIC_HW_RPMX6_CRB_AGT_ADR = 0x0e,
0073 QLCNIC_HW_RPMX8_CRB_AGT_ADR = 0x11
0074 };
0075
0076
0077 enum {
0078 QLCNIC_HW_PH_CRB_AGT_ADR = 0x1A,
0079 QLCNIC_HW_SRE_CRB_AGT_ADR = 0x50,
0080 QLCNIC_HW_EG_CRB_AGT_ADR = 0x51,
0081 QLCNIC_HW_RPMX0_CRB_AGT_ADR = 0x08
0082 };
0083
0084
0085 enum {
0086 QLCNIC_HW_PEGN0_CRB_AGT_ADR = 0x40,
0087 QLCNIC_HW_PEGN1_CRB_AGT_ADR,
0088 QLCNIC_HW_PEGN2_CRB_AGT_ADR,
0089 QLCNIC_HW_PEGN3_CRB_AGT_ADR,
0090 QLCNIC_HW_PEGNI_CRB_AGT_ADR,
0091 QLCNIC_HW_PEGND_CRB_AGT_ADR,
0092 QLCNIC_HW_PEGNC_CRB_AGT_ADR,
0093 QLCNIC_HW_PEGR0_CRB_AGT_ADR,
0094 QLCNIC_HW_PEGR1_CRB_AGT_ADR,
0095 QLCNIC_HW_PEGR2_CRB_AGT_ADR,
0096 QLCNIC_HW_PEGR3_CRB_AGT_ADR,
0097 QLCNIC_HW_PEGN4_CRB_AGT_ADR
0098 };
0099
0100
0101 enum {
0102 QLCNIC_HW_PEGS0_CRB_AGT_ADR = 0x40,
0103 QLCNIC_HW_PEGS1_CRB_AGT_ADR,
0104 QLCNIC_HW_PEGS2_CRB_AGT_ADR,
0105 QLCNIC_HW_PEGS3_CRB_AGT_ADR,
0106 QLCNIC_HW_PEGSI_CRB_AGT_ADR,
0107 QLCNIC_HW_PEGSD_CRB_AGT_ADR,
0108 QLCNIC_HW_PEGSC_CRB_AGT_ADR
0109 };
0110
0111
0112 enum {
0113 QLCNIC_HW_CAS0_CRB_AGT_ADR = 0x46,
0114 QLCNIC_HW_CAS1_CRB_AGT_ADR = 0x47,
0115 QLCNIC_HW_CAS2_CRB_AGT_ADR = 0x48,
0116 QLCNIC_HW_CAS3_CRB_AGT_ADR = 0x49,
0117 QLCNIC_HW_NCM_CRB_AGT_ADR = 0x16,
0118 QLCNIC_HW_TMR_CRB_AGT_ADR = 0x17,
0119 QLCNIC_HW_XDMA_CRB_AGT_ADR = 0x05,
0120 QLCNIC_HW_OCM0_CRB_AGT_ADR = 0x06,
0121 QLCNIC_HW_OCM1_CRB_AGT_ADR = 0x07
0122 };
0123
0124
0125 #define QLCNIC_HW_EFC_RPMX0_CRB_AGT_ADR 0x67
0126
0127
0128 enum {
0129 QLCNIC_HW_PX_MAP_CRB_PH = 0,
0130 QLCNIC_HW_PX_MAP_CRB_PS,
0131 QLCNIC_HW_PX_MAP_CRB_MN,
0132 QLCNIC_HW_PX_MAP_CRB_MS,
0133 QLCNIC_HW_PX_MAP_CRB_PGR1,
0134 QLCNIC_HW_PX_MAP_CRB_SRE,
0135 QLCNIC_HW_PX_MAP_CRB_NIU,
0136 QLCNIC_HW_PX_MAP_CRB_QMN,
0137 QLCNIC_HW_PX_MAP_CRB_SQN0,
0138 QLCNIC_HW_PX_MAP_CRB_SQN1,
0139 QLCNIC_HW_PX_MAP_CRB_SQN2,
0140 QLCNIC_HW_PX_MAP_CRB_SQN3,
0141 QLCNIC_HW_PX_MAP_CRB_QMS,
0142 QLCNIC_HW_PX_MAP_CRB_SQS0,
0143 QLCNIC_HW_PX_MAP_CRB_SQS1,
0144 QLCNIC_HW_PX_MAP_CRB_SQS2,
0145 QLCNIC_HW_PX_MAP_CRB_SQS3,
0146 QLCNIC_HW_PX_MAP_CRB_PGN0,
0147 QLCNIC_HW_PX_MAP_CRB_PGN1,
0148 QLCNIC_HW_PX_MAP_CRB_PGN2,
0149 QLCNIC_HW_PX_MAP_CRB_PGN3,
0150 QLCNIC_HW_PX_MAP_CRB_PGND,
0151 QLCNIC_HW_PX_MAP_CRB_PGNI,
0152 QLCNIC_HW_PX_MAP_CRB_PGS0,
0153 QLCNIC_HW_PX_MAP_CRB_PGS1,
0154 QLCNIC_HW_PX_MAP_CRB_PGS2,
0155 QLCNIC_HW_PX_MAP_CRB_PGS3,
0156 QLCNIC_HW_PX_MAP_CRB_PGSD,
0157 QLCNIC_HW_PX_MAP_CRB_PGSI,
0158 QLCNIC_HW_PX_MAP_CRB_SN,
0159 QLCNIC_HW_PX_MAP_CRB_PGR2,
0160 QLCNIC_HW_PX_MAP_CRB_EG,
0161 QLCNIC_HW_PX_MAP_CRB_PH2,
0162 QLCNIC_HW_PX_MAP_CRB_PS2,
0163 QLCNIC_HW_PX_MAP_CRB_CAM,
0164 QLCNIC_HW_PX_MAP_CRB_CAS0,
0165 QLCNIC_HW_PX_MAP_CRB_CAS1,
0166 QLCNIC_HW_PX_MAP_CRB_CAS2,
0167 QLCNIC_HW_PX_MAP_CRB_C2C0,
0168 QLCNIC_HW_PX_MAP_CRB_C2C1,
0169 QLCNIC_HW_PX_MAP_CRB_TIMR,
0170 QLCNIC_HW_PX_MAP_CRB_PGR3,
0171 QLCNIC_HW_PX_MAP_CRB_RPMX1,
0172 QLCNIC_HW_PX_MAP_CRB_RPMX2,
0173 QLCNIC_HW_PX_MAP_CRB_RPMX3,
0174 QLCNIC_HW_PX_MAP_CRB_RPMX4,
0175 QLCNIC_HW_PX_MAP_CRB_RPMX5,
0176 QLCNIC_HW_PX_MAP_CRB_RPMX6,
0177 QLCNIC_HW_PX_MAP_CRB_RPMX7,
0178 QLCNIC_HW_PX_MAP_CRB_XDMA,
0179 QLCNIC_HW_PX_MAP_CRB_I2Q,
0180 QLCNIC_HW_PX_MAP_CRB_ROMUSB,
0181 QLCNIC_HW_PX_MAP_CRB_CAS3,
0182 QLCNIC_HW_PX_MAP_CRB_RPMX0,
0183 QLCNIC_HW_PX_MAP_CRB_RPMX8,
0184 QLCNIC_HW_PX_MAP_CRB_RPMX9,
0185 QLCNIC_HW_PX_MAP_CRB_OCM0,
0186 QLCNIC_HW_PX_MAP_CRB_OCM1,
0187 QLCNIC_HW_PX_MAP_CRB_SMB,
0188 QLCNIC_HW_PX_MAP_CRB_I2C0,
0189 QLCNIC_HW_PX_MAP_CRB_I2C1,
0190 QLCNIC_HW_PX_MAP_CRB_LPC,
0191 QLCNIC_HW_PX_MAP_CRB_PGNC,
0192 QLCNIC_HW_PX_MAP_CRB_PGR0
0193 };
0194
0195 #define BIT_0 0x1
0196 #define BIT_1 0x2
0197 #define BIT_2 0x4
0198 #define BIT_3 0x8
0199 #define BIT_4 0x10
0200 #define BIT_5 0x20
0201 #define BIT_6 0x40
0202 #define BIT_7 0x80
0203 #define BIT_8 0x100
0204 #define BIT_9 0x200
0205 #define BIT_10 0x400
0206 #define BIT_11 0x800
0207 #define BIT_12 0x1000
0208 #define BIT_13 0x2000
0209 #define BIT_14 0x4000
0210 #define BIT_15 0x8000
0211 #define BIT_16 0x10000
0212 #define BIT_17 0x20000
0213 #define BIT_18 0x40000
0214 #define BIT_19 0x80000
0215 #define BIT_20 0x100000
0216 #define BIT_21 0x200000
0217 #define BIT_22 0x400000
0218 #define BIT_23 0x800000
0219 #define BIT_24 0x1000000
0220 #define BIT_25 0x2000000
0221 #define BIT_26 0x4000000
0222 #define BIT_27 0x8000000
0223 #define BIT_28 0x10000000
0224 #define BIT_29 0x20000000
0225 #define BIT_30 0x40000000
0226 #define BIT_31 0x80000000
0227
0228
0229
0230 #define QLCNIC_HW_CRB_HUB_AGT_ADR_MN \
0231 ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_MN_CRB_AGT_ADR)
0232 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PH \
0233 ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_PH_CRB_AGT_ADR)
0234 #define QLCNIC_HW_CRB_HUB_AGT_ADR_MS \
0235 ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_MS_CRB_AGT_ADR)
0236
0237 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PS \
0238 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_PS_CRB_AGT_ADR)
0239 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SS \
0240 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SS_CRB_AGT_ADR)
0241 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX3 \
0242 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX3_CRB_AGT_ADR)
0243 #define QLCNIC_HW_CRB_HUB_AGT_ADR_QMS \
0244 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_QMS_CRB_AGT_ADR)
0245 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS0 \
0246 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS0_CRB_AGT_ADR)
0247 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS1 \
0248 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS1_CRB_AGT_ADR)
0249 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS2 \
0250 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS2_CRB_AGT_ADR)
0251 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS3 \
0252 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS3_CRB_AGT_ADR)
0253 #define QLCNIC_HW_CRB_HUB_AGT_ADR_C2C0 \
0254 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_C2C0_CRB_AGT_ADR)
0255 #define QLCNIC_HW_CRB_HUB_AGT_ADR_C2C1 \
0256 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_C2C1_CRB_AGT_ADR)
0257 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX2 \
0258 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX2_CRB_AGT_ADR)
0259 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX4 \
0260 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX4_CRB_AGT_ADR)
0261 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX7 \
0262 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX7_CRB_AGT_ADR)
0263 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX9 \
0264 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX9_CRB_AGT_ADR)
0265 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SMB \
0266 ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SMB_CRB_AGT_ADR)
0267
0268 #define QLCNIC_HW_CRB_HUB_AGT_ADR_NIU \
0269 ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_NIU_CRB_AGT_ADR)
0270 #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2C0 \
0271 ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_I2C0_CRB_AGT_ADR)
0272 #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2C1 \
0273 ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_I2C1_CRB_AGT_ADR)
0274
0275 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SRE \
0276 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SRE_CRB_AGT_ADR)
0277 #define QLCNIC_HW_CRB_HUB_AGT_ADR_EG \
0278 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_EG_CRB_AGT_ADR)
0279 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX0 \
0280 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX0_CRB_AGT_ADR)
0281 #define QLCNIC_HW_CRB_HUB_AGT_ADR_QMN \
0282 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_QM_CRB_AGT_ADR)
0283 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN0 \
0284 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG0_CRB_AGT_ADR)
0285 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN1 \
0286 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG1_CRB_AGT_ADR)
0287 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN2 \
0288 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG2_CRB_AGT_ADR)
0289 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN3 \
0290 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG3_CRB_AGT_ADR)
0291 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX1 \
0292 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX1_CRB_AGT_ADR)
0293 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX5 \
0294 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX5_CRB_AGT_ADR)
0295 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX6 \
0296 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX6_CRB_AGT_ADR)
0297 #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX8 \
0298 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX8_CRB_AGT_ADR)
0299 #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS0 \
0300 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS0_CRB_AGT_ADR)
0301 #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS1 \
0302 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS1_CRB_AGT_ADR)
0303 #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS2 \
0304 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS2_CRB_AGT_ADR)
0305 #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS3 \
0306 ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS3_CRB_AGT_ADR)
0307
0308 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGNI \
0309 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGNI_CRB_AGT_ADR)
0310 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGND \
0311 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGND_CRB_AGT_ADR)
0312 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN0 \
0313 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN0_CRB_AGT_ADR)
0314 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN1 \
0315 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN1_CRB_AGT_ADR)
0316 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN2 \
0317 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN2_CRB_AGT_ADR)
0318 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN3 \
0319 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN3_CRB_AGT_ADR)
0320 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN4 \
0321 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN4_CRB_AGT_ADR)
0322 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGNC \
0323 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGNC_CRB_AGT_ADR)
0324 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR0 \
0325 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR0_CRB_AGT_ADR)
0326 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR1 \
0327 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR1_CRB_AGT_ADR)
0328 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR2 \
0329 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR2_CRB_AGT_ADR)
0330 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR3 \
0331 ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR3_CRB_AGT_ADR)
0332
0333 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSI \
0334 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSI_CRB_AGT_ADR)
0335 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSD \
0336 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSD_CRB_AGT_ADR)
0337 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS0 \
0338 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS0_CRB_AGT_ADR)
0339 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS1 \
0340 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS1_CRB_AGT_ADR)
0341 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS2 \
0342 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS2_CRB_AGT_ADR)
0343 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS3 \
0344 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS3_CRB_AGT_ADR)
0345 #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSC \
0346 ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSC_CRB_AGT_ADR)
0347
0348 #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAM \
0349 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_NCM_CRB_AGT_ADR)
0350 #define QLCNIC_HW_CRB_HUB_AGT_ADR_TIMR \
0351 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_TMR_CRB_AGT_ADR)
0352 #define QLCNIC_HW_CRB_HUB_AGT_ADR_XDMA \
0353 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_XDMA_CRB_AGT_ADR)
0354 #define QLCNIC_HW_CRB_HUB_AGT_ADR_SN \
0355 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_SN_CRB_AGT_ADR)
0356 #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2Q \
0357 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_I2Q_CRB_AGT_ADR)
0358 #define QLCNIC_HW_CRB_HUB_AGT_ADR_ROMUSB \
0359 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_ROMUSB_CRB_AGT_ADR)
0360 #define QLCNIC_HW_CRB_HUB_AGT_ADR_OCM0 \
0361 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_OCM0_CRB_AGT_ADR)
0362 #define QLCNIC_HW_CRB_HUB_AGT_ADR_OCM1 \
0363 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_OCM1_CRB_AGT_ADR)
0364 #define QLCNIC_HW_CRB_HUB_AGT_ADR_LPC \
0365 ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_LPC_CRB_AGT_ADR)
0366
0367 #define QLCNIC_SRE_MISC (QLCNIC_CRB_SRE + 0x0002c)
0368
0369 #define QLCNIC_I2Q_CLR_PCI_HI (QLCNIC_CRB_I2Q + 0x00034)
0370
0371 #define ROMUSB_GLB (QLCNIC_CRB_ROMUSB + 0x00000)
0372 #define ROMUSB_ROM (QLCNIC_CRB_ROMUSB + 0x10000)
0373
0374 #define QLCNIC_ROMUSB_GLB_STATUS (ROMUSB_GLB + 0x0004)
0375 #define QLCNIC_ROMUSB_GLB_SW_RESET (ROMUSB_GLB + 0x0008)
0376 #define QLCNIC_ROMUSB_GLB_PAD_GPIO_I (ROMUSB_GLB + 0x000c)
0377 #define QLCNIC_ROMUSB_GLB_CAS_RST (ROMUSB_GLB + 0x0038)
0378 #define QLCNIC_ROMUSB_GLB_TEST_MUX_SEL (ROMUSB_GLB + 0x0044)
0379 #define QLCNIC_ROMUSB_GLB_PEGTUNE_DONE (ROMUSB_GLB + 0x005c)
0380 #define QLCNIC_ROMUSB_GLB_CHIP_CLK_CTRL (ROMUSB_GLB + 0x00A8)
0381
0382 #define QLCNIC_ROMUSB_GPIO(n) (ROMUSB_GLB + 0x60 + (4 * (n)))
0383
0384 #define QLCNIC_ROMUSB_ROM_INSTR_OPCODE (ROMUSB_ROM + 0x0004)
0385 #define QLCNIC_ROMUSB_ROM_ADDRESS (ROMUSB_ROM + 0x0008)
0386 #define QLCNIC_ROMUSB_ROM_WDATA (ROMUSB_ROM + 0x000c)
0387 #define QLCNIC_ROMUSB_ROM_ABYTE_CNT (ROMUSB_ROM + 0x0010)
0388 #define QLCNIC_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014)
0389 #define QLCNIC_ROMUSB_ROM_RDATA (ROMUSB_ROM + 0x0018)
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400 #define QLCNIC_PCI_CRB_WINDOWSIZE 0x00100000
0401 #define QLCNIC_PCI_CRB_WINDOW(A) \
0402 (QLCNIC_PCI_CRBSPACE + (A)*QLCNIC_PCI_CRB_WINDOWSIZE)
0403
0404 #define QLCNIC_CRB_NIU QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_NIU)
0405 #define QLCNIC_CRB_SRE QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SRE)
0406 #define QLCNIC_CRB_ROMUSB \
0407 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_ROMUSB)
0408 #define QLCNIC_CRB_EPG QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_EG)
0409 #define QLCNIC_CRB_I2Q QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_I2Q)
0410 #define QLCNIC_CRB_TIMER QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_TIMR)
0411 #define QLCNIC_CRB_I2C0 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_I2C0)
0412 #define QLCNIC_CRB_SMB QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SMB)
0413 #define QLCNIC_CRB_MAX QLCNIC_PCI_CRB_WINDOW(64)
0414
0415 #define QLCNIC_CRB_PCIX_HOST QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PH)
0416 #define QLCNIC_CRB_PCIX_HOST2 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PH2)
0417 #define QLCNIC_CRB_PEG_NET_0 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN0)
0418 #define QLCNIC_CRB_PEG_NET_1 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN1)
0419 #define QLCNIC_CRB_PEG_NET_2 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN2)
0420 #define QLCNIC_CRB_PEG_NET_3 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN3)
0421 #define QLCNIC_CRB_PEG_NET_4 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SQS2)
0422 #define QLCNIC_CRB_PEG_NET_D QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGND)
0423 #define QLCNIC_CRB_PEG_NET_I QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGNI)
0424 #define QLCNIC_CRB_DDR_NET QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_MN)
0425 #define QLCNIC_CRB_QDR_NET QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SN)
0426
0427 #define QLCNIC_CRB_PCIX_MD QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PS)
0428 #define QLCNIC_CRB_PCIE QLCNIC_CRB_PCIX_MD
0429
0430 #define ISR_INT_VECTOR (QLCNIC_PCIX_PS_REG(PCIX_INT_VECTOR))
0431 #define ISR_INT_MASK (QLCNIC_PCIX_PS_REG(PCIX_INT_MASK))
0432 #define ISR_INT_MASK_SLOW (QLCNIC_PCIX_PS_REG(PCIX_INT_MASK))
0433 #define ISR_INT_TARGET_STATUS (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS))
0434 #define ISR_INT_TARGET_MASK (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK))
0435 #define ISR_INT_TARGET_STATUS_F1 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F1))
0436 #define ISR_INT_TARGET_MASK_F1 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F1))
0437 #define ISR_INT_TARGET_STATUS_F2 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F2))
0438 #define ISR_INT_TARGET_MASK_F2 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F2))
0439 #define ISR_INT_TARGET_STATUS_F3 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F3))
0440 #define ISR_INT_TARGET_MASK_F3 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F3))
0441 #define ISR_INT_TARGET_STATUS_F4 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F4))
0442 #define ISR_INT_TARGET_MASK_F4 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F4))
0443 #define ISR_INT_TARGET_STATUS_F5 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F5))
0444 #define ISR_INT_TARGET_MASK_F5 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F5))
0445 #define ISR_INT_TARGET_STATUS_F6 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F6))
0446 #define ISR_INT_TARGET_MASK_F6 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F6))
0447 #define ISR_INT_TARGET_STATUS_F7 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F7))
0448 #define ISR_INT_TARGET_MASK_F7 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F7))
0449
0450 #define QLCNIC_PCI_OCM0_2M (0x000c0000UL)
0451 #define QLCNIC_PCI_CRBSPACE (0x06000000UL)
0452 #define QLCNIC_PCI_CAMQM (0x04800000UL)
0453 #define QLCNIC_PCI_CAMQM_END (0x04800800UL)
0454 #define QLCNIC_PCI_CAMQM_2M_BASE (0x000ff800UL)
0455
0456 #define QLCNIC_CRB_CAM QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_CAM)
0457
0458 #define QLCNIC_ADDR_DDR_NET (0x0000000000000000ULL)
0459 #define QLCNIC_ADDR_DDR_NET_MAX (0x000000000fffffffULL)
0460 #define QLCNIC_ADDR_OCM0 (0x0000000200000000ULL)
0461 #define QLCNIC_ADDR_OCM0_MAX (0x00000002000fffffULL)
0462 #define QLCNIC_ADDR_OCM1 (0x0000000200400000ULL)
0463 #define QLCNIC_ADDR_OCM1_MAX (0x00000002004fffffULL)
0464 #define QLCNIC_ADDR_QDR_NET (0x0000000300000000ULL)
0465 #define QLCNIC_ADDR_QDR_NET_MAX (0x0000000307ffffffULL)
0466
0467
0468
0469
0470 #define QLCNIC_MIU_CONTROL (0x000)
0471 #define QLCNIC_MIU_MN_CONTROL (QLCNIC_CRB_DDR_NET+QLCNIC_MIU_CONTROL)
0472
0473
0474 #define QLCNIC_NIU_PHY_WAITLEN 200000
0475
0476 #define QLCNIC_NIU_PHY_WAITMAX 50
0477 #define QLCNIC_NIU_MAX_GBE_PORTS 4
0478 #define QLCNIC_NIU_MAX_XG_PORTS 2
0479
0480 #define QLCNIC_NIU_MODE (QLCNIC_CRB_NIU + 0x00000)
0481 #define QLCNIC_NIU_GB_PAUSE_CTL (QLCNIC_CRB_NIU + 0x0030c)
0482 #define QLCNIC_NIU_XG_PAUSE_CTL (QLCNIC_CRB_NIU + 0x00098)
0483
0484 #define QLCNIC_NIU_GB_MAC_CONFIG_0(I) \
0485 (QLCNIC_CRB_NIU + 0x30000 + (I)*0x10000)
0486 #define QLCNIC_NIU_GB_MAC_CONFIG_1(I) \
0487 (QLCNIC_CRB_NIU + 0x30004 + (I)*0x10000)
0488
0489 #define MAX_CTL_CHECK 1000
0490 #define TEST_AGT_CTRL (0x00)
0491
0492 #define TA_CTL_START BIT_0
0493 #define TA_CTL_ENABLE BIT_1
0494 #define TA_CTL_WRITE BIT_2
0495 #define TA_CTL_BUSY BIT_3
0496
0497
0498 #define XG_LINK_UP 0x10
0499 #define XG_LINK_DOWN 0x20
0500
0501 #define XG_LINK_UP_P3P 0x01
0502 #define XG_LINK_DOWN_P3P 0x02
0503 #define XG_LINK_STATE_P3P_MASK 0xf
0504 #define XG_LINK_STATE_P3P(pcifn, val) \
0505 (((val) >> ((pcifn) * 4)) & XG_LINK_STATE_P3P_MASK)
0506
0507 #define P3P_LINK_SPEED_MHZ 100
0508 #define P3P_LINK_SPEED_MASK 0xff
0509 #define P3P_LINK_SPEED_REG(pcifn) \
0510 (CRB_PF_LINK_SPEED_1 + (((pcifn) / 4) * 4))
0511 #define P3P_LINK_SPEED_VAL(pcifn, reg) \
0512 (((reg) >> (8 * ((pcifn) & 0x3))) & P3P_LINK_SPEED_MASK)
0513
0514 #define QLCNIC_CAM_RAM_BASE (QLCNIC_CRB_CAM + 0x02000)
0515 #define QLCNIC_CAM_RAM(reg) (QLCNIC_CAM_RAM_BASE + (reg))
0516 #define QLCNIC_ROM_LOCK_ID (QLCNIC_CAM_RAM(0x100))
0517 #define QLCNIC_PHY_LOCK_ID (QLCNIC_CAM_RAM(0x120))
0518 #define QLCNIC_CRB_WIN_LOCK_ID (QLCNIC_CAM_RAM(0x124))
0519
0520 #define NIC_CRB_BASE (QLCNIC_CAM_RAM(0x200))
0521 #define NIC_CRB_BASE_2 (QLCNIC_CAM_RAM(0x700))
0522 #define QLCNIC_REG(X) (NIC_CRB_BASE+(X))
0523 #define QLCNIC_REG_2(X) (NIC_CRB_BASE_2+(X))
0524
0525 #define QLCNIC_CDRP_MAX_ARGS 4
0526 #define QLCNIC_CDRP_ARG(i) (QLCNIC_REG(0x18 + ((i) * 4)))
0527
0528 #define QLCNIC_CDRP_CRB_OFFSET (QLCNIC_REG(0x18))
0529 #define QLCNIC_SIGN_CRB_OFFSET (QLCNIC_REG(0x28))
0530
0531 #define CRB_XG_STATE_P3P (QLCNIC_REG(0x98))
0532 #define CRB_PF_LINK_SPEED_1 (QLCNIC_REG(0xe8))
0533 #define CRB_DRIVER_VERSION (QLCNIC_REG(0x2a0))
0534
0535 #define CRB_FW_CAPABILITIES_2 (QLCNIC_CAM_RAM(0x12c))
0536
0537
0538
0539
0540
0541
0542
0543
0544
0545 #define qlcnic_get_temp_val(x) ((x) >> 16)
0546 #define qlcnic_get_temp_state(x) ((x) & 0xffff)
0547 #define qlcnic_encode_temp(val, state) (((val) << 16) | (state))
0548
0549
0550
0551
0552 enum {
0553 QLCNIC_TEMP_NORMAL = 0x1,
0554 QLCNIC_TEMP_WARN,
0555 QLCNIC_TEMP_PANIC
0556 };
0557
0558
0559
0560 #define PHY_LOCK_DRIVER 0x44524956
0561
0562 #define PCIX_INT_VECTOR (0x10100)
0563 #define PCIX_INT_MASK (0x10104)
0564
0565 #define PCIX_OCM_WINDOW (0x10800)
0566 #define PCIX_OCM_WINDOW_REG(func) (PCIX_OCM_WINDOW + 0x4 * (func))
0567
0568 #define PCIX_TARGET_STATUS (0x10118)
0569 #define PCIX_TARGET_STATUS_F1 (0x10160)
0570 #define PCIX_TARGET_STATUS_F2 (0x10164)
0571 #define PCIX_TARGET_STATUS_F3 (0x10168)
0572 #define PCIX_TARGET_STATUS_F4 (0x10360)
0573 #define PCIX_TARGET_STATUS_F5 (0x10364)
0574 #define PCIX_TARGET_STATUS_F6 (0x10368)
0575 #define PCIX_TARGET_STATUS_F7 (0x1036c)
0576
0577 #define PCIX_TARGET_MASK (0x10128)
0578 #define PCIX_TARGET_MASK_F1 (0x10170)
0579 #define PCIX_TARGET_MASK_F2 (0x10174)
0580 #define PCIX_TARGET_MASK_F3 (0x10178)
0581 #define PCIX_TARGET_MASK_F4 (0x10370)
0582 #define PCIX_TARGET_MASK_F5 (0x10374)
0583 #define PCIX_TARGET_MASK_F6 (0x10378)
0584 #define PCIX_TARGET_MASK_F7 (0x1037c)
0585
0586 #define PCIX_MSI_F(i) (0x13000+((i)*4))
0587
0588 #define QLCNIC_PCIX_PH_REG(reg) (QLCNIC_CRB_PCIE + (reg))
0589 #define QLCNIC_PCIX_PS_REG(reg) (QLCNIC_CRB_PCIX_MD + (reg))
0590 #define QLCNIC_PCIE_REG(reg) (QLCNIC_CRB_PCIE + (reg))
0591
0592 #define PCIE_SEM0_LOCK (0x1c000)
0593 #define PCIE_SEM0_UNLOCK (0x1c004)
0594 #define PCIE_SEM_LOCK(N) (PCIE_SEM0_LOCK + 8*(N))
0595 #define PCIE_SEM_UNLOCK(N) (PCIE_SEM0_UNLOCK + 8*(N))
0596
0597 #define PCIE_SETUP_FUNCTION (0x12040)
0598 #define PCIE_SETUP_FUNCTION2 (0x12048)
0599 #define PCIE_MISCCFG_RC (0x1206c)
0600 #define PCIE_TGT_SPLIT_CHICKEN (0x12080)
0601 #define PCIE_CHICKEN3 (0x120c8)
0602
0603 #define ISR_INT_STATE_REG (QLCNIC_PCIX_PS_REG(PCIE_MISCCFG_RC))
0604 #define PCIE_MAX_MASTER_SPLIT (0x14048)
0605
0606 #define QLCNIC_PORT_MODE_NONE 0
0607 #define QLCNIC_PORT_MODE_XG 1
0608 #define QLCNIC_PORT_MODE_GB 2
0609 #define QLCNIC_PORT_MODE_802_3_AP 3
0610 #define QLCNIC_PORT_MODE_AUTO_NEG 4
0611 #define QLCNIC_PORT_MODE_AUTO_NEG_1G 5
0612 #define QLCNIC_PORT_MODE_AUTO_NEG_XG 6
0613 #define QLCNIC_PORT_MODE_ADDR (QLCNIC_CAM_RAM(0x24))
0614 #define QLCNIC_WOL_PORT_MODE (QLCNIC_CAM_RAM(0x198))
0615
0616 #define QLCNIC_WOL_CONFIG_NV (QLCNIC_CAM_RAM(0x184))
0617 #define QLCNIC_WOL_CONFIG (QLCNIC_CAM_RAM(0x188))
0618
0619 #define QLCNIC_PEG_TUNE_MN_PRESENT 0x1
0620 #define QLCNIC_PEG_TUNE_CAPABILITY (QLCNIC_CAM_RAM(0x02c))
0621
0622 #define QLCNIC_DMA_WATCHDOG_CTRL (QLCNIC_CAM_RAM(0x14))
0623 #define QLCNIC_ROM_DEV_INIT_TIMEOUT (0x3e885c)
0624 #define QLCNIC_ROM_DRV_RESET_TIMEOUT (0x3e8860)
0625
0626
0627 #define QLCNIC_DEV_COLD 0x1
0628 #define QLCNIC_DEV_INITIALIZING 0x2
0629 #define QLCNIC_DEV_READY 0x3
0630 #define QLCNIC_DEV_NEED_RESET 0x4
0631 #define QLCNIC_DEV_NEED_QUISCENT 0x5
0632 #define QLCNIC_DEV_FAILED 0x6
0633 #define QLCNIC_DEV_QUISCENT 0x7
0634
0635 #define QLCNIC_DEV_BADBAD 0xbad0bad0
0636
0637 #define QLCNIC_DEV_NPAR_NON_OPER 0
0638 #define QLCNIC_DEV_NPAR_OPER 1
0639 #define QLCNIC_DEV_NPAR_OPER_TIMEO 30
0640
0641 #define QLC_DEV_SET_REF_CNT(VAL, FN) ((VAL) |= (1 << (FN * 4)))
0642 #define QLC_DEV_CLR_REF_CNT(VAL, FN) ((VAL) &= ~(1 << (FN * 4)))
0643 #define QLC_DEV_SET_RST_RDY(VAL, FN) ((VAL) |= (1 << (FN * 4)))
0644 #define QLC_DEV_SET_QSCNT_RDY(VAL, FN) ((VAL) |= (2 << (FN * 4)))
0645 #define QLC_DEV_CLR_RST_QSCNT(VAL, FN) ((VAL) &= ~(3 << (FN * 4)))
0646
0647 #define QLC_DEV_GET_DRV(VAL, FN) (0xf & ((VAL) >> (FN * 4)))
0648 #define QLC_DEV_SET_DRV(VAL, FN) ((VAL) << (FN * 4))
0649
0650 #define QLCNIC_TYPE_NIC 1
0651 #define QLCNIC_TYPE_FCOE 2
0652 #define QLCNIC_TYPE_ISCSI 3
0653
0654 #define QLCNIC_RCODE_DRIVER_INFO 0x20000000
0655 #define QLCNIC_RCODE_DRIVER_CAN_RELOAD BIT_30
0656 #define QLCNIC_RCODE_FATAL_ERROR BIT_31
0657 #define QLCNIC_FWERROR_PEGNUM(code) ((code) & 0xff)
0658 #define QLCNIC_FWERROR_CODE(code) ((code >> 8) & 0x1fffff)
0659 #define QLCNIC_FWERROR_FAN_FAILURE 0x16
0660
0661 #define FW_POLL_DELAY (1 * HZ)
0662 #define FW_FAIL_THRESH 2
0663
0664 #define QLCNIC_RESET_TIMEOUT_SECS 10
0665 #define QLCNIC_INIT_TIMEOUT_SECS 30
0666 #define QLCNIC_RCVPEG_CHECK_RETRY_COUNT 2000
0667 #define QLCNIC_RCVPEG_CHECK_DELAY 10
0668 #define QLCNIC_CMDPEG_CHECK_RETRY_COUNT 60
0669 #define QLCNIC_CMDPEG_CHECK_DELAY 500
0670 #define QLCNIC_HEARTBEAT_PERIOD_MSECS 200
0671 #define QLCNIC_HEARTBEAT_CHECK_RETRY_COUNT 10
0672
0673 #define QLCNIC_MAX_MC_COUNT 38
0674 #define QLCNIC_MAX_UC_COUNT 512
0675 #define QLCNIC_WATCHDOG_TIMEOUTVALUE 5
0676
0677 #define ISR_MSI_INT_TRIGGER(FUNC) (QLCNIC_PCIX_PS_REG(PCIX_MSI_F(FUNC)))
0678 #define ISR_LEGACY_INT_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200)
0679
0680
0681
0682
0683 #define PCIX_INT_VECTOR_BIT_F0 0x0080
0684 #define PCIX_INT_VECTOR_BIT_F1 0x0100
0685 #define PCIX_INT_VECTOR_BIT_F2 0x0200
0686 #define PCIX_INT_VECTOR_BIT_F3 0x0400
0687 #define PCIX_INT_VECTOR_BIT_F4 0x0800
0688 #define PCIX_INT_VECTOR_BIT_F5 0x1000
0689 #define PCIX_INT_VECTOR_BIT_F6 0x2000
0690 #define PCIX_INT_VECTOR_BIT_F7 0x4000
0691
0692 struct qlcnic_legacy_intr_set {
0693 u32 int_vec_bit;
0694 u32 tgt_status_reg;
0695 u32 tgt_mask_reg;
0696 u32 pci_int_reg;
0697 };
0698
0699 #define QLCNIC_MSIX_BASE 0x132110
0700 #define QLCNIC_MAX_VLAN_FILTERS 64
0701
0702 #define FLASH_ROM_WINDOW 0x42110030
0703 #define FLASH_ROM_DATA 0x42150000
0704
0705 #define QLCNIC_FW_DUMP_REG1 0x00130060
0706 #define QLCNIC_FW_DUMP_REG2 0x001e0000
0707 #define QLCNIC_FLASH_SEM2_LK 0x0013C010
0708 #define QLCNIC_FLASH_SEM2_ULK 0x0013C014
0709 #define QLCNIC_FLASH_LOCK_ID 0x001B2100
0710
0711
0712 enum {
0713 QLCNIC_MGMT_FUNC = 0,
0714 QLCNIC_PRIV_FUNC = 1,
0715 QLCNIC_NON_PRIV_FUNC = 2,
0716 QLCNIC_SRIOV_PF_FUNC = 3,
0717 QLCNIC_SRIOV_VF_FUNC = 4,
0718 QLCNIC_UNKNOWN_FUNC_MODE = 5
0719 };
0720
0721 enum {
0722 QLCNIC_PORT_DEFAULTS = 0,
0723 QLCNIC_ADD_VLAN = 1,
0724 QLCNIC_DEL_VLAN = 2
0725 };
0726
0727 #define QLC_DEV_DRV_DEFAULT 0x11111111
0728
0729 #define LSB(x) ((uint8_t)(x))
0730 #define MSB(x) ((uint8_t)((uint16_t)(x) >> 8))
0731
0732 #define LSW(x) ((uint16_t)((uint32_t)(x)))
0733 #define MSW(x) ((uint16_t)((uint32_t)(x) >> 16))
0734
0735 #define LSD(x) ((uint32_t)((uint64_t)(x)))
0736 #define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16))
0737
0738 #define QLCNIC_MS_CTRL 0x41000090
0739 #define QLCNIC_MS_ADDR_LO 0x41000094
0740 #define QLCNIC_MS_ADDR_HI 0x41000098
0741 #define QLCNIC_MS_WRTDATA_LO 0x410000A0
0742 #define QLCNIC_MS_WRTDATA_HI 0x410000A4
0743 #define QLCNIC_MS_WRTDATA_ULO 0x410000B0
0744 #define QLCNIC_MS_WRTDATA_UHI 0x410000B4
0745 #define QLCNIC_MS_RDDATA_LO 0x410000A8
0746 #define QLCNIC_MS_RDDATA_HI 0x410000AC
0747 #define QLCNIC_MS_RDDATA_ULO 0x410000B8
0748 #define QLCNIC_MS_RDDATA_UHI 0x410000BC
0749
0750 #define QLCNIC_TA_WRITE_ENABLE (TA_CTL_ENABLE | TA_CTL_WRITE)
0751 #define QLCNIC_TA_WRITE_START (TA_CTL_START | TA_CTL_ENABLE | TA_CTL_WRITE)
0752 #define QLCNIC_TA_START_ENABLE (TA_CTL_START | TA_CTL_ENABLE)
0753
0754 #define QLCNIC_LEGACY_INTR_CONFIG \
0755 { \
0756 { \
0757 .int_vec_bit = PCIX_INT_VECTOR_BIT_F0, \
0758 .tgt_status_reg = ISR_INT_TARGET_STATUS, \
0759 .tgt_mask_reg = ISR_INT_TARGET_MASK, }, \
0760 \
0761 { \
0762 .int_vec_bit = PCIX_INT_VECTOR_BIT_F1, \
0763 .tgt_status_reg = ISR_INT_TARGET_STATUS_F1, \
0764 .tgt_mask_reg = ISR_INT_TARGET_MASK_F1, }, \
0765 \
0766 { \
0767 .int_vec_bit = PCIX_INT_VECTOR_BIT_F2, \
0768 .tgt_status_reg = ISR_INT_TARGET_STATUS_F2, \
0769 .tgt_mask_reg = ISR_INT_TARGET_MASK_F2, }, \
0770 \
0771 { \
0772 .int_vec_bit = PCIX_INT_VECTOR_BIT_F3, \
0773 .tgt_status_reg = ISR_INT_TARGET_STATUS_F3, \
0774 .tgt_mask_reg = ISR_INT_TARGET_MASK_F3, }, \
0775 \
0776 { \
0777 .int_vec_bit = PCIX_INT_VECTOR_BIT_F4, \
0778 .tgt_status_reg = ISR_INT_TARGET_STATUS_F4, \
0779 .tgt_mask_reg = ISR_INT_TARGET_MASK_F4, }, \
0780 \
0781 { \
0782 .int_vec_bit = PCIX_INT_VECTOR_BIT_F5, \
0783 .tgt_status_reg = ISR_INT_TARGET_STATUS_F5, \
0784 .tgt_mask_reg = ISR_INT_TARGET_MASK_F5, }, \
0785 \
0786 { \
0787 .int_vec_bit = PCIX_INT_VECTOR_BIT_F6, \
0788 .tgt_status_reg = ISR_INT_TARGET_STATUS_F6, \
0789 .tgt_mask_reg = ISR_INT_TARGET_MASK_F6, }, \
0790 \
0791 { \
0792 .int_vec_bit = PCIX_INT_VECTOR_BIT_F7, \
0793 .tgt_status_reg = ISR_INT_TARGET_STATUS_F7, \
0794 .tgt_mask_reg = ISR_INT_TARGET_MASK_F7, }, \
0795 }
0796
0797
0798
0799 #define _qlcnic_crb_get_bit(var, bit) ((var >> bit) & 0x1)
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817 #define qlcnic_gb_rx_flowctl(config_word) \
0818 ((config_word) |= 1 << 5)
0819 #define qlcnic_gb_get_rx_flowctl(config_word) \
0820 _qlcnic_crb_get_bit((config_word), 5)
0821 #define qlcnic_gb_unset_rx_flowctl(config_word) \
0822 ((config_word) &= ~(1 << 5))
0823
0824
0825
0826
0827
0828 #define qlcnic_gb_set_gb0_mask(config_word) \
0829 ((config_word) |= 1 << 0)
0830 #define qlcnic_gb_set_gb1_mask(config_word) \
0831 ((config_word) |= 1 << 2)
0832 #define qlcnic_gb_set_gb2_mask(config_word) \
0833 ((config_word) |= 1 << 4)
0834 #define qlcnic_gb_set_gb3_mask(config_word) \
0835 ((config_word) |= 1 << 6)
0836
0837 #define qlcnic_gb_get_gb0_mask(config_word) \
0838 _qlcnic_crb_get_bit((config_word), 0)
0839 #define qlcnic_gb_get_gb1_mask(config_word) \
0840 _qlcnic_crb_get_bit((config_word), 2)
0841 #define qlcnic_gb_get_gb2_mask(config_word) \
0842 _qlcnic_crb_get_bit((config_word), 4)
0843 #define qlcnic_gb_get_gb3_mask(config_word) \
0844 _qlcnic_crb_get_bit((config_word), 6)
0845
0846 #define qlcnic_gb_unset_gb0_mask(config_word) \
0847 ((config_word) &= ~(1 << 0))
0848 #define qlcnic_gb_unset_gb1_mask(config_word) \
0849 ((config_word) &= ~(1 << 2))
0850 #define qlcnic_gb_unset_gb2_mask(config_word) \
0851 ((config_word) &= ~(1 << 4))
0852 #define qlcnic_gb_unset_gb3_mask(config_word) \
0853 ((config_word) &= ~(1 << 6))
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866 #define qlcnic_xg_set_xg0_mask(config_word) \
0867 ((config_word) |= 1 << 0)
0868 #define qlcnic_xg_set_xg1_mask(config_word) \
0869 ((config_word) |= 1 << 3)
0870
0871 #define qlcnic_xg_get_xg0_mask(config_word) \
0872 _qlcnic_crb_get_bit((config_word), 0)
0873 #define qlcnic_xg_get_xg1_mask(config_word) \
0874 _qlcnic_crb_get_bit((config_word), 3)
0875
0876 #define qlcnic_xg_unset_xg0_mask(config_word) \
0877 ((config_word) &= ~(1 << 0))
0878 #define qlcnic_xg_unset_xg1_mask(config_word) \
0879 ((config_word) &= ~(1 << 3))
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895 #define QLCNIC_NIU_GB_MII_MGMT_ADDR_AUTONEG 4
0896 #define QLCNIC_NIU_GB_MII_MGMT_ADDR_PHY_STATUS 17
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917 #define qlcnic_get_phy_speed(config_word) (((config_word) >> 14) & 0x03)
0918
0919 #define qlcnic_set_phy_speed(config_word, val) \
0920 ((config_word) |= ((val & 0x03) << 14))
0921 #define qlcnic_set_phy_duplex(config_word) \
0922 ((config_word) |= 1 << 13)
0923 #define qlcnic_clear_phy_duplex(config_word) \
0924 ((config_word) &= ~(1 << 13))
0925
0926 #define qlcnic_get_phy_link(config_word) \
0927 _qlcnic_crb_get_bit(config_word, 10)
0928 #define qlcnic_get_phy_duplex(config_word) \
0929 _qlcnic_crb_get_bit(config_word, 13)
0930
0931 #define QLCNIC_NIU_NON_PROMISC_MODE 0
0932 #define QLCNIC_NIU_PROMISC_MODE 1
0933 #define QLCNIC_NIU_ALLMULTI_MODE 2
0934
0935 #define QLCNIC_PCIE_SEM_TIMEOUT 10000
0936
0937 struct crb_128M_2M_sub_block_map {
0938 unsigned valid;
0939 unsigned start_128M;
0940 unsigned end_128M;
0941 unsigned start_2M;
0942 };
0943
0944 struct crb_128M_2M_block_map{
0945 struct crb_128M_2M_sub_block_map sub_block[16];
0946 };
0947 #endif