1*004b26b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2aa43c215SJeff Kirsher /* 3aa43c215SJeff Kirsher * QLogic qlcnic NIC Driver 4577ae39dSJitendra Kalsaria * Copyright (c) 2009-2013 QLogic Corporation 5aa43c215SJeff Kirsher */ 6aa43c215SJeff Kirsher 7aa43c215SJeff Kirsher #ifndef __QLCNIC_HDR_H_ 8aa43c215SJeff Kirsher #define __QLCNIC_HDR_H_ 9aa43c215SJeff Kirsher 10aa43c215SJeff Kirsher #include <linux/kernel.h> 11aa43c215SJeff Kirsher #include <linux/types.h> 12aa43c215SJeff Kirsher 137e2cf4feSSony Chacko #include "qlcnic_hw.h" 147e2cf4feSSony Chacko 15aa43c215SJeff Kirsher /* 16aa43c215SJeff Kirsher * The basic unit of access when reading/writing control registers. 17aa43c215SJeff Kirsher */ 18aa43c215SJeff Kirsher 19aa43c215SJeff Kirsher enum { 20aa43c215SJeff Kirsher QLCNIC_HW_H0_CH_HUB_ADR = 0x05, 21aa43c215SJeff Kirsher QLCNIC_HW_H1_CH_HUB_ADR = 0x0E, 22aa43c215SJeff Kirsher QLCNIC_HW_H2_CH_HUB_ADR = 0x03, 23aa43c215SJeff Kirsher QLCNIC_HW_H3_CH_HUB_ADR = 0x01, 24aa43c215SJeff Kirsher QLCNIC_HW_H4_CH_HUB_ADR = 0x06, 25aa43c215SJeff Kirsher QLCNIC_HW_H5_CH_HUB_ADR = 0x07, 26aa43c215SJeff Kirsher QLCNIC_HW_H6_CH_HUB_ADR = 0x08 27aa43c215SJeff Kirsher }; 28aa43c215SJeff Kirsher 29aa43c215SJeff Kirsher /* Hub 0 */ 30aa43c215SJeff Kirsher enum { 31aa43c215SJeff Kirsher QLCNIC_HW_MN_CRB_AGT_ADR = 0x15, 32aa43c215SJeff Kirsher QLCNIC_HW_MS_CRB_AGT_ADR = 0x25 33aa43c215SJeff Kirsher }; 34aa43c215SJeff Kirsher 35aa43c215SJeff Kirsher /* Hub 1 */ 36aa43c215SJeff Kirsher enum { 37aa43c215SJeff Kirsher QLCNIC_HW_PS_CRB_AGT_ADR = 0x73, 38aa43c215SJeff Kirsher QLCNIC_HW_SS_CRB_AGT_ADR = 0x20, 39aa43c215SJeff Kirsher QLCNIC_HW_RPMX3_CRB_AGT_ADR = 0x0b, 40aa43c215SJeff Kirsher QLCNIC_HW_QMS_CRB_AGT_ADR = 0x00, 41aa43c215SJeff Kirsher QLCNIC_HW_SQGS0_CRB_AGT_ADR = 0x01, 42aa43c215SJeff Kirsher QLCNIC_HW_SQGS1_CRB_AGT_ADR = 0x02, 43aa43c215SJeff Kirsher QLCNIC_HW_SQGS2_CRB_AGT_ADR = 0x03, 44aa43c215SJeff Kirsher QLCNIC_HW_SQGS3_CRB_AGT_ADR = 0x04, 45aa43c215SJeff Kirsher QLCNIC_HW_C2C0_CRB_AGT_ADR = 0x58, 46aa43c215SJeff Kirsher QLCNIC_HW_C2C1_CRB_AGT_ADR = 0x59, 47aa43c215SJeff Kirsher QLCNIC_HW_C2C2_CRB_AGT_ADR = 0x5a, 48aa43c215SJeff Kirsher QLCNIC_HW_RPMX2_CRB_AGT_ADR = 0x0a, 49aa43c215SJeff Kirsher QLCNIC_HW_RPMX4_CRB_AGT_ADR = 0x0c, 50aa43c215SJeff Kirsher QLCNIC_HW_RPMX7_CRB_AGT_ADR = 0x0f, 51aa43c215SJeff Kirsher QLCNIC_HW_RPMX9_CRB_AGT_ADR = 0x12, 52aa43c215SJeff Kirsher QLCNIC_HW_SMB_CRB_AGT_ADR = 0x18 53aa43c215SJeff Kirsher }; 54aa43c215SJeff Kirsher 55aa43c215SJeff Kirsher /* Hub 2 */ 56aa43c215SJeff Kirsher enum { 57aa43c215SJeff Kirsher QLCNIC_HW_NIU_CRB_AGT_ADR = 0x31, 58aa43c215SJeff Kirsher QLCNIC_HW_I2C0_CRB_AGT_ADR = 0x19, 59aa43c215SJeff Kirsher QLCNIC_HW_I2C1_CRB_AGT_ADR = 0x29, 60aa43c215SJeff Kirsher 61aa43c215SJeff Kirsher QLCNIC_HW_SN_CRB_AGT_ADR = 0x10, 62aa43c215SJeff Kirsher QLCNIC_HW_I2Q_CRB_AGT_ADR = 0x20, 63aa43c215SJeff Kirsher QLCNIC_HW_LPC_CRB_AGT_ADR = 0x22, 64aa43c215SJeff Kirsher QLCNIC_HW_ROMUSB_CRB_AGT_ADR = 0x21, 65aa43c215SJeff Kirsher QLCNIC_HW_QM_CRB_AGT_ADR = 0x66, 66aa43c215SJeff Kirsher QLCNIC_HW_SQG0_CRB_AGT_ADR = 0x60, 67aa43c215SJeff Kirsher QLCNIC_HW_SQG1_CRB_AGT_ADR = 0x61, 68aa43c215SJeff Kirsher QLCNIC_HW_SQG2_CRB_AGT_ADR = 0x62, 69aa43c215SJeff Kirsher QLCNIC_HW_SQG3_CRB_AGT_ADR = 0x63, 70aa43c215SJeff Kirsher QLCNIC_HW_RPMX1_CRB_AGT_ADR = 0x09, 71aa43c215SJeff Kirsher QLCNIC_HW_RPMX5_CRB_AGT_ADR = 0x0d, 72aa43c215SJeff Kirsher QLCNIC_HW_RPMX6_CRB_AGT_ADR = 0x0e, 73aa43c215SJeff Kirsher QLCNIC_HW_RPMX8_CRB_AGT_ADR = 0x11 74aa43c215SJeff Kirsher }; 75aa43c215SJeff Kirsher 76aa43c215SJeff Kirsher /* Hub 3 */ 77aa43c215SJeff Kirsher enum { 78aa43c215SJeff Kirsher QLCNIC_HW_PH_CRB_AGT_ADR = 0x1A, 79aa43c215SJeff Kirsher QLCNIC_HW_SRE_CRB_AGT_ADR = 0x50, 80aa43c215SJeff Kirsher QLCNIC_HW_EG_CRB_AGT_ADR = 0x51, 81aa43c215SJeff Kirsher QLCNIC_HW_RPMX0_CRB_AGT_ADR = 0x08 82aa43c215SJeff Kirsher }; 83aa43c215SJeff Kirsher 84aa43c215SJeff Kirsher /* Hub 4 */ 85aa43c215SJeff Kirsher enum { 86aa43c215SJeff Kirsher QLCNIC_HW_PEGN0_CRB_AGT_ADR = 0x40, 87aa43c215SJeff Kirsher QLCNIC_HW_PEGN1_CRB_AGT_ADR, 88aa43c215SJeff Kirsher QLCNIC_HW_PEGN2_CRB_AGT_ADR, 89aa43c215SJeff Kirsher QLCNIC_HW_PEGN3_CRB_AGT_ADR, 90aa43c215SJeff Kirsher QLCNIC_HW_PEGNI_CRB_AGT_ADR, 91aa43c215SJeff Kirsher QLCNIC_HW_PEGND_CRB_AGT_ADR, 92aa43c215SJeff Kirsher QLCNIC_HW_PEGNC_CRB_AGT_ADR, 93aa43c215SJeff Kirsher QLCNIC_HW_PEGR0_CRB_AGT_ADR, 94aa43c215SJeff Kirsher QLCNIC_HW_PEGR1_CRB_AGT_ADR, 95aa43c215SJeff Kirsher QLCNIC_HW_PEGR2_CRB_AGT_ADR, 96aa43c215SJeff Kirsher QLCNIC_HW_PEGR3_CRB_AGT_ADR, 97aa43c215SJeff Kirsher QLCNIC_HW_PEGN4_CRB_AGT_ADR 98aa43c215SJeff Kirsher }; 99aa43c215SJeff Kirsher 100aa43c215SJeff Kirsher /* Hub 5 */ 101aa43c215SJeff Kirsher enum { 102aa43c215SJeff Kirsher QLCNIC_HW_PEGS0_CRB_AGT_ADR = 0x40, 103aa43c215SJeff Kirsher QLCNIC_HW_PEGS1_CRB_AGT_ADR, 104aa43c215SJeff Kirsher QLCNIC_HW_PEGS2_CRB_AGT_ADR, 105aa43c215SJeff Kirsher QLCNIC_HW_PEGS3_CRB_AGT_ADR, 106aa43c215SJeff Kirsher QLCNIC_HW_PEGSI_CRB_AGT_ADR, 107aa43c215SJeff Kirsher QLCNIC_HW_PEGSD_CRB_AGT_ADR, 108aa43c215SJeff Kirsher QLCNIC_HW_PEGSC_CRB_AGT_ADR 109aa43c215SJeff Kirsher }; 110aa43c215SJeff Kirsher 111aa43c215SJeff Kirsher /* Hub 6 */ 112aa43c215SJeff Kirsher enum { 113aa43c215SJeff Kirsher QLCNIC_HW_CAS0_CRB_AGT_ADR = 0x46, 114aa43c215SJeff Kirsher QLCNIC_HW_CAS1_CRB_AGT_ADR = 0x47, 115aa43c215SJeff Kirsher QLCNIC_HW_CAS2_CRB_AGT_ADR = 0x48, 116aa43c215SJeff Kirsher QLCNIC_HW_CAS3_CRB_AGT_ADR = 0x49, 117aa43c215SJeff Kirsher QLCNIC_HW_NCM_CRB_AGT_ADR = 0x16, 118aa43c215SJeff Kirsher QLCNIC_HW_TMR_CRB_AGT_ADR = 0x17, 119aa43c215SJeff Kirsher QLCNIC_HW_XDMA_CRB_AGT_ADR = 0x05, 120aa43c215SJeff Kirsher QLCNIC_HW_OCM0_CRB_AGT_ADR = 0x06, 121aa43c215SJeff Kirsher QLCNIC_HW_OCM1_CRB_AGT_ADR = 0x07 122aa43c215SJeff Kirsher }; 123aa43c215SJeff Kirsher 124aa43c215SJeff Kirsher /* Floaters - non existent modules */ 125aa43c215SJeff Kirsher #define QLCNIC_HW_EFC_RPMX0_CRB_AGT_ADR 0x67 126aa43c215SJeff Kirsher 127aa43c215SJeff Kirsher /* This field defines PCI/X adr [25:20] of agents on the CRB */ 128aa43c215SJeff Kirsher enum { 129aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PH = 0, 130aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PS, 131aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_MN, 132aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_MS, 133aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGR1, 134aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SRE, 135aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_NIU, 136aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_QMN, 137aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQN0, 138aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQN1, 139aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQN2, 140aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQN3, 141aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_QMS, 142aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQS0, 143aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQS1, 144aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQS2, 145aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SQS3, 146aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGN0, 147aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGN1, 148aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGN2, 149aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGN3, 150aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGND, 151aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGNI, 152aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGS0, 153aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGS1, 154aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGS2, 155aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGS3, 156aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGSD, 157aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGSI, 158aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SN, 159aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGR2, 160aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_EG, 161aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PH2, 162aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PS2, 163aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_CAM, 164aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_CAS0, 165aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_CAS1, 166aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_CAS2, 167aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_C2C0, 168aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_C2C1, 169aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_TIMR, 170aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGR3, 171aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX1, 172aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX2, 173aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX3, 174aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX4, 175aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX5, 176aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX6, 177aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX7, 178aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_XDMA, 179aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_I2Q, 180aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_ROMUSB, 181aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_CAS3, 182aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX0, 183aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX8, 184aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_RPMX9, 185aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_OCM0, 186aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_OCM1, 187aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_SMB, 188aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_I2C0, 189aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_I2C1, 190aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_LPC, 191aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGNC, 192aa43c215SJeff Kirsher QLCNIC_HW_PX_MAP_CRB_PGR0 193aa43c215SJeff Kirsher }; 194aa43c215SJeff Kirsher 195aa43c215SJeff Kirsher #define BIT_0 0x1 196aa43c215SJeff Kirsher #define BIT_1 0x2 197aa43c215SJeff Kirsher #define BIT_2 0x4 198aa43c215SJeff Kirsher #define BIT_3 0x8 199aa43c215SJeff Kirsher #define BIT_4 0x10 200aa43c215SJeff Kirsher #define BIT_5 0x20 201aa43c215SJeff Kirsher #define BIT_6 0x40 202aa43c215SJeff Kirsher #define BIT_7 0x80 203aa43c215SJeff Kirsher #define BIT_8 0x100 204aa43c215SJeff Kirsher #define BIT_9 0x200 205aa43c215SJeff Kirsher #define BIT_10 0x400 206aa43c215SJeff Kirsher #define BIT_11 0x800 207aa43c215SJeff Kirsher #define BIT_12 0x1000 208aa43c215SJeff Kirsher #define BIT_13 0x2000 209aa43c215SJeff Kirsher #define BIT_14 0x4000 210aa43c215SJeff Kirsher #define BIT_15 0x8000 211aa43c215SJeff Kirsher #define BIT_16 0x10000 212aa43c215SJeff Kirsher #define BIT_17 0x20000 213aa43c215SJeff Kirsher #define BIT_18 0x40000 214aa43c215SJeff Kirsher #define BIT_19 0x80000 215aa43c215SJeff Kirsher #define BIT_20 0x100000 216aa43c215SJeff Kirsher #define BIT_21 0x200000 217aa43c215SJeff Kirsher #define BIT_22 0x400000 218aa43c215SJeff Kirsher #define BIT_23 0x800000 219aa43c215SJeff Kirsher #define BIT_24 0x1000000 220aa43c215SJeff Kirsher #define BIT_25 0x2000000 221aa43c215SJeff Kirsher #define BIT_26 0x4000000 222aa43c215SJeff Kirsher #define BIT_27 0x8000000 223aa43c215SJeff Kirsher #define BIT_28 0x10000000 224aa43c215SJeff Kirsher #define BIT_29 0x20000000 225aa43c215SJeff Kirsher #define BIT_30 0x40000000 226aa43c215SJeff Kirsher #define BIT_31 0x80000000 227aa43c215SJeff Kirsher 228aa43c215SJeff Kirsher /* This field defines CRB adr [31:20] of the agents */ 229aa43c215SJeff Kirsher 230aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_MN \ 231aa43c215SJeff Kirsher ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_MN_CRB_AGT_ADR) 232aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PH \ 233aa43c215SJeff Kirsher ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_PH_CRB_AGT_ADR) 234aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_MS \ 235aa43c215SJeff Kirsher ((QLCNIC_HW_H0_CH_HUB_ADR << 7) | QLCNIC_HW_MS_CRB_AGT_ADR) 236aa43c215SJeff Kirsher 237aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PS \ 238aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_PS_CRB_AGT_ADR) 239aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SS \ 240aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SS_CRB_AGT_ADR) 241aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX3 \ 242aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX3_CRB_AGT_ADR) 243aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_QMS \ 244aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_QMS_CRB_AGT_ADR) 245aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS0 \ 246aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS0_CRB_AGT_ADR) 247aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS1 \ 248aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS1_CRB_AGT_ADR) 249aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS2 \ 250aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS2_CRB_AGT_ADR) 251aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQS3 \ 252aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SQGS3_CRB_AGT_ADR) 253aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_C2C0 \ 254aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_C2C0_CRB_AGT_ADR) 255aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_C2C1 \ 256aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_C2C1_CRB_AGT_ADR) 257aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX2 \ 258aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX2_CRB_AGT_ADR) 259aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX4 \ 260aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX4_CRB_AGT_ADR) 261aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX7 \ 262aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX7_CRB_AGT_ADR) 263aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX9 \ 264aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX9_CRB_AGT_ADR) 265aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SMB \ 266aa43c215SJeff Kirsher ((QLCNIC_HW_H1_CH_HUB_ADR << 7) | QLCNIC_HW_SMB_CRB_AGT_ADR) 267aa43c215SJeff Kirsher 268aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_NIU \ 269aa43c215SJeff Kirsher ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_NIU_CRB_AGT_ADR) 270aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2C0 \ 271aa43c215SJeff Kirsher ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_I2C0_CRB_AGT_ADR) 272aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2C1 \ 273aa43c215SJeff Kirsher ((QLCNIC_HW_H2_CH_HUB_ADR << 7) | QLCNIC_HW_I2C1_CRB_AGT_ADR) 274aa43c215SJeff Kirsher 275aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SRE \ 276aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SRE_CRB_AGT_ADR) 277aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_EG \ 278aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_EG_CRB_AGT_ADR) 279aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX0 \ 280aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX0_CRB_AGT_ADR) 281aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_QMN \ 282aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_QM_CRB_AGT_ADR) 283aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN0 \ 284aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG0_CRB_AGT_ADR) 285aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN1 \ 286aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG1_CRB_AGT_ADR) 287aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN2 \ 288aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG2_CRB_AGT_ADR) 289aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SQN3 \ 290aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_SQG3_CRB_AGT_ADR) 291aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX1 \ 292aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX1_CRB_AGT_ADR) 293aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX5 \ 294aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX5_CRB_AGT_ADR) 295aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX6 \ 296aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX6_CRB_AGT_ADR) 297aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_RPMX8 \ 298aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_RPMX8_CRB_AGT_ADR) 299aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS0 \ 300aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS0_CRB_AGT_ADR) 301aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS1 \ 302aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS1_CRB_AGT_ADR) 303aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS2 \ 304aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS2_CRB_AGT_ADR) 305aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAS3 \ 306aa43c215SJeff Kirsher ((QLCNIC_HW_H3_CH_HUB_ADR << 7) | QLCNIC_HW_CAS3_CRB_AGT_ADR) 307aa43c215SJeff Kirsher 308aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGNI \ 309aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGNI_CRB_AGT_ADR) 310aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGND \ 311aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGND_CRB_AGT_ADR) 312aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN0 \ 313aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN0_CRB_AGT_ADR) 314aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN1 \ 315aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN1_CRB_AGT_ADR) 316aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN2 \ 317aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN2_CRB_AGT_ADR) 318aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN3 \ 319aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN3_CRB_AGT_ADR) 320aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGN4 \ 321aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGN4_CRB_AGT_ADR) 322aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGNC \ 323aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGNC_CRB_AGT_ADR) 324aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR0 \ 325aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR0_CRB_AGT_ADR) 326aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR1 \ 327aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR1_CRB_AGT_ADR) 328aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR2 \ 329aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR2_CRB_AGT_ADR) 330aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGR3 \ 331aa43c215SJeff Kirsher ((QLCNIC_HW_H4_CH_HUB_ADR << 7) | QLCNIC_HW_PEGR3_CRB_AGT_ADR) 332aa43c215SJeff Kirsher 333aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSI \ 334aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSI_CRB_AGT_ADR) 335aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSD \ 336aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSD_CRB_AGT_ADR) 337aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS0 \ 338aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS0_CRB_AGT_ADR) 339aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS1 \ 340aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS1_CRB_AGT_ADR) 341aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS2 \ 342aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS2_CRB_AGT_ADR) 343aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGS3 \ 344aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGS3_CRB_AGT_ADR) 345aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_PGSC \ 346aa43c215SJeff Kirsher ((QLCNIC_HW_H5_CH_HUB_ADR << 7) | QLCNIC_HW_PEGSC_CRB_AGT_ADR) 347aa43c215SJeff Kirsher 348aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_CAM \ 349aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_NCM_CRB_AGT_ADR) 350aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_TIMR \ 351aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_TMR_CRB_AGT_ADR) 352aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_XDMA \ 353aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_XDMA_CRB_AGT_ADR) 354aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_SN \ 355aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_SN_CRB_AGT_ADR) 356aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_I2Q \ 357aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_I2Q_CRB_AGT_ADR) 358aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_ROMUSB \ 359aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_ROMUSB_CRB_AGT_ADR) 360aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_OCM0 \ 361aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_OCM0_CRB_AGT_ADR) 362aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_OCM1 \ 363aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_OCM1_CRB_AGT_ADR) 364aa43c215SJeff Kirsher #define QLCNIC_HW_CRB_HUB_AGT_ADR_LPC \ 365aa43c215SJeff Kirsher ((QLCNIC_HW_H6_CH_HUB_ADR << 7) | QLCNIC_HW_LPC_CRB_AGT_ADR) 366aa43c215SJeff Kirsher 367aa43c215SJeff Kirsher #define QLCNIC_SRE_MISC (QLCNIC_CRB_SRE + 0x0002c) 368aa43c215SJeff Kirsher 369aa43c215SJeff Kirsher #define QLCNIC_I2Q_CLR_PCI_HI (QLCNIC_CRB_I2Q + 0x00034) 370aa43c215SJeff Kirsher 371aa43c215SJeff Kirsher #define ROMUSB_GLB (QLCNIC_CRB_ROMUSB + 0x00000) 372aa43c215SJeff Kirsher #define ROMUSB_ROM (QLCNIC_CRB_ROMUSB + 0x10000) 373aa43c215SJeff Kirsher 374aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_STATUS (ROMUSB_GLB + 0x0004) 375aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_SW_RESET (ROMUSB_GLB + 0x0008) 376aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_PAD_GPIO_I (ROMUSB_GLB + 0x000c) 377aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_CAS_RST (ROMUSB_GLB + 0x0038) 378aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_TEST_MUX_SEL (ROMUSB_GLB + 0x0044) 379aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_PEGTUNE_DONE (ROMUSB_GLB + 0x005c) 380aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GLB_CHIP_CLK_CTRL (ROMUSB_GLB + 0x00A8) 381aa43c215SJeff Kirsher 382aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_GPIO(n) (ROMUSB_GLB + 0x60 + (4 * (n))) 383aa43c215SJeff Kirsher 384aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_INSTR_OPCODE (ROMUSB_ROM + 0x0004) 385aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_ADDRESS (ROMUSB_ROM + 0x0008) 386aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_WDATA (ROMUSB_ROM + 0x000c) 387aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_ABYTE_CNT (ROMUSB_ROM + 0x0010) 388aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014) 389aa43c215SJeff Kirsher #define QLCNIC_ROMUSB_ROM_RDATA (ROMUSB_ROM + 0x0018) 390aa43c215SJeff Kirsher 391aa43c215SJeff Kirsher /****************************************************************************** 392aa43c215SJeff Kirsher * 393aa43c215SJeff Kirsher * Definitions specific to M25P flash 394aa43c215SJeff Kirsher * 395aa43c215SJeff Kirsher ******************************************************************************* 396aa43c215SJeff Kirsher */ 397aa43c215SJeff Kirsher 398aa43c215SJeff Kirsher /* all are 1MB windows */ 399aa43c215SJeff Kirsher 400aa43c215SJeff Kirsher #define QLCNIC_PCI_CRB_WINDOWSIZE 0x00100000 401aa43c215SJeff Kirsher #define QLCNIC_PCI_CRB_WINDOW(A) \ 402aa43c215SJeff Kirsher (QLCNIC_PCI_CRBSPACE + (A)*QLCNIC_PCI_CRB_WINDOWSIZE) 403aa43c215SJeff Kirsher 404aa43c215SJeff Kirsher #define QLCNIC_CRB_NIU QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_NIU) 405aa43c215SJeff Kirsher #define QLCNIC_CRB_SRE QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SRE) 406aa43c215SJeff Kirsher #define QLCNIC_CRB_ROMUSB \ 407aa43c215SJeff Kirsher QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_ROMUSB) 40868233c58SSony Chacko #define QLCNIC_CRB_EPG QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_EG) 409aa43c215SJeff Kirsher #define QLCNIC_CRB_I2Q QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_I2Q) 41068233c58SSony Chacko #define QLCNIC_CRB_TIMER QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_TIMR) 411aa43c215SJeff Kirsher #define QLCNIC_CRB_I2C0 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_I2C0) 412aa43c215SJeff Kirsher #define QLCNIC_CRB_SMB QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SMB) 413aa43c215SJeff Kirsher #define QLCNIC_CRB_MAX QLCNIC_PCI_CRB_WINDOW(64) 414aa43c215SJeff Kirsher 415aa43c215SJeff Kirsher #define QLCNIC_CRB_PCIX_HOST QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PH) 416aa43c215SJeff Kirsher #define QLCNIC_CRB_PCIX_HOST2 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PH2) 417aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_0 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN0) 418aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_1 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN1) 419aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_2 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN2) 420aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_3 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGN3) 421aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_4 QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SQS2) 422aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_D QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGND) 423aa43c215SJeff Kirsher #define QLCNIC_CRB_PEG_NET_I QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PGNI) 424aa43c215SJeff Kirsher #define QLCNIC_CRB_DDR_NET QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_MN) 425aa43c215SJeff Kirsher #define QLCNIC_CRB_QDR_NET QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_SN) 426aa43c215SJeff Kirsher 427aa43c215SJeff Kirsher #define QLCNIC_CRB_PCIX_MD QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_PS) 428aa43c215SJeff Kirsher #define QLCNIC_CRB_PCIE QLCNIC_CRB_PCIX_MD 429aa43c215SJeff Kirsher 430aa43c215SJeff Kirsher #define ISR_INT_VECTOR (QLCNIC_PCIX_PS_REG(PCIX_INT_VECTOR)) 431aa43c215SJeff Kirsher #define ISR_INT_MASK (QLCNIC_PCIX_PS_REG(PCIX_INT_MASK)) 432aa43c215SJeff Kirsher #define ISR_INT_MASK_SLOW (QLCNIC_PCIX_PS_REG(PCIX_INT_MASK)) 433aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS)) 434aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK)) 435aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F1 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F1)) 436aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F1 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F1)) 437aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F2 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F2)) 438aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F2 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F2)) 439aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F3 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F3)) 440aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F3 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F3)) 441aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F4 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F4)) 442aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F4 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F4)) 443aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F5 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F5)) 444aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F5 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F5)) 445aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F6 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F6)) 446aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F6 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F6)) 447aa43c215SJeff Kirsher #define ISR_INT_TARGET_STATUS_F7 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_STATUS_F7)) 448aa43c215SJeff Kirsher #define ISR_INT_TARGET_MASK_F7 (QLCNIC_PCIX_PS_REG(PCIX_TARGET_MASK_F7)) 449aa43c215SJeff Kirsher 450aa43c215SJeff Kirsher #define QLCNIC_PCI_OCM0_2M (0x000c0000UL) 451aa43c215SJeff Kirsher #define QLCNIC_PCI_CRBSPACE (0x06000000UL) 452aa43c215SJeff Kirsher #define QLCNIC_PCI_CAMQM (0x04800000UL) 453aa43c215SJeff Kirsher #define QLCNIC_PCI_CAMQM_END (0x04800800UL) 454aa43c215SJeff Kirsher #define QLCNIC_PCI_CAMQM_2M_BASE (0x000ff800UL) 455aa43c215SJeff Kirsher 456aa43c215SJeff Kirsher #define QLCNIC_CRB_CAM QLCNIC_PCI_CRB_WINDOW(QLCNIC_HW_PX_MAP_CRB_CAM) 457aa43c215SJeff Kirsher 458aa43c215SJeff Kirsher #define QLCNIC_ADDR_DDR_NET (0x0000000000000000ULL) 459aa43c215SJeff Kirsher #define QLCNIC_ADDR_DDR_NET_MAX (0x000000000fffffffULL) 460aa43c215SJeff Kirsher #define QLCNIC_ADDR_OCM0 (0x0000000200000000ULL) 461aa43c215SJeff Kirsher #define QLCNIC_ADDR_OCM0_MAX (0x00000002000fffffULL) 462aa43c215SJeff Kirsher #define QLCNIC_ADDR_OCM1 (0x0000000200400000ULL) 463aa43c215SJeff Kirsher #define QLCNIC_ADDR_OCM1_MAX (0x00000002004fffffULL) 464aa43c215SJeff Kirsher #define QLCNIC_ADDR_QDR_NET (0x0000000300000000ULL) 465aa43c215SJeff Kirsher #define QLCNIC_ADDR_QDR_NET_MAX (0x0000000307ffffffULL) 466aa43c215SJeff Kirsher 467aa43c215SJeff Kirsher /* 468aa43c215SJeff Kirsher * Register offsets for MN 469aa43c215SJeff Kirsher */ 470aa43c215SJeff Kirsher #define QLCNIC_MIU_CONTROL (0x000) 471aa43c215SJeff Kirsher #define QLCNIC_MIU_MN_CONTROL (QLCNIC_CRB_DDR_NET+QLCNIC_MIU_CONTROL) 472aa43c215SJeff Kirsher 473aa43c215SJeff Kirsher /* 200ms delay in each loop */ 474aa43c215SJeff Kirsher #define QLCNIC_NIU_PHY_WAITLEN 200000 475aa43c215SJeff Kirsher /* 10 seconds before we give up */ 476aa43c215SJeff Kirsher #define QLCNIC_NIU_PHY_WAITMAX 50 477aa43c215SJeff Kirsher #define QLCNIC_NIU_MAX_GBE_PORTS 4 478aa43c215SJeff Kirsher #define QLCNIC_NIU_MAX_XG_PORTS 2 479aa43c215SJeff Kirsher 480aa43c215SJeff Kirsher #define QLCNIC_NIU_MODE (QLCNIC_CRB_NIU + 0x00000) 481aa43c215SJeff Kirsher #define QLCNIC_NIU_GB_PAUSE_CTL (QLCNIC_CRB_NIU + 0x0030c) 482aa43c215SJeff Kirsher #define QLCNIC_NIU_XG_PAUSE_CTL (QLCNIC_CRB_NIU + 0x00098) 483aa43c215SJeff Kirsher 484aa43c215SJeff Kirsher #define QLCNIC_NIU_GB_MAC_CONFIG_0(I) \ 485aa43c215SJeff Kirsher (QLCNIC_CRB_NIU + 0x30000 + (I)*0x10000) 486aa43c215SJeff Kirsher #define QLCNIC_NIU_GB_MAC_CONFIG_1(I) \ 487aa43c215SJeff Kirsher (QLCNIC_CRB_NIU + 0x30004 + (I)*0x10000) 488aa43c215SJeff Kirsher 4897f966452SSony Chacko #define MAX_CTL_CHECK 1000 490aa43c215SJeff Kirsher #define TEST_AGT_CTRL (0x00) 491aa43c215SJeff Kirsher 492aa43c215SJeff Kirsher #define TA_CTL_START BIT_0 493aa43c215SJeff Kirsher #define TA_CTL_ENABLE BIT_1 494aa43c215SJeff Kirsher #define TA_CTL_WRITE BIT_2 495aa43c215SJeff Kirsher #define TA_CTL_BUSY BIT_3 496aa43c215SJeff Kirsher 497aa43c215SJeff Kirsher /* XG Link status */ 498aa43c215SJeff Kirsher #define XG_LINK_UP 0x10 499aa43c215SJeff Kirsher #define XG_LINK_DOWN 0x20 500aa43c215SJeff Kirsher 501aa43c215SJeff Kirsher #define XG_LINK_UP_P3P 0x01 502aa43c215SJeff Kirsher #define XG_LINK_DOWN_P3P 0x02 503aa43c215SJeff Kirsher #define XG_LINK_STATE_P3P_MASK 0xf 504aa43c215SJeff Kirsher #define XG_LINK_STATE_P3P(pcifn, val) \ 505aa43c215SJeff Kirsher (((val) >> ((pcifn) * 4)) & XG_LINK_STATE_P3P_MASK) 506aa43c215SJeff Kirsher 507aa43c215SJeff Kirsher #define P3P_LINK_SPEED_MHZ 100 508aa43c215SJeff Kirsher #define P3P_LINK_SPEED_MASK 0xff 509aa43c215SJeff Kirsher #define P3P_LINK_SPEED_REG(pcifn) \ 510aa43c215SJeff Kirsher (CRB_PF_LINK_SPEED_1 + (((pcifn) / 4) * 4)) 511aa43c215SJeff Kirsher #define P3P_LINK_SPEED_VAL(pcifn, reg) \ 512aa43c215SJeff Kirsher (((reg) >> (8 * ((pcifn) & 0x3))) & P3P_LINK_SPEED_MASK) 513aa43c215SJeff Kirsher 514aa43c215SJeff Kirsher #define QLCNIC_CAM_RAM_BASE (QLCNIC_CRB_CAM + 0x02000) 515aa43c215SJeff Kirsher #define QLCNIC_CAM_RAM(reg) (QLCNIC_CAM_RAM_BASE + (reg)) 516aa43c215SJeff Kirsher #define QLCNIC_ROM_LOCK_ID (QLCNIC_CAM_RAM(0x100)) 517aa43c215SJeff Kirsher #define QLCNIC_PHY_LOCK_ID (QLCNIC_CAM_RAM(0x120)) 518aa43c215SJeff Kirsher #define QLCNIC_CRB_WIN_LOCK_ID (QLCNIC_CAM_RAM(0x124)) 519aa43c215SJeff Kirsher 520aa43c215SJeff Kirsher #define NIC_CRB_BASE (QLCNIC_CAM_RAM(0x200)) 521aa43c215SJeff Kirsher #define NIC_CRB_BASE_2 (QLCNIC_CAM_RAM(0x700)) 522aa43c215SJeff Kirsher #define QLCNIC_REG(X) (NIC_CRB_BASE+(X)) 523aa43c215SJeff Kirsher #define QLCNIC_REG_2(X) (NIC_CRB_BASE_2+(X)) 524aa43c215SJeff Kirsher 5257e2cf4feSSony Chacko #define QLCNIC_CDRP_MAX_ARGS 4 5267e2cf4feSSony Chacko #define QLCNIC_CDRP_ARG(i) (QLCNIC_REG(0x18 + ((i) * 4))) 5277e2cf4feSSony Chacko 528aa43c215SJeff Kirsher #define QLCNIC_CDRP_CRB_OFFSET (QLCNIC_REG(0x18)) 529aa43c215SJeff Kirsher #define QLCNIC_SIGN_CRB_OFFSET (QLCNIC_REG(0x28)) 530aa43c215SJeff Kirsher 531aa43c215SJeff Kirsher #define CRB_XG_STATE_P3P (QLCNIC_REG(0x98)) 532aa43c215SJeff Kirsher #define CRB_PF_LINK_SPEED_1 (QLCNIC_REG(0xe8)) 533aa43c215SJeff Kirsher #define CRB_DRIVER_VERSION (QLCNIC_REG(0x2a0)) 534aa43c215SJeff Kirsher 535cae82d49SRajesh Borundia #define CRB_FW_CAPABILITIES_2 (QLCNIC_CAM_RAM(0x12c)) 536aa43c215SJeff Kirsher 537aa43c215SJeff Kirsher /* 538aa43c215SJeff Kirsher * CrbPortPhanCntrHi/Lo is used to pass the address of HostPhantomIndex address 539aa43c215SJeff Kirsher * which can be read by the Phantom host to get producer/consumer indexes from 540aa43c215SJeff Kirsher * Phantom/Casper. If it is not HOST_SHARED_MEMORY, then the following 541aa43c215SJeff Kirsher * registers will be used for the addresses of the ring's shared memory 542aa43c215SJeff Kirsher * on the Phantom. 543aa43c215SJeff Kirsher */ 544aa43c215SJeff Kirsher 545aa43c215SJeff Kirsher #define qlcnic_get_temp_val(x) ((x) >> 16) 546aa43c215SJeff Kirsher #define qlcnic_get_temp_state(x) ((x) & 0xffff) 547aa43c215SJeff Kirsher #define qlcnic_encode_temp(val, state) (((val) << 16) | (state)) 548aa43c215SJeff Kirsher 549aa43c215SJeff Kirsher /* 550aa43c215SJeff Kirsher * Temperature control. 551aa43c215SJeff Kirsher */ 552aa43c215SJeff Kirsher enum { 553aa43c215SJeff Kirsher QLCNIC_TEMP_NORMAL = 0x1, /* Normal operating range */ 554aa43c215SJeff Kirsher QLCNIC_TEMP_WARN, /* Sound alert, temperature getting high */ 555aa43c215SJeff Kirsher QLCNIC_TEMP_PANIC /* Fatal error, hardware has shut down. */ 556aa43c215SJeff Kirsher }; 557aa43c215SJeff Kirsher 55844f65b29SSony Chacko 559aa43c215SJeff Kirsher /* Lock IDs for PHY lock */ 560aa43c215SJeff Kirsher #define PHY_LOCK_DRIVER 0x44524956 561aa43c215SJeff Kirsher 562aa43c215SJeff Kirsher #define PCIX_INT_VECTOR (0x10100) 563aa43c215SJeff Kirsher #define PCIX_INT_MASK (0x10104) 564aa43c215SJeff Kirsher 565aa43c215SJeff Kirsher #define PCIX_OCM_WINDOW (0x10800) 566aa43c215SJeff Kirsher #define PCIX_OCM_WINDOW_REG(func) (PCIX_OCM_WINDOW + 0x4 * (func)) 567aa43c215SJeff Kirsher 568aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS (0x10118) 569aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F1 (0x10160) 570aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F2 (0x10164) 571aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F3 (0x10168) 572aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F4 (0x10360) 573aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F5 (0x10364) 574aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F6 (0x10368) 575aa43c215SJeff Kirsher #define PCIX_TARGET_STATUS_F7 (0x1036c) 576aa43c215SJeff Kirsher 577aa43c215SJeff Kirsher #define PCIX_TARGET_MASK (0x10128) 578aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F1 (0x10170) 579aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F2 (0x10174) 580aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F3 (0x10178) 581aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F4 (0x10370) 582aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F5 (0x10374) 583aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F6 (0x10378) 584aa43c215SJeff Kirsher #define PCIX_TARGET_MASK_F7 (0x1037c) 585aa43c215SJeff Kirsher 586aa43c215SJeff Kirsher #define PCIX_MSI_F(i) (0x13000+((i)*4)) 587aa43c215SJeff Kirsher 588aa43c215SJeff Kirsher #define QLCNIC_PCIX_PH_REG(reg) (QLCNIC_CRB_PCIE + (reg)) 589aa43c215SJeff Kirsher #define QLCNIC_PCIX_PS_REG(reg) (QLCNIC_CRB_PCIX_MD + (reg)) 590aa43c215SJeff Kirsher #define QLCNIC_PCIE_REG(reg) (QLCNIC_CRB_PCIE + (reg)) 591aa43c215SJeff Kirsher 592aa43c215SJeff Kirsher #define PCIE_SEM0_LOCK (0x1c000) 593aa43c215SJeff Kirsher #define PCIE_SEM0_UNLOCK (0x1c004) 594aa43c215SJeff Kirsher #define PCIE_SEM_LOCK(N) (PCIE_SEM0_LOCK + 8*(N)) 595aa43c215SJeff Kirsher #define PCIE_SEM_UNLOCK(N) (PCIE_SEM0_UNLOCK + 8*(N)) 596aa43c215SJeff Kirsher 597aa43c215SJeff Kirsher #define PCIE_SETUP_FUNCTION (0x12040) 598aa43c215SJeff Kirsher #define PCIE_SETUP_FUNCTION2 (0x12048) 599aa43c215SJeff Kirsher #define PCIE_MISCCFG_RC (0x1206c) 600aa43c215SJeff Kirsher #define PCIE_TGT_SPLIT_CHICKEN (0x12080) 601aa43c215SJeff Kirsher #define PCIE_CHICKEN3 (0x120c8) 602aa43c215SJeff Kirsher 603aa43c215SJeff Kirsher #define ISR_INT_STATE_REG (QLCNIC_PCIX_PS_REG(PCIE_MISCCFG_RC)) 604aa43c215SJeff Kirsher #define PCIE_MAX_MASTER_SPLIT (0x14048) 605aa43c215SJeff Kirsher 606aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_NONE 0 607aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_XG 1 608aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_GB 2 609aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_802_3_AP 3 610aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_AUTO_NEG 4 611aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_AUTO_NEG_1G 5 612aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_AUTO_NEG_XG 6 613aa43c215SJeff Kirsher #define QLCNIC_PORT_MODE_ADDR (QLCNIC_CAM_RAM(0x24)) 614aa43c215SJeff Kirsher #define QLCNIC_WOL_PORT_MODE (QLCNIC_CAM_RAM(0x198)) 615aa43c215SJeff Kirsher 616aa43c215SJeff Kirsher #define QLCNIC_WOL_CONFIG_NV (QLCNIC_CAM_RAM(0x184)) 617aa43c215SJeff Kirsher #define QLCNIC_WOL_CONFIG (QLCNIC_CAM_RAM(0x188)) 618aa43c215SJeff Kirsher 619aa43c215SJeff Kirsher #define QLCNIC_PEG_TUNE_MN_PRESENT 0x1 620aa43c215SJeff Kirsher #define QLCNIC_PEG_TUNE_CAPABILITY (QLCNIC_CAM_RAM(0x02c)) 621aa43c215SJeff Kirsher 622aa43c215SJeff Kirsher #define QLCNIC_DMA_WATCHDOG_CTRL (QLCNIC_CAM_RAM(0x14)) 623aa43c215SJeff Kirsher #define QLCNIC_ROM_DEV_INIT_TIMEOUT (0x3e885c) 624aa43c215SJeff Kirsher #define QLCNIC_ROM_DRV_RESET_TIMEOUT (0x3e8860) 625aa43c215SJeff Kirsher 626aa43c215SJeff Kirsher /* Device State */ 627aa43c215SJeff Kirsher #define QLCNIC_DEV_COLD 0x1 628aa43c215SJeff Kirsher #define QLCNIC_DEV_INITIALIZING 0x2 629aa43c215SJeff Kirsher #define QLCNIC_DEV_READY 0x3 630aa43c215SJeff Kirsher #define QLCNIC_DEV_NEED_RESET 0x4 631aa43c215SJeff Kirsher #define QLCNIC_DEV_NEED_QUISCENT 0x5 632aa43c215SJeff Kirsher #define QLCNIC_DEV_FAILED 0x6 633aa43c215SJeff Kirsher #define QLCNIC_DEV_QUISCENT 0x7 634aa43c215SJeff Kirsher 635b43e5ee7SSucheta Chakraborty #define QLCNIC_DEV_BADBAD 0xbad0bad0 636b43e5ee7SSucheta Chakraborty 637aa43c215SJeff Kirsher #define QLCNIC_DEV_NPAR_NON_OPER 0 /* NON Operational */ 638aa43c215SJeff Kirsher #define QLCNIC_DEV_NPAR_OPER 1 /* NPAR Operational */ 639aa43c215SJeff Kirsher #define QLCNIC_DEV_NPAR_OPER_TIMEO 30 /* Operational time out */ 640aa43c215SJeff Kirsher 641aa43c215SJeff Kirsher #define QLC_DEV_SET_REF_CNT(VAL, FN) ((VAL) |= (1 << (FN * 4))) 642aa43c215SJeff Kirsher #define QLC_DEV_CLR_REF_CNT(VAL, FN) ((VAL) &= ~(1 << (FN * 4))) 643aa43c215SJeff Kirsher #define QLC_DEV_SET_RST_RDY(VAL, FN) ((VAL) |= (1 << (FN * 4))) 644aa43c215SJeff Kirsher #define QLC_DEV_SET_QSCNT_RDY(VAL, FN) ((VAL) |= (2 << (FN * 4))) 645aa43c215SJeff Kirsher #define QLC_DEV_CLR_RST_QSCNT(VAL, FN) ((VAL) &= ~(3 << (FN * 4))) 646aa43c215SJeff Kirsher 647aa43c215SJeff Kirsher #define QLC_DEV_GET_DRV(VAL, FN) (0xf & ((VAL) >> (FN * 4))) 648aa43c215SJeff Kirsher #define QLC_DEV_SET_DRV(VAL, FN) ((VAL) << (FN * 4)) 649aa43c215SJeff Kirsher 650aa43c215SJeff Kirsher #define QLCNIC_TYPE_NIC 1 651aa43c215SJeff Kirsher #define QLCNIC_TYPE_FCOE 2 652aa43c215SJeff Kirsher #define QLCNIC_TYPE_ISCSI 3 653aa43c215SJeff Kirsher 654aa43c215SJeff Kirsher #define QLCNIC_RCODE_DRIVER_INFO 0x20000000 655aa43c215SJeff Kirsher #define QLCNIC_RCODE_DRIVER_CAN_RELOAD BIT_30 656aa43c215SJeff Kirsher #define QLCNIC_RCODE_FATAL_ERROR BIT_31 657aa43c215SJeff Kirsher #define QLCNIC_FWERROR_PEGNUM(code) ((code) & 0xff) 65844f65b29SSony Chacko #define QLCNIC_FWERROR_CODE(code) ((code >> 8) & 0x1fffff) 65944f65b29SSony Chacko #define QLCNIC_FWERROR_FAN_FAILURE 0x16 660aa43c215SJeff Kirsher 661aa43c215SJeff Kirsher #define FW_POLL_DELAY (1 * HZ) 662aa43c215SJeff Kirsher #define FW_FAIL_THRESH 2 663aa43c215SJeff Kirsher 664aa43c215SJeff Kirsher #define QLCNIC_RESET_TIMEOUT_SECS 10 665aa43c215SJeff Kirsher #define QLCNIC_INIT_TIMEOUT_SECS 30 666aa43c215SJeff Kirsher #define QLCNIC_RCVPEG_CHECK_RETRY_COUNT 2000 667aa43c215SJeff Kirsher #define QLCNIC_RCVPEG_CHECK_DELAY 10 668aa43c215SJeff Kirsher #define QLCNIC_CMDPEG_CHECK_RETRY_COUNT 60 669aa43c215SJeff Kirsher #define QLCNIC_CMDPEG_CHECK_DELAY 500 670aa43c215SJeff Kirsher #define QLCNIC_HEARTBEAT_PERIOD_MSECS 200 671f036e4f4SRajesh Borundia #define QLCNIC_HEARTBEAT_CHECK_RETRY_COUNT 10 672aa43c215SJeff Kirsher 6737f966452SSony Chacko #define QLCNIC_MAX_MC_COUNT 38 67452e493d0SJitendra Kalsaria #define QLCNIC_MAX_UC_COUNT 512 6757f966452SSony Chacko #define QLCNIC_WATCHDOG_TIMEOUTVALUE 5 6767f966452SSony Chacko 677aa43c215SJeff Kirsher #define ISR_MSI_INT_TRIGGER(FUNC) (QLCNIC_PCIX_PS_REG(PCIX_MSI_F(FUNC))) 678aa43c215SJeff Kirsher #define ISR_LEGACY_INT_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200) 679aa43c215SJeff Kirsher 680aa43c215SJeff Kirsher /* 681aa43c215SJeff Kirsher * PCI Interrupt Vector Values. 682aa43c215SJeff Kirsher */ 683aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F0 0x0080 684aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F1 0x0100 685aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F2 0x0200 686aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F3 0x0400 687aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F4 0x0800 688aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F5 0x1000 689aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F6 0x2000 690aa43c215SJeff Kirsher #define PCIX_INT_VECTOR_BIT_F7 0x4000 691aa43c215SJeff Kirsher 692aa43c215SJeff Kirsher struct qlcnic_legacy_intr_set { 693aa43c215SJeff Kirsher u32 int_vec_bit; 694aa43c215SJeff Kirsher u32 tgt_status_reg; 695aa43c215SJeff Kirsher u32 tgt_mask_reg; 696aa43c215SJeff Kirsher u32 pci_int_reg; 697aa43c215SJeff Kirsher }; 698aa43c215SJeff Kirsher 699aa43c215SJeff Kirsher #define QLCNIC_MSIX_BASE 0x132110 700aa43c215SJeff Kirsher #define QLCNIC_MAX_VLAN_FILTERS 64 701aa43c215SJeff Kirsher 702aa43c215SJeff Kirsher #define FLASH_ROM_WINDOW 0x42110030 703aa43c215SJeff Kirsher #define FLASH_ROM_DATA 0x42150000 704aa43c215SJeff Kirsher 705aa43c215SJeff Kirsher #define QLCNIC_FW_DUMP_REG1 0x00130060 706aa43c215SJeff Kirsher #define QLCNIC_FW_DUMP_REG2 0x001e0000 707aa43c215SJeff Kirsher #define QLCNIC_FLASH_SEM2_LK 0x0013C010 708aa43c215SJeff Kirsher #define QLCNIC_FLASH_SEM2_ULK 0x0013C014 709aa43c215SJeff Kirsher #define QLCNIC_FLASH_LOCK_ID 0x001B2100 710aa43c215SJeff Kirsher 711aa43c215SJeff Kirsher /* PCI function operational mode */ 712aa43c215SJeff Kirsher enum { 713aa43c215SJeff Kirsher QLCNIC_MGMT_FUNC = 0, 714aa43c215SJeff Kirsher QLCNIC_PRIV_FUNC = 1, 7157f966452SSony Chacko QLCNIC_NON_PRIV_FUNC = 2, 71602feda17SRajesh Borundia QLCNIC_SRIOV_PF_FUNC = 3, 717f8468331SRajesh Borundia QLCNIC_SRIOV_VF_FUNC = 4, 718f8468331SRajesh Borundia QLCNIC_UNKNOWN_FUNC_MODE = 5 719aa43c215SJeff Kirsher }; 720aa43c215SJeff Kirsher 721aa43c215SJeff Kirsher enum { 722aa43c215SJeff Kirsher QLCNIC_PORT_DEFAULTS = 0, 723aa43c215SJeff Kirsher QLCNIC_ADD_VLAN = 1, 724aa43c215SJeff Kirsher QLCNIC_DEL_VLAN = 2 725aa43c215SJeff Kirsher }; 726aa43c215SJeff Kirsher 727aa43c215SJeff Kirsher #define QLC_DEV_DRV_DEFAULT 0x11111111 728aa43c215SJeff Kirsher 729aa43c215SJeff Kirsher #define LSB(x) ((uint8_t)(x)) 730aa43c215SJeff Kirsher #define MSB(x) ((uint8_t)((uint16_t)(x) >> 8)) 731aa43c215SJeff Kirsher 732aa43c215SJeff Kirsher #define LSW(x) ((uint16_t)((uint32_t)(x))) 733aa43c215SJeff Kirsher #define MSW(x) ((uint16_t)((uint32_t)(x) >> 16)) 734aa43c215SJeff Kirsher 735aa43c215SJeff Kirsher #define LSD(x) ((uint32_t)((uint64_t)(x))) 736aa43c215SJeff Kirsher #define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16)) 737aa43c215SJeff Kirsher 73815087c2bSSony Chacko #define QLCNIC_MS_CTRL 0x41000090 73915087c2bSSony Chacko #define QLCNIC_MS_ADDR_LO 0x41000094 74015087c2bSSony Chacko #define QLCNIC_MS_ADDR_HI 0x41000098 74115087c2bSSony Chacko #define QLCNIC_MS_WRTDATA_LO 0x410000A0 74215087c2bSSony Chacko #define QLCNIC_MS_WRTDATA_HI 0x410000A4 74315087c2bSSony Chacko #define QLCNIC_MS_WRTDATA_ULO 0x410000B0 74415087c2bSSony Chacko #define QLCNIC_MS_WRTDATA_UHI 0x410000B4 74515087c2bSSony Chacko #define QLCNIC_MS_RDDATA_LO 0x410000A8 74615087c2bSSony Chacko #define QLCNIC_MS_RDDATA_HI 0x410000AC 74715087c2bSSony Chacko #define QLCNIC_MS_RDDATA_ULO 0x410000B8 74815087c2bSSony Chacko #define QLCNIC_MS_RDDATA_UHI 0x410000BC 74915087c2bSSony Chacko 75015087c2bSSony Chacko #define QLCNIC_TA_WRITE_ENABLE (TA_CTL_ENABLE | TA_CTL_WRITE) 75115087c2bSSony Chacko #define QLCNIC_TA_WRITE_START (TA_CTL_START | TA_CTL_ENABLE | TA_CTL_WRITE) 75215087c2bSSony Chacko #define QLCNIC_TA_START_ENABLE (TA_CTL_START | TA_CTL_ENABLE) 75315087c2bSSony Chacko 754aa43c215SJeff Kirsher #define QLCNIC_LEGACY_INTR_CONFIG \ 755aa43c215SJeff Kirsher { \ 756aa43c215SJeff Kirsher { \ 757aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F0, \ 758aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS, \ 75915087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK, }, \ 760aa43c215SJeff Kirsher \ 761aa43c215SJeff Kirsher { \ 762aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F1, \ 763aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F1, \ 76415087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F1, }, \ 765aa43c215SJeff Kirsher \ 766aa43c215SJeff Kirsher { \ 767aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F2, \ 768aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F2, \ 76915087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F2, }, \ 770aa43c215SJeff Kirsher \ 771aa43c215SJeff Kirsher { \ 772aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F3, \ 773aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F3, \ 77415087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F3, }, \ 775aa43c215SJeff Kirsher \ 776aa43c215SJeff Kirsher { \ 777aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F4, \ 778aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F4, \ 77915087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F4, }, \ 780aa43c215SJeff Kirsher \ 781aa43c215SJeff Kirsher { \ 782aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F5, \ 783aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F5, \ 78415087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F5, }, \ 785aa43c215SJeff Kirsher \ 786aa43c215SJeff Kirsher { \ 787aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F6, \ 788aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F6, \ 78915087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F6, }, \ 790aa43c215SJeff Kirsher \ 791aa43c215SJeff Kirsher { \ 792aa43c215SJeff Kirsher .int_vec_bit = PCIX_INT_VECTOR_BIT_F7, \ 793aa43c215SJeff Kirsher .tgt_status_reg = ISR_INT_TARGET_STATUS_F7, \ 79415087c2bSSony Chacko .tgt_mask_reg = ISR_INT_TARGET_MASK_F7, }, \ 795aa43c215SJeff Kirsher } 796aa43c215SJeff Kirsher 797aa43c215SJeff Kirsher /* NIU REGS */ 798aa43c215SJeff Kirsher 799aa43c215SJeff Kirsher #define _qlcnic_crb_get_bit(var, bit) ((var >> bit) & 0x1) 800aa43c215SJeff Kirsher 801aa43c215SJeff Kirsher /* 802aa43c215SJeff Kirsher * NIU GB MAC Config Register 0 (applies to GB0, GB1, GB2, GB3) 803aa43c215SJeff Kirsher * 804aa43c215SJeff Kirsher * Bit 0 : enable_tx => 1:enable frame xmit, 0:disable 805aa43c215SJeff Kirsher * Bit 1 : tx_synced => R/O: xmit enable synched to xmit stream 806aa43c215SJeff Kirsher * Bit 2 : enable_rx => 1:enable frame recv, 0:disable 807aa43c215SJeff Kirsher * Bit 3 : rx_synced => R/O: recv enable synched to recv stream 808aa43c215SJeff Kirsher * Bit 4 : tx_flowctl => 1:enable pause frame generation, 0:disable 809aa43c215SJeff Kirsher * Bit 5 : rx_flowctl => 1:act on recv'd pause frames, 0:ignore 810aa43c215SJeff Kirsher * Bit 8 : loopback => 1:loop MAC xmits to MAC recvs, 0:normal 811aa43c215SJeff Kirsher * Bit 16: tx_reset_pb => 1:reset frame xmit protocol blk, 0:no-op 812aa43c215SJeff Kirsher * Bit 17: rx_reset_pb => 1:reset frame recv protocol blk, 0:no-op 813aa43c215SJeff Kirsher * Bit 18: tx_reset_mac => 1:reset data/ctl multiplexer blk, 0:no-op 814aa43c215SJeff Kirsher * Bit 19: rx_reset_mac => 1:reset ctl frames & timers blk, 0:no-op 815aa43c215SJeff Kirsher * Bit 31: soft_reset => 1:reset the MAC and the SERDES, 0:no-op 816aa43c215SJeff Kirsher */ 817aa43c215SJeff Kirsher #define qlcnic_gb_rx_flowctl(config_word) \ 818aa43c215SJeff Kirsher ((config_word) |= 1 << 5) 819aa43c215SJeff Kirsher #define qlcnic_gb_get_rx_flowctl(config_word) \ 820aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 5) 821aa43c215SJeff Kirsher #define qlcnic_gb_unset_rx_flowctl(config_word) \ 822aa43c215SJeff Kirsher ((config_word) &= ~(1 << 5)) 823aa43c215SJeff Kirsher 824aa43c215SJeff Kirsher /* 825aa43c215SJeff Kirsher * NIU GB Pause Ctl Register 826aa43c215SJeff Kirsher */ 827aa43c215SJeff Kirsher 828aa43c215SJeff Kirsher #define qlcnic_gb_set_gb0_mask(config_word) \ 829aa43c215SJeff Kirsher ((config_word) |= 1 << 0) 830aa43c215SJeff Kirsher #define qlcnic_gb_set_gb1_mask(config_word) \ 831aa43c215SJeff Kirsher ((config_word) |= 1 << 2) 832aa43c215SJeff Kirsher #define qlcnic_gb_set_gb2_mask(config_word) \ 833aa43c215SJeff Kirsher ((config_word) |= 1 << 4) 834aa43c215SJeff Kirsher #define qlcnic_gb_set_gb3_mask(config_word) \ 835aa43c215SJeff Kirsher ((config_word) |= 1 << 6) 836aa43c215SJeff Kirsher 837aa43c215SJeff Kirsher #define qlcnic_gb_get_gb0_mask(config_word) \ 838aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 0) 839aa43c215SJeff Kirsher #define qlcnic_gb_get_gb1_mask(config_word) \ 840aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 2) 841aa43c215SJeff Kirsher #define qlcnic_gb_get_gb2_mask(config_word) \ 842aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 4) 843aa43c215SJeff Kirsher #define qlcnic_gb_get_gb3_mask(config_word) \ 844aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 6) 845aa43c215SJeff Kirsher 846aa43c215SJeff Kirsher #define qlcnic_gb_unset_gb0_mask(config_word) \ 847aa43c215SJeff Kirsher ((config_word) &= ~(1 << 0)) 848aa43c215SJeff Kirsher #define qlcnic_gb_unset_gb1_mask(config_word) \ 849aa43c215SJeff Kirsher ((config_word) &= ~(1 << 2)) 850aa43c215SJeff Kirsher #define qlcnic_gb_unset_gb2_mask(config_word) \ 851aa43c215SJeff Kirsher ((config_word) &= ~(1 << 4)) 852aa43c215SJeff Kirsher #define qlcnic_gb_unset_gb3_mask(config_word) \ 853aa43c215SJeff Kirsher ((config_word) &= ~(1 << 6)) 854aa43c215SJeff Kirsher 855aa43c215SJeff Kirsher /* 856aa43c215SJeff Kirsher * NIU XG Pause Ctl Register 857aa43c215SJeff Kirsher * 858aa43c215SJeff Kirsher * Bit 0 : xg0_mask => 1:disable tx pause frames 859aa43c215SJeff Kirsher * Bit 1 : xg0_request => 1:request single pause frame 860aa43c215SJeff Kirsher * Bit 2 : xg0_on_off => 1:request is pause on, 0:off 861aa43c215SJeff Kirsher * Bit 3 : xg1_mask => 1:disable tx pause frames 862aa43c215SJeff Kirsher * Bit 4 : xg1_request => 1:request single pause frame 863aa43c215SJeff Kirsher * Bit 5 : xg1_on_off => 1:request is pause on, 0:off 864aa43c215SJeff Kirsher */ 865aa43c215SJeff Kirsher 866aa43c215SJeff Kirsher #define qlcnic_xg_set_xg0_mask(config_word) \ 867aa43c215SJeff Kirsher ((config_word) |= 1 << 0) 868aa43c215SJeff Kirsher #define qlcnic_xg_set_xg1_mask(config_word) \ 869aa43c215SJeff Kirsher ((config_word) |= 1 << 3) 870aa43c215SJeff Kirsher 871aa43c215SJeff Kirsher #define qlcnic_xg_get_xg0_mask(config_word) \ 872aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 0) 873aa43c215SJeff Kirsher #define qlcnic_xg_get_xg1_mask(config_word) \ 874aa43c215SJeff Kirsher _qlcnic_crb_get_bit((config_word), 3) 875aa43c215SJeff Kirsher 876aa43c215SJeff Kirsher #define qlcnic_xg_unset_xg0_mask(config_word) \ 877aa43c215SJeff Kirsher ((config_word) &= ~(1 << 0)) 878aa43c215SJeff Kirsher #define qlcnic_xg_unset_xg1_mask(config_word) \ 879aa43c215SJeff Kirsher ((config_word) &= ~(1 << 3)) 880aa43c215SJeff Kirsher 881aa43c215SJeff Kirsher /* 882aa43c215SJeff Kirsher * NIU XG Pause Ctl Register 883aa43c215SJeff Kirsher * 884aa43c215SJeff Kirsher * Bit 0 : xg0_mask => 1:disable tx pause frames 885aa43c215SJeff Kirsher * Bit 1 : xg0_request => 1:request single pause frame 886aa43c215SJeff Kirsher * Bit 2 : xg0_on_off => 1:request is pause on, 0:off 887aa43c215SJeff Kirsher * Bit 3 : xg1_mask => 1:disable tx pause frames 888aa43c215SJeff Kirsher * Bit 4 : xg1_request => 1:request single pause frame 889aa43c215SJeff Kirsher * Bit 5 : xg1_on_off => 1:request is pause on, 0:off 890aa43c215SJeff Kirsher */ 891aa43c215SJeff Kirsher 892aa43c215SJeff Kirsher /* 893aa43c215SJeff Kirsher * PHY-Specific MII control/status registers. 894aa43c215SJeff Kirsher */ 895aa43c215SJeff Kirsher #define QLCNIC_NIU_GB_MII_MGMT_ADDR_AUTONEG 4 896aa43c215SJeff Kirsher #define QLCNIC_NIU_GB_MII_MGMT_ADDR_PHY_STATUS 17 897aa43c215SJeff Kirsher 898aa43c215SJeff Kirsher /* 899aa43c215SJeff Kirsher * PHY-Specific Status Register (reg 17). 900aa43c215SJeff Kirsher * 901aa43c215SJeff Kirsher * Bit 0 : jabber => 1:jabber detected, 0:not 902aa43c215SJeff Kirsher * Bit 1 : polarity => 1:polarity reversed, 0:normal 903aa43c215SJeff Kirsher * Bit 2 : recvpause => 1:receive pause enabled, 0:disabled 904aa43c215SJeff Kirsher * Bit 3 : xmitpause => 1:transmit pause enabled, 0:disabled 905aa43c215SJeff Kirsher * Bit 4 : energydetect => 1:sleep, 0:active 906aa43c215SJeff Kirsher * Bit 5 : downshift => 1:downshift, 0:no downshift 907aa43c215SJeff Kirsher * Bit 6 : crossover => 1:MDIX (crossover), 0:MDI (no crossover) 908aa43c215SJeff Kirsher * Bits 7-9 : cablelen => not valid in 10Mb/s mode 909aa43c215SJeff Kirsher * 0:<50m, 1:50-80m, 2:80-110m, 3:110-140m, 4:>140m 910aa43c215SJeff Kirsher * Bit 10 : link => 1:link up, 0:link down 911aa43c215SJeff Kirsher * Bit 11 : resolved => 1:speed and duplex resolved, 0:not yet 912aa43c215SJeff Kirsher * Bit 12 : pagercvd => 1:page received, 0:page not received 913aa43c215SJeff Kirsher * Bit 13 : duplex => 1:full duplex, 0:half duplex 914aa43c215SJeff Kirsher * Bits 14-15 : speed => 0:10Mb/s, 1:100Mb/s, 2:1000Mb/s, 3:rsvd 915aa43c215SJeff Kirsher */ 916aa43c215SJeff Kirsher 917aa43c215SJeff Kirsher #define qlcnic_get_phy_speed(config_word) (((config_word) >> 14) & 0x03) 918aa43c215SJeff Kirsher 919aa43c215SJeff Kirsher #define qlcnic_set_phy_speed(config_word, val) \ 920aa43c215SJeff Kirsher ((config_word) |= ((val & 0x03) << 14)) 921aa43c215SJeff Kirsher #define qlcnic_set_phy_duplex(config_word) \ 922aa43c215SJeff Kirsher ((config_word) |= 1 << 13) 923aa43c215SJeff Kirsher #define qlcnic_clear_phy_duplex(config_word) \ 924aa43c215SJeff Kirsher ((config_word) &= ~(1 << 13)) 925aa43c215SJeff Kirsher 926aa43c215SJeff Kirsher #define qlcnic_get_phy_link(config_word) \ 927aa43c215SJeff Kirsher _qlcnic_crb_get_bit(config_word, 10) 928aa43c215SJeff Kirsher #define qlcnic_get_phy_duplex(config_word) \ 929aa43c215SJeff Kirsher _qlcnic_crb_get_bit(config_word, 13) 930aa43c215SJeff Kirsher 931aa43c215SJeff Kirsher #define QLCNIC_NIU_NON_PROMISC_MODE 0 932aa43c215SJeff Kirsher #define QLCNIC_NIU_PROMISC_MODE 1 933aa43c215SJeff Kirsher #define QLCNIC_NIU_ALLMULTI_MODE 2 934aa43c215SJeff Kirsher 9357f966452SSony Chacko #define QLCNIC_PCIE_SEM_TIMEOUT 10000 9367f966452SSony Chacko 937aa43c215SJeff Kirsher struct crb_128M_2M_sub_block_map { 938aa43c215SJeff Kirsher unsigned valid; 939aa43c215SJeff Kirsher unsigned start_128M; 940aa43c215SJeff Kirsher unsigned end_128M; 941aa43c215SJeff Kirsher unsigned start_2M; 942aa43c215SJeff Kirsher }; 943aa43c215SJeff Kirsher 944aa43c215SJeff Kirsher struct crb_128M_2M_block_map{ 945aa43c215SJeff Kirsher struct crb_128M_2M_sub_block_map sub_block[16]; 946aa43c215SJeff Kirsher }; 947aa43c215SJeff Kirsher #endif /* __QLCNIC_HDR_H_ */ 948