1*a9083016SGiridhar Malavali /* 2*a9083016SGiridhar Malavali * QLogic Fibre Channel HBA Driver 3*a9083016SGiridhar Malavali * Copyright (c) 2003-2008 QLogic Corporation 4*a9083016SGiridhar Malavali * 5*a9083016SGiridhar Malavali * See LICENSE.qla2xxx for copyright and licensing details. 6*a9083016SGiridhar Malavali */ 7*a9083016SGiridhar Malavali #ifndef __QLA_NX_H 8*a9083016SGiridhar Malavali #define __QLA_NX_H 9*a9083016SGiridhar Malavali 10*a9083016SGiridhar Malavali /* 11*a9083016SGiridhar Malavali * Following are the states of the Phantom. Phantom will set them and 12*a9083016SGiridhar Malavali * Host will read to check if the fields are correct. 13*a9083016SGiridhar Malavali */ 14*a9083016SGiridhar Malavali #define PHAN_INITIALIZE_FAILED 0xffff 15*a9083016SGiridhar Malavali #define PHAN_INITIALIZE_COMPLETE 0xff01 16*a9083016SGiridhar Malavali 17*a9083016SGiridhar Malavali /* Host writes the following to notify that it has done the init-handshake */ 18*a9083016SGiridhar Malavali #define PHAN_INITIALIZE_ACK 0xf00f 19*a9083016SGiridhar Malavali #define PHAN_PEG_RCV_INITIALIZED 0xff01 20*a9083016SGiridhar Malavali 21*a9083016SGiridhar Malavali /*CRB_RELATED*/ 22*a9083016SGiridhar Malavali #define QLA82XX_CRB_BASE QLA82XX_CAM_RAM(0x200) 23*a9083016SGiridhar Malavali #define QLA82XX_REG(X) (QLA82XX_CRB_BASE+(X)) 24*a9083016SGiridhar Malavali 25*a9083016SGiridhar Malavali #define CRB_CMDPEG_STATE QLA82XX_REG(0x50) 26*a9083016SGiridhar Malavali #define CRB_RCVPEG_STATE QLA82XX_REG(0x13c) 27*a9083016SGiridhar Malavali #define BOOT_LOADER_DIMM_STATUS QLA82XX_REG(0x54) 28*a9083016SGiridhar Malavali #define CRB_DMA_SHIFT QLA82XX_REG(0xcc) 29*a9083016SGiridhar Malavali 30*a9083016SGiridhar Malavali #define QLA82XX_HW_H0_CH_HUB_ADR 0x05 31*a9083016SGiridhar Malavali #define QLA82XX_HW_H1_CH_HUB_ADR 0x0E 32*a9083016SGiridhar Malavali #define QLA82XX_HW_H2_CH_HUB_ADR 0x03 33*a9083016SGiridhar Malavali #define QLA82XX_HW_H3_CH_HUB_ADR 0x01 34*a9083016SGiridhar Malavali #define QLA82XX_HW_H4_CH_HUB_ADR 0x06 35*a9083016SGiridhar Malavali #define QLA82XX_HW_H5_CH_HUB_ADR 0x07 36*a9083016SGiridhar Malavali #define QLA82XX_HW_H6_CH_HUB_ADR 0x08 37*a9083016SGiridhar Malavali 38*a9083016SGiridhar Malavali /* Hub 0 */ 39*a9083016SGiridhar Malavali #define QLA82XX_HW_MN_CRB_AGT_ADR 0x15 40*a9083016SGiridhar Malavali #define QLA82XX_HW_MS_CRB_AGT_ADR 0x25 41*a9083016SGiridhar Malavali 42*a9083016SGiridhar Malavali /* Hub 1 */ 43*a9083016SGiridhar Malavali #define QLA82XX_HW_PS_CRB_AGT_ADR 0x73 44*a9083016SGiridhar Malavali #define QLA82XX_HW_QMS_CRB_AGT_ADR 0x00 45*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX3_CRB_AGT_ADR 0x0b 46*a9083016SGiridhar Malavali #define QLA82XX_HW_SQGS0_CRB_AGT_ADR 0x01 47*a9083016SGiridhar Malavali #define QLA82XX_HW_SQGS1_CRB_AGT_ADR 0x02 48*a9083016SGiridhar Malavali #define QLA82XX_HW_SQGS2_CRB_AGT_ADR 0x03 49*a9083016SGiridhar Malavali #define QLA82XX_HW_SQGS3_CRB_AGT_ADR 0x04 50*a9083016SGiridhar Malavali #define QLA82XX_HW_C2C0_CRB_AGT_ADR 0x58 51*a9083016SGiridhar Malavali #define QLA82XX_HW_C2C1_CRB_AGT_ADR 0x59 52*a9083016SGiridhar Malavali #define QLA82XX_HW_C2C2_CRB_AGT_ADR 0x5a 53*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX2_CRB_AGT_ADR 0x0a 54*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX4_CRB_AGT_ADR 0x0c 55*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX7_CRB_AGT_ADR 0x0f 56*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX9_CRB_AGT_ADR 0x12 57*a9083016SGiridhar Malavali #define QLA82XX_HW_SMB_CRB_AGT_ADR 0x18 58*a9083016SGiridhar Malavali 59*a9083016SGiridhar Malavali /* Hub 2 */ 60*a9083016SGiridhar Malavali #define QLA82XX_HW_NIU_CRB_AGT_ADR 0x31 61*a9083016SGiridhar Malavali #define QLA82XX_HW_I2C0_CRB_AGT_ADR 0x19 62*a9083016SGiridhar Malavali #define QLA82XX_HW_I2C1_CRB_AGT_ADR 0x29 63*a9083016SGiridhar Malavali 64*a9083016SGiridhar Malavali #define QLA82XX_HW_SN_CRB_AGT_ADR 0x10 65*a9083016SGiridhar Malavali #define QLA82XX_HW_I2Q_CRB_AGT_ADR 0x20 66*a9083016SGiridhar Malavali #define QLA82XX_HW_LPC_CRB_AGT_ADR 0x22 67*a9083016SGiridhar Malavali #define QLA82XX_HW_ROMUSB_CRB_AGT_ADR 0x21 68*a9083016SGiridhar Malavali #define QLA82XX_HW_QM_CRB_AGT_ADR 0x66 69*a9083016SGiridhar Malavali #define QLA82XX_HW_SQG0_CRB_AGT_ADR 0x60 70*a9083016SGiridhar Malavali #define QLA82XX_HW_SQG1_CRB_AGT_ADR 0x61 71*a9083016SGiridhar Malavali #define QLA82XX_HW_SQG2_CRB_AGT_ADR 0x62 72*a9083016SGiridhar Malavali #define QLA82XX_HW_SQG3_CRB_AGT_ADR 0x63 73*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX1_CRB_AGT_ADR 0x09 74*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX5_CRB_AGT_ADR 0x0d 75*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX6_CRB_AGT_ADR 0x0e 76*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX8_CRB_AGT_ADR 0x11 77*a9083016SGiridhar Malavali 78*a9083016SGiridhar Malavali /* Hub 3 */ 79*a9083016SGiridhar Malavali #define QLA82XX_HW_PH_CRB_AGT_ADR 0x1A 80*a9083016SGiridhar Malavali #define QLA82XX_HW_SRE_CRB_AGT_ADR 0x50 81*a9083016SGiridhar Malavali #define QLA82XX_HW_EG_CRB_AGT_ADR 0x51 82*a9083016SGiridhar Malavali #define QLA82XX_HW_RPMX0_CRB_AGT_ADR 0x08 83*a9083016SGiridhar Malavali 84*a9083016SGiridhar Malavali /* Hub 4 */ 85*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGN0_CRB_AGT_ADR 0x40 86*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGN1_CRB_AGT_ADR 0x41 87*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGN2_CRB_AGT_ADR 0x42 88*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGN3_CRB_AGT_ADR 0x43 89*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGNI_CRB_AGT_ADR 0x44 90*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGND_CRB_AGT_ADR 0x45 91*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGNC_CRB_AGT_ADR 0x46 92*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGR0_CRB_AGT_ADR 0x47 93*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGR1_CRB_AGT_ADR 0x48 94*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGR2_CRB_AGT_ADR 0x49 95*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGR3_CRB_AGT_ADR 0x4a 96*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGN4_CRB_AGT_ADR 0x4b 97*a9083016SGiridhar Malavali 98*a9083016SGiridhar Malavali /* Hub 5 */ 99*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGS0_CRB_AGT_ADR 0x40 100*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGS1_CRB_AGT_ADR 0x41 101*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGS2_CRB_AGT_ADR 0x42 102*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGS3_CRB_AGT_ADR 0x43 103*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGSI_CRB_AGT_ADR 0x44 104*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGSD_CRB_AGT_ADR 0x45 105*a9083016SGiridhar Malavali #define QLA82XX_HW_PEGSC_CRB_AGT_ADR 0x46 106*a9083016SGiridhar Malavali 107*a9083016SGiridhar Malavali /* Hub 6 */ 108*a9083016SGiridhar Malavali #define QLA82XX_HW_CAS0_CRB_AGT_ADR 0x46 109*a9083016SGiridhar Malavali #define QLA82XX_HW_CAS1_CRB_AGT_ADR 0x47 110*a9083016SGiridhar Malavali #define QLA82XX_HW_CAS2_CRB_AGT_ADR 0x48 111*a9083016SGiridhar Malavali #define QLA82XX_HW_CAS3_CRB_AGT_ADR 0x49 112*a9083016SGiridhar Malavali #define QLA82XX_HW_NCM_CRB_AGT_ADR 0x16 113*a9083016SGiridhar Malavali #define QLA82XX_HW_TMR_CRB_AGT_ADR 0x17 114*a9083016SGiridhar Malavali #define QLA82XX_HW_XDMA_CRB_AGT_ADR 0x05 115*a9083016SGiridhar Malavali #define QLA82XX_HW_OCM0_CRB_AGT_ADR 0x06 116*a9083016SGiridhar Malavali #define QLA82XX_HW_OCM1_CRB_AGT_ADR 0x07 117*a9083016SGiridhar Malavali 118*a9083016SGiridhar Malavali /* This field defines PCI/X adr [25:20] of agents on the CRB */ 119*a9083016SGiridhar Malavali /* */ 120*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PH 0 121*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PS 1 122*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_MN 2 123*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_MS 3 124*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SRE 5 125*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_NIU 6 126*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_QMN 7 127*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQN0 8 128*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQN1 9 129*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQN2 10 130*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQN3 11 131*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_QMS 12 132*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQS0 13 133*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQS1 14 134*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQS2 15 135*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SQS3 16 136*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGN0 17 137*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGN1 18 138*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGN2 19 139*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGN3 20 140*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGN4 QLA82XX_HW_PX_MAP_CRB_SQS2 141*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGND 21 142*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGNI 22 143*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGS0 23 144*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGS1 24 145*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGS2 25 146*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGS3 26 147*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGSD 27 148*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGSI 28 149*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SN 29 150*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_EG 31 151*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PH2 32 152*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PS2 33 153*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_CAM 34 154*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_CAS0 35 155*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_CAS1 36 156*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_CAS2 37 157*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_C2C0 38 158*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_C2C1 39 159*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_TIMR 40 160*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX1 42 161*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX2 43 162*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX3 44 163*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX4 45 164*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX5 46 165*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX6 47 166*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX7 48 167*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_XDMA 49 168*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_I2Q 50 169*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_ROMUSB 51 170*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_CAS3 52 171*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX0 53 172*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX8 54 173*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_RPMX9 55 174*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_OCM0 56 175*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_OCM1 57 176*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_SMB 58 177*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_I2C0 59 178*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_I2C1 60 179*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_LPC 61 180*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGNC 62 181*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGR0 63 182*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGR1 4 183*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGR2 30 184*a9083016SGiridhar Malavali #define QLA82XX_HW_PX_MAP_CRB_PGR3 41 185*a9083016SGiridhar Malavali 186*a9083016SGiridhar Malavali /* This field defines CRB adr [31:20] of the agents */ 187*a9083016SGiridhar Malavali /* */ 188*a9083016SGiridhar Malavali 189*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_MN ((QLA82XX_HW_H0_CH_HUB_ADR << 7) | \ 190*a9083016SGiridhar Malavali QLA82XX_HW_MN_CRB_AGT_ADR) 191*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PH ((QLA82XX_HW_H0_CH_HUB_ADR << 7) | \ 192*a9083016SGiridhar Malavali QLA82XX_HW_PH_CRB_AGT_ADR) 193*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_MS ((QLA82XX_HW_H0_CH_HUB_ADR << 7) | \ 194*a9083016SGiridhar Malavali QLA82XX_HW_MS_CRB_AGT_ADR) 195*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PS ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 196*a9083016SGiridhar Malavali QLA82XX_HW_PS_CRB_AGT_ADR) 197*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SS ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 198*a9083016SGiridhar Malavali QLA82XX_HW_SS_CRB_AGT_ADR) 199*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX3 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 200*a9083016SGiridhar Malavali QLA82XX_HW_RPMX3_CRB_AGT_ADR) 201*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_QMS ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 202*a9083016SGiridhar Malavali QLA82XX_HW_QMS_CRB_AGT_ADR) 203*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQS0 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 204*a9083016SGiridhar Malavali QLA82XX_HW_SQGS0_CRB_AGT_ADR) 205*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQS1 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 206*a9083016SGiridhar Malavali QLA82XX_HW_SQGS1_CRB_AGT_ADR) 207*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQS2 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 208*a9083016SGiridhar Malavali QLA82XX_HW_SQGS2_CRB_AGT_ADR) 209*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQS3 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 210*a9083016SGiridhar Malavali QLA82XX_HW_SQGS3_CRB_AGT_ADR) 211*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_C2C0 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 212*a9083016SGiridhar Malavali QLA82XX_HW_C2C0_CRB_AGT_ADR) 213*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_C2C1 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 214*a9083016SGiridhar Malavali QLA82XX_HW_C2C1_CRB_AGT_ADR) 215*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX2 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 216*a9083016SGiridhar Malavali QLA82XX_HW_RPMX2_CRB_AGT_ADR) 217*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX4 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 218*a9083016SGiridhar Malavali QLA82XX_HW_RPMX4_CRB_AGT_ADR) 219*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX7 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 220*a9083016SGiridhar Malavali QLA82XX_HW_RPMX7_CRB_AGT_ADR) 221*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX9 ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 222*a9083016SGiridhar Malavali QLA82XX_HW_RPMX9_CRB_AGT_ADR) 223*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SMB ((QLA82XX_HW_H1_CH_HUB_ADR << 7) | \ 224*a9083016SGiridhar Malavali QLA82XX_HW_SMB_CRB_AGT_ADR) 225*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_NIU ((QLA82XX_HW_H2_CH_HUB_ADR << 7) | \ 226*a9083016SGiridhar Malavali QLA82XX_HW_NIU_CRB_AGT_ADR) 227*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_I2C0 ((QLA82XX_HW_H2_CH_HUB_ADR << 7) | \ 228*a9083016SGiridhar Malavali QLA82XX_HW_I2C0_CRB_AGT_ADR) 229*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_I2C1 ((QLA82XX_HW_H2_CH_HUB_ADR << 7) | \ 230*a9083016SGiridhar Malavali QLA82XX_HW_I2C1_CRB_AGT_ADR) 231*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SRE ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 232*a9083016SGiridhar Malavali QLA82XX_HW_SRE_CRB_AGT_ADR) 233*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_EG ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 234*a9083016SGiridhar Malavali QLA82XX_HW_EG_CRB_AGT_ADR) 235*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX0 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 236*a9083016SGiridhar Malavali QLA82XX_HW_RPMX0_CRB_AGT_ADR) 237*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_QMN ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 238*a9083016SGiridhar Malavali QLA82XX_HW_QM_CRB_AGT_ADR) 239*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQN0 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 240*a9083016SGiridhar Malavali QLA82XX_HW_SQG0_CRB_AGT_ADR) 241*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQN1 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 242*a9083016SGiridhar Malavali QLA82XX_HW_SQG1_CRB_AGT_ADR) 243*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQN2 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 244*a9083016SGiridhar Malavali QLA82XX_HW_SQG2_CRB_AGT_ADR) 245*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SQN3 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 246*a9083016SGiridhar Malavali QLA82XX_HW_SQG3_CRB_AGT_ADR) 247*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX1 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 248*a9083016SGiridhar Malavali QLA82XX_HW_RPMX1_CRB_AGT_ADR) 249*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX5 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 250*a9083016SGiridhar Malavali QLA82XX_HW_RPMX5_CRB_AGT_ADR) 251*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX6 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 252*a9083016SGiridhar Malavali QLA82XX_HW_RPMX6_CRB_AGT_ADR) 253*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_RPMX8 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 254*a9083016SGiridhar Malavali QLA82XX_HW_RPMX8_CRB_AGT_ADR) 255*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_CAS0 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 256*a9083016SGiridhar Malavali QLA82XX_HW_CAS0_CRB_AGT_ADR) 257*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_CAS1 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 258*a9083016SGiridhar Malavali QLA82XX_HW_CAS1_CRB_AGT_ADR) 259*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_CAS2 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 260*a9083016SGiridhar Malavali QLA82XX_HW_CAS2_CRB_AGT_ADR) 261*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_CAS3 ((QLA82XX_HW_H3_CH_HUB_ADR << 7) | \ 262*a9083016SGiridhar Malavali QLA82XX_HW_CAS3_CRB_AGT_ADR) 263*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGNI ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 264*a9083016SGiridhar Malavali QLA82XX_HW_PEGNI_CRB_AGT_ADR) 265*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGND ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 266*a9083016SGiridhar Malavali QLA82XX_HW_PEGND_CRB_AGT_ADR) 267*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGN0 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 268*a9083016SGiridhar Malavali QLA82XX_HW_PEGN0_CRB_AGT_ADR) 269*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGN1 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 270*a9083016SGiridhar Malavali QLA82XX_HW_PEGN1_CRB_AGT_ADR) 271*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGN2 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 272*a9083016SGiridhar Malavali QLA82XX_HW_PEGN2_CRB_AGT_ADR) 273*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGN3 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 274*a9083016SGiridhar Malavali QLA82XX_HW_PEGN3_CRB_AGT_ADR) 275*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGN4 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 276*a9083016SGiridhar Malavali QLA82XX_HW_PEGN4_CRB_AGT_ADR) 277*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGNC ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 278*a9083016SGiridhar Malavali QLA82XX_HW_PEGNC_CRB_AGT_ADR) 279*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGR0 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 280*a9083016SGiridhar Malavali QLA82XX_HW_PEGR0_CRB_AGT_ADR) 281*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGR1 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 282*a9083016SGiridhar Malavali QLA82XX_HW_PEGR1_CRB_AGT_ADR) 283*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGR2 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 284*a9083016SGiridhar Malavali QLA82XX_HW_PEGR2_CRB_AGT_ADR) 285*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGR3 ((QLA82XX_HW_H4_CH_HUB_ADR << 7) | \ 286*a9083016SGiridhar Malavali QLA82XX_HW_PEGR3_CRB_AGT_ADR) 287*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGSI ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 288*a9083016SGiridhar Malavali QLA82XX_HW_PEGSI_CRB_AGT_ADR) 289*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGSD ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 290*a9083016SGiridhar Malavali QLA82XX_HW_PEGSD_CRB_AGT_ADR) 291*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGS0 ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 292*a9083016SGiridhar Malavali QLA82XX_HW_PEGS0_CRB_AGT_ADR) 293*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGS1 ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 294*a9083016SGiridhar Malavali QLA82XX_HW_PEGS1_CRB_AGT_ADR) 295*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGS2 ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 296*a9083016SGiridhar Malavali QLA82XX_HW_PEGS2_CRB_AGT_ADR) 297*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGS3 ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 298*a9083016SGiridhar Malavali QLA82XX_HW_PEGS3_CRB_AGT_ADR) 299*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_PGSC ((QLA82XX_HW_H5_CH_HUB_ADR << 7) | \ 300*a9083016SGiridhar Malavali QLA82XX_HW_PEGSC_CRB_AGT_ADR) 301*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_CAM ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 302*a9083016SGiridhar Malavali QLA82XX_HW_NCM_CRB_AGT_ADR) 303*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_TIMR ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 304*a9083016SGiridhar Malavali QLA82XX_HW_TMR_CRB_AGT_ADR) 305*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_XDMA ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 306*a9083016SGiridhar Malavali QLA82XX_HW_XDMA_CRB_AGT_ADR) 307*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_SN ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 308*a9083016SGiridhar Malavali QLA82XX_HW_SN_CRB_AGT_ADR) 309*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_I2Q ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 310*a9083016SGiridhar Malavali QLA82XX_HW_I2Q_CRB_AGT_ADR) 311*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_ROMUSB ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 312*a9083016SGiridhar Malavali QLA82XX_HW_ROMUSB_CRB_AGT_ADR) 313*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_OCM0 ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 314*a9083016SGiridhar Malavali QLA82XX_HW_OCM0_CRB_AGT_ADR) 315*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_OCM1 ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 316*a9083016SGiridhar Malavali QLA82XX_HW_OCM1_CRB_AGT_ADR) 317*a9083016SGiridhar Malavali #define QLA82XX_HW_CRB_HUB_AGT_ADR_LPC ((QLA82XX_HW_H6_CH_HUB_ADR << 7) | \ 318*a9083016SGiridhar Malavali QLA82XX_HW_LPC_CRB_AGT_ADR) 319*a9083016SGiridhar Malavali 320*a9083016SGiridhar Malavali #define ROMUSB_GLB (QLA82XX_CRB_ROMUSB + 0x00000) 321*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_GLB_PEGTUNE_DONE (ROMUSB_GLB + 0x005c) 322*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_GLB_STATUS (ROMUSB_GLB + 0x0004) 323*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_GLB_SW_RESET (ROMUSB_GLB + 0x0008) 324*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_ADDRESS (ROMUSB_ROM + 0x0008) 325*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_WDATA (ROMUSB_ROM + 0x000c) 326*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_ABYTE_CNT (ROMUSB_ROM + 0x0010) 327*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014) 328*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_RDATA (ROMUSB_ROM + 0x0018) 329*a9083016SGiridhar Malavali 330*a9083016SGiridhar Malavali #define ROMUSB_ROM (QLA82XX_CRB_ROMUSB + 0x10000) 331*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_ROM_INSTR_OPCODE (ROMUSB_ROM + 0x0004) 332*a9083016SGiridhar Malavali #define QLA82XX_ROMUSB_GLB_CAS_RST (ROMUSB_GLB + 0x0038) 333*a9083016SGiridhar Malavali 334*a9083016SGiridhar Malavali /* Lock IDs for ROM lock */ 335*a9083016SGiridhar Malavali #define ROM_LOCK_DRIVER 0x0d417340 336*a9083016SGiridhar Malavali 337*a9083016SGiridhar Malavali #define QLA82XX_PCI_CRB_WINDOWSIZE 0x00100000 /* all are 1MB windows */ 338*a9083016SGiridhar Malavali #define QLA82XX_PCI_CRB_WINDOW(A) \ 339*a9083016SGiridhar Malavali (QLA82XX_PCI_CRBSPACE + (A)*QLA82XX_PCI_CRB_WINDOWSIZE) 340*a9083016SGiridhar Malavali #define QLA82XX_CRB_C2C_0 \ 341*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_C2C0) 342*a9083016SGiridhar Malavali #define QLA82XX_CRB_C2C_1 \ 343*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_C2C1) 344*a9083016SGiridhar Malavali #define QLA82XX_CRB_C2C_2 \ 345*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_C2C2) 346*a9083016SGiridhar Malavali #define QLA82XX_CRB_CAM \ 347*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_CAM) 348*a9083016SGiridhar Malavali #define QLA82XX_CRB_CASPER \ 349*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_CAS) 350*a9083016SGiridhar Malavali #define QLA82XX_CRB_CASPER_0 \ 351*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_CAS0) 352*a9083016SGiridhar Malavali #define QLA82XX_CRB_CASPER_1 \ 353*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_CAS1) 354*a9083016SGiridhar Malavali #define QLA82XX_CRB_CASPER_2 \ 355*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_CAS2) 356*a9083016SGiridhar Malavali #define QLA82XX_CRB_DDR_MD \ 357*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_MS) 358*a9083016SGiridhar Malavali #define QLA82XX_CRB_DDR_NET \ 359*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_MN) 360*a9083016SGiridhar Malavali #define QLA82XX_CRB_EPG \ 361*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_EG) 362*a9083016SGiridhar Malavali #define QLA82XX_CRB_I2Q \ 363*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_I2Q) 364*a9083016SGiridhar Malavali #define QLA82XX_CRB_NIU \ 365*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_NIU) 366*a9083016SGiridhar Malavali 367*a9083016SGiridhar Malavali #define QLA82XX_CRB_PCIX_HOST \ 368*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PH) 369*a9083016SGiridhar Malavali #define QLA82XX_CRB_PCIX_HOST2 \ 370*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PH2) 371*a9083016SGiridhar Malavali #define QLA82XX_CRB_PCIX_MD \ 372*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PS) 373*a9083016SGiridhar Malavali #define QLA82XX_CRB_PCIE \ 374*a9083016SGiridhar Malavali QLA82XX_CRB_PCIX_MD 375*a9083016SGiridhar Malavali 376*a9083016SGiridhar Malavali /* window 1 pcie slot */ 377*a9083016SGiridhar Malavali #define QLA82XX_CRB_PCIE2 \ 378*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PS2) 379*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_0 \ 380*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGS0) 381*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_1 \ 382*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGS1) 383*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_2 \ 384*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGS2) 385*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_3 \ 386*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGS3) 387*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_3 \ 388*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGS3) 389*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_D \ 390*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGSD) 391*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_MD_I \ 392*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGSI) 393*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_0 \ 394*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGN0) 395*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_1 \ 396*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGN1) 397*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_2 \ 398*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGN2) 399*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_3 \ 400*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGN3) 401*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_4 \ 402*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGN4) 403*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_D \ 404*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGND) 405*a9083016SGiridhar Malavali #define QLA82XX_CRB_PEG_NET_I \ 406*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_PGNI) 407*a9083016SGiridhar Malavali #define QLA82XX_CRB_PQM_MD \ 408*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_QMS) 409*a9083016SGiridhar Malavali #define QLA82XX_CRB_PQM_NET \ 410*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_QMN) 411*a9083016SGiridhar Malavali #define QLA82XX_CRB_QDR_MD \ 412*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SS) 413*a9083016SGiridhar Malavali #define QLA82XX_CRB_QDR_NET \ 414*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SN) 415*a9083016SGiridhar Malavali #define QLA82XX_CRB_ROMUSB \ 416*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_ROMUSB) 417*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_0 \ 418*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX0) 419*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_1 \ 420*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX1) 421*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_2 \ 422*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX2) 423*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_3 \ 424*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX3) 425*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_4 \ 426*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX4) 427*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_5 \ 428*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX5) 429*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_6 \ 430*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX6) 431*a9083016SGiridhar Malavali #define QLA82XX_CRB_RPMX_7 \ 432*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_RPMX7) 433*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_MD_0 \ 434*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQS0) 435*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_MD_1 \ 436*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQS1) 437*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_MD_2 \ 438*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQS2) 439*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_MD_3 \ 440*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQS3) 441*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_NET_0 \ 442*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQN0) 443*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_NET_1 \ 444*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQN1) 445*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_NET_2 \ 446*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQN2) 447*a9083016SGiridhar Malavali #define QLA82XX_CRB_SQM_NET_3 \ 448*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SQN3) 449*a9083016SGiridhar Malavali #define QLA82XX_CRB_SRE \ 450*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SRE) 451*a9083016SGiridhar Malavali #define QLA82XX_CRB_TIMER \ 452*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_TIMR) 453*a9083016SGiridhar Malavali #define QLA82XX_CRB_XDMA \ 454*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_XDMA) 455*a9083016SGiridhar Malavali #define QLA82XX_CRB_I2C0 \ 456*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_I2C0) 457*a9083016SGiridhar Malavali #define QLA82XX_CRB_I2C1 \ 458*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_I2C1) 459*a9083016SGiridhar Malavali #define QLA82XX_CRB_OCM0 \ 460*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_OCM0) 461*a9083016SGiridhar Malavali #define QLA82XX_CRB_SMB \ 462*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(QLA82XX_HW_PX_MAP_CRB_SMB) 463*a9083016SGiridhar Malavali #define QLA82XX_CRB_MAX \ 464*a9083016SGiridhar Malavali QLA82XX_PCI_CRB_WINDOW(64) 465*a9083016SGiridhar Malavali 466*a9083016SGiridhar Malavali /* 467*a9083016SGiridhar Malavali * ====================== BASE ADDRESSES ON-CHIP ====================== 468*a9083016SGiridhar Malavali * Base addresses of major components on-chip. 469*a9083016SGiridhar Malavali * ====================== BASE ADDRESSES ON-CHIP ====================== 470*a9083016SGiridhar Malavali */ 471*a9083016SGiridhar Malavali #define QLA82XX_ADDR_DDR_NET (0x0000000000000000ULL) 472*a9083016SGiridhar Malavali #define QLA82XX_ADDR_DDR_NET_MAX (0x000000000fffffffULL) 473*a9083016SGiridhar Malavali 474*a9083016SGiridhar Malavali /* Imbus address bit used to indicate a host address. This bit is 475*a9083016SGiridhar Malavali * eliminated by the pcie bar and bar select before presentation 476*a9083016SGiridhar Malavali * over pcie. */ 477*a9083016SGiridhar Malavali /* host memory via IMBUS */ 478*a9083016SGiridhar Malavali #define QLA82XX_P2_ADDR_PCIE (0x0000000800000000ULL) 479*a9083016SGiridhar Malavali #define QLA82XX_P3_ADDR_PCIE (0x0000008000000000ULL) 480*a9083016SGiridhar Malavali #define QLA82XX_ADDR_PCIE_MAX (0x0000000FFFFFFFFFULL) 481*a9083016SGiridhar Malavali #define QLA82XX_ADDR_OCM0 (0x0000000200000000ULL) 482*a9083016SGiridhar Malavali #define QLA82XX_ADDR_OCM0_MAX (0x00000002000fffffULL) 483*a9083016SGiridhar Malavali #define QLA82XX_ADDR_OCM1 (0x0000000200400000ULL) 484*a9083016SGiridhar Malavali #define QLA82XX_ADDR_OCM1_MAX (0x00000002004fffffULL) 485*a9083016SGiridhar Malavali #define QLA82XX_ADDR_QDR_NET (0x0000000300000000ULL) 486*a9083016SGiridhar Malavali 487*a9083016SGiridhar Malavali #define QLA82XX_P2_ADDR_QDR_NET_MAX (0x00000003001fffffULL) 488*a9083016SGiridhar Malavali #define QLA82XX_P3_ADDR_QDR_NET_MAX (0x0000000303ffffffULL) 489*a9083016SGiridhar Malavali 490*a9083016SGiridhar Malavali #define QLA82XX_PCI_CRBSPACE (unsigned long)0x06000000 491*a9083016SGiridhar Malavali #define QLA82XX_PCI_DIRECT_CRB (unsigned long)0x04400000 492*a9083016SGiridhar Malavali #define QLA82XX_PCI_CAMQM (unsigned long)0x04800000 493*a9083016SGiridhar Malavali #define QLA82XX_PCI_CAMQM_MAX (unsigned long)0x04ffffff 494*a9083016SGiridhar Malavali #define QLA82XX_PCI_DDR_NET (unsigned long)0x00000000 495*a9083016SGiridhar Malavali #define QLA82XX_PCI_QDR_NET (unsigned long)0x04000000 496*a9083016SGiridhar Malavali #define QLA82XX_PCI_QDR_NET_MAX (unsigned long)0x043fffff 497*a9083016SGiridhar Malavali 498*a9083016SGiridhar Malavali /* 499*a9083016SGiridhar Malavali * Register offsets for MN 500*a9083016SGiridhar Malavali */ 501*a9083016SGiridhar Malavali #define MIU_CONTROL (0x000) 502*a9083016SGiridhar Malavali #define MIU_TAG (0x004) 503*a9083016SGiridhar Malavali #define MIU_TEST_AGT_CTRL (0x090) 504*a9083016SGiridhar Malavali #define MIU_TEST_AGT_ADDR_LO (0x094) 505*a9083016SGiridhar Malavali #define MIU_TEST_AGT_ADDR_HI (0x098) 506*a9083016SGiridhar Malavali #define MIU_TEST_AGT_WRDATA_LO (0x0a0) 507*a9083016SGiridhar Malavali #define MIU_TEST_AGT_WRDATA_HI (0x0a4) 508*a9083016SGiridhar Malavali #define MIU_TEST_AGT_WRDATA(i) (0x0a0+(4*(i))) 509*a9083016SGiridhar Malavali #define MIU_TEST_AGT_RDDATA_LO (0x0a8) 510*a9083016SGiridhar Malavali #define MIU_TEST_AGT_RDDATA_HI (0x0ac) 511*a9083016SGiridhar Malavali #define MIU_TEST_AGT_RDDATA(i) (0x0a8+(4*(i))) 512*a9083016SGiridhar Malavali #define MIU_TEST_AGT_ADDR_MASK 0xfffffff8 513*a9083016SGiridhar Malavali #define MIU_TEST_AGT_UPPER_ADDR(off) (0) 514*a9083016SGiridhar Malavali 515*a9083016SGiridhar Malavali /* MIU_TEST_AGT_CTRL flags. work for SIU as well */ 516*a9083016SGiridhar Malavali #define MIU_TA_CTL_START 1 517*a9083016SGiridhar Malavali #define MIU_TA_CTL_ENABLE 2 518*a9083016SGiridhar Malavali #define MIU_TA_CTL_WRITE 4 519*a9083016SGiridhar Malavali #define MIU_TA_CTL_BUSY 8 520*a9083016SGiridhar Malavali 521*a9083016SGiridhar Malavali /*CAM RAM */ 522*a9083016SGiridhar Malavali # define QLA82XX_CAM_RAM_BASE (QLA82XX_CRB_CAM + 0x02000) 523*a9083016SGiridhar Malavali # define QLA82XX_CAM_RAM(reg) (QLA82XX_CAM_RAM_BASE + (reg)) 524*a9083016SGiridhar Malavali 525*a9083016SGiridhar Malavali #define QLA82XX_PEG_TUNE_MN_SPD_ZEROED 0x80000000 526*a9083016SGiridhar Malavali #define QLA82XX_BOOT_LOADER_MN_ISSUE 0xff00ffff 527*a9083016SGiridhar Malavali #define QLA82XX_PORT_MODE_ADDR (QLA82XX_CAM_RAM(0x24)) 528*a9083016SGiridhar Malavali #define QLA82XX_PEG_HALT_STATUS1 (QLA82XX_CAM_RAM(0xa8)) 529*a9083016SGiridhar Malavali #define QLA82XX_PEG_HALT_STATUS2 (QLA82XX_CAM_RAM(0xac)) 530*a9083016SGiridhar Malavali #define QLA82XX_PEG_ALIVE_COUNTER (QLA82XX_CAM_RAM(0xb0)) 531*a9083016SGiridhar Malavali 532*a9083016SGiridhar Malavali #define QLA82XX_CAMRAM_DB1 (QLA82XX_CAM_RAM(0x1b8)) 533*a9083016SGiridhar Malavali #define QLA82XX_CAMRAM_DB2 (QLA82XX_CAM_RAM(0x1bc)) 534*a9083016SGiridhar Malavali 535*a9083016SGiridhar Malavali #define HALT_STATUS_UNRECOVERABLE 0x80000000 536*a9083016SGiridhar Malavali #define HALT_STATUS_RECOVERABLE 0x40000000 537*a9083016SGiridhar Malavali 538*a9083016SGiridhar Malavali /* Driver Coexistence Defines */ 539*a9083016SGiridhar Malavali #define QLA82XX_CRB_DRV_ACTIVE (QLA82XX_CAM_RAM(0x138)) 540*a9083016SGiridhar Malavali #define QLA82XX_CRB_DEV_STATE (QLA82XX_CAM_RAM(0x140)) 541*a9083016SGiridhar Malavali #define QLA82XX_CRB_DEV_PART_INFO (QLA82XX_CAM_RAM(0x14c)) 542*a9083016SGiridhar Malavali #define QLA82XX_CRB_DRV_IDC_VERSION (QLA82XX_CAM_RAM(0x174)) 543*a9083016SGiridhar Malavali #define QLA82XX_CRB_DRV_STATE (QLA82XX_CAM_RAM(0x144)) 544*a9083016SGiridhar Malavali #define QLA82XX_CRB_DRV_SCRATCH (QLA82XX_CAM_RAM(0x148)) 545*a9083016SGiridhar Malavali #define QLA82XX_CRB_DEV_PART_INFO (QLA82XX_CAM_RAM(0x14c)) 546*a9083016SGiridhar Malavali 547*a9083016SGiridhar Malavali /* Every driver should use these Device State */ 548*a9083016SGiridhar Malavali #define QLA82XX_DEV_COLD 1 549*a9083016SGiridhar Malavali #define QLA82XX_DEV_INITIALIZING 2 550*a9083016SGiridhar Malavali #define QLA82XX_DEV_READY 3 551*a9083016SGiridhar Malavali #define QLA82XX_DEV_NEED_RESET 4 552*a9083016SGiridhar Malavali #define QLA82XX_DEV_NEED_QUIESCENT 5 553*a9083016SGiridhar Malavali #define QLA82XX_DEV_FAILED 6 554*a9083016SGiridhar Malavali #define QLA82XX_DEV_QUIESCENT 7 555*a9083016SGiridhar Malavali 556*a9083016SGiridhar Malavali #define QLA82XX_IDC_VERSION 1 557*a9083016SGiridhar Malavali #define QLA82XX_ROM_DEV_INIT_TIMEOUT 30 558*a9083016SGiridhar Malavali #define QLA82XX_ROM_DRV_RESET_ACK_TIMEOUT 10 559*a9083016SGiridhar Malavali 560*a9083016SGiridhar Malavali #define QLA82XX_ROM_LOCK_ID (QLA82XX_CAM_RAM(0x100)) 561*a9083016SGiridhar Malavali #define QLA82XX_CRB_WIN_LOCK_ID (QLA82XX_CAM_RAM(0x124)) 562*a9083016SGiridhar Malavali #define QLA82XX_FW_VERSION_MAJOR (QLA82XX_CAM_RAM(0x150)) 563*a9083016SGiridhar Malavali #define QLA82XX_FW_VERSION_MINOR (QLA82XX_CAM_RAM(0x154)) 564*a9083016SGiridhar Malavali #define QLA82XX_FW_VERSION_SUB (QLA82XX_CAM_RAM(0x158)) 565*a9083016SGiridhar Malavali #define QLA82XX_PCIE_REG(reg) (QLA82XX_CRB_PCIE + (reg)) 566*a9083016SGiridhar Malavali 567*a9083016SGiridhar Malavali #define PCIE_CHICKEN3 (0x120c8) 568*a9083016SGiridhar Malavali #define PCIE_SETUP_FUNCTION (0x12040) 569*a9083016SGiridhar Malavali #define PCIE_SETUP_FUNCTION2 (0x12048) 570*a9083016SGiridhar Malavali 571*a9083016SGiridhar Malavali #define QLA82XX_PCIX_PS_REG(reg) (QLA82XX_CRB_PCIX_MD + (reg)) 572*a9083016SGiridhar Malavali #define QLA82XX_PCIX_PS2_REG(reg) (QLA82XX_CRB_PCIE2 + (reg)) 573*a9083016SGiridhar Malavali 574*a9083016SGiridhar Malavali #define PCIE_SEM2_LOCK (0x1c010) /* Flash lock */ 575*a9083016SGiridhar Malavali #define PCIE_SEM2_UNLOCK (0x1c014) /* Flash unlock */ 576*a9083016SGiridhar Malavali #define PCIE_SEM5_LOCK (0x1c028) /* Coexistence lock */ 577*a9083016SGiridhar Malavali #define PCIE_SEM5_UNLOCK (0x1c02c) /* Coexistence unlock */ 578*a9083016SGiridhar Malavali #define PCIE_SEM7_LOCK (0x1c038) /* crb win lock */ 579*a9083016SGiridhar Malavali #define PCIE_SEM7_UNLOCK (0x1c03c) /* crbwin unlock*/ 580*a9083016SGiridhar Malavali 581*a9083016SGiridhar Malavali /* Different drive state */ 582*a9083016SGiridhar Malavali #define QLA82XX_DRVST_NOT_RDY 0 583*a9083016SGiridhar Malavali #define QLA82XX_DRVST_RST_RDY 1 584*a9083016SGiridhar Malavali #define QLA82XX_DRVST_QSNT_RDY 2 585*a9083016SGiridhar Malavali 586*a9083016SGiridhar Malavali /* 587*a9083016SGiridhar Malavali * The PCI VendorID and DeviceID for our board. 588*a9083016SGiridhar Malavali */ 589*a9083016SGiridhar Malavali #define PCI_DEVICE_ID_QLOGIC_ISP8021 0x8021 590*a9083016SGiridhar Malavali 591*a9083016SGiridhar Malavali #define QLA82XX_MSIX_TBL_SPACE 8192 592*a9083016SGiridhar Malavali #define QLA82XX_PCI_REG_MSIX_TBL 0x44 593*a9083016SGiridhar Malavali #define QLA82XX_PCI_MSIX_CONTROL 0x40 594*a9083016SGiridhar Malavali 595*a9083016SGiridhar Malavali struct crb_128M_2M_sub_block_map { 596*a9083016SGiridhar Malavali unsigned valid; 597*a9083016SGiridhar Malavali unsigned start_128M; 598*a9083016SGiridhar Malavali unsigned end_128M; 599*a9083016SGiridhar Malavali unsigned start_2M; 600*a9083016SGiridhar Malavali }; 601*a9083016SGiridhar Malavali 602*a9083016SGiridhar Malavali struct crb_128M_2M_block_map { 603*a9083016SGiridhar Malavali struct crb_128M_2M_sub_block_map sub_block[16]; 604*a9083016SGiridhar Malavali }; 605*a9083016SGiridhar Malavali 606*a9083016SGiridhar Malavali struct crb_addr_pair { 607*a9083016SGiridhar Malavali long addr; 608*a9083016SGiridhar Malavali long data; 609*a9083016SGiridhar Malavali }; 610*a9083016SGiridhar Malavali 611*a9083016SGiridhar Malavali #define ADDR_ERROR ((unsigned long) 0xffffffff) 612*a9083016SGiridhar Malavali #define MAX_CTL_CHECK 1000 613*a9083016SGiridhar Malavali 614*a9083016SGiridhar Malavali /*************************************************************************** 615*a9083016SGiridhar Malavali * PCI related defines. 616*a9083016SGiridhar Malavali **************************************************************************/ 617*a9083016SGiridhar Malavali 618*a9083016SGiridhar Malavali /* 619*a9083016SGiridhar Malavali * Interrupt related defines. 620*a9083016SGiridhar Malavali */ 621*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS (0x10118) 622*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F1 (0x10160) 623*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F2 (0x10164) 624*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F3 (0x10168) 625*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F4 (0x10360) 626*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F5 (0x10364) 627*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F6 (0x10368) 628*a9083016SGiridhar Malavali #define PCIX_TARGET_STATUS_F7 (0x1036c) 629*a9083016SGiridhar Malavali 630*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK (0x10128) 631*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F1 (0x10170) 632*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F2 (0x10174) 633*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F3 (0x10178) 634*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F4 (0x10370) 635*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F5 (0x10374) 636*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F6 (0x10378) 637*a9083016SGiridhar Malavali #define PCIX_TARGET_MASK_F7 (0x1037c) 638*a9083016SGiridhar Malavali 639*a9083016SGiridhar Malavali /* 640*a9083016SGiridhar Malavali * Message Signaled Interrupts 641*a9083016SGiridhar Malavali */ 642*a9083016SGiridhar Malavali #define PCIX_MSI_F0 (0x13000) 643*a9083016SGiridhar Malavali #define PCIX_MSI_F1 (0x13004) 644*a9083016SGiridhar Malavali #define PCIX_MSI_F2 (0x13008) 645*a9083016SGiridhar Malavali #define PCIX_MSI_F3 (0x1300c) 646*a9083016SGiridhar Malavali #define PCIX_MSI_F4 (0x13010) 647*a9083016SGiridhar Malavali #define PCIX_MSI_F5 (0x13014) 648*a9083016SGiridhar Malavali #define PCIX_MSI_F6 (0x13018) 649*a9083016SGiridhar Malavali #define PCIX_MSI_F7 (0x1301c) 650*a9083016SGiridhar Malavali #define PCIX_MSI_F(FUNC) (0x13000 + ((FUNC) * 4)) 651*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR (0x10100) 652*a9083016SGiridhar Malavali #define PCIX_INT_MASK (0x10104) 653*a9083016SGiridhar Malavali 654*a9083016SGiridhar Malavali /* 655*a9083016SGiridhar Malavali * Interrupt state machine and other bits. 656*a9083016SGiridhar Malavali */ 657*a9083016SGiridhar Malavali #define PCIE_MISCCFG_RC (0x1206c) 658*a9083016SGiridhar Malavali 659*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS \ 660*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS)) 661*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F1 \ 662*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F1)) 663*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F2 \ 664*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F2)) 665*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F3 \ 666*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F3)) 667*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F4 \ 668*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F4)) 669*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F5 \ 670*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F5)) 671*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F6 \ 672*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F6)) 673*a9083016SGiridhar Malavali #define ISR_INT_TARGET_STATUS_F7 \ 674*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_STATUS_F7)) 675*a9083016SGiridhar Malavali 676*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK \ 677*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK)) 678*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F1 \ 679*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F1)) 680*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F2 \ 681*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F2)) 682*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F3 \ 683*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F3)) 684*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F4 \ 685*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F4)) 686*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F5 \ 687*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F5)) 688*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F6 \ 689*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F6)) 690*a9083016SGiridhar Malavali #define ISR_INT_TARGET_MASK_F7 \ 691*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_TARGET_MASK_F7)) 692*a9083016SGiridhar Malavali 693*a9083016SGiridhar Malavali #define ISR_INT_VECTOR \ 694*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_INT_VECTOR)) 695*a9083016SGiridhar Malavali #define ISR_INT_MASK \ 696*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_INT_MASK)) 697*a9083016SGiridhar Malavali #define ISR_INT_STATE_REG \ 698*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIE_MISCCFG_RC)) 699*a9083016SGiridhar Malavali 700*a9083016SGiridhar Malavali #define ISR_MSI_INT_TRIGGER(FUNC) \ 701*a9083016SGiridhar Malavali (QLA82XX_PCIX_PS_REG(PCIX_MSI_F(FUNC))) 702*a9083016SGiridhar Malavali 703*a9083016SGiridhar Malavali #define ISR_IS_LEGACY_INTR_IDLE(VAL) (((VAL) & 0x300) == 0) 704*a9083016SGiridhar Malavali #define ISR_IS_LEGACY_INTR_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200) 705*a9083016SGiridhar Malavali 706*a9083016SGiridhar Malavali /* 707*a9083016SGiridhar Malavali * PCI Interrupt Vector Values. 708*a9083016SGiridhar Malavali */ 709*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F0 0x0080 710*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F1 0x0100 711*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F2 0x0200 712*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F3 0x0400 713*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F4 0x0800 714*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F5 0x1000 715*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F6 0x2000 716*a9083016SGiridhar Malavali #define PCIX_INT_VECTOR_BIT_F7 0x4000 717*a9083016SGiridhar Malavali 718*a9083016SGiridhar Malavali struct qla82xx_legacy_intr_set { 719*a9083016SGiridhar Malavali uint32_t int_vec_bit; 720*a9083016SGiridhar Malavali uint32_t tgt_status_reg; 721*a9083016SGiridhar Malavali uint32_t tgt_mask_reg; 722*a9083016SGiridhar Malavali uint32_t pci_int_reg; 723*a9083016SGiridhar Malavali }; 724*a9083016SGiridhar Malavali 725*a9083016SGiridhar Malavali #define QLA82XX_LEGACY_INTR_CONFIG \ 726*a9083016SGiridhar Malavali { \ 727*a9083016SGiridhar Malavali { \ 728*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F0, \ 729*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS, \ 730*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK, \ 731*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(0) }, \ 732*a9083016SGiridhar Malavali \ 733*a9083016SGiridhar Malavali { \ 734*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F1, \ 735*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F1, \ 736*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F1, \ 737*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(1) }, \ 738*a9083016SGiridhar Malavali \ 739*a9083016SGiridhar Malavali { \ 740*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F2, \ 741*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F2, \ 742*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F2, \ 743*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(2) }, \ 744*a9083016SGiridhar Malavali \ 745*a9083016SGiridhar Malavali { \ 746*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F3, \ 747*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F3, \ 748*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F3, \ 749*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(3) }, \ 750*a9083016SGiridhar Malavali \ 751*a9083016SGiridhar Malavali { \ 752*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F4, \ 753*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F4, \ 754*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F4, \ 755*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(4) }, \ 756*a9083016SGiridhar Malavali \ 757*a9083016SGiridhar Malavali { \ 758*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F5, \ 759*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F5, \ 760*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F5, \ 761*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(5) }, \ 762*a9083016SGiridhar Malavali \ 763*a9083016SGiridhar Malavali { \ 764*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F6, \ 765*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F6, \ 766*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F6, \ 767*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(6) }, \ 768*a9083016SGiridhar Malavali \ 769*a9083016SGiridhar Malavali { \ 770*a9083016SGiridhar Malavali .int_vec_bit = PCIX_INT_VECTOR_BIT_F7, \ 771*a9083016SGiridhar Malavali .tgt_status_reg = ISR_INT_TARGET_STATUS_F7, \ 772*a9083016SGiridhar Malavali .tgt_mask_reg = ISR_INT_TARGET_MASK_F7, \ 773*a9083016SGiridhar Malavali .pci_int_reg = ISR_MSI_INT_TRIGGER(7) }, \ 774*a9083016SGiridhar Malavali } 775*a9083016SGiridhar Malavali 776*a9083016SGiridhar Malavali #define BOOTLD_START 0x10000 777*a9083016SGiridhar Malavali #define IMAGE_START 0x100000 778*a9083016SGiridhar Malavali #define FLASH_ADDR_START 0x43000 779*a9083016SGiridhar Malavali 780*a9083016SGiridhar Malavali /* Magic number to let user know flash is programmed */ 781*a9083016SGiridhar Malavali #define QLA82XX_BDINFO_MAGIC 0x12345678 782*a9083016SGiridhar Malavali #define FW_SIZE_OFFSET (0x3e840c) 783*a9083016SGiridhar Malavali 784*a9083016SGiridhar Malavali #define QLA82XX_IS_REVISION_P3PLUS(_rev_) ((_rev_) >= 0x50) 785*a9083016SGiridhar Malavali #define MIU_TEST_AGT_WRDATA_UPPER_LO (0x0b0) 786*a9083016SGiridhar Malavali #define MIU_TEST_AGT_WRDATA_UPPER_HI (0x0b4) 787*a9083016SGiridhar Malavali 788*a9083016SGiridhar Malavali #ifndef readq 789*a9083016SGiridhar Malavali static inline u64 readq(void __iomem *addr) 790*a9083016SGiridhar Malavali { 791*a9083016SGiridhar Malavali return readl(addr) | (((u64) readl(addr + 4)) << 32LL); 792*a9083016SGiridhar Malavali } 793*a9083016SGiridhar Malavali #endif 794*a9083016SGiridhar Malavali 795*a9083016SGiridhar Malavali #ifndef writeq 796*a9083016SGiridhar Malavali static inline void writeq(u64 val, void __iomem *addr) 797*a9083016SGiridhar Malavali { 798*a9083016SGiridhar Malavali writel(((u32) (val)), (addr)); 799*a9083016SGiridhar Malavali writel(((u32) (val >> 32)), (addr + 4)); 800*a9083016SGiridhar Malavali } 801*a9083016SGiridhar Malavali #endif 802*a9083016SGiridhar Malavali 803*a9083016SGiridhar Malavali /* Request and response queue size */ 804*a9083016SGiridhar Malavali #define REQUEST_ENTRY_CNT_82XX 128 /* Number of request entries. */ 805*a9083016SGiridhar Malavali #define RESPONSE_ENTRY_CNT_82XX 128 /* Number of response entries.*/ 806*a9083016SGiridhar Malavali 807*a9083016SGiridhar Malavali /* 808*a9083016SGiridhar Malavali * ISP 8021 I/O Register Set structure definitions. 809*a9083016SGiridhar Malavali */ 810*a9083016SGiridhar Malavali struct device_reg_82xx { 811*a9083016SGiridhar Malavali uint32_t req_q_out[64]; /* Request Queue out-Pointer (64 * 4) */ 812*a9083016SGiridhar Malavali uint32_t rsp_q_in[64]; /* Response Queue In-Pointer. */ 813*a9083016SGiridhar Malavali uint32_t rsp_q_out[64]; /* Response Queue Out-Pointer. */ 814*a9083016SGiridhar Malavali 815*a9083016SGiridhar Malavali uint16_t mailbox_in[32]; /* Mail box In registers */ 816*a9083016SGiridhar Malavali uint16_t unused_1[32]; 817*a9083016SGiridhar Malavali uint32_t hint; /* Host interrupt register */ 818*a9083016SGiridhar Malavali #define HINT_MBX_INT_PENDING BIT_0 819*a9083016SGiridhar Malavali uint16_t unused_2[62]; 820*a9083016SGiridhar Malavali uint16_t mailbox_out[32]; /* Mail box Out registers */ 821*a9083016SGiridhar Malavali uint32_t unused_3[48]; 822*a9083016SGiridhar Malavali 823*a9083016SGiridhar Malavali uint32_t host_status; /* host status */ 824*a9083016SGiridhar Malavali #define HSRX_RISC_INT BIT_15 /* RISC to Host interrupt. */ 825*a9083016SGiridhar Malavali #define HSRX_RISC_PAUSED BIT_8 /* RISC Paused. */ 826*a9083016SGiridhar Malavali uint32_t host_int; /* Interrupt status. */ 827*a9083016SGiridhar Malavali #define ISRX_NX_RISC_INT BIT_0 /* RISC interrupt. */ 828*a9083016SGiridhar Malavali }; 829*a9083016SGiridhar Malavali 830*a9083016SGiridhar Malavali struct fcp_cmnd { 831*a9083016SGiridhar Malavali struct scsi_lun lun; 832*a9083016SGiridhar Malavali uint8_t crn; 833*a9083016SGiridhar Malavali uint8_t task_attribute; 834*a9083016SGiridhar Malavali uint8_t task_managment; 835*a9083016SGiridhar Malavali uint8_t additional_cdb_len; 836*a9083016SGiridhar Malavali uint8_t cdb[260]; /* 256 for CDB len and 4 for FCP_DL */ 837*a9083016SGiridhar Malavali }; 838*a9083016SGiridhar Malavali 839*a9083016SGiridhar Malavali struct dsd_dma { 840*a9083016SGiridhar Malavali struct list_head list; 841*a9083016SGiridhar Malavali dma_addr_t dsd_list_dma; 842*a9083016SGiridhar Malavali void *dsd_addr; 843*a9083016SGiridhar Malavali }; 844*a9083016SGiridhar Malavali 845*a9083016SGiridhar Malavali #define QLA_DSDS_PER_IOCB 37 846*a9083016SGiridhar Malavali #define QLA_DSD_SIZE 12 847*a9083016SGiridhar Malavali struct ct6_dsd { 848*a9083016SGiridhar Malavali uint16_t fcp_cmnd_len; 849*a9083016SGiridhar Malavali dma_addr_t fcp_cmnd_dma; 850*a9083016SGiridhar Malavali struct fcp_cmnd *fcp_cmnd; 851*a9083016SGiridhar Malavali int dsd_use_cnt; 852*a9083016SGiridhar Malavali struct list_head dsd_list; 853*a9083016SGiridhar Malavali }; 854*a9083016SGiridhar Malavali 855*a9083016SGiridhar Malavali #define MBC_TOGGLE_INTR 0x10 856*a9083016SGiridhar Malavali 857*a9083016SGiridhar Malavali /* Flash offset */ 858*a9083016SGiridhar Malavali #define FLT_REG_BOOTLOAD_82XX 0x72 859*a9083016SGiridhar Malavali #define FLT_REG_BOOT_CODE_82XX 0x78 860*a9083016SGiridhar Malavali #define FLT_REG_FW_82XX 0x74 861*a9083016SGiridhar Malavali #define FLT_REG_GOLD_FW_82XX 0x75 862*a9083016SGiridhar Malavali #define FLT_REG_VPD_82XX 0x81 863*a9083016SGiridhar Malavali 864*a9083016SGiridhar Malavali #define FA_VPD_SIZE_82XX 0x400 865*a9083016SGiridhar Malavali 866*a9083016SGiridhar Malavali #define FA_FLASH_LAYOUT_ADDR_82 0xFC400 867*a9083016SGiridhar Malavali 868*a9083016SGiridhar Malavali /****************************************************************************** 869*a9083016SGiridhar Malavali * 870*a9083016SGiridhar Malavali * Definitions specific to M25P flash 871*a9083016SGiridhar Malavali * 872*a9083016SGiridhar Malavali ******************************************************************************* 873*a9083016SGiridhar Malavali * Instructions 874*a9083016SGiridhar Malavali */ 875*a9083016SGiridhar Malavali #define M25P_INSTR_WREN 0x06 876*a9083016SGiridhar Malavali #define M25P_INSTR_WRDI 0x04 877*a9083016SGiridhar Malavali #define M25P_INSTR_RDID 0x9f 878*a9083016SGiridhar Malavali #define M25P_INSTR_RDSR 0x05 879*a9083016SGiridhar Malavali #define M25P_INSTR_WRSR 0x01 880*a9083016SGiridhar Malavali #define M25P_INSTR_READ 0x03 881*a9083016SGiridhar Malavali #define M25P_INSTR_FAST_READ 0x0b 882*a9083016SGiridhar Malavali #define M25P_INSTR_PP 0x02 883*a9083016SGiridhar Malavali #define M25P_INSTR_SE 0xd8 884*a9083016SGiridhar Malavali #define M25P_INSTR_BE 0xc7 885*a9083016SGiridhar Malavali #define M25P_INSTR_DP 0xb9 886*a9083016SGiridhar Malavali #define M25P_INSTR_RES 0xab 887*a9083016SGiridhar Malavali 888*a9083016SGiridhar Malavali #endif 889