1bafec742SSukumar Swaminathan /* 2bafec742SSukumar Swaminathan * CDDL HEADER START 3bafec742SSukumar Swaminathan * 4bafec742SSukumar Swaminathan * The contents of this file are subject to the terms of the 5bafec742SSukumar Swaminathan * Common Development and Distribution License (the "License"). 6bafec742SSukumar Swaminathan * You may not use this file except in compliance with the License. 7bafec742SSukumar Swaminathan * 8bafec742SSukumar Swaminathan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9bafec742SSukumar Swaminathan * or http://www.opensolaris.org/os/licensing. 10bafec742SSukumar Swaminathan * See the License for the specific language governing permissions 11bafec742SSukumar Swaminathan * and limitations under the License. 12bafec742SSukumar Swaminathan * 13bafec742SSukumar Swaminathan * When distributing Covered Code, include this CDDL HEADER in each 14bafec742SSukumar Swaminathan * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15bafec742SSukumar Swaminathan * If applicable, add the following below this CDDL HEADER, with the 16bafec742SSukumar Swaminathan * fields enclosed by brackets "[]" replaced with your own identifying 17bafec742SSukumar Swaminathan * information: Portions Copyright [yyyy] [name of copyright owner] 18bafec742SSukumar Swaminathan * 19bafec742SSukumar Swaminathan * CDDL HEADER END 20bafec742SSukumar Swaminathan */ 21bafec742SSukumar Swaminathan 22bafec742SSukumar Swaminathan /* 23*accf27a5SSukumar Swaminathan * Copyright 2010 QLogic Corporation. All rights reserved. 24bafec742SSukumar Swaminathan */ 25bafec742SSukumar Swaminathan 26bafec742SSukumar Swaminathan #ifndef _QLGE_HW_H 27bafec742SSukumar Swaminathan #define _QLGE_HW_H 28bafec742SSukumar Swaminathan 29bafec742SSukumar Swaminathan #ifdef __cplusplus 30bafec742SSukumar Swaminathan extern "C" { 31bafec742SSukumar Swaminathan #endif 32bafec742SSukumar Swaminathan 33bafec742SSukumar Swaminathan #define ISP_SCHULTZ 0x8000 34bafec742SSukumar Swaminathan 35bafec742SSukumar Swaminathan #define MB_REG_COUNT 8 36bafec742SSukumar Swaminathan #define MB_DATA_REG_COUNT (MB_REG_COUNT-1) 37bafec742SSukumar Swaminathan 38bafec742SSukumar Swaminathan 39bafec742SSukumar Swaminathan #define QLA_SCHULTZ(qlge) ((qlge)->device_id == ISP_SCHULTZ) 40bafec742SSukumar Swaminathan 41bafec742SSukumar Swaminathan /* 42bafec742SSukumar Swaminathan * Data bit definitions. 43bafec742SSukumar Swaminathan */ 44bafec742SSukumar Swaminathan #define BIT_0 0x1 45bafec742SSukumar Swaminathan #define BIT_1 0x2 46bafec742SSukumar Swaminathan #define BIT_2 0x4 47bafec742SSukumar Swaminathan #define BIT_3 0x8 48bafec742SSukumar Swaminathan #define BIT_4 0x10 49bafec742SSukumar Swaminathan #define BIT_5 0x20 50bafec742SSukumar Swaminathan #define BIT_6 0x40 51bafec742SSukumar Swaminathan #define BIT_7 0x80 52bafec742SSukumar Swaminathan #define BIT_8 0x100 53bafec742SSukumar Swaminathan #define BIT_9 0x200 54bafec742SSukumar Swaminathan #define BIT_10 0x400 55bafec742SSukumar Swaminathan #define BIT_11 0x800 56bafec742SSukumar Swaminathan #define BIT_12 0x1000 57bafec742SSukumar Swaminathan #define BIT_13 0x2000 58bafec742SSukumar Swaminathan #define BIT_14 0x4000 59bafec742SSukumar Swaminathan #define BIT_15 0x8000 60bafec742SSukumar Swaminathan #define BIT_16 0x10000 61bafec742SSukumar Swaminathan #define BIT_17 0x20000 62bafec742SSukumar Swaminathan #define BIT_18 0x40000 63bafec742SSukumar Swaminathan #define BIT_19 0x80000 64bafec742SSukumar Swaminathan #define BIT_20 0x100000 65bafec742SSukumar Swaminathan #define BIT_21 0x200000 66bafec742SSukumar Swaminathan #define BIT_22 0x400000 67bafec742SSukumar Swaminathan #define BIT_23 0x800000 68bafec742SSukumar Swaminathan #define BIT_24 0x1000000 69bafec742SSukumar Swaminathan #define BIT_25 0x2000000 70bafec742SSukumar Swaminathan #define BIT_26 0x4000000 71bafec742SSukumar Swaminathan #define BIT_27 0x8000000 72bafec742SSukumar Swaminathan #define BIT_28 0x10000000 73bafec742SSukumar Swaminathan #define BIT_29 0x20000000 74bafec742SSukumar Swaminathan #define BIT_30 0x40000000 75bafec742SSukumar Swaminathan #define BIT_31 0x80000000 76bafec742SSukumar Swaminathan 77bafec742SSukumar Swaminathan typedef struct ql_stats 78bafec742SSukumar Swaminathan { 79bafec742SSukumar Swaminathan uint32_t intr_type; 80bafec742SSukumar Swaminathan /* software statics */ 81bafec742SSukumar Swaminathan uint32_t intr; 82bafec742SSukumar Swaminathan uint64_t speed; 83bafec742SSukumar Swaminathan uint32_t duplex; 84bafec742SSukumar Swaminathan uint32_t media; 85bafec742SSukumar Swaminathan /* TX */ 86bafec742SSukumar Swaminathan uint64_t obytes; 87bafec742SSukumar Swaminathan uint64_t opackets; 88bafec742SSukumar Swaminathan uint32_t nocarrier; 89bafec742SSukumar Swaminathan uint32_t defer; 90bafec742SSukumar Swaminathan /* RX */ 91bafec742SSukumar Swaminathan uint64_t rbytes; 92bafec742SSukumar Swaminathan uint64_t rpackets; 93bafec742SSukumar Swaminathan uint32_t norcvbuf; 94bafec742SSukumar Swaminathan uint32_t frame_too_long; 95bafec742SSukumar Swaminathan uint32_t crc; 96bafec742SSukumar Swaminathan ulong_t multircv; 97bafec742SSukumar Swaminathan ulong_t brdcstrcv; 98bafec742SSukumar Swaminathan uint32_t errrcv; 99bafec742SSukumar Swaminathan uint32_t frame_too_short; 100bafec742SSukumar Swaminathan /* statics by hw */ 101bafec742SSukumar Swaminathan uint32_t errxmt; 102bafec742SSukumar Swaminathan uint32_t frame_err; 103bafec742SSukumar Swaminathan ulong_t multixmt; 104bafec742SSukumar Swaminathan ulong_t brdcstxmt; 105bafec742SSukumar Swaminathan uint32_t phy_addr; 106bafec742SSukumar Swaminathan uint32_t jabber_err; 107bafec742SSukumar Swaminathan 108bafec742SSukumar Swaminathan }ql_stats_t; 109bafec742SSukumar Swaminathan 110bafec742SSukumar Swaminathan 111bafec742SSukumar Swaminathan #define ETHERNET_CRC_SIZE 4 112bafec742SSukumar Swaminathan 113bafec742SSukumar Swaminathan /* 114bafec742SSukumar Swaminathan * Register Definitions... 115bafec742SSukumar Swaminathan */ 116bafec742SSukumar Swaminathan #define MAILBOX_COUNT 16 117bafec742SSukumar Swaminathan /* System Register 0x00 */ 118bafec742SSukumar Swaminathan #define PROC_ADDR_RDY BIT_31 119bafec742SSukumar Swaminathan #define PROC_ADDR_R BIT_30 120bafec742SSukumar Swaminathan #define PROC_ADDR_ERR BIT_29 121bafec742SSukumar Swaminathan #define PROC_ADDR_DA BIT_28 122bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC0_MBI 0x00001180 123bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC0_MBO (PROC_ADDR_FUNC0_MBI + MAILBOX_COUNT) 124bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC0_CTL 0x000011a1 125bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC2_MBI 0x00001280 126bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC2_MBO (PROC_ADDR_FUNC2_MBI + MAILBOX_COUNT) 127bafec742SSukumar Swaminathan #define PROC_ADDR_FUNC2_CTL 0x000012a1 128bafec742SSukumar Swaminathan #define PROC_ADDR_MPI_RISC 0x00000000 129bafec742SSukumar Swaminathan #define PROC_ADDR_MDE 0x00010000 130bafec742SSukumar Swaminathan #define PROC_ADDR_REGBLOCK 0x00020000 131bafec742SSukumar Swaminathan #define PROC_ADDR_RISC_REG 0x00030000 132bafec742SSukumar Swaminathan 133bafec742SSukumar Swaminathan 134bafec742SSukumar Swaminathan /* System Register 0x08 */ 135bafec742SSukumar Swaminathan #define SYSTEM_EFE_FAE 0x3u 136bafec742SSukumar Swaminathan #define SYSTEM_EFE_FAE_MASK (SYSTEM_EFE_FAE<<16) 137bafec742SSukumar Swaminathan enum { 138bafec742SSukumar Swaminathan SYS_EFE = (1 << 0), 139bafec742SSukumar Swaminathan SYS_FAE = (1 << 1), 140bafec742SSukumar Swaminathan SYS_MDC = (1 << 2), 141bafec742SSukumar Swaminathan SYS_DST = (1 << 3), 142bafec742SSukumar Swaminathan SYS_DWC = (1 << 4), 143bafec742SSukumar Swaminathan SYS_EVW = (1 << 5), 144bafec742SSukumar Swaminathan SYS_OMP_DLY_MASK = 0x3f000000, 145bafec742SSukumar Swaminathan /* 146bafec742SSukumar Swaminathan * There are no values defined as of edit #15. 147bafec742SSukumar Swaminathan */ 148bafec742SSukumar Swaminathan SYS_ODI = (1 << 14) 149bafec742SSukumar Swaminathan }; 150bafec742SSukumar Swaminathan 151bafec742SSukumar Swaminathan /* 152bafec742SSukumar Swaminathan * Reset/Failover Register (RST_FO) bit definitions. 153bafec742SSukumar Swaminathan */ 154bafec742SSukumar Swaminathan 155bafec742SSukumar Swaminathan #define RST_FO_TFO (1 << 0) 156bafec742SSukumar Swaminathan #define RST_FO_RR_MASK 0x00060000 157bafec742SSukumar Swaminathan #define RST_FO_RR_CQ_CAM 0x00000000 158bafec742SSukumar Swaminathan #define RST_FO_RR_DROP 0x00000001 159bafec742SSukumar Swaminathan #define RST_FO_RR_DQ 0x00000002 160bafec742SSukumar Swaminathan #define RST_FO_RR_RCV_FUNC_CQ 0x00000003 161bafec742SSukumar Swaminathan #define RST_FO_FRB BIT_12 162bafec742SSukumar Swaminathan #define RST_FO_MOP BIT_13 163bafec742SSukumar Swaminathan #define RST_FO_REG BIT_14 164bafec742SSukumar Swaminathan #define RST_FO_FR 0x8000u 165bafec742SSukumar Swaminathan 166bafec742SSukumar Swaminathan /* 167bafec742SSukumar Swaminathan * Function Specific Control Register (FSC) bit definitions. 168bafec742SSukumar Swaminathan */ 169bafec742SSukumar Swaminathan enum { 170bafec742SSukumar Swaminathan FSC_DBRST_MASK = 0x00070000, 171bafec742SSukumar Swaminathan FSC_DBRST_256 = 0x00000000, 172bafec742SSukumar Swaminathan FSC_DBRST_512 = 0x00000001, 173bafec742SSukumar Swaminathan FSC_DBRST_768 = 0x00000002, 174bafec742SSukumar Swaminathan FSC_DBRST_1024 = 0x00000003, 175bafec742SSukumar Swaminathan FSC_DBL_MASK = 0x00180000, 176bafec742SSukumar Swaminathan FSC_DBL_DBRST = 0x00000000, 177bafec742SSukumar Swaminathan FSC_DBL_MAX_PLD = 0x00000008, 178bafec742SSukumar Swaminathan FSC_DBL_MAX_BRST = 0x00000010, 179bafec742SSukumar Swaminathan FSC_DBL_128_BYTES = 0x00000018, 180bafec742SSukumar Swaminathan FSC_EC = (1 << 5), 181bafec742SSukumar Swaminathan FSC_EPC_MASK = 0x00c00000, 182bafec742SSukumar Swaminathan FSC_EPC_INBOUND = (1 << 6), 183bafec742SSukumar Swaminathan FSC_EPC_OUTBOUND = (1 << 7), 184bafec742SSukumar Swaminathan FSC_VM_PAGESIZE_MASK = 0x07000000, 185bafec742SSukumar Swaminathan FSC_VM_PAGE_2K = 0x00000100, 186bafec742SSukumar Swaminathan FSC_VM_PAGE_4K = 0x00000200, 187bafec742SSukumar Swaminathan FSC_VM_PAGE_8K = 0x00000300, 188bafec742SSukumar Swaminathan FSC_VM_PAGE_64K = 0x00000600, 189bafec742SSukumar Swaminathan FSC_SH = (1 << 11), 190bafec742SSukumar Swaminathan FSC_DSB = (1 << 12), 191bafec742SSukumar Swaminathan FSC_STE = (1 << 13), 192bafec742SSukumar Swaminathan FSC_FE = (1 << 15) 193bafec742SSukumar Swaminathan }; 194bafec742SSukumar Swaminathan 195bafec742SSukumar Swaminathan /* 196bafec742SSukumar Swaminathan * Host Command Status Register (CSR) bit definitions. 197bafec742SSukumar Swaminathan */ 198bafec742SSukumar Swaminathan #define CSR_ERR_STS_MASK 0x0000003f 199bafec742SSukumar Swaminathan /* 200bafec742SSukumar Swaminathan * There are no valued defined as of edit #15. 201bafec742SSukumar Swaminathan */ 202bafec742SSukumar Swaminathan #define CSR_RR BIT_8 203bafec742SSukumar Swaminathan #define CSR_HRI BIT_9 204bafec742SSukumar Swaminathan #define CSR_RP BIT_10 205bafec742SSukumar Swaminathan #define CSR_CMD_PARM_SHIFT 22 206bafec742SSukumar Swaminathan #define CSR_CMD_NOP 0x00000000 207bafec742SSukumar Swaminathan #define CSR_CMD_SET_RST 0x1000000 208bafec742SSukumar Swaminathan #define CSR_CMD_CLR_RST 0x20000000 209bafec742SSukumar Swaminathan #define CSR_CMD_SET_PAUSE 0x30000000 210bafec742SSukumar Swaminathan #define CSR_CMD_CLR_PAUSE 0x40000000 211bafec742SSukumar Swaminathan #define CSR_CMD_SET_H2R_INT 0x50000000 212bafec742SSukumar Swaminathan #define CSR_CMD_CLR_H2R_INT 0x60000000 213bafec742SSukumar Swaminathan #define CSR_CMD_PAR_EN 0x70000000 214bafec742SSukumar Swaminathan #define CSR_CMD_SET_BAD_PAR 0x80000000u 215bafec742SSukumar Swaminathan #define CSR_CMD_CLR_BAD_PAR 0x90000000u 216bafec742SSukumar Swaminathan #define CSR_CMD_CLR_R2PCI_INT 0xa0000000u 217bafec742SSukumar Swaminathan 218bafec742SSukumar Swaminathan /* 219bafec742SSukumar Swaminathan * Configuration Register (CFG) bit definitions. 220bafec742SSukumar Swaminathan */ 221bafec742SSukumar Swaminathan enum { 222bafec742SSukumar Swaminathan CFG_LRQ = (1 << 0), 223bafec742SSukumar Swaminathan CFG_DRQ = (1 << 1), 224bafec742SSukumar Swaminathan CFG_LR = (1 << 2), 225bafec742SSukumar Swaminathan CFG_DR = (1 << 3), 226bafec742SSukumar Swaminathan CFG_LE = (1 << 5), 227bafec742SSukumar Swaminathan CFG_LCQ = (1 << 6), 228bafec742SSukumar Swaminathan CFG_DCQ = (1 << 7), 229bafec742SSukumar Swaminathan CFG_Q_SHIFT = 8, 230bafec742SSukumar Swaminathan CFG_Q_MASK = 0x7f000000 231bafec742SSukumar Swaminathan }; 232bafec742SSukumar Swaminathan 233bafec742SSukumar Swaminathan /* 234bafec742SSukumar Swaminathan * Status Register (STS) bit definitions. 235bafec742SSukumar Swaminathan */ 236bafec742SSukumar Swaminathan enum { 237bafec742SSukumar Swaminathan STS_FE = (1 << 0), 238bafec742SSukumar Swaminathan STS_PI = (1 << 1), 239bafec742SSukumar Swaminathan STS_PL0 = (1 << 2), 240bafec742SSukumar Swaminathan STS_PL1 = (1 << 3), 241bafec742SSukumar Swaminathan STS_PI0 = (1 << 4), 242bafec742SSukumar Swaminathan STS_PI1 = (1 << 5), 243bafec742SSukumar Swaminathan STS_FUNC_ID_MASK = 0x000000c0, 244bafec742SSukumar Swaminathan STS_FUNC_ID_SHIFT = 6, 245bafec742SSukumar Swaminathan STS_F0E = (1 << 8), 246bafec742SSukumar Swaminathan STS_F1E = (1 << 9), 247bafec742SSukumar Swaminathan STS_F2E = (1 << 10), 248bafec742SSukumar Swaminathan STS_F3E = (1 << 11), 249bafec742SSukumar Swaminathan STS_NFE = (1 << 12) 250bafec742SSukumar Swaminathan }; 251bafec742SSukumar Swaminathan 252bafec742SSukumar Swaminathan /* 253bafec742SSukumar Swaminathan * Register (REV_ID) bit definitions. 254bafec742SSukumar Swaminathan */ 255bafec742SSukumar Swaminathan enum { 256bafec742SSukumar Swaminathan REV_ID_MASK = 0x0000000f, 257bafec742SSukumar Swaminathan REV_ID_NICROLL_SHIFT = 0, 258bafec742SSukumar Swaminathan REV_ID_NICREV_SHIFT = 4, 259bafec742SSukumar Swaminathan REV_ID_XGROLL_SHIFT = 8, 260bafec742SSukumar Swaminathan REV_ID_XGREV_SHIFT = 12, 261bafec742SSukumar Swaminathan REV_ID_CHIPREV_SHIFT = 28 262bafec742SSukumar Swaminathan }; 263bafec742SSukumar Swaminathan 264bafec742SSukumar Swaminathan /* 265bafec742SSukumar Swaminathan * Force ECC Error Register (FRC_ECC_ERR) bit definitions. 266bafec742SSukumar Swaminathan */ 267bafec742SSukumar Swaminathan enum { 268bafec742SSukumar Swaminathan FRC_ECC_ERR_VW = (1 << 12), 269bafec742SSukumar Swaminathan FRC_ECC_ERR_VB = (1 << 13), 270bafec742SSukumar Swaminathan FRC_ECC_ERR_NI = (1 << 14), 271bafec742SSukumar Swaminathan FRC_ECC_ERR_NO = (1 << 15), 272bafec742SSukumar Swaminathan FRC_ECC_PFE_SHIFT = 16, 273bafec742SSukumar Swaminathan FRC_ECC_ERR_DO = (1 << 18), 274bafec742SSukumar Swaminathan FRC_ECC_P14 = (1 << 19) 275bafec742SSukumar Swaminathan }; 276bafec742SSukumar Swaminathan 277bafec742SSukumar Swaminathan /* 278bafec742SSukumar Swaminathan * Error Status Register (ERR_STS) bit definitions. 279bafec742SSukumar Swaminathan */ 280bafec742SSukumar Swaminathan enum { 281bafec742SSukumar Swaminathan ERR_STS_NOF = (1 << 0), 282bafec742SSukumar Swaminathan ERR_STS_NIF = (1 << 1), 283bafec742SSukumar Swaminathan ERR_STS_DRP = (1 << 2), 284bafec742SSukumar Swaminathan ERR_STS_XGP = (1 << 3), 285bafec742SSukumar Swaminathan ERR_STS_FOU = (1 << 4), 286bafec742SSukumar Swaminathan ERR_STS_FOC = (1 << 5), 287bafec742SSukumar Swaminathan ERR_STS_FOF = (1 << 6), 288bafec742SSukumar Swaminathan ERR_STS_FIU = (1 << 7), 289bafec742SSukumar Swaminathan ERR_STS_FIC = (1 << 8), 290bafec742SSukumar Swaminathan ERR_STS_FIF = (1 << 9), 291bafec742SSukumar Swaminathan ERR_STS_MOF = (1 << 10), 292bafec742SSukumar Swaminathan ERR_STS_TA = (1 << 11), 293bafec742SSukumar Swaminathan ERR_STS_MA = (1 << 12), 294bafec742SSukumar Swaminathan ERR_STS_MPE = (1 << 13), 295bafec742SSukumar Swaminathan ERR_STS_SCE = (1 << 14), 296bafec742SSukumar Swaminathan ERR_STS_STE = (1 << 15), 297bafec742SSukumar Swaminathan ERR_STS_FOW = (1 << 16), 298bafec742SSukumar Swaminathan ERR_STS_UE = (1 << 17), 299bafec742SSukumar Swaminathan ERR_STS_MCH = (1 << 26), 300bafec742SSukumar Swaminathan ERR_STS_LOC_SHIFT = 27 301bafec742SSukumar Swaminathan }; 302bafec742SSukumar Swaminathan 303bafec742SSukumar Swaminathan /* 304bafec742SSukumar Swaminathan * Semaphore Register (SEM) bit definitions. 305bafec742SSukumar Swaminathan */ 306bafec742SSukumar Swaminathan /* 307bafec742SSukumar Swaminathan * Example: 308bafec742SSukumar Swaminathan * reg = SEM_XGMAC0_MASK | (SEM_SET << SEM_XGMAC0_SHIFT) 309bafec742SSukumar Swaminathan */ 310bafec742SSukumar Swaminathan #define SEM_CLEAR 0 311bafec742SSukumar Swaminathan #define SEM_SET 1 312bafec742SSukumar Swaminathan #define SEM_FORCE 3 313bafec742SSukumar Swaminathan #define SEM_XGMAC0_SHIFT 0 314bafec742SSukumar Swaminathan #define SEM_XGMAC1_SHIFT 2 315bafec742SSukumar Swaminathan #define SEM_ICB_SHIFT 4 316bafec742SSukumar Swaminathan #define SEM_MAC_ADDR_SHIFT 6 317bafec742SSukumar Swaminathan #define SEM_FLASH_SHIFT 8 318bafec742SSukumar Swaminathan #define SEM_PROBE_SHIFT 10 319bafec742SSukumar Swaminathan #define SEM_RT_IDX_SHIFT 12 320bafec742SSukumar Swaminathan #define SEM_PROC_REG_SHIFT 14 321bafec742SSukumar Swaminathan #define SEM_XGMAC0_MASK 0x00030000 322bafec742SSukumar Swaminathan #define SEM_XGMAC1_MASK 0x000c0000 323bafec742SSukumar Swaminathan #define SEM_ICB_MASK 0x00300000 324bafec742SSukumar Swaminathan #define SEM_MAC_ADDR_MASK 0x00c00000 325bafec742SSukumar Swaminathan #define SEM_FLASH_MASK 0x03000000 326bafec742SSukumar Swaminathan #define SEM_PROBE_MASK 0x0c000000 327bafec742SSukumar Swaminathan #define SEM_RT_IDX_MASK 0x30000000 328bafec742SSukumar Swaminathan #define SEM_PROC_REG_MASK 0xc0000000 329bafec742SSukumar Swaminathan 330bafec742SSukumar Swaminathan /* 331bafec742SSukumar Swaminathan * Stop CQ Processing Register (CQ_STOP) bit definitions. 332bafec742SSukumar Swaminathan */ 333bafec742SSukumar Swaminathan enum { 334bafec742SSukumar Swaminathan CQ_STOP_QUEUE_MASK = (0x007f0000), 335bafec742SSukumar Swaminathan CQ_STOP_TYPE_MASK = (0x03000000), 336bafec742SSukumar Swaminathan CQ_STOP_TYPE_START = 0x00000100, 337bafec742SSukumar Swaminathan CQ_STOP_TYPE_STOP = 0x00000200, 338bafec742SSukumar Swaminathan CQ_STOP_TYPE_READ = 0x00000300, 339bafec742SSukumar Swaminathan CQ_STOP_EN = (1 << 15) 340bafec742SSukumar Swaminathan }; 341bafec742SSukumar Swaminathan 342bafec742SSukumar Swaminathan /* 343bafec742SSukumar Swaminathan * MAC Protocol Address Index Register (MAC_ADDR_IDX) bit definitions. 344bafec742SSukumar Swaminathan */ 345bafec742SSukumar Swaminathan #define MAC_ADDR_IDX_SHIFT 4 346bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_SHIFT 16 347bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MASK 0x000f0000 348bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_CAM_MAC 0x00000000 349bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MULTI_MAC 0x00010000 350bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_VLAN 0x00020000 351bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MULTI_FLTR 0x00030000 352bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_FC_MAC 0x00040000 353bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MGMT_MAC 0x00050000 354bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MGMT_VLAN 0x00060000 355bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MGMT_V4 0x00070000 356bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MGMT_V6 0x00080000 357bafec742SSukumar Swaminathan #define MAC_ADDR_TYPE_MGMT_TU_DP 0x00090000 358bafec742SSukumar Swaminathan #define MAC_ADDR_ADR BIT_25 359bafec742SSukumar Swaminathan #define MAC_ADDR_RS BIT_26 360bafec742SSukumar Swaminathan #define MAC_ADDR_E BIT_27 361bafec742SSukumar Swaminathan #define MAC_ADDR_MR BIT_30 362bafec742SSukumar Swaminathan #define MAC_ADDR_MW BIT_31 363bafec742SSukumar Swaminathan #define MAX_MULTICAST_HW_SIZE 32 364bafec742SSukumar Swaminathan 365bafec742SSukumar Swaminathan /* 366bafec742SSukumar Swaminathan * MAC Protocol Address Index Register (SPLT_HDR, 0xC0) bit definitions. 367bafec742SSukumar Swaminathan */ 368bafec742SSukumar Swaminathan #define SPLT_HDR_EP BIT_31 369bafec742SSukumar Swaminathan 370bafec742SSukumar Swaminathan /* 371bafec742SSukumar Swaminathan * NIC Receive Configuration Register (NIC_RCV_CFG) bit definitions. 372bafec742SSukumar Swaminathan */ 373bafec742SSukumar Swaminathan enum { 374bafec742SSukumar Swaminathan NIC_RCV_CFG_PPE = (1 << 0), 375bafec742SSukumar Swaminathan NIC_RCV_CFG_VLAN_MASK = 0x00060000, 376bafec742SSukumar Swaminathan NIC_RCV_CFG_VLAN_ALL = 0x00000000, 377bafec742SSukumar Swaminathan NIC_RCV_CFG_VLAN_MATCH_ONLY = 0x00000002, 378bafec742SSukumar Swaminathan NIC_RCV_CFG_VLAN_MATCH_AND_NON = 0x00000004, 379bafec742SSukumar Swaminathan NIC_RCV_CFG_VLAN_NONE_AND_NON = 0x00000006, 380bafec742SSukumar Swaminathan NIC_RCV_CFG_RV = (1 << 3), 381bafec742SSukumar Swaminathan NIC_RCV_CFG_DFQ_MASK = (0x7f000000), 382bafec742SSukumar Swaminathan NIC_RCV_CFG_DFQ_SHIFT = 8, 383bafec742SSukumar Swaminathan NIC_RCV_CFG_DFQ = 0 /* HARDCODE default queue to 0. */ 384bafec742SSukumar Swaminathan }; 385bafec742SSukumar Swaminathan 386bafec742SSukumar Swaminathan /* 387bafec742SSukumar Swaminathan * Routing Index Register (RT_IDX) bit definitions. 388bafec742SSukumar Swaminathan */ 389bafec742SSukumar Swaminathan #define RT_IDX_IDX_SHIFT 8 390bafec742SSukumar Swaminathan #define RT_IDX_TYPE_MASK 0x000f0000 391bafec742SSukumar Swaminathan #define RT_IDX_TYPE_RT 0x00000000 392bafec742SSukumar Swaminathan #define RT_IDX_TYPE_RT_INV 0x00010000 393bafec742SSukumar Swaminathan #define RT_IDX_TYPE_NICQ 0x00020000 394bafec742SSukumar Swaminathan #define RT_IDX_TYPE_NICQ_INV 0x00030000 395bafec742SSukumar Swaminathan #define RT_IDX_DST_MASK 0x00700000 396bafec742SSukumar Swaminathan #define RT_IDX_DST_RSS 0x00000000 397bafec742SSukumar Swaminathan #define RT_IDX_DST_CAM_Q 0x00100000 398bafec742SSukumar Swaminathan #define RT_IDX_DST_COS_Q 0x00200000 399bafec742SSukumar Swaminathan #define RT_IDX_DST_DFLT_Q 0x00300000 400bafec742SSukumar Swaminathan #define RT_IDX_DST_DEST_Q 0x00400000 401bafec742SSukumar Swaminathan #define RT_IDX_RS BIT_26 402bafec742SSukumar Swaminathan #define RT_IDX_E BIT_27 403bafec742SSukumar Swaminathan #define RT_IDX_MR BIT_30 404bafec742SSukumar Swaminathan #define RT_IDX_MW BIT_31 405bafec742SSukumar Swaminathan 406bafec742SSukumar Swaminathan /* Nic Queue format - type 2 bits */ 407bafec742SSukumar Swaminathan #define RT_IDX_BCAST 1 408bafec742SSukumar Swaminathan #define RT_IDX_MCAST BIT_1 409bafec742SSukumar Swaminathan #define RT_IDX_MCAST_MATCH BIT_2 410bafec742SSukumar Swaminathan #define RT_IDX_MCAST_REG_MATCH BIT_3 411bafec742SSukumar Swaminathan #define RT_IDX_MCAST_HASH_MATCH BIT_4 412bafec742SSukumar Swaminathan #define RT_IDX_FC_MACH BIT_5 413bafec742SSukumar Swaminathan #define RT_IDX_ETH_FCOE BIT_6 414bafec742SSukumar Swaminathan #define RT_IDX_CAM_HIT BIT_7 415bafec742SSukumar Swaminathan #define RT_IDX_CAM_BIT0 BIT_8 416bafec742SSukumar Swaminathan #define RT_IDX_CAM_BIT1 BIT_9 417bafec742SSukumar Swaminathan #define RT_IDX_VLAN_TAG BIT_10 418bafec742SSukumar Swaminathan #define RT_IDX_VLAN_MATCH BIT_11 419bafec742SSukumar Swaminathan #define RT_IDX_VLAN_FILTER BIT_12 420bafec742SSukumar Swaminathan #define RT_IDX_ETH_SKIP1 BIT_13 421bafec742SSukumar Swaminathan #define RT_IDX_ETH_SKIP2 BIT_14 422bafec742SSukumar Swaminathan #define RT_IDX_BCAST_MCAST_MATCH BIT_15 423bafec742SSukumar Swaminathan #define RT_IDX_802_3 BIT_16 424bafec742SSukumar Swaminathan #define RT_IDX_LLDP BIT_17 425bafec742SSukumar Swaminathan #define RT_IDX_UNUSED018 BIT_18 426bafec742SSukumar Swaminathan #define RT_IDX_UNUSED019 BIT_19 427bafec742SSukumar Swaminathan #define RT_IDX_UNUSED20 BIT_20 428bafec742SSukumar Swaminathan #define RT_IDX_UNUSED21 BIT_21 429bafec742SSukumar Swaminathan #define RT_IDX_ERR BIT_22 430bafec742SSukumar Swaminathan #define RT_IDX_VALID BIT_23 431bafec742SSukumar Swaminathan #define RT_IDX_TU_CSUM_ERR BIT_24 432bafec742SSukumar Swaminathan #define RT_IDX_IP_CSUM_ERR BIT_25 433bafec742SSukumar Swaminathan #define RT_IDX_MAC_ERR BIT_26 434bafec742SSukumar Swaminathan #define RT_IDX_RSS_TCP6 BIT_27 435bafec742SSukumar Swaminathan #define RT_IDX_RSS_TCP4 BIT_28 436bafec742SSukumar Swaminathan #define RT_IDX_RSS_IPV6 BIT_29 437bafec742SSukumar Swaminathan #define RT_IDX_RSS_IPV4 BIT_30 438bafec742SSukumar Swaminathan #define RT_IDX_RSS_MATCH BIT_31 439bafec742SSukumar Swaminathan 440bafec742SSukumar Swaminathan /* Hierarchy for the NIC Queue Mask */ 441bafec742SSukumar Swaminathan enum { 442bafec742SSukumar Swaminathan RT_IDX_ALL_ERR_SLOT = 0, 443bafec742SSukumar Swaminathan RT_IDX_MAC_ERR_SLOT = 0, 444bafec742SSukumar Swaminathan RT_IDX_IP_CSUM_ERR_SLOT = 1, 445bafec742SSukumar Swaminathan RT_IDX_TCP_UDP_CSUM_ERR_SLOT = 2, 446bafec742SSukumar Swaminathan RT_IDX_BCAST_SLOT = 3, 447bafec742SSukumar Swaminathan RT_IDX_MCAST_MATCH_SLOT = 4, 448bafec742SSukumar Swaminathan RT_IDX_ALLMULTI_SLOT = 5, 449bafec742SSukumar Swaminathan RT_IDX_UNUSED6_SLOT = 6, 450bafec742SSukumar Swaminathan RT_IDX_UNUSED7_SLOT = 7, 451bafec742SSukumar Swaminathan RT_IDX_RSS_MATCH_SLOT = 8, 452bafec742SSukumar Swaminathan RT_IDX_RSS_IPV4_SLOT = 8, 453bafec742SSukumar Swaminathan RT_IDX_RSS_IPV6_SLOT = 9, 454bafec742SSukumar Swaminathan RT_IDX_RSS_TCP4_SLOT = 10, 455bafec742SSukumar Swaminathan RT_IDX_RSS_TCP6_SLOT = 11, 456bafec742SSukumar Swaminathan RT_IDX_CAM_HIT_SLOT = 12, 457bafec742SSukumar Swaminathan RT_IDX_UNUSED013 = 13, 458bafec742SSukumar Swaminathan RT_IDX_UNUSED014 = 14, 459bafec742SSukumar Swaminathan RT_IDX_PROMISCUOUS_SLOT = 15, 460bafec742SSukumar Swaminathan RT_IDX_MAX_SLOTS = 16 461bafec742SSukumar Swaminathan }; 462bafec742SSukumar Swaminathan 463bafec742SSukumar Swaminathan enum { 464bafec742SSukumar Swaminathan CAM_OUT_ROUTE_FC = 0, 465bafec742SSukumar Swaminathan CAM_OUT_ROUTE_NIC = 1, 466bafec742SSukumar Swaminathan CAM_OUT_FUNC_SHIFT = 2, 467bafec742SSukumar Swaminathan CAM_OUT_RV = (1 << 4), 468bafec742SSukumar Swaminathan CAM_OUT_SH = (1 << 15), 469bafec742SSukumar Swaminathan CAM_OUT_CQ_ID_SHIFT = 5 470bafec742SSukumar Swaminathan }; 471bafec742SSukumar Swaminathan 472bafec742SSukumar Swaminathan /* Reset/Failover Register 0C */ 473bafec742SSukumar Swaminathan #define FUNCTION_RESET 0x8000u 474bafec742SSukumar Swaminathan #define FUNCTION_RESET_MASK (FUNCTION_RESET<<16) 475bafec742SSukumar Swaminathan 476bafec742SSukumar Swaminathan /* Function Specific Control Register 0x10 */ 477bafec742SSukumar Swaminathan #define FSC_MASK (0x97ffu << 16) 478bafec742SSukumar Swaminathan #define FSC_FE 0x8000 479bafec742SSukumar Swaminathan 480bafec742SSukumar Swaminathan /* Configuration Register 0x28 */ 481bafec742SSukumar Swaminathan #define LOAD_LCQ 0x40 482bafec742SSukumar Swaminathan #define LOAD_LCQ_MASK (0x7F40u << 16) 483bafec742SSukumar Swaminathan #define LOAD_ICB_ERR 0x20 484bafec742SSukumar Swaminathan #define LOAD_LRQ 0x01 485bafec742SSukumar Swaminathan #define LOAD_LRQ_MASK (0x7F01u << 16) 486bafec742SSukumar Swaminathan 487bafec742SSukumar Swaminathan #define FN0_NET 0 488bafec742SSukumar Swaminathan #define FN1_NET 1 489bafec742SSukumar Swaminathan #define FN0_FC 2 490bafec742SSukumar Swaminathan #define FN1_FC 3 491bafec742SSukumar Swaminathan 492bafec742SSukumar Swaminathan /* 493bafec742SSukumar Swaminathan * Semaphore Register (SEM) bit definitions. 494bafec742SSukumar Swaminathan */ 495bafec742SSukumar Swaminathan #define SEM_CLEAR 0 496bafec742SSukumar Swaminathan #define SEM_SET 1 497bafec742SSukumar Swaminathan #define SEM_FORCE 3 498bafec742SSukumar Swaminathan #define SEM_XGMAC0_SHIFT 0 499bafec742SSukumar Swaminathan #define SEM_XGMAC1_SHIFT 2 500bafec742SSukumar Swaminathan #define SEM_ICB_SHIFT 4 501bafec742SSukumar Swaminathan #define SEM_MAC_ADDR_SHIFT 6 502bafec742SSukumar Swaminathan #define SEM_FLASH_SHIFT 8 503bafec742SSukumar Swaminathan #define SEM_PROBE_SHIFT 10 504bafec742SSukumar Swaminathan #define SEM_RT_IDX_SHIFT 12 505bafec742SSukumar Swaminathan #define SEM_PROC_REG_SHIFT 14 506bafec742SSukumar Swaminathan #define SEM_XGMAC0_MASK 0x00030000 507bafec742SSukumar Swaminathan #define SEM_XGMAC1_MASK 0x000c0000 508bafec742SSukumar Swaminathan #define SEM_ICB_MASK 0x00300000 509bafec742SSukumar Swaminathan #define SEM_MAC_ADDR_MASK 0x00c00000 510bafec742SSukumar Swaminathan #define SEM_FLASH_MASK 0x03000000 511bafec742SSukumar Swaminathan #define SEM_PROBE_MASK 0x0c000000 512bafec742SSukumar Swaminathan #define SEM_RT_IDX_MASK 0x30000000 513bafec742SSukumar Swaminathan #define SEM_PROC_REG_MASK 0xc0000000 514bafec742SSukumar Swaminathan 515bafec742SSukumar Swaminathan /* System Register 0x08 */ 516bafec742SSukumar Swaminathan #define SYSTEM_EFE_FAE 0x3u 517bafec742SSukumar Swaminathan #define SYSTEM_EFE_FAE_MASK (SYSTEM_EFE_FAE<<16) 518bafec742SSukumar Swaminathan 519bafec742SSukumar Swaminathan /* Interrupt Status Register-1 0x3C */ 520bafec742SSukumar Swaminathan #define CQ_0_NOT_EMPTY BIT_0 521bafec742SSukumar Swaminathan #define CQ_1_NOT_EMPTY BIT_1 522bafec742SSukumar Swaminathan #define CQ_2_NOT_EMPTY BIT_2 523bafec742SSukumar Swaminathan #define CQ_3_NOT_EMPTY BIT_3 524bafec742SSukumar Swaminathan #define CQ_4_NOT_EMPTY BIT_4 525bafec742SSukumar Swaminathan #define CQ_5_NOT_EMPTY BIT_5 526bafec742SSukumar Swaminathan #define CQ_6_NOT_EMPTY BIT_6 527bafec742SSukumar Swaminathan #define CQ_7_NOT_EMPTY BIT_7 528bafec742SSukumar Swaminathan #define CQ_8_NOT_EMPTY BIT_8 529bafec742SSukumar Swaminathan #define CQ_9_NOT_EMPTY BIT_9 530bafec742SSukumar Swaminathan #define CQ_10_NOT_EMPTY BIT_10 531bafec742SSukumar Swaminathan #define CQ_11_NOT_EMPTY BIT_11 532bafec742SSukumar Swaminathan #define CQ_12_NOT_EMPTY BIT_12 533bafec742SSukumar Swaminathan #define CQ_13_NOT_EMPTY BIT_13 534bafec742SSukumar Swaminathan #define CQ_14_NOT_EMPTY BIT_14 535bafec742SSukumar Swaminathan #define CQ_15_NOT_EMPTY BIT_15 536bafec742SSukumar Swaminathan #define CQ_16_NOT_EMPTY BIT_16 537bafec742SSukumar Swaminathan /* Processor Address Register 0x00 */ 538bafec742SSukumar Swaminathan #define PROCESSOR_ADDRESS_RDY (0x8000u<<16) 539bafec742SSukumar Swaminathan #define PROCESSOR_ADDRESS_READ (0x4000u<<16) 540bafec742SSukumar Swaminathan /* Host Command/Status Register 0x14 */ 541bafec742SSukumar Swaminathan #define HOST_CMD_SET_RISC_RESET 0x10000000u 542bafec742SSukumar Swaminathan #define HOST_CMD_CLEAR_RISC_RESET 0x20000000u 543bafec742SSukumar Swaminathan #define HOST_CMD_SET_RISC_PAUSE 0x30000000u 544bafec742SSukumar Swaminathan #define HOST_CMD_RELEASE_RISC_PAUSE 0x40000000u 545bafec742SSukumar Swaminathan #define HOST_CMD_SET_RISC_INTR 0x50000000u 546bafec742SSukumar Swaminathan #define HOST_CMD_CLEAR_RISC_INTR 0x60000000u 547bafec742SSukumar Swaminathan #define HOST_CMD_SET_PARITY_ENABLE 0x70000000u 548bafec742SSukumar Swaminathan #define HOST_CMD_FORCE_BAD_PARITY 0x80000000u 549bafec742SSukumar Swaminathan #define HOST_CMD_RELEASE_BAD_PARITY 0x90000000u 550bafec742SSukumar Swaminathan #define HOST_CMD_CLEAR_RISC_TO_HOST_INTR 0xA0000000u 551bafec742SSukumar Swaminathan #define HOST_TO_MPI_INTR_NOT_DONE 0x200 552bafec742SSukumar Swaminathan 553bafec742SSukumar Swaminathan #define RISC_RESET BIT_8 554bafec742SSukumar Swaminathan #define RISC_PAUSED BIT_10 555bafec742SSukumar Swaminathan /* Semaphor Register 0x64 */ 556bafec742SSukumar Swaminathan #define QL_SEM_BITS_BASE_CODE 0x1u 557bafec742SSukumar Swaminathan #define QL_PORT0_XGMAC_SEM_BITS (QL_SEM_BITS_BASE_CODE) 558bafec742SSukumar Swaminathan #define QL_PORT1_XGMAC_SEM_BITS (QL_SEM_BITS_BASE_CODE << 2) 559bafec742SSukumar Swaminathan #define QL_ICB_ACCESS_ADDRESS_SEM_BITS (QL_SEM_BITS_BASE_CODE << 4) 560bafec742SSukumar Swaminathan #define QL_MAC_PROTOCOL_SEM_BITS (QL_SEM_BITS_BASE_CODE << 6) 561bafec742SSukumar Swaminathan #define QL_FLASH_SEM_BITS (QL_SEM_BITS_BASE_CODE << 8) 562bafec742SSukumar Swaminathan #define QL_PROBE_MUX_SEM_BITS (QL_SEM_BITS_BASE_CODE << 10) 563bafec742SSukumar Swaminathan #define QL_ROUTING_INDEX_SEM_BITS (QL_SEM_BITS_BASE_CODE << 12) 564bafec742SSukumar Swaminathan #define QL_PROCESSOR_SEM_BITS (QL_SEM_BITS_BASE_CODE << 14) 565bafec742SSukumar Swaminathan #define QL_NIC_RECV_CONFIG_SEM_BITS (QL_SEM_BITS_BASE_CODE << 14) 566bafec742SSukumar Swaminathan 567bafec742SSukumar Swaminathan #define QL_SEM_MASK_BASE_CODE 0x30000u 568bafec742SSukumar Swaminathan #define QL_PORT0_XGMAC_SEM_MASK (QL_SEM_MASK_BASE_CODE) 569bafec742SSukumar Swaminathan #define QL_PORT1_XGMAC_SEM_MASK (QL_SEM_MASK_BASE_CODE << 2) 570bafec742SSukumar Swaminathan #define QL_ICB_ACCESS_ADDRESS_SEM_MASK (QL_SEM_MASK_BASE_CODE << 4) 571bafec742SSukumar Swaminathan #define QL_MAC_PROTOCOL_SEM_MASK (QL_SEM_MASK_BASE_CODE << 6) 572bafec742SSukumar Swaminathan #define QL_FLASH_SEM_MASK (QL_SEM_MASK_BASE_CODE << 8) 573bafec742SSukumar Swaminathan #define QL_PROBE_MUX_SEM_MASK (QL_SEM_MASK_BASE_CODE << 10) 574bafec742SSukumar Swaminathan #define QL_ROUTING_INDEX_SEM_MASK (QL_SEM_MASK_BASE_CODE << 12) 575bafec742SSukumar Swaminathan #define QL_PROCESSOR_SEM_MASK (QL_SEM_MASK_BASE_CODE << 14) 576bafec742SSukumar Swaminathan #define QL_NIC_RECV_CONFIG_SEM_MASK (QL_SEM_MASK_BASE_CODE << 14) 577bafec742SSukumar Swaminathan 578bafec742SSukumar Swaminathan /* XGMAC Address Register 0x78 */ 579bafec742SSukumar Swaminathan #define XGMAC_ADDRESS_RDY (0x8000u<<16) 580bafec742SSukumar Swaminathan #define XGMAC_ADDRESS_READ_TRANSACT (0x4000u<<16) 581bafec742SSukumar Swaminathan #define XGMAC_ADDRESS_ACCESS_ERROR (0x2000u<<16) 582bafec742SSukumar Swaminathan 583bafec742SSukumar Swaminathan /* XGMAC Register Set */ 584bafec742SSukumar Swaminathan #define REG_XGMAC_GLOBAL_CONFIGURATION 0x108 585bafec742SSukumar Swaminathan #define GLOBAL_CONFIG_JUMBO_MODE 0x40 586bafec742SSukumar Swaminathan 587bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_CONFIGURATION 0x10C 588bafec742SSukumar Swaminathan #define XGMAC_MAC_TX_ENABLE 0x02 589bafec742SSukumar Swaminathan 590bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_CONFIGURATION 0x110 591bafec742SSukumar Swaminathan #define XGMAC_MAC_RX_ENABLE 0x02 592bafec742SSukumar Swaminathan 593bafec742SSukumar Swaminathan #define REG_XGMAC_FLOW_CONTROL 0x11C 594bafec742SSukumar Swaminathan 595bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_PARAM 0x134 596bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_PARAM 0x138 597bafec742SSukumar Swaminathan 598bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_PKTS 0x200 599bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_OCTETS 0x208 600bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_MULTCAST_PKTS 0x210 601bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_BROADCAST_PKTS 0x218 602bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_TX_PAUSE_PKTS 0x230 603bafec742SSukumar Swaminathan 604bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_OCTETS 0x300 605bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_OCTETS_OK 0x308 606bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_PKTS 0x310 607bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_PKTS_OK 0x318 608bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_BROADCAST_PKTS 0x320 609bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_MULTCAST_PKTS 0x328 610bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_JABBER_PKTS 0x348 611bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_FCS_ERR 0x360 612bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_ALIGN_ERR 0x368 613bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_SYM_ERR 0x370 614bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_INT_ERR 0x378 615bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_PAUSE_PKTS 0x388 616bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_PHY_ADDR 0x430 617bafec742SSukumar Swaminathan #define REG_XGMAC_MAC_RX_FIFO_DROPS 0x5B8 618bafec742SSukumar Swaminathan 619bafec742SSukumar Swaminathan 620bafec742SSukumar Swaminathan /* MAC Protocol Address Index Register Set 0xA8 */ 621bafec742SSukumar Swaminathan #define MAC_PROTOCOL_ADDRESS_INDEX_MW (0x8000u<<16) 622bafec742SSukumar Swaminathan #define MAC_PROTOCOL_ADDRESS_ENABLE (1 << 27) 623bafec742SSukumar Swaminathan #define MAC_PROTOCOL_TYPE_CAM_MAC (0x0) 624bafec742SSukumar Swaminathan #define MAC_PROTOCOL_TYPE_MULTICAST (0x10000u) 625bafec742SSukumar Swaminathan 626bafec742SSukumar Swaminathan /* NIC Receive Configuration Register 0xD4 */ 627bafec742SSukumar Swaminathan #define RECV_CONFIG_DEFAULT_Q_MASK (0x7F000000u) 628bafec742SSukumar Swaminathan #define RECV_CONFIG_VTAG_REMOVAL_MASK (0x80000u) 629bafec742SSukumar Swaminathan #define RECV_CONFIG_VTAG_RV 0x08 630bafec742SSukumar Swaminathan 631bafec742SSukumar Swaminathan /* 632bafec742SSukumar Swaminathan * 10G MAC Address Register (XGMAC_ADDR) bit definitions. 633bafec742SSukumar Swaminathan */ 634bafec742SSukumar Swaminathan #define XGMAC_ADDR_RDY (1 << 31) 635bafec742SSukumar Swaminathan #define XGMAC_ADDR_R (1 << 30) 636bafec742SSukumar Swaminathan #define XGMAC_ADDR_XME (1 << 29) 637bafec742SSukumar Swaminathan 638bafec742SSukumar Swaminathan #define PAUSE_SRC_LO 0x00000100 639bafec742SSukumar Swaminathan #define PAUSE_SRC_HI 0x00000104 640bafec742SSukumar Swaminathan #define GLOBAL_CFG 0x00000108 641bafec742SSukumar Swaminathan #define GLOBAL_CFG_RESET (1 << 0) 642bafec742SSukumar Swaminathan #define GLOBAL_CFG_JUMBO (1 << 6) 643bafec742SSukumar Swaminathan #define GLOBAL_CFG_TX_STAT_EN (1 << 10) 644bafec742SSukumar Swaminathan #define GLOBAL_CFG_RX_STAT_EN (1 << 11) 645bafec742SSukumar Swaminathan #define TX_CFG 0x0000010c 646bafec742SSukumar Swaminathan #define TX_CFG_RESET (1 << 0) 647bafec742SSukumar Swaminathan #define TX_CFG_EN (1 << 1) 648bafec742SSukumar Swaminathan #define TX_CFG_PREAM (1 << 2) 649bafec742SSukumar Swaminathan #define RX_CFG 0x00000110 650bafec742SSukumar Swaminathan #define RX_CFG_RESET (1 << 0) 651bafec742SSukumar Swaminathan #define RX_CFG_EN (1 << 1) 652bafec742SSukumar Swaminathan #define RX_CFG_PREAM (1 << 2) 653bafec742SSukumar Swaminathan #define FLOW_CTL 0x0000011c 654bafec742SSukumar Swaminathan #define PAUSE_OPCODE 0x00000120 655bafec742SSukumar Swaminathan #define PAUSE_TIMER 0x00000124 656bafec742SSukumar Swaminathan #define PAUSE_FRM_DEST_LO 0x00000128 657bafec742SSukumar Swaminathan #define PAUSE_FRM_DEST_HI 0x0000012c 658bafec742SSukumar Swaminathan #define MAC_TX_PARAMS 0x00000134 659bafec742SSukumar Swaminathan #define MAC_TX_PARAMS_JUMBO (1 << 31) 660bafec742SSukumar Swaminathan #define MAC_TX_PARAMS_SIZE_SHIFT 16 661bafec742SSukumar Swaminathan #define MAC_RX_PARAMS 0x00000138 662bafec742SSukumar Swaminathan #define MAC_SYS_INT 0x00000144 663bafec742SSukumar Swaminathan #define MAC_SYS_INT_MASK 0x00000148 664bafec742SSukumar Swaminathan #define MAC_MGMT_INT 0x0000014c 665bafec742SSukumar Swaminathan #define MAC_MGMT_IN_MASK 0x00000150 666bafec742SSukumar Swaminathan #define EXT_ARB_MODE 0x000001fc 667bafec742SSukumar Swaminathan #define TX_PKTS 0x00000200 668bafec742SSukumar Swaminathan #define TX_PKTS_LO 0x00000204 669bafec742SSukumar Swaminathan #define TX_BYTES 0x00000208 670bafec742SSukumar Swaminathan #define TX_BYTES_LO 0x0000020C 671bafec742SSukumar Swaminathan #define TX_MCAST_PKTS 0x00000210 672bafec742SSukumar Swaminathan #define TX_MCAST_PKTS_LO 0x00000214 673bafec742SSukumar Swaminathan #define TX_BCAST_PKTS 0x00000218 674bafec742SSukumar Swaminathan #define TX_BCAST_PKTS_LO 0x0000021C 675bafec742SSukumar Swaminathan #define TX_UCAST_PKTS 0x00000220 676bafec742SSukumar Swaminathan #define TX_UCAST_PKTS_LO 0x00000224 677bafec742SSukumar Swaminathan #define TX_CTL_PKTS 0x00000228 678bafec742SSukumar Swaminathan #define TX_CTL_PKTS_LO 0x0000022c 679bafec742SSukumar Swaminathan #define TX_PAUSE_PKTS 0x00000230 680bafec742SSukumar Swaminathan #define TX_PAUSE_PKTS_LO 0x00000234 681bafec742SSukumar Swaminathan #define TX_64_PKT 0x00000238 682bafec742SSukumar Swaminathan #define TX_64_PKT_LO 0x0000023c 683bafec742SSukumar Swaminathan #define TX_65_TO_127_PKT 0x00000240 684bafec742SSukumar Swaminathan #define TX_65_TO_127_PKT_LO 0x00000244 685bafec742SSukumar Swaminathan #define TX_128_TO_255_PKT 0x00000248 686bafec742SSukumar Swaminathan #define TX_128_TO_255_PKT_LO 0x0000024c 687bafec742SSukumar Swaminathan #define TX_256_511_PKT 0x00000250 688bafec742SSukumar Swaminathan #define TX_256_511_PKT_LO 0x00000254 689bafec742SSukumar Swaminathan #define TX_512_TO_1023_PKT 0x00000258 690bafec742SSukumar Swaminathan #define TX_512_TO_1023_PKT_LO 0x0000025c 691bafec742SSukumar Swaminathan #define TX_1024_TO_1518_PKT 0x00000260 692bafec742SSukumar Swaminathan #define TX_1024_TO_1518_PKT_LO 0x00000264 693bafec742SSukumar Swaminathan #define TX_1519_TO_MAX_PKT 0x00000268 694bafec742SSukumar Swaminathan #define TX_1519_TO_MAX_PKT_LO 0x0000026c 695bafec742SSukumar Swaminathan #define TX_UNDERSIZE_PKT 0x00000270 696bafec742SSukumar Swaminathan #define TX_UNDERSIZE_PKT_LO 0x00000274 697bafec742SSukumar Swaminathan #define TX_OVERSIZE_PKT 0x00000278 698bafec742SSukumar Swaminathan #define TX_OVERSIZE_PKT_LO 0x0000027c 699bafec742SSukumar Swaminathan #define RX_HALF_FULL_DET 0x000002a0 700bafec742SSukumar Swaminathan #define TX_HALF_FULL_DET_LO 0x000002a4 701bafec742SSukumar Swaminathan #define RX_OVERFLOW_DET 0x000002a8 702bafec742SSukumar Swaminathan #define TX_OVERFLOW_DET_LO 0x000002ac 703bafec742SSukumar Swaminathan #define RX_HALF_FULL_MASK 0x000002b0 704bafec742SSukumar Swaminathan #define TX_HALF_FULL_MASK_LO 0x000002b4 705bafec742SSukumar Swaminathan #define RX_OVERFLOW_MASK 0x000002b8 706bafec742SSukumar Swaminathan #define TX_OVERFLOW_MASK_LO 0x000002bc 707bafec742SSukumar Swaminathan #define STAT_CNT_CTL 0x000002c0 708bafec742SSukumar Swaminathan #define STAT_CNT_CTL_CLEAR_TX (1 << 0) /* Control */ 709bafec742SSukumar Swaminathan #define STAT_CNT_CTL_CLEAR_RX (1 << 1) /* Control */ 710bafec742SSukumar Swaminathan #define AUX_RX_HALF_FULL_DET 0x000002d0 711bafec742SSukumar Swaminathan #define AUX_TX_HALF_FULL_DET 0x000002d4 712bafec742SSukumar Swaminathan #define AUX_RX_OVERFLOW_DET 0x000002d8 713bafec742SSukumar Swaminathan #define AUX_TX_OVERFLOW_DET 0x000002dc 714bafec742SSukumar Swaminathan #define AUX_RX_HALF_FULL_MASK 0x000002f0 715bafec742SSukumar Swaminathan #define AUX_TX_HALF_FULL_MASK 0x000002f4 716bafec742SSukumar Swaminathan #define AUX_RX_OVERFLOW_MASK 0x000002f8 717bafec742SSukumar Swaminathan #define AUX_TX_OVERFLOW_MASK 0x000002fc 718bafec742SSukumar Swaminathan #define RX_BYTES 0x00000300 719bafec742SSukumar Swaminathan #define RX_BYTES_LO 0x00000304 720bafec742SSukumar Swaminathan #define RX_BYTES_OK 0x00000308 721bafec742SSukumar Swaminathan #define RX_BYTES_OK_LO 0x0000030c 722bafec742SSukumar Swaminathan #define RX_PKTS 0x00000310 723bafec742SSukumar Swaminathan #define RX_PKTS_LO 0x00000314 724bafec742SSukumar Swaminathan #define RX_PKTS_OK 0x00000318 725bafec742SSukumar Swaminathan #define RX_PKTS_OK_LO 0x0000031c 726bafec742SSukumar Swaminathan #define RX_BCAST_PKTS 0x00000320 727bafec742SSukumar Swaminathan #define RX_BCAST_PKTS_LO 0x00000324 728bafec742SSukumar Swaminathan #define RX_MCAST_PKTS 0x00000328 729bafec742SSukumar Swaminathan #define RX_MCAST_PKTS_LO 0x0000032c 730bafec742SSukumar Swaminathan #define RX_UCAST_PKTS 0x00000330 731bafec742SSukumar Swaminathan #define RX_UCAST_PKTS_LO 0x00000334 732bafec742SSukumar Swaminathan #define RX_UNDERSIZE_PKTS 0x00000338 733bafec742SSukumar Swaminathan #define RX_UNDERSIZE_PKTS_LO 0x0000033c 734bafec742SSukumar Swaminathan #define RX_OVERSIZE_PKTS 0x00000340 735bafec742SSukumar Swaminathan #define RX_OVERSIZE_PKTS_LO 0x00000344 736bafec742SSukumar Swaminathan #define RX_JABBER_PKTS 0x00000348 737bafec742SSukumar Swaminathan #define RX_JABBER_PKTS_LO 0x0000034c 738bafec742SSukumar Swaminathan #define RX_UNDERSIZE_FCERR_PKTS 0x00000350 739bafec742SSukumar Swaminathan #define RX_UNDERSIZE_FCERR_PKTS_LO 0x00000354 740bafec742SSukumar Swaminathan #define RX_DROP_EVENTS 0x00000358 741bafec742SSukumar Swaminathan #define RX_DROP_EVENTS_LO 0x0000035c 742bafec742SSukumar Swaminathan #define RX_FCERR_PKTS 0x00000360 743bafec742SSukumar Swaminathan #define RX_FCERR_PKTS_LO 0x00000364 744bafec742SSukumar Swaminathan #define RX_ALIGN_ERR 0x00000368 745bafec742SSukumar Swaminathan #define RX_ALIGN_ERR_LO 0x0000036c 746bafec742SSukumar Swaminathan #define RX_SYMBOL_ERR 0x00000370 747bafec742SSukumar Swaminathan #define RX_SYMBOL_ERR_LO 0x00000374 748bafec742SSukumar Swaminathan #define RX_MAC_ERR 0x00000378 749bafec742SSukumar Swaminathan #define RX_MAC_ERR_LO 0x0000037c 750bafec742SSukumar Swaminathan #define RX_CTL_PKTS 0x00000380 751bafec742SSukumar Swaminathan #define RX_CTL_PKTS_LO 0x00000384 752bafec742SSukumar Swaminathan #define RX_PAUSE_PKTS 0x00000388 753bafec742SSukumar Swaminathan #define RX_PAUSE_PKTS_LO 0x0000038c 754bafec742SSukumar Swaminathan #define RX_64_PKTS 0x00000390 755bafec742SSukumar Swaminathan #define RX_64_PKTS_LO 0x00000394 756bafec742SSukumar Swaminathan #define RX_65_TO_127_PKTS 0x00000398 757bafec742SSukumar Swaminathan #define RX_65_TO_127_PKTS_LO 0x0000039c 758bafec742SSukumar Swaminathan #define RX_128_255_PKTS 0x000003a0 759bafec742SSukumar Swaminathan #define RX_128_255_PKTS_LO 0x000003a4 760bafec742SSukumar Swaminathan #define RX_256_511_PKTS 0x000003a8 761bafec742SSukumar Swaminathan #define RX_256_511_PKTS_LO 0x000003ac 762bafec742SSukumar Swaminathan #define RX_512_TO_1023_PKTS 0x000003b0 763bafec742SSukumar Swaminathan #define RX_512_TO_1023_PKTS_LO 0x000003b4 764bafec742SSukumar Swaminathan #define RX_1024_TO_1518_PKTS 0x000003b8 765bafec742SSukumar Swaminathan #define RX_1024_TO_1518_PKTS_LO 0x000003bc 766bafec742SSukumar Swaminathan #define RX_1519_TO_MAX_PKTS 0x000003c0 767bafec742SSukumar Swaminathan #define RX_1519_TO_MAX_PKTS_LO 0x000003c4 768bafec742SSukumar Swaminathan #define RX_LEN_ERR_PKTS 0x000003c8 769bafec742SSukumar Swaminathan #define RX_LEN_ERR_PKTS_LO 0x000003cc 770bafec742SSukumar Swaminathan #define MDIO_TX_DATA 0x00000400 771bafec742SSukumar Swaminathan #define MDIO_RX_DATA 0x00000410 772bafec742SSukumar Swaminathan #define MDIO_CMD 0x00000420 773bafec742SSukumar Swaminathan #define MDIO_PHY_ADDR 0x00000430 774bafec742SSukumar Swaminathan #define MDIO_PORT 0x00000440 775bafec742SSukumar Swaminathan #define MDIO_STATUS 0x00000450 776bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES0 0x00000500 777bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES0_LO 0x00000504 778bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES1 0x00000508 779bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES1_LO 0x0000050C 780bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES2 0x00000510 781bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES2_LO 0x00000514 782bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES3 0x00000518 783bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES3_LO 0x0000051C 784bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES4 0x00000520 785bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES4_LO 0x00000524 786bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES5 0x00000528 787bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES5_LO 0x0000052C 788bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES6 0x00000530 789bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES6_LO 0x00000534 790bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES7 0x00000538 791bafec742SSukumar Swaminathan #define TX_CBFC_PAUSE_FRAMES7_LO 0x0000053C 792bafec742SSukumar Swaminathan #define TX_FCOE_PKTS 0x00000540 793bafec742SSukumar Swaminathan #define TX_FCOE_PKTS_LO 0x00000544 794bafec742SSukumar Swaminathan #define TX_MGMT_PKTS 0x00000548 795bafec742SSukumar Swaminathan #define TX_MGMT_PKTS_LO 0x0000054C 796bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES0 0x00000568 797bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES0_LO 0x0000056C 798bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES1 0x00000570 799bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES1_LO 0x00000574 800bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES2 0x00000578 801bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES2_LO 0x0000057C 802bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES3 0x00000580 803bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES3_LO 0x00000584 804bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES4 0x00000588 805bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES4_LO 0x0000058C 806bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES5 0x00000590 807bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES5_LO 0x00000594 808bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES6 0x00000598 809bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES6_LO 0x0000059C 810bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES7 0x000005A0 811bafec742SSukumar Swaminathan #define RX_CBFC_PAUSE_FRAMES7_LO 0x000005A4 812bafec742SSukumar Swaminathan #define RX_FCOE_PKTS 0x000005A8 813bafec742SSukumar Swaminathan #define RX_FCOE_PKTS_LO 0x000005AC 814bafec742SSukumar Swaminathan #define RX_MGMT_PKTS 0x000005B0 815bafec742SSukumar Swaminathan #define RX_MGMT_PKTS_LO 0x000005B4 816bafec742SSukumar Swaminathan #define RX_NIC_FIFO_DROP 0x000005B8 817bafec742SSukumar Swaminathan #define RX_NIC_FIFO_DROP_LO 0x000005BC 818bafec742SSukumar Swaminathan #define RX_FCOE_FIFO_DROP 0x000005C0 819bafec742SSukumar Swaminathan #define RX_FCOE_FIFO_DROP_LO 0x000005C4 820bafec742SSukumar Swaminathan #define RX_MGMT_FIFO_DROP 0x000005C8 821bafec742SSukumar Swaminathan #define RX_MGMT_FIFO_DROP_LO 0x000005CC 822bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY0 0x00000600 823bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY0_LO 0x00000604 824bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY1 0x00000608 825bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY1_LO 0x0000060C 826bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY2 0x00000610 827bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY2_LO 0x00000614 828bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY3 0x00000618 829bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY3_LO 0x0000061C 830bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY4 0x00000620 831bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY4_LO 0x00000624 832bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY5 0x00000628 833bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY5_LO 0x0000062C 834bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY6 0x00000630 835bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY6_LO 0x00000634 836bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY7 0x00000638 837bafec742SSukumar Swaminathan #define RX_PKTS_PRIORITY7_LO 0x0000063C 838bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY0 0x00000640 839bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY0_LO 0x00000644 840bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY1 0x00000648 841bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY1_LO 0x0000064C 842bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY2 0x00000650 843bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY2_LO 0x00000654 844bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY3 0x00000658 845bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY3_LO 0x0000065C 846bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY4 0x00000660 847bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY4_LO 0x00000664 848bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY5 0x00000668 849bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY5_LO 0x0000066C 850bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY6 0x00000670 851bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY6_LO 0x00000674 852bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY7 0x00000678 853bafec742SSukumar Swaminathan #define RX_OCTETS_PRIORITY7_LO 0x0000067C 854bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY0 0x00000680 855bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY0_LO 0x00000684 856bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY1 0x00000688 857bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY1_LO 0x0000068C 858bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY2 0x00000690 859bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY2_LO 0x00000694 860bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY3 0x00000698 861bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY3_LO 0x0000069C 862bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY4 0x000006A0 863bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY4_LO 0x000006A4 864bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY5 0x000006A8 865bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY5_LO 0x000006AC 866bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY6 0x000006B0 867bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY6_LO 0x000006B4 868bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY7 0x000006B8 869bafec742SSukumar Swaminathan #define TX_PKTS_PRIORITY7_LO 0x000006BC 870bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY0 0x000006C0 871bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY0_LO 0x000006C4 872bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY1 0x000006C8 873bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY1_LO 0x000006CC 874bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY2 0x000006D0 875bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY2_LO 0x000006D4 876bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY3 0x000006D8 877bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY3_LO 0x000006DC 878bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY4 0x000006E0 879bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY4_LO 0x000006E4 880bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY5 0x000006E8 881bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY5_LO 0x000006EC 882bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY6 0x000006F0 883bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY6_LO 0x000006F4 884bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY7 0x000006F8 885bafec742SSukumar Swaminathan #define TX_OCTETS_PRIORITY7_LO 0x000006FC 886bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY0 0x00000700 887bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY0_LO 0x00000704 888bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY1 0x00000708 889bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY1_LO 0x0000070C 890bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY2 0x00000710 891bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY2_LO 0x00000714 892bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY3 0x00000718 893bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY3_LO 0x0000071C 894bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY4 0x00000720 895bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY4_LO 0x00000724 896bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY5 0x00000728 897bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY5_LO 0x0000072C 898bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY6 0x00000730 899bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY6_LO 0x00000734 900bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY7 0x00000738 901bafec742SSukumar Swaminathan #define RX_DISCARD_PRIORITY7_LO 0x0000073C 902bafec742SSukumar Swaminathan 903bafec742SSukumar Swaminathan 904bafec742SSukumar Swaminathan #define CQ0_ID 0x0 905bafec742SSukumar Swaminathan #define NIC_CORE 0x1 906bafec742SSukumar Swaminathan /* Routing Index Register 0xE4 */ 907bafec742SSukumar Swaminathan #define ROUTING_INDEX_MW BIT_31 908bafec742SSukumar Swaminathan #define ROUTING_INDEX_DEFAULT_ENABLE_MASK (0x8320000u) 909bafec742SSukumar Swaminathan #define ROUTING_INDEX_DEFAULT_DISABLE_MASK (0x0320000u) 910bafec742SSukumar Swaminathan 911bafec742SSukumar Swaminathan /* Routing Data Register 0xE8 */ 912bafec742SSukumar Swaminathan #define ROUTE_AS_CAM_HIT 0x80 913bafec742SSukumar Swaminathan #define ROUTE_AS_BCAST_MCAST_MATCH 0x8000u 914bafec742SSukumar Swaminathan #define ROUTE_AS_VALID_PKT 0x800000u /* promiscuous mode? */ 915bafec742SSukumar Swaminathan 916bafec742SSukumar Swaminathan enum { 917bafec742SSukumar Swaminathan ROUTING_MASK_INDEX_CAM_HIT, 918bafec742SSukumar Swaminathan ROUTING_MASK_INDEX_BCAST_MCAST_MATCH, 919bafec742SSukumar Swaminathan ROUTING_MASK_INDEX_VALID_PKT, 920bafec742SSukumar Swaminathan ROUTING_MASK_INDEX_TOTAL 921bafec742SSukumar Swaminathan }; 922bafec742SSukumar Swaminathan 923bafec742SSukumar Swaminathan #define ROUTING_MASK_INDEX_MAX 16 924bafec742SSukumar Swaminathan /* 925bafec742SSukumar Swaminathan * General definitions... 926bafec742SSukumar Swaminathan */ 927bafec742SSukumar Swaminathan 928bafec742SSukumar Swaminathan /* 929bafec742SSukumar Swaminathan * Below are a number compiler switches for controlling driver behavior. 930bafec742SSukumar Swaminathan * Some are not supported under certain conditions and are notated as such. 931bafec742SSukumar Swaminathan */ 932bafec742SSukumar Swaminathan 933bafec742SSukumar Swaminathan /* MTU & Frame Size stuff */ 934bafec742SSukumar Swaminathan #define JUMBO_MTU 9000 935bafec742SSukumar Swaminathan #define NORMAL_FRAME_SIZE 2500 /* ETHERMTU,1500 */ 936bafec742SSukumar Swaminathan #define JUMBO_FRAME_SIZE 9600 937*accf27a5SSukumar Swaminathan #define LRG_BUF_NORMAL_SIZE NORMAL_FRAME_SIZE 938*accf27a5SSukumar Swaminathan #define LRG_BUF_JUMBO_SIZE JUMBO_FRAME_SIZE 939bafec742SSukumar Swaminathan #define VLAN_ID_LEN 2 940bafec742SSukumar Swaminathan #define VLAN_HEADER_LEN sizeof (struct ether_vlan_header) /* 18 */ 941bafec742SSukumar Swaminathan #define ETHER_HEADER_LEN sizeof (struct ether_header) /* 14 */ 942bafec742SSukumar Swaminathan 943*accf27a5SSukumar Swaminathan #define NUM_TX_RING_ENTRIES (1024) 944*accf27a5SSukumar Swaminathan #define NUM_RX_RING_ENTRIES (1024) 945bafec742SSukumar Swaminathan 946*accf27a5SSukumar Swaminathan #define NUM_SMALL_BUFFERS (1024) 947*accf27a5SSukumar Swaminathan #define NUM_LARGE_BUFFERS (1024) 948bafec742SSukumar Swaminathan 949bafec742SSukumar Swaminathan #define RX_TX_RING_SHADOW_SPACE 2 /* 1st one is wqicb and 2nd for cqicb */ 950bafec742SSukumar Swaminathan #define BUF_Q_PTR_SPACE ((((NUM_SMALL_BUFFERS * sizeof (uint64_t)) \ 951bafec742SSukumar Swaminathan / VM_PAGE_SIZE) + 1) + \ 952bafec742SSukumar Swaminathan (((NUM_LARGE_BUFFERS * sizeof (uint64_t)) \ 953bafec742SSukumar Swaminathan / VM_PAGE_SIZE) + 1)) 954bafec742SSukumar Swaminathan 955bafec742SSukumar Swaminathan #define MAX_CQ 128 956*accf27a5SSukumar Swaminathan #define DFLT_RX_COALESCE_WAIT 90 /* usec wait for coalescing */ 957*accf27a5SSukumar Swaminathan #define DFLT_RX_INTER_FRAME_WAIT 30 /* max interframe-wait for */ 958bafec742SSukumar Swaminathan /* coalescing */ 959*accf27a5SSukumar Swaminathan #define DFLT_TX_COALESCE_WAIT 90 /* usec wait for coalescing */ 960*accf27a5SSukumar Swaminathan #define DFLT_TX_INTER_FRAME_WAIT 30 /* max interframe-wait for */ 961*accf27a5SSukumar Swaminathan /* coalescing */ 962*accf27a5SSukumar Swaminathan #define DFLT_RX_COALESCE_WAIT_JUMBO 40 /* usec wait for coalescing */ 963*accf27a5SSukumar Swaminathan #define DFLT_RX_INTER_FRAME_WAIT_JUMBO 10 /* max interframe-wait for */ 964*accf27a5SSukumar Swaminathan /* coalescing */ 965*accf27a5SSukumar Swaminathan #define DFLT_TX_COALESCE_WAIT_JUMBO 40 /* usec wait for coalescing */ 966*accf27a5SSukumar Swaminathan #define DFLT_TX_INTER_FRAME_WAIT_JUMBO 10 /* max interframe-wait for */ 967bafec742SSukumar Swaminathan /* coalescing */ 968bafec742SSukumar Swaminathan #define DFLT_PAYLOAD_COPY_THRESH 6 /* must be at least 6 usec */ 969bafec742SSukumar Swaminathan 970bafec742SSukumar Swaminathan #define UDELAY_COUNT 3 971bafec742SSukumar Swaminathan #define UDELAY_DELAY 10 972bafec742SSukumar Swaminathan 973bafec742SSukumar Swaminathan #define MAX_RX_RINGS 128 974bafec742SSukumar Swaminathan #define MAX_TX_RINGS 16 975bafec742SSukumar Swaminathan 976bafec742SSukumar Swaminathan /* 977bafec742SSukumar Swaminathan * Large & Small Buffers for Receives 978bafec742SSukumar Swaminathan */ 979bafec742SSukumar Swaminathan struct lrg_buf_q_entry { 980bafec742SSukumar Swaminathan uint32_t addr0_lower; 981bafec742SSukumar Swaminathan #define IAL_LAST_ENTRY 0x00000001 982bafec742SSukumar Swaminathan #define IAL_CONT_ENTRY 0x00000002 983bafec742SSukumar Swaminathan #define IAL_FLAG_MASK 0x00000003 984bafec742SSukumar Swaminathan uint32_t addr0_upper; 985bafec742SSukumar Swaminathan }; 986bafec742SSukumar Swaminathan 987bafec742SSukumar Swaminathan struct bufq_addr_element { 988bafec742SSukumar Swaminathan uint32_t addr_low; 989bafec742SSukumar Swaminathan uint32_t addr_high; 990bafec742SSukumar Swaminathan }; 991bafec742SSukumar Swaminathan 992bafec742SSukumar Swaminathan #define QL_NO_RESET 0 993bafec742SSukumar Swaminathan #define QL_DO_RESET 1 994bafec742SSukumar Swaminathan 995bafec742SSukumar Swaminathan /* Link must be in one of these states */ 996bafec742SSukumar Swaminathan enum link_state_t { 997bafec742SSukumar Swaminathan LS_DOWN, 998bafec742SSukumar Swaminathan LS_UP 999bafec742SSukumar Swaminathan }; 1000bafec742SSukumar Swaminathan 1001bafec742SSukumar Swaminathan /* qlge->flags definitions. */ 1002*accf27a5SSukumar Swaminathan #define INTERRUPTS_ENABLED BIT_0 1003*accf27a5SSukumar Swaminathan #define ADAPTER_ERROR BIT_1 1004*accf27a5SSukumar Swaminathan 1005*accf27a5SSukumar Swaminathan #define ADAPTER_SUSPENDED BIT_8 1006bafec742SSukumar Swaminathan 1007bafec742SSukumar Swaminathan /* 1008bafec742SSukumar Swaminathan * ISP PCI Configuration Register Set structure definitions. 1009bafec742SSukumar Swaminathan */ 1010bafec742SSukumar Swaminathan typedef volatile struct 1011bafec742SSukumar Swaminathan { 1012bafec742SSukumar Swaminathan volatile uint16_t vendor_id; 1013bafec742SSukumar Swaminathan volatile uint16_t device_id; 1014bafec742SSukumar Swaminathan volatile uint16_t command; 1015bafec742SSukumar Swaminathan volatile uint16_t status; 1016bafec742SSukumar Swaminathan volatile uint8_t revision; 1017bafec742SSukumar Swaminathan volatile uint8_t prog_class; 1018bafec742SSukumar Swaminathan volatile uint8_t sub_class; 1019bafec742SSukumar Swaminathan volatile uint8_t base_class; 1020bafec742SSukumar Swaminathan volatile uint8_t cache_line_size; 1021bafec742SSukumar Swaminathan volatile uint8_t latency_timer; 1022bafec742SSukumar Swaminathan volatile uint8_t header_type; 1023bafec742SSukumar Swaminathan volatile uint32_t io_base_address; 1024bafec742SSukumar Swaminathan volatile uint32_t pci_cntl_reg_set_mem_base_address_lower; 1025bafec742SSukumar Swaminathan volatile uint32_t pci_cntl_reg_set_mem_base_address_upper; 1026bafec742SSukumar Swaminathan volatile uint32_t pci_doorbell_mem_base_address_lower; 1027bafec742SSukumar Swaminathan volatile uint32_t pci_doorbell_mem_base_address_upper; 1028bafec742SSukumar Swaminathan 1029bafec742SSukumar Swaminathan volatile uint16_t sub_vendor_id; 1030bafec742SSukumar Swaminathan volatile uint16_t sub_device_id; 1031bafec742SSukumar Swaminathan volatile uint32_t expansion_rom; 1032bafec742SSukumar Swaminathan volatile uint8_t intr_line; 1033bafec742SSukumar Swaminathan volatile uint8_t intr_pin; 1034bafec742SSukumar Swaminathan volatile uint8_t min_grant; 1035bafec742SSukumar Swaminathan volatile uint8_t max_latency; 1036bafec742SSukumar Swaminathan volatile uint16_t pcie_device_control; 1037bafec742SSukumar Swaminathan volatile uint16_t link_status; 1038bafec742SSukumar Swaminathan volatile uint16_t msi_msg_control; 1039bafec742SSukumar Swaminathan volatile uint16_t msi_x_msg_control; 1040bafec742SSukumar Swaminathan 1041bafec742SSukumar Swaminathan } pci_cfg_t; 1042bafec742SSukumar Swaminathan 1043bafec742SSukumar Swaminathan 1044bafec742SSukumar Swaminathan /* 1045bafec742SSukumar Swaminathan * 1046bafec742SSukumar Swaminathan * Schultz Control Registers Index 1047bafec742SSukumar Swaminathan * 1048bafec742SSukumar Swaminathan */ 1049bafec742SSukumar Swaminathan #define REG_PROCESSOR_ADDR 0x00 1050bafec742SSukumar Swaminathan #define REG_PROCESSOR_DATA 0x04 1051bafec742SSukumar Swaminathan #define REG_SYSTEM 0x08 1052bafec742SSukumar Swaminathan #define REG_RESET_FAILOVER 0x0C 1053bafec742SSukumar Swaminathan #define REG_FUNCTION_SPECIFIC_CONTROL 0x10 1054bafec742SSukumar Swaminathan #define REG_HOST_CMD_STATUS 0x14 1055bafec742SSukumar Swaminathan #define REG_ICB_RID 0x1C 1056bafec742SSukumar Swaminathan #define REG_ICB_ACCESS_ADDRESS_LOWER 0x20 1057bafec742SSukumar Swaminathan #define REG_ICB_ACCESS_ADDRESS_UPPER 0x24 1058bafec742SSukumar Swaminathan #define REG_CONFIGURATION 0x28 1059bafec742SSukumar Swaminathan 1060bafec742SSukumar Swaminathan #define INTR_EN_INTR_MASK 0x007f0000 1061bafec742SSukumar Swaminathan #define INTR_EN_TYPE_MASK 0x03000000 1062bafec742SSukumar Swaminathan #define INTR_EN_TYPE_ENABLE 0x00000100 1063bafec742SSukumar Swaminathan #define INTR_EN_TYPE_DISABLE 0x00000200 1064bafec742SSukumar Swaminathan #define INTR_EN_TYPE_READ 0x00000300 1065bafec742SSukumar Swaminathan #define INTR_EN_IHD 0x00002000 1066bafec742SSukumar Swaminathan #define INTR_EN_IHD_MASK (INTR_EN_IHD << 16) 1067bafec742SSukumar Swaminathan #define INTR_EN_EI 0x00004000 1068bafec742SSukumar Swaminathan #define INTR_EN_EN 0x00008000 1069bafec742SSukumar Swaminathan 1070bafec742SSukumar Swaminathan #define REG_STATUS 0x30 1071bafec742SSukumar Swaminathan #define REG_INTERRUPT_ENABLE 0x34 1072bafec742SSukumar Swaminathan #define REG_INTERRUPT_MASK 0x38 1073bafec742SSukumar Swaminathan #define REG_INTERRUPT_STATUS_1 0x3C 1074bafec742SSukumar Swaminathan 1075bafec742SSukumar Swaminathan #define REG_ERROR_STATUS 0x54 1076bafec742SSukumar Swaminathan 1077bafec742SSukumar Swaminathan #define REG_SEMAPHORE 0x64 1078bafec742SSukumar Swaminathan 1079bafec742SSukumar Swaminathan #define REG_XGMAC_ADDRESS 0x78 1080bafec742SSukumar Swaminathan #define REG_XGMAC_DATA 0x7C 1081bafec742SSukumar Swaminathan #define REG_NIC_ENHANCED_TX_SCHEDULE 0x80 1082bafec742SSukumar Swaminathan #define REG_CNA_ENHANCED_TX_SCHEDULE 0x84 1083bafec742SSukumar Swaminathan #define REG_FLASH_ADDRESS 0x88 1084bafec742SSukumar Swaminathan #define REG_FLASH_DATA 0x8C 1085bafec742SSukumar Swaminathan 1086bafec742SSukumar Swaminathan #define REG_STOP_CQ_PROCESSING 0x90 1087bafec742SSukumar Swaminathan #define REG_PAGE_TABLE_RID 0x94 1088bafec742SSukumar Swaminathan #define REG_WQ_PAGE_TABLE_BASE_ADDR_LOWER 0x98 1089bafec742SSukumar Swaminathan #define REG_WQ_PAGE_TABLE_BASE_ADDR_UPPER 0x9C 1090bafec742SSukumar Swaminathan #define REG_CQ_PAGE_TABLE_BASE_ADDR_LOWER 0xA0 1091bafec742SSukumar Swaminathan #define REG_CQ_PAGE_TABLE_BASE_ADDR_UPPER 0xA4 1092bafec742SSukumar Swaminathan #define REG_MAC_PROTOCOL_ADDRESS_INDEX 0xA8 1093bafec742SSukumar Swaminathan #define REG_MAC_PROTOCOL_DATA 0xAC 1094bafec742SSukumar Swaminathan #define REG_SPLIT_HEADER 0xC0 1095bafec742SSukumar Swaminathan #define REG_NIC_RECEIVE_CONFIGURATION 0xD4 1096bafec742SSukumar Swaminathan 1097bafec742SSukumar Swaminathan #define REG_MGMT_RCV_CFG 0xE0 1098bafec742SSukumar Swaminathan #define REG_ROUTING_INDEX 0xE4 1099bafec742SSukumar Swaminathan #define REG_ROUTING_DATA 0xE8 1100bafec742SSukumar Swaminathan #define REG_RSVD7 0xEC 1101bafec742SSukumar Swaminathan #define REG_XG_SERDES_ADDR 0xF0 1102bafec742SSukumar Swaminathan #define REG_XG_SERDES_DATA 0xF4 1103bafec742SSukumar Swaminathan #define REG_PRB_MX_ADDR 0xF8 1104bafec742SSukumar Swaminathan #define REG_PRB_MX_DATA 0xFC 1105bafec742SSukumar Swaminathan 1106bafec742SSukumar Swaminathan #define INTR_MASK_PI 0x00000001 1107bafec742SSukumar Swaminathan #define INTR_MASK_HL0 0x00000002 1108bafec742SSukumar Swaminathan #define INTR_MASK_LH0 0x00000004 1109bafec742SSukumar Swaminathan #define INTR_MASK_HL1 0x00000008 1110bafec742SSukumar Swaminathan #define INTR_MASK_LH1 0x00000010 1111bafec742SSukumar Swaminathan #define INTR_MASK_SE 0x00000020 1112bafec742SSukumar Swaminathan #define INTR_MASK_LSC 0x00000040 1113bafec742SSukumar Swaminathan #define INTR_MASK_MC 0x00000080 1114bafec742SSukumar Swaminathan #define INTR_MASK_LINK_IRQS = (INTR_MASK_LSC | INTR_MASK_SE | INTR_MASK_MC) 1115bafec742SSukumar Swaminathan 1116bafec742SSukumar Swaminathan /* Interrupt Enable Register 0x34 */ 1117bafec742SSukumar Swaminathan #define INTR_ENABLED 0x8000 1118bafec742SSukumar Swaminathan #define GLOBAL_ENABLE_INTR 0x4000 1119bafec742SSukumar Swaminathan #define ENABLE_MSI_MULTI_INTR 0x2000 1120bafec742SSukumar Swaminathan #define ONE_INTR_MASK 0x3FF0000u 1121bafec742SSukumar Swaminathan #define ENABLE_INTR 0x0100 1122bafec742SSukumar Swaminathan #define DISABLE_INTR 0x0200 1123bafec742SSukumar Swaminathan #define VERIFY_INTR_ENABLED 0x0300 1124bafec742SSukumar Swaminathan #define ISP_ENABLE_INTR(qlge) ql_put32(qlge, \ 1125bafec742SSukumar Swaminathan REG_INTERRUPT_ENABLE,\ 1126bafec742SSukumar Swaminathan (ONE_INTR_MASK | ENABLE_INTR)) 1127bafec742SSukumar Swaminathan #define ISP_DISABLE_INTR(qlge) ql_put32(qlge, \ 1128bafec742SSukumar Swaminathan REG_INTERRUPT_ENABLE, \ 1129bafec742SSukumar Swaminathan (ONE_INTR_MASK | DISABLE_INTR)) 1130bafec742SSukumar Swaminathan #define ISP_ENABLE_PI_INTR(qlge) ql_put32(qlge, \ 1131bafec742SSukumar Swaminathan REG_INTERRUPT_MASK, (BIT_16|1)) 1132bafec742SSukumar Swaminathan #define ISP_DISABLE_PI_INTR(qlge) ql_put32(qlge, \ 1133bafec742SSukumar Swaminathan REG_INTERRUPT_MASK, BIT_16) 1134bafec742SSukumar Swaminathan 1135bafec742SSukumar Swaminathan #define ISP_ENABLE_GLOBAL_INTRS(qlge) { \ 1136bafec742SSukumar Swaminathan ql_put32(qlge, REG_INTERRUPT_ENABLE, \ 1137bafec742SSukumar Swaminathan (0x40000000u | GLOBAL_ENABLE_INTR)); \ 1138bafec742SSukumar Swaminathan qlge->flags |= INTERRUPTS_ENABLED; \ 1139bafec742SSukumar Swaminathan } 1140bafec742SSukumar Swaminathan #define ISP_DISABLE_GLOBAL_INTRS(qlge) { \ 1141bafec742SSukumar Swaminathan ql_put32(qlge, \ 1142bafec742SSukumar Swaminathan REG_INTERRUPT_ENABLE, (0x40000000u)); \ 1143bafec742SSukumar Swaminathan qlge->flags &= ~INTERRUPTS_ENABLED; \ 1144bafec742SSukumar Swaminathan } 1145bafec742SSukumar Swaminathan #define REQ_Q_VALID 0x10 1146bafec742SSukumar Swaminathan #define RSP_Q_VALID 0x10 1147bafec742SSukumar Swaminathan 1148bafec742SSukumar Swaminathan /* 1149bafec742SSukumar Swaminathan * Mailbox Registers 1150bafec742SSukumar Swaminathan */ 1151bafec742SSukumar Swaminathan #define MPI_REG 0x1002 1152bafec742SSukumar Swaminathan #define NUM_MAILBOX_REGS 16 1153bafec742SSukumar Swaminathan #define FUNC_0_IN_MAILBOX_0_REG_OFFSET 0x1180 1154bafec742SSukumar Swaminathan #define FUNC_0_OUT_MAILBOX_0_REG_OFFSET 0x1190 1155bafec742SSukumar Swaminathan #define FUNC_1_IN_MAILBOX_0_REG_OFFSET 0x1280 1156bafec742SSukumar Swaminathan #define FUNC_1_OUT_MAILBOX_0_REG_OFFSET 0x1290 1157bafec742SSukumar Swaminathan 1158bafec742SSukumar Swaminathan /* 1159bafec742SSukumar Swaminathan * Control Register Set definitions. 1160bafec742SSukumar Swaminathan */ 1161bafec742SSukumar Swaminathan typedef volatile struct 1162bafec742SSukumar Swaminathan { 1163bafec742SSukumar Swaminathan volatile uint32_t processor_address; /* 0x00 */ 1164bafec742SSukumar Swaminathan volatile uint32_t processor_data; /* 0x04 */ 1165bafec742SSukumar Swaminathan volatile uint32_t system_data; /* 0x08 */ 1166bafec742SSukumar Swaminathan volatile uint32_t reset_failover; /* 0x0C */ 1167bafec742SSukumar Swaminathan 1168bafec742SSukumar Swaminathan volatile uint32_t function_specific_control; /* 0x10 */ 1169bafec742SSukumar Swaminathan volatile uint32_t host_command_status; /* 0x14 */ 1170bafec742SSukumar Swaminathan volatile uint32_t led; /* 0x18 */ 1171bafec742SSukumar Swaminathan volatile uint32_t icb_rid; /* 0x1c */ 1172bafec742SSukumar Swaminathan 1173bafec742SSukumar Swaminathan volatile uint32_t idb_access_address_low; /* 0x20 */ 1174bafec742SSukumar Swaminathan volatile uint32_t idb_access_address_high; /* 0x24 */ 1175bafec742SSukumar Swaminathan volatile uint32_t configuration; /* 0x28 */ 1176bafec742SSukumar Swaminathan volatile uint32_t bios_base; /* 0x2C */ 1177bafec742SSukumar Swaminathan 1178bafec742SSukumar Swaminathan volatile uint32_t status; /* 0x30 */ 1179bafec742SSukumar Swaminathan volatile uint32_t interrupt_enable; /* 0x34 */ 1180bafec742SSukumar Swaminathan volatile uint32_t interrupt_mask; /* 0x38 */ 1181bafec742SSukumar Swaminathan volatile uint32_t interrupt_status_1; /* 0x3c */ 1182bafec742SSukumar Swaminathan 1183bafec742SSukumar Swaminathan volatile uint32_t interrupt_status_2; /* 0x40 */ 1184bafec742SSukumar Swaminathan volatile uint32_t interrupt_status_3; /* 0x44 */ 1185bafec742SSukumar Swaminathan volatile uint32_t interrupt_status_4; /* 0x48 */ 1186bafec742SSukumar Swaminathan volatile uint32_t rev_id; /* 0x4c */ 1187bafec742SSukumar Swaminathan 1188bafec742SSukumar Swaminathan volatile uint32_t force_ecc_error; /* 0x50 */ 1189bafec742SSukumar Swaminathan volatile uint32_t error_status; /* 0x54 */ 1190bafec742SSukumar Swaminathan volatile uint32_t internal_ram_debug_address; /* 0x58 */ 1191bafec742SSukumar Swaminathan volatile uint32_t internal_ram_data; /* 0x5c */ 1192bafec742SSukumar Swaminathan 1193bafec742SSukumar Swaminathan volatile uint32_t correctable_ecc_error; /* 0x60 */ 1194bafec742SSukumar Swaminathan volatile uint32_t semaphore; /* 0x64 */ 1195bafec742SSukumar Swaminathan 1196bafec742SSukumar Swaminathan volatile uint32_t gpio1; /* 0x68 */ 1197bafec742SSukumar Swaminathan volatile uint32_t gpio2; /* 0x6c */ 1198bafec742SSukumar Swaminathan 1199bafec742SSukumar Swaminathan volatile uint32_t gpio3; /* 0x70 */ 1200bafec742SSukumar Swaminathan volatile uint32_t reserved1; /* 0x74 */ 1201bafec742SSukumar Swaminathan volatile uint32_t xgmac_address; /* 0x78 */ 1202bafec742SSukumar Swaminathan volatile uint32_t xgmac_data; /* 0x7c */ 1203bafec742SSukumar Swaminathan 1204bafec742SSukumar Swaminathan volatile uint32_t nic_enhanced_tx_schedule; /* 0x80 */ 1205bafec742SSukumar Swaminathan volatile uint32_t cna_enhanced_tx_schedule; /* 0x84 */ 1206bafec742SSukumar Swaminathan volatile uint32_t flash_address; /* 0x88 */ 1207bafec742SSukumar Swaminathan volatile uint32_t flash_data; /* 0x8c */ 1208bafec742SSukumar Swaminathan 1209bafec742SSukumar Swaminathan volatile uint32_t stop_cq; /* 0x90 */ 1210bafec742SSukumar Swaminathan volatile uint32_t page_table_rid; /* 0x94 */ 1211bafec742SSukumar Swaminathan volatile uint32_t wq_page_table_base_address_lower; /* 0x98 */ 1212bafec742SSukumar Swaminathan volatile uint32_t wq_page_table_base_address_upper; /* 0x9c */ 1213bafec742SSukumar Swaminathan 1214bafec742SSukumar Swaminathan volatile uint32_t cq_page_table_base_address_lower; /* 0xA0 */ 1215bafec742SSukumar Swaminathan volatile uint32_t cq_page_table_base_address_upper; /* 0xA4 */ 1216bafec742SSukumar Swaminathan volatile uint32_t mac_protocol_address_index; /* 0xA8 */ 1217bafec742SSukumar Swaminathan volatile uint32_t mac_protocol_data; /* 0xAc */ 1218bafec742SSukumar Swaminathan 1219bafec742SSukumar Swaminathan volatile uint32_t cos_default_cq_reg1; /* 0xB0 */ 1220bafec742SSukumar Swaminathan volatile uint32_t cos_default_cq_reg2; /* 0xB4 */ 1221bafec742SSukumar Swaminathan volatile uint32_t ethertype_skip_reg1; /* 0xB8 */ 1222bafec742SSukumar Swaminathan volatile uint32_t ethertype_skip_reg2; /* 0xBC */ 1223bafec742SSukumar Swaminathan 1224bafec742SSukumar Swaminathan volatile uint32_t split_header; /* 0xC0 */ 1225bafec742SSukumar Swaminathan volatile uint32_t fcoe_pause_threshold; /* 0xC4 */ 1226bafec742SSukumar Swaminathan volatile uint32_t nic_pause_threshold; /* 0xC8 */ 1227bafec742SSukumar Swaminathan volatile uint32_t fc_ethertype; /* 0xCC */ 1228bafec742SSukumar Swaminathan 1229bafec742SSukumar Swaminathan volatile uint32_t fcoe_recv_configuration; /* 0xD0 */ 1230bafec742SSukumar Swaminathan volatile uint32_t nic_recv_configuration; /* 0xD4 */ 1231bafec742SSukumar Swaminathan volatile uint32_t cos_tags_in_fcoe_fifo; /* 0xD8 */ 1232bafec742SSukumar Swaminathan volatile uint32_t cos_tags_in_nic_fifo; /* 0xDc */ 1233bafec742SSukumar Swaminathan 1234bafec742SSukumar Swaminathan volatile uint32_t mgmt_recv_configuration; /* 0xE0 */ 1235bafec742SSukumar Swaminathan volatile uint32_t routing_index; /* 0xE4 */ 1236bafec742SSukumar Swaminathan volatile uint32_t routing_data; /* 0xE8 */ 1237bafec742SSukumar Swaminathan volatile uint32_t reserved2; /* 0xEc */ 1238bafec742SSukumar Swaminathan 1239bafec742SSukumar Swaminathan volatile uint32_t xg_serdes_address; /* 0xF0 */ 1240bafec742SSukumar Swaminathan volatile uint32_t xg_serdes_data; /* 0xF4 */ 1241bafec742SSukumar Swaminathan volatile uint32_t probe_mux_address; /* 0xF8 */ 1242bafec742SSukumar Swaminathan volatile uint32_t probe_mux_read_data; /* 0xFc */ 1243bafec742SSukumar Swaminathan 1244bafec742SSukumar Swaminathan #define INTR_PENDING (uint32_t)(CSR_COMPLETION_INTR) 1245bafec742SSukumar Swaminathan 1246bafec742SSukumar Swaminathan } dev_reg_t; 1247bafec742SSukumar Swaminathan 1248bafec742SSukumar Swaminathan typedef volatile struct 1249bafec742SSukumar Swaminathan { 1250bafec742SSukumar Swaminathan volatile uint32_t doorbell_reg_address[256]; /* 0x00 */ 1251bafec742SSukumar Swaminathan } dev_doorbell_reg_t; 1252bafec742SSukumar Swaminathan 1253bafec742SSukumar Swaminathan #define SET_RMASK(val) ((val & 0xffff) | (val << 16)) 1254bafec742SSukumar Swaminathan #define CLR_RMASK(val) (0 | (val << 16)) 1255bafec742SSukumar Swaminathan 1256bafec742SSukumar Swaminathan /* 1257bafec742SSukumar Swaminathan * DMA registers read only 1258bafec742SSukumar Swaminathan */ 1259bafec742SSukumar Swaminathan typedef volatile struct 1260bafec742SSukumar Swaminathan { 1261bafec742SSukumar Swaminathan volatile uint32_t req_q_out; 1262bafec742SSukumar Swaminathan volatile uint32_t rsp_q_in; 1263bafec742SSukumar Swaminathan 1264bafec742SSukumar Swaminathan } iop_dmaregs_t; 1265bafec742SSukumar Swaminathan 1266bafec742SSukumar Swaminathan #define DMAREGS_SIZE (sizeof (iop_dmaregs_t)) 1267bafec742SSukumar Swaminathan #define DUMMY_SIZE (32*1024) 1268bafec742SSukumar Swaminathan 1269bafec742SSukumar Swaminathan #ifdef QL_DEBUG 1270bafec742SSukumar Swaminathan typedef struct crash_record { 1271bafec742SSukumar Swaminathan uint16_t fw_major_version; /* 00 - 01 */ 1272bafec742SSukumar Swaminathan uint16_t fw_minor_version; /* 02 - 03 */ 1273bafec742SSukumar Swaminathan uint16_t fw_patch_version; /* 04 - 05 */ 1274bafec742SSukumar Swaminathan uint16_t fw_build_version; /* 06 - 07 */ 1275bafec742SSukumar Swaminathan 1276bafec742SSukumar Swaminathan uint8_t build_date[16]; /* 08 - 17 */ 1277bafec742SSukumar Swaminathan uint8_t build_time[16]; /* 18 - 27 */ 1278bafec742SSukumar Swaminathan uint8_t build_user[16]; /* 28 - 37 */ 1279bafec742SSukumar Swaminathan uint8_t card_serial_num[16]; /* 38 - 47 */ 1280bafec742SSukumar Swaminathan 1281bafec742SSukumar Swaminathan uint32_t time_of_crash_in_secs; /* 48 - 4B */ 1282bafec742SSukumar Swaminathan uint32_t time_of_crash_in_ms; /* 4C - 4F */ 1283bafec742SSukumar Swaminathan 1284bafec742SSukumar Swaminathan uint16_t outb_risc_sd_num_frames; /* 50 - 51 */ 1285bafec742SSukumar Swaminathan uint16_t oap_sd_length; /* 52 - 53 */ 1286bafec742SSukumar Swaminathan uint16_t iap_sd_num_frames; /* 54 - 55 */ 1287bafec742SSukumar Swaminathan uint16_t inb_risc_sd_length; /* 56 - 57 */ 1288bafec742SSukumar Swaminathan 1289bafec742SSukumar Swaminathan uint8_t reserved[28]; /* 58 - 7F */ 1290bafec742SSukumar Swaminathan 1291bafec742SSukumar Swaminathan uint8_t outb_risc_reg_dump[256]; /* 80 -17F */ 1292bafec742SSukumar Swaminathan uint8_t inb_risc_reg_dump[256]; /* 180 -27F */ 1293bafec742SSukumar Swaminathan uint8_t inb_outb_risc_stack_dump[1]; /* 280 - ??? */ 1294bafec742SSukumar Swaminathan } crash_record_t; 1295bafec742SSukumar Swaminathan #endif 1296bafec742SSukumar Swaminathan 1297bafec742SSukumar Swaminathan /* 1298bafec742SSukumar Swaminathan * I/O register access macros 1299bafec742SSukumar Swaminathan * #if QL_DEBUG & 1 1300bafec742SSukumar Swaminathan */ 1301bafec742SSukumar Swaminathan 1302bafec742SSukumar Swaminathan #define RD_REG_BYTE(qlge, addr) \ 1303bafec742SSukumar Swaminathan ddi_get8(qlge->dev_handle, (uint8_t *)addr) 1304bafec742SSukumar Swaminathan #define RD_REG_DWORD(qlge, addr) \ 1305bafec742SSukumar Swaminathan ddi_get32(qlge->dev_handle, (uint32_t *)addr) 1306bafec742SSukumar Swaminathan #define WRT_REG_BYTE(qlge, addr, data) \ 1307bafec742SSukumar Swaminathan ddi_put8(qlge->dev_handle, (uint8_t *)addr, data) 1308bafec742SSukumar Swaminathan #define WRT_REG_WORD(qlge, addr, data) \ 1309bafec742SSukumar Swaminathan ddi_put16(qlge->dev_handle, (uint16_t *)addr, data) 1310bafec742SSukumar Swaminathan #define WRT_REG_DWORD(qlge, addr, data) \ 1311bafec742SSukumar Swaminathan ddi_put32(qlge->dev_handle, (uint32_t *)addr, data) 1312bafec742SSukumar Swaminathan 1313bafec742SSukumar Swaminathan /* 1314bafec742SSukumar Swaminathan * QLGE-specific ioctls ... 1315bafec742SSukumar Swaminathan */ 1316bafec742SSukumar Swaminathan #define QLA_IOC ((((('Q' << 8) + 'L') << 8) + 'A') << 8) 1317bafec742SSukumar Swaminathan 1318bafec742SSukumar Swaminathan /* 1319bafec742SSukumar Swaminathan * Definition of ioctls commands 1320bafec742SSukumar Swaminathan */ 1321bafec742SSukumar Swaminathan #define QLA_PCI_STATUS (QLA_IOC|1) /* Read all PCI registers */ 1322bafec742SSukumar Swaminathan 1323bafec742SSukumar Swaminathan #define QLA_WRITE_REG (QLA_IOC|3) 1324bafec742SSukumar Swaminathan #define QLA_READ_PCI_REG (QLA_IOC|4) 1325bafec742SSukumar Swaminathan #define QLA_WRITE_PCI_REG (QLA_IOC|5) 1326bafec742SSukumar Swaminathan #define QLA_GET_DBGLEAVEL (QLA_IOC|6) 1327bafec742SSukumar Swaminathan #define QLA_SET_DBGLEAVEL (QLA_IOC|7) 1328bafec742SSukumar Swaminathan #define QLA_READ_CONTRL_REGISTERS (QLA_IOC|8) 1329bafec742SSukumar Swaminathan 1330bafec742SSukumar Swaminathan #define QLA_MANUAL_READ_FLASH (QLA_IOC|9) 1331bafec742SSukumar Swaminathan #define QLA_MANUAL_WRITE_FLASH (QLA_IOC|10) 1332bafec742SSukumar Swaminathan #define QLA_SUPPORTED_DUMP_TYPES (QLA_IOC|11) 1333bafec742SSukumar Swaminathan #define QLA_GET_BINARY_CORE_DUMP (QLA_IOC|12) 1334bafec742SSukumar Swaminathan #define QLA_TRIGGER_SYS_ERROR_EVENT (QLA_IOC|13) 1335bafec742SSukumar Swaminathan 1336bafec742SSukumar Swaminathan #define QLA_READ_FLASH (QLA_IOC|15) 1337bafec742SSukumar Swaminathan #define QLA_WRITE_FLASH (QLA_IOC|16) 1338bafec742SSukumar Swaminathan #define QLA_READ_VPD (QLA_IOC|17) 1339bafec742SSukumar Swaminathan #define QLA_GET_PROP (QLA_IOC|18) 1340bafec742SSukumar Swaminathan #define QLA_SHOW_REGION (QLA_IOC|19) 1341bafec742SSukumar Swaminathan #define QLA_LIST_ADAPTER_INFO (QLA_IOC|20) 1342bafec742SSukumar Swaminathan #define QLA_READ_FW_IMAGE (QLA_IOC|21) 1343bafec742SSukumar Swaminathan #define QLA_WRITE_FW_IMAGE_HEADERS (QLA_IOC|22) 1344bafec742SSukumar Swaminathan 1345bafec742SSukumar Swaminathan #define QLA_CONTINUE_COPY_IN (QLA_IOC|29) 1346bafec742SSukumar Swaminathan #define QLA_CONTINUE_COPY_OUT (QLA_IOC|30) 1347bafec742SSukumar Swaminathan #define QLA_SOFT_RESET (QLA_IOC|31) 1348bafec742SSukumar Swaminathan 1349bafec742SSukumar Swaminathan #define QLA_IOCTL_CMD_FIRST QLA_PCI_STATUS 1350bafec742SSukumar Swaminathan #define QLA_IOCTL_CMD_LAST QLA_SOFT_RESET 1351bafec742SSukumar Swaminathan 1352bafec742SSukumar Swaminathan /* Solaris IOCTL can copy in&out up to 1024 bytes each time */ 1353bafec742SSukumar Swaminathan #define IOCTL_BUFFER_SIZE 1024 1354bafec742SSukumar Swaminathan #define IOCTL_MAX_BUF_SIZE (IOCTL_BUFFER_SIZE*512) /* 512k */ 1355bafec742SSukumar Swaminathan 1356bafec742SSukumar Swaminathan typedef struct ioctl_header_info { 1357bafec742SSukumar Swaminathan uint8_t version; 1358bafec742SSukumar Swaminathan uint8_t reserved; 1359bafec742SSukumar Swaminathan uint8_t option[2]; 1360bafec742SSukumar Swaminathan uint16_t expected_trans_times; 1361bafec742SSukumar Swaminathan uint16_t payload_length; 1362bafec742SSukumar Swaminathan uint32_t total_length; 1363bafec742SSukumar Swaminathan } ioctl_header_info_t; 1364bafec742SSukumar Swaminathan 1365bafec742SSukumar Swaminathan #define IOCTL_HEADER_LEN sizeof (ioctl_header_info_t) 1366bafec742SSukumar Swaminathan #define IOCTL_MAX_DATA_LEN (IOCTL_BUFFER_SIZE - IOCTL_HEADER_LEN) 1367bafec742SSukumar Swaminathan 1368bafec742SSukumar Swaminathan struct ql_pci_reg { 1369bafec742SSukumar Swaminathan uint16_t addr; /* register number [0..ff] */ 1370bafec742SSukumar Swaminathan uint16_t value; /* data to write/data read */ 1371bafec742SSukumar Swaminathan }; 1372bafec742SSukumar Swaminathan 1373bafec742SSukumar Swaminathan struct ql_device_reg { 1374bafec742SSukumar Swaminathan uint32_t addr; /* address to write/data read */ 1375bafec742SSukumar Swaminathan uint32_t value; /* data to write/data read */ 1376bafec742SSukumar Swaminathan }; 1377bafec742SSukumar Swaminathan 1378bafec742SSukumar Swaminathan struct ql_flash_io_info { 1379bafec742SSukumar Swaminathan uint32_t addr; /* register number [0..ff] */ 1380bafec742SSukumar Swaminathan uint32_t size; /* number of data to write/data read */ 1381bafec742SSukumar Swaminathan }; 1382bafec742SSukumar Swaminathan 1383bafec742SSukumar Swaminathan struct qlnic_mpi_version_info { 1384bafec742SSukumar Swaminathan uint32_t fw_version; 1385bafec742SSukumar Swaminathan uint32_t phy_version; 1386bafec742SSukumar Swaminathan }; 1387bafec742SSukumar Swaminathan 1388bafec742SSukumar Swaminathan struct qlnic_link_status_info { 1389bafec742SSukumar Swaminathan uint32_t link_status_info; 1390bafec742SSukumar Swaminathan uint32_t additional_info; 1391bafec742SSukumar Swaminathan uint32_t network_hw_info; 1392bafec742SSukumar Swaminathan uint32_t dcbx_frame_counters_info; 1393bafec742SSukumar Swaminathan uint32_t change_counters_info; 1394bafec742SSukumar Swaminathan }; 1395bafec742SSukumar Swaminathan 1396bafec742SSukumar Swaminathan struct qlnic_prop_info { 1397bafec742SSukumar Swaminathan struct qlnic_mpi_version_info mpi_version; /* MPI Version */ 1398bafec742SSukumar Swaminathan uint32_t fw_state; /* MPI state */ 1399bafec742SSukumar Swaminathan struct qlnic_link_status_info link_status; /* Link Status */ 1400bafec742SSukumar Swaminathan }; 1401bafec742SSukumar Swaminathan 1402bafec742SSukumar Swaminathan typedef struct ql_adapter_info { 1403bafec742SSukumar Swaminathan uint32_t pci_binding; /* /bus/dev/func number per IEEE 1277 format */ 1404bafec742SSukumar Swaminathan uint16_t vendor_id; 1405bafec742SSukumar Swaminathan uint16_t device_id; 1406bafec742SSukumar Swaminathan uint16_t sub_vendor_id; 1407bafec742SSukumar Swaminathan uint16_t sub_device_id; 1408bafec742SSukumar Swaminathan struct ether_addr cur_addr; 1409bafec742SSukumar Swaminathan } ql_adapter_info_t; 1410bafec742SSukumar Swaminathan 1411bafec742SSukumar Swaminathan #define DUMP_DESCRIPTION_HEADER_SIGNATURE 0x42535451 /* "QTSB" */ 1412bafec742SSukumar Swaminathan typedef struct ql_dump_header { 1413bafec742SSukumar Swaminathan uint32_t signature; /* QTSB */ 1414bafec742SSukumar Swaminathan uint8_t version; 1415bafec742SSukumar Swaminathan uint8_t length; 1416bafec742SSukumar Swaminathan uint8_t num_dumps; 1417bafec742SSukumar Swaminathan uint8_t reserved; 1418bafec742SSukumar Swaminathan uint32_t time_stamp_lo; 1419bafec742SSukumar Swaminathan uint32_t time_stamp_hi; 1420bafec742SSukumar Swaminathan } ql_dump_header_t; 1421bafec742SSukumar Swaminathan 1422bafec742SSukumar Swaminathan #define DUMP_IMAGE_HEADER_SIGNATURE 0x504D4451 /* "QDMP" */ 1423bafec742SSukumar Swaminathan 1424bafec742SSukumar Swaminathan typedef struct ql_dump_image_header { 1425bafec742SSukumar Swaminathan uint32_t signature; /* QDMP */ 1426bafec742SSukumar Swaminathan uint8_t version; 1427bafec742SSukumar Swaminathan uint8_t header_length; 1428bafec742SSukumar Swaminathan uint16_t checksum; 1429bafec742SSukumar Swaminathan uint32_t data_type; 1430bafec742SSukumar Swaminathan #define DUMP_TYPE_CORE_DUMP 1 1431bafec742SSukumar Swaminathan #define DUMP_TYPE_REGISTER_DUMP 2 1432bafec742SSukumar Swaminathan #define DUMP_TYPE_DRIVER_DUMP 3 1433bafec742SSukumar Swaminathan uint32_t data_length; 1434bafec742SSukumar Swaminathan } ql_dump_image_header_t; 1435bafec742SSukumar Swaminathan 1436bafec742SSukumar Swaminathan /* utility request */ 1437bafec742SSukumar Swaminathan #define DUMP_REQUEST_CORE BIT_1 1438bafec742SSukumar Swaminathan #define DUMP_REQUEST_REGISTER BIT_2 1439bafec742SSukumar Swaminathan #define DUMP_REQUEST_DRIVER BIT_3 1440bafec742SSukumar Swaminathan 1441bafec742SSukumar Swaminathan #define DUMP_REQUEST_ALL BIT_7 1442bafec742SSukumar Swaminathan 1443bafec742SSukumar Swaminathan #define DUMP_DESCRIPTION_FOOTER_SIGNATURE 0x45535451 /* "QTSE" */ 1444bafec742SSukumar Swaminathan typedef struct ql_dump_footer { 1445bafec742SSukumar Swaminathan uint32_t signature; /* QTSE */ 1446bafec742SSukumar Swaminathan uint8_t version; 1447bafec742SSukumar Swaminathan uint8_t length; 1448bafec742SSukumar Swaminathan uint16_t reserved; 1449bafec742SSukumar Swaminathan uint32_t time_stamp_lo; 1450bafec742SSukumar Swaminathan uint32_t time_stamp_hi; 1451bafec742SSukumar Swaminathan } ql_dump_footer_t; 1452bafec742SSukumar Swaminathan 1453bafec742SSukumar Swaminathan 1454bafec742SSukumar Swaminathan /* 1455bafec742SSukumar Swaminathan * Solaris qlnic exit status. 1456bafec742SSukumar Swaminathan */ 1457bafec742SSukumar Swaminathan #define QN_ERR_BASE 0x30000000 1458bafec742SSukumar Swaminathan #define QN_ERR_OK QN_ERR_BASE | 0 /* Success */ 1459bafec742SSukumar Swaminathan #define QN_ERR_NOT_SUPPORTED QN_ERR_BASE | 1 /* Command not supported */ 1460bafec742SSukumar Swaminathan #define QN_ERR_INVALID_PARAM QN_ERR_BASE | 2 /* Invalid parameter */ 1461bafec742SSukumar Swaminathan #define QN_ERR_WRONG_NO_PARAM QN_ERR_BASE | 3 /* Wrong number of parameters */ 1462bafec742SSukumar Swaminathan #define QN_ERR_FILE_NOT_FOUND QN_ERR_BASE | 4 /* File not found */ 1463bafec742SSukumar Swaminathan #define QN_ERR_FILE_READ_ERR QN_ERR_BASE | 5 /* File read err */ 1464bafec742SSukumar Swaminathan #define QN_ERR_FILE_WRITE_ERR QN_ERR_BASE | 6 /* File write err */ 1465bafec742SSukumar Swaminathan #define QN_ERR_NO_MEMORY QN_ERR_BASE | 7 /* No Memory */ 1466bafec742SSukumar Swaminathan 1467bafec742SSukumar Swaminathan #define FLT_REGION_FDT 0x1A 1468bafec742SSukumar Swaminathan #define ISP_8100_FDT_ADDR 0x360000 1469bafec742SSukumar Swaminathan #define ISP_8100_FDT_SIZE 0x80 1470bafec742SSukumar Swaminathan 1471bafec742SSukumar Swaminathan #define FLT_REGION_FLT 0x1C 1472bafec742SSukumar Swaminathan #define ISP_8100_FLT_ADDR 0x361000 1473bafec742SSukumar Swaminathan #define ISP_8100_FLT_SIZE 0x1000 1474bafec742SSukumar Swaminathan 1475bafec742SSukumar Swaminathan #define FLT_REGION_NIC_BOOT_CODE 0x2E 1476bafec742SSukumar Swaminathan #define ISP_8100_NIC_BOOT_CODE_ADDR 0x0 1477bafec742SSukumar Swaminathan #define ISP_8100_NIC_BOOT_CODE_SIZE 0x80000 1478bafec742SSukumar Swaminathan 1479bafec742SSukumar Swaminathan #define FLT_REGION_MPI_FW_USE 0x42 1480bafec742SSukumar Swaminathan #define ISP_8100_MPI_FW_USE_ADDR 0xF0000 1481bafec742SSukumar Swaminathan #define ISP_8100_MPI_FW_USE_SIZE 0x10000 1482bafec742SSukumar Swaminathan 1483bafec742SSukumar Swaminathan #define FLT_REGION_MPI_RISC_FW 0x40 1484bafec742SSukumar Swaminathan #define ISP_8100_MPI_RISC_FW_ADDR 0x100000 1485bafec742SSukumar Swaminathan #define ISP_8100_MPI_RISC_FW_SIZE 0x10000 1486bafec742SSukumar Swaminathan 1487bafec742SSukumar Swaminathan #define FLT_REGION_VPD0 0x2C 1488bafec742SSukumar Swaminathan #define ISP_8100_VPD0_ADDR 0x140000 1489bafec742SSukumar Swaminathan #define ISP_8100_VPD0_SIZE 0x200 1490bafec742SSukumar Swaminathan 1491bafec742SSukumar Swaminathan #define FLT_REGION_NIC_PARAM0 0x46 1492bafec742SSukumar Swaminathan #define ISP_8100_NIC_PARAM0_ADDR 0x140200 1493bafec742SSukumar Swaminathan #define ISP_8100_NIC_PARAM0_SIZE 0x200 1494bafec742SSukumar Swaminathan 1495bafec742SSukumar Swaminathan #define FLT_REGION_VPD1 0x2D 1496bafec742SSukumar Swaminathan #define ISP_8100_VPD1_ADDR 0x140400 1497bafec742SSukumar Swaminathan #define ISP_8100_VPD1_SIZE 0x200 1498bafec742SSukumar Swaminathan 1499bafec742SSukumar Swaminathan #define FLT_REGION_NIC_PARAM1 0x47 1500bafec742SSukumar Swaminathan #define ISP_8100_NIC_PARAM1_ADDR 0x140600 1501bafec742SSukumar Swaminathan #define ISP_8100_NIC_PARAM1_SIZE 0x200 1502bafec742SSukumar Swaminathan 1503bafec742SSukumar Swaminathan #define FLT_REGION_MPI_CFG 0x41 1504bafec742SSukumar Swaminathan #define ISP_8100_MPI_CFG_ADDR 0x150000 1505bafec742SSukumar Swaminathan #define ISP_8100_MPI_CFG_SIZE 0x10000 1506bafec742SSukumar Swaminathan 1507bafec742SSukumar Swaminathan #define FLT_REGION_EDC_PHY_FW 0x45 1508bafec742SSukumar Swaminathan #define ISP_8100_EDC_PHY_FW_ADDR 0x170000 1509bafec742SSukumar Swaminathan #define ISP_8100_EDC_PHY_FW_SIZE 0x20000 1510bafec742SSukumar Swaminathan 1511bafec742SSukumar Swaminathan #define FLT_REGION_FC_BOOT_CODE 0x07 1512bafec742SSukumar Swaminathan #define ISP_8100_FC_BOOT_CODE_ADDR 0x200000 1513bafec742SSukumar Swaminathan #define ISP_8100_FC_BOOT_CODE_SIZE 0x80000 1514bafec742SSukumar Swaminathan 1515bafec742SSukumar Swaminathan #define FLT_REGION_FC_FW 0x01 1516bafec742SSukumar Swaminathan #define ISP_8100_FC_FW_ADDR 0x280000 1517bafec742SSukumar Swaminathan #define ISP_8100_FC_FW_SIZE 0x80000 1518bafec742SSukumar Swaminathan 1519bafec742SSukumar Swaminathan #define FLT_REGION_FC_VPD0 0x14 1520bafec742SSukumar Swaminathan #define ISP_8100_FC_VPD0_ADDR 0x340000 1521bafec742SSukumar Swaminathan #define ISP_8100_FC_VPD0_SIZE 0x200 1522bafec742SSukumar Swaminathan 1523bafec742SSukumar Swaminathan #define FLT_REGION_FC_NVRAM0 0x15 1524bafec742SSukumar Swaminathan #define ISP_8100_FC_NVRAM0_ADDR 0x340200 1525bafec742SSukumar Swaminathan #define ISP_8100_FC_NVRAM0_SIZE 0x200 1526bafec742SSukumar Swaminathan 1527bafec742SSukumar Swaminathan #define FLT_REGION_FC_VPD1 0x16 1528bafec742SSukumar Swaminathan #define ISP_8100_FC_VPD1_ADDR 0x340400 1529bafec742SSukumar Swaminathan #define ISP_8100_FC_VPD1_SIZE 0x200 1530bafec742SSukumar Swaminathan 1531bafec742SSukumar Swaminathan #define FLT_REGION_FC_NVRAM1 0x17 1532bafec742SSukumar Swaminathan #define ISP_8100_FC_NVRAM1_ADDR 0x340600 1533bafec742SSukumar Swaminathan #define ISP_8100_FC_NVRAM1_SIZE 0x200 1534bafec742SSukumar Swaminathan 1535bafec742SSukumar Swaminathan #define FLT_REGION_FC_BOOT_CODE 0x07 1536bafec742SSukumar Swaminathan #define ISP_8100_FC_BOOT_CODE_ADDR 0x200000 1537bafec742SSukumar Swaminathan #define ISP_8100_FC_BOOT_CODE_SIZE 0x80000 1538bafec742SSukumar Swaminathan 1539bafec742SSukumar Swaminathan #define FLT_REGION_FC_FW 0x01 1540bafec742SSukumar Swaminathan #define ISP_8100_FC_FW_ADDR 0x280000 1541bafec742SSukumar Swaminathan #define ISP_8100_FC_FW_SIZE 0x80000 1542bafec742SSukumar Swaminathan 1543bafec742SSukumar Swaminathan #define FLT_REGION_TIME_STAMP 0x60 1544bafec742SSukumar Swaminathan 1545bafec742SSukumar Swaminathan /* flash region for testing */ 1546bafec742SSukumar Swaminathan #define FLT_REGION_WIN_FW_DUMP0 0x48 1547bafec742SSukumar Swaminathan #define ISP_8100_WIN_FW_DUMP0_ADDR 0x190000 1548bafec742SSukumar Swaminathan #define ISP_8100_WIN_FW_DUMP0_SIZE 0x30000 1549bafec742SSukumar Swaminathan 1550bafec742SSukumar Swaminathan #define ISP_8100_FLASH_TEST_REGION_ADDR ISP_8100_WIN_FW_DUMP0_ADDR 1551bafec742SSukumar Swaminathan #define ISP_8100_FLASH_TEST_REGION_SIZE 0x10000 1552bafec742SSukumar Swaminathan 1553bafec742SSukumar Swaminathan /* mailbox */ 1554bafec742SSukumar Swaminathan #define QL_8XXX_SFP_SIZE 256 1555bafec742SSukumar Swaminathan 1556bafec742SSukumar Swaminathan #define MAILBOX_TOV 30 /* Default Timeout value. */ 1557bafec742SSukumar Swaminathan /* 1558bafec742SSukumar Swaminathan * ISP mailbox commands from Host 1559bafec742SSukumar Swaminathan */ 1560bafec742SSukumar Swaminathan #define MBC_NO_OPERATION 0 /* No Operation. */ 1561bafec742SSukumar Swaminathan #define MBC_LOAD_RAM 1 /* Load RAM. */ 1562bafec742SSukumar Swaminathan #define MBC_EXECUTE_FIRMWARE 2 /* Execute firmware. */ 1563bafec742SSukumar Swaminathan #define MBC_MAILBOX_REGISTER_TEST 6 /* Mailbox echo test */ 1564bafec742SSukumar Swaminathan #define MBC_VERIFY_CHECKSUM 7 /* Verify checksum. */ 1565bafec742SSukumar Swaminathan #define MBC_ABOUT_FIRMWARE 8 /* About Firmware. */ 1566bafec742SSukumar Swaminathan #define MBC_RISC_MEMORY_COPY 0xA /* Copy RISC memory. */ 1567bafec742SSukumar Swaminathan #define MBC_LOAD_RISC_RAM 0xB /* Load RISC RAM command. */ 1568bafec742SSukumar Swaminathan #define MBC_DUMP_RISC_RAM 0xC /* Dump RISC RAM command. */ 1569bafec742SSukumar Swaminathan #define MBC_INIT_RISC_RAM 0xE 1570bafec742SSukumar Swaminathan #define MBC_READ_RAM_WORD 0xF /* Read RAM */ 1571bafec742SSukumar Swaminathan #define MBC_STOP_FIRMWARE 0x14 /* Stop firmware */ 1572bafec742SSukumar Swaminathan #define MBC_GENERATE_SYS_ERROR 0x2A /* Generate System Error */ 1573bafec742SSukumar Swaminathan #define MBC_WRITE_SFP 0x30 /* Write SFP. */ 1574bafec742SSukumar Swaminathan #define MBC_READ_SFP 0x31 /* Read SFP. */ 1575bafec742SSukumar Swaminathan #define MBC_INITIALIZE_FIRMWARE 0x60 /* Initialize firmware */ 1576bafec742SSukumar Swaminathan #define MBC_GET_INIT_CTRL_BLOCK 0x61 /* Get Initialization CBLK */ 1577bafec742SSukumar Swaminathan #define MBC_GET_FIRMWARE_STATE 0x69 /* Get firmware state. */ 1578bafec742SSukumar Swaminathan #define MBC_IDC_REQUEST 0x100 /* IDC Request. */ 1579bafec742SSukumar Swaminathan #define IDC_REQ_ALL_DEST_FUNC_MASK BIT_4 /* Mailbox 1 */ 1580bafec742SSukumar Swaminathan 1581bafec742SSukumar Swaminathan #define IDC_REQ_DEST_FUNC_0_MASK BIT_0 /* Mailbox 2 */ 1582bafec742SSukumar Swaminathan #define IDC_REQ_DEST_FUNC_1_MASK BIT_1 1583bafec742SSukumar Swaminathan #define IDC_REQ_DEST_FUNC_2_MASK BIT_2 1584bafec742SSukumar Swaminathan #define IDC_REQ_DEST_FUNC_3_MASK BIT_3 1585bafec742SSukumar Swaminathan 1586bafec742SSukumar Swaminathan enum IDC_REQ_DEST_FUNC { 1587bafec742SSukumar Swaminathan IDC_REQ_DEST_FUNC_0, 1588bafec742SSukumar Swaminathan IDC_REQ_DEST_FUNC_1, 1589bafec742SSukumar Swaminathan IDC_REQ_DEST_FUNC_2, 1590bafec742SSukumar Swaminathan IDC_REQ_DEST_FUNC_3, 1591bafec742SSukumar Swaminathan IDC_REQ_DEST_FUNC_ALL = 0x0F 1592bafec742SSukumar Swaminathan }; 1593bafec742SSukumar Swaminathan 1594bafec742SSukumar Swaminathan #define IDC_REQ_TIMEOUT_MASK 0x01 1595bafec742SSukumar Swaminathan 1596bafec742SSukumar Swaminathan #define MBC_IDC_ACK 0x101 /* IDC Acknowledge. */ 1597bafec742SSukumar Swaminathan #define MBC_IDC_TIME_EXTENDED 0x102 /* IDC Time Extended. */ 1598bafec742SSukumar Swaminathan 1599bafec742SSukumar Swaminathan #define MBC_SET_WAKE_ON_LANE_MODE 0x110 1600bafec742SSukumar Swaminathan #define MBC_SET_WAKE_ON_LANE_FILTER 0x111 1601bafec742SSukumar Swaminathan #define MBC_CLEAR_WAKE_ON_LANE_FILTER 0x112 1602bafec742SSukumar Swaminathan #define MBC_SET_WAKE_ON_LANE_MAGIC_PKT 0x113 1603bafec742SSukumar Swaminathan #define MBC_CLEAR_WAKE_ON_LANE_MAGIC_PKT 0x114 1604bafec742SSukumar Swaminathan 1605bafec742SSukumar Swaminathan #define MBC_PORT_RESET 0x120 1606bafec742SSukumar Swaminathan #define MBC_SET_PORT_CONFIG 0x122 1607bafec742SSukumar Swaminathan #define MBC_GET_PORT_CONFIG 0x123 1608bafec742SSukumar Swaminathan #define ENABLE_JUMBO_FRAME_SIZE_MASK BIT_16 1609bafec742SSukumar Swaminathan #define MBC_GET_LINK_STATUS 0x124 1610bafec742SSukumar Swaminathan 1611bafec742SSukumar Swaminathan #define MBC_SET_LED_CONFIG 0x125 1612bafec742SSukumar Swaminathan #define MBC_GET_LED_CONFIG 0x126 1613bafec742SSukumar Swaminathan 1614bafec742SSukumar Swaminathan /* 1615bafec742SSukumar Swaminathan * ISP mailbox command complete status codes 1616bafec742SSukumar Swaminathan */ 1617bafec742SSukumar Swaminathan #define MBS_COMMAND_COMPLETE 0x4000 1618bafec742SSukumar Swaminathan #define MBS_INVALID_COMMAND 0x4001 1619bafec742SSukumar Swaminathan #define MBS_HOST_INTERFACE_ERROR 0x4002 1620bafec742SSukumar Swaminathan #define MBS_TEST_FAILED 0x4003 1621bafec742SSukumar Swaminathan #define MBS_POST_ERROR 0x4004 1622bafec742SSukumar Swaminathan #define MBS_COMMAND_ERROR 0x4005 1623bafec742SSukumar Swaminathan #define MBS_COMMAND_PARAMETER_ERROR 0x4006 1624bafec742SSukumar Swaminathan #define MBS_PORT_ID_USED 0x4007 1625bafec742SSukumar Swaminathan #define MBS_LOOP_ID_USED 0x4008 1626bafec742SSukumar Swaminathan #define MBS_ALL_IDS_IN_USE 0x4009 1627bafec742SSukumar Swaminathan #define MBS_NOT_LOGGED_IN 0x400A 1628bafec742SSukumar Swaminathan #define MBS_LOOP_DOWN 0x400B 1629bafec742SSukumar Swaminathan #define MBS_LOOP_BACK_ERROR 0x400C 1630bafec742SSukumar Swaminathan #define MBS_CHECKSUM_ERROR 0x4010 1631bafec742SSukumar Swaminathan 1632bafec742SSukumar Swaminathan /* Async Event Status */ 1633bafec742SSukumar Swaminathan #define MBA_IDC_INTERMEDIATE_COMPLETE 0x1000 1634bafec742SSukumar Swaminathan #define MBA_ASYNC_EVENT 0x8000 /* Asynchronous event. */ 1635bafec742SSukumar Swaminathan #define MBA_SYSTEM_ERR 0x8002 1636bafec742SSukumar Swaminathan #define MBA_LINK_UP 0x8011 1637bafec742SSukumar Swaminathan enum { 1638bafec742SSukumar Swaminathan XFI_NETWORK_INTERFACE = 1, 1639bafec742SSukumar Swaminathan XAUI_NETWORK_INTERFACE, 1640bafec742SSukumar Swaminathan XFI_BACKPLANE_INTERFACE, 1641bafec742SSukumar Swaminathan XAUI_BACKPLANE_INTERFACE, 1642bafec742SSukumar Swaminathan EXT_10GBASE_T_PHY, 1643bafec742SSukumar Swaminathan EXT_EXT_EDC_PHY 1644bafec742SSukumar Swaminathan }; 1645bafec742SSukumar Swaminathan #define MBA_LINK_DOWN 0x8012 1646bafec742SSukumar Swaminathan #define MBA_IDC_COMPLETE 0x8100 1647bafec742SSukumar Swaminathan #define MBA_IDC_REQUEST_NOTIFICATION 0x8101 1648bafec742SSukumar Swaminathan #define MBA_IDC_TIME_EXTENDED 0x8102 1649bafec742SSukumar Swaminathan #define MBA_DCBX_CONFIG_CHANGE 0x8110 1650bafec742SSukumar Swaminathan #define MBA_NOTIFICATION_LOST 0x8120 1651bafec742SSukumar Swaminathan #define MBA_SFT_TRANSCEIVER_INSERTION 0x8130 1652bafec742SSukumar Swaminathan #define MBA_SFT_TRANSCEIVER_REMOVAL 0x8131 1653bafec742SSukumar Swaminathan #define MBA_FIRMWARE_INIT_COMPLETE 0x8400 1654bafec742SSukumar Swaminathan #define MBA_FIRMWARE_INIT_FAILED 0x8401 1655bafec742SSukumar Swaminathan 1656bafec742SSukumar Swaminathan typedef struct firmware_version_info { 1657bafec742SSukumar Swaminathan uint8_t reserved; 1658bafec742SSukumar Swaminathan uint8_t major_version; 1659bafec742SSukumar Swaminathan uint8_t minor_version; 1660bafec742SSukumar Swaminathan uint8_t sub_minor_version; 1661bafec742SSukumar Swaminathan } firmware_version_info_t; 1662bafec742SSukumar Swaminathan 1663bafec742SSukumar Swaminathan typedef struct phy_firmware_version_info { 1664bafec742SSukumar Swaminathan uint8_t reserved; 1665bafec742SSukumar Swaminathan uint8_t major_version; 1666bafec742SSukumar Swaminathan uint8_t minor_version; 1667bafec742SSukumar Swaminathan uint8_t sub_minor_version; 1668bafec742SSukumar Swaminathan } phy_firmware_version_info_t; 1669bafec742SSukumar Swaminathan 1670bafec742SSukumar Swaminathan #define ENABLE_JUMBO BIT_16 1671bafec742SSukumar Swaminathan #define STD_PAUSE 0x20 1672bafec742SSukumar Swaminathan #define PP_PAUSE 0x40 1673*accf27a5SSukumar Swaminathan #define DCBX_ENABLE 0x10 1674bafec742SSukumar Swaminathan #define LOOP_INTERNAL_PARALLEL 0x02 1675bafec742SSukumar Swaminathan #define LOOP_INTERNAL_SERIAL 0x04 1676bafec742SSukumar Swaminathan #define LOOP_EXTERNAL_PHY 0x06 1677bafec742SSukumar Swaminathan 1678bafec742SSukumar Swaminathan typedef struct port_cfg_info { 1679bafec742SSukumar Swaminathan uint32_t link_cfg; 1680bafec742SSukumar Swaminathan uint32_t max_frame_size; 1681bafec742SSukumar Swaminathan } port_cfg_info_t; 1682bafec742SSukumar Swaminathan 1683bafec742SSukumar Swaminathan enum { 1684bafec742SSukumar Swaminathan PAUSE_MODE_DISABLED, 1685bafec742SSukumar Swaminathan PAUSE_MODE_STANDARD, /* Standard Ethernet Pause */ 1686bafec742SSukumar Swaminathan PAUSE_MODE_PER_PRIORITY /* Class Based Pause */ 1687bafec742SSukumar Swaminathan }; 1688bafec742SSukumar Swaminathan 1689bafec742SSukumar Swaminathan /* Mailbox command parameter structure definition. */ 1690bafec742SSukumar Swaminathan typedef struct mbx_cmd { 1691bafec742SSukumar Swaminathan uint32_t from_mpi; /* number of Incomming from MPI to driver */ 1692bafec742SSukumar Swaminathan uint32_t mb[NUM_MAILBOX_REGS]; 1693bafec742SSukumar Swaminathan clock_t timeout; /* Timeout in seconds. */ 1694bafec742SSukumar Swaminathan } mbx_cmd_t; 1695bafec742SSukumar Swaminathan 1696bafec742SSukumar Swaminathan /* Returned Mailbox registers. */ 1697bafec742SSukumar Swaminathan typedef struct mbx_data { 1698bafec742SSukumar Swaminathan uint32_t from_mpi; /* number of Incomming from MPI to driver */ 1699bafec742SSukumar Swaminathan uint32_t mb[NUM_MAILBOX_REGS]; 1700bafec742SSukumar Swaminathan } mbx_data_t; 1701bafec742SSukumar Swaminathan 1702bafec742SSukumar Swaminathan /* Address/Length pairs for the coredump. */ 1703bafec742SSukumar Swaminathan 1704bafec742SSukumar Swaminathan #define MPI_CORE_REGS_ADDR 0x00030000 1705bafec742SSukumar Swaminathan #define MPI_CORE_REGS_CNT 127 1706bafec742SSukumar Swaminathan #define MPI_CORE_SH_REGS_CNT 16 1707bafec742SSukumar Swaminathan #define TEST_REGS_ADDR 0x00001000 1708bafec742SSukumar Swaminathan #define TEST_REGS_CNT 23 1709bafec742SSukumar Swaminathan #define RMII_REGS_ADDR 0x00001040 1710bafec742SSukumar Swaminathan #define RMII_REGS_CNT 64 1711bafec742SSukumar Swaminathan #define FCMAC1_REGS_ADDR 0x00001080 1712bafec742SSukumar Swaminathan #define FCMAC2_REGS_ADDR 0x000010c0 1713bafec742SSukumar Swaminathan #define FCMAC_REGS_CNT 64 1714bafec742SSukumar Swaminathan #define FC1_MBX_REGS_ADDR 0x00001100 1715bafec742SSukumar Swaminathan #define FC2_MBX_REGS_ADDR 0x00001240 1716bafec742SSukumar Swaminathan #define FC_MBX_REGS_CNT 64 1717bafec742SSukumar Swaminathan #define IDE_REGS_ADDR 0x00001140 1718bafec742SSukumar Swaminathan #define IDE_REGS_CNT 64 1719bafec742SSukumar Swaminathan #define NIC1_MBX_REGS_ADDR 0x00001180 1720bafec742SSukumar Swaminathan #define NIC2_MBX_REGS_ADDR 0x00001280 1721bafec742SSukumar Swaminathan #define NIC_MBX_REGS_CNT 64 1722bafec742SSukumar Swaminathan #define SMBUS_REGS_ADDR 0x00001200 1723bafec742SSukumar Swaminathan #define SMBUS_REGS_CNT 64 1724bafec742SSukumar Swaminathan #define I2C_REGS_ADDR 0x00001fc0 1725bafec742SSukumar Swaminathan #define I2C_REGS_CNT 64 1726bafec742SSukumar Swaminathan #define MEMC_REGS_ADDR 0x00003000 1727bafec742SSukumar Swaminathan #define MEMC_REGS_CNT 256 1728bafec742SSukumar Swaminathan #define PBUS_REGS_ADDR 0x00007c00 1729bafec742SSukumar Swaminathan #define PBUS_REGS_CNT 256 1730bafec742SSukumar Swaminathan #define MDE_REGS_ADDR 0x00010000 1731bafec742SSukumar Swaminathan #define MDE_REGS_CNT 6 1732bafec742SSukumar Swaminathan #define CODE_RAM_ADDR 0x00020000 1733bafec742SSukumar Swaminathan #define CODE_RAM_CNT 0x2000 1734bafec742SSukumar Swaminathan #define MEMC_RAM_ADDR 0x00100000 1735bafec742SSukumar Swaminathan #define MEMC_RAM_CNT 0x2000 1736bafec742SSukumar Swaminathan 1737bafec742SSukumar Swaminathan /* 64 probes, 8 bytes per probe + 4 bytes to list the probe ID */ 1738bafec742SSukumar Swaminathan #define PROBE_DATA_LENGTH_WORDS ((64 * 2) + 1) 1739bafec742SSukumar Swaminathan #define NUMBER_OF_PROBES 34 1740bafec742SSukumar Swaminathan #define NUMBER_ROUTING_REG_ENTRIES 48 1741bafec742SSukumar Swaminathan #define WORDS_PER_ROUTING_REG_ENTRY 4 1742bafec742SSukumar Swaminathan #define MAC_PROTOCOL_REGISTER_WORDS ((512 * 3) + (32 * 2) + (4096 * 1) + \ 1743bafec742SSukumar Swaminathan (4096 * 1) + (4 * 2) + (8 * 2) + \ 1744bafec742SSukumar Swaminathan (16 * 1) + (4 * 1) + (4 * 4) + \ 1745bafec742SSukumar Swaminathan (4 * 1)) 1746bafec742SSukumar Swaminathan /* Save both the address and data register */ 1747bafec742SSukumar Swaminathan #define WORDS_PER_MAC_PROT_ENTRY 2 1748bafec742SSukumar Swaminathan 1749bafec742SSukumar Swaminathan #define MPI_COREDUMP_COOKIE 0x5555aaaa 1750bafec742SSukumar Swaminathan typedef struct mpi_coredump_global_header { 1751bafec742SSukumar Swaminathan uint32_t cookie; 1752bafec742SSukumar Swaminathan char id_string[16]; 1753bafec742SSukumar Swaminathan uint32_t time_lo; 1754bafec742SSukumar Swaminathan uint32_t time_hi; 1755bafec742SSukumar Swaminathan uint32_t total_image_size; 1756bafec742SSukumar Swaminathan uint32_t global_header_size; 1757bafec742SSukumar Swaminathan char driver_info[0xE0]; 1758bafec742SSukumar Swaminathan }mpi_coredump_global_header_t; 1759bafec742SSukumar Swaminathan 1760bafec742SSukumar Swaminathan typedef struct mpi_coredump_segment_header { 1761bafec742SSukumar Swaminathan uint32_t cookie; 1762bafec742SSukumar Swaminathan uint32_t seg_number; 1763bafec742SSukumar Swaminathan uint32_t seg_size; 1764bafec742SSukumar Swaminathan uint32_t extra; 1765bafec742SSukumar Swaminathan char description[16]; 1766bafec742SSukumar Swaminathan }mpi_coredump_segment_header_t; 1767bafec742SSukumar Swaminathan 1768bafec742SSukumar Swaminathan typedef struct ql_mpi_coredump { 1769bafec742SSukumar Swaminathan mpi_coredump_global_header_t mpi_global_header; 1770bafec742SSukumar Swaminathan 1771bafec742SSukumar Swaminathan mpi_coredump_segment_header_t core_regs_seg_hdr; 1772bafec742SSukumar Swaminathan uint32_t mpi_core_regs[MPI_CORE_REGS_CNT]; 1773bafec742SSukumar Swaminathan uint32_t mpi_core_sh_regs[MPI_CORE_SH_REGS_CNT]; 1774bafec742SSukumar Swaminathan 1775bafec742SSukumar Swaminathan mpi_coredump_segment_header_t test_logic_regs_seg_hdr; 1776bafec742SSukumar Swaminathan uint32_t test_logic_regs[TEST_REGS_CNT]; 1777bafec742SSukumar Swaminathan 1778bafec742SSukumar Swaminathan mpi_coredump_segment_header_t rmii_regs_seg_hdr; 1779bafec742SSukumar Swaminathan uint32_t rmii_regs[RMII_REGS_CNT]; 1780bafec742SSukumar Swaminathan 1781bafec742SSukumar Swaminathan mpi_coredump_segment_header_t fcmac1_regs_seg_hdr; 1782bafec742SSukumar Swaminathan uint32_t fcmac1_regs[FCMAC_REGS_CNT]; 1783bafec742SSukumar Swaminathan 1784bafec742SSukumar Swaminathan mpi_coredump_segment_header_t fcmac2_regs_seg_hdr; 1785bafec742SSukumar Swaminathan uint32_t fcmac2_regs[FCMAC_REGS_CNT]; 1786bafec742SSukumar Swaminathan 1787bafec742SSukumar Swaminathan mpi_coredump_segment_header_t fc1_mbx_regs_seg_hdr; 1788bafec742SSukumar Swaminathan uint32_t fc1_mbx_regs[FC_MBX_REGS_CNT]; 1789bafec742SSukumar Swaminathan 1790bafec742SSukumar Swaminathan mpi_coredump_segment_header_t ide_regs_seg_hdr; 1791bafec742SSukumar Swaminathan uint32_t ide_regs[IDE_REGS_CNT]; 1792bafec742SSukumar Swaminathan 1793bafec742SSukumar Swaminathan mpi_coredump_segment_header_t nic1_mbx_regs_seg_hdr; 1794bafec742SSukumar Swaminathan uint32_t nic1_mbx_regs[NIC_MBX_REGS_CNT]; 1795bafec742SSukumar Swaminathan 1796bafec742SSukumar Swaminathan mpi_coredump_segment_header_t smbus_regs_seg_hdr; 1797bafec742SSukumar Swaminathan uint32_t smbus_regs[SMBUS_REGS_CNT]; 1798bafec742SSukumar Swaminathan 1799bafec742SSukumar Swaminathan mpi_coredump_segment_header_t fc2_mbx_regs_seg_hdr; 1800bafec742SSukumar Swaminathan uint32_t fc2_mbx_regs[FC_MBX_REGS_CNT]; 1801bafec742SSukumar Swaminathan 1802bafec742SSukumar Swaminathan mpi_coredump_segment_header_t nic2_mbx_regs_seg_hdr; 1803bafec742SSukumar Swaminathan uint32_t nic2_mbx_regs[NIC_MBX_REGS_CNT]; 1804bafec742SSukumar Swaminathan 1805bafec742SSukumar Swaminathan mpi_coredump_segment_header_t i2c_regs_seg_hdr; 1806bafec742SSukumar Swaminathan uint32_t i2c_regs[I2C_REGS_CNT]; 1807bafec742SSukumar Swaminathan 1808bafec742SSukumar Swaminathan mpi_coredump_segment_header_t memc_regs_seg_hdr; 1809bafec742SSukumar Swaminathan uint32_t memc_regs[MEMC_REGS_CNT]; 1810bafec742SSukumar Swaminathan 1811bafec742SSukumar Swaminathan mpi_coredump_segment_header_t pbus_regs_seg_hdr; 1812bafec742SSukumar Swaminathan uint32_t pbus_regs[PBUS_REGS_CNT]; 1813bafec742SSukumar Swaminathan 1814bafec742SSukumar Swaminathan mpi_coredump_segment_header_t mde_regs_seg_hdr; 1815bafec742SSukumar Swaminathan uint32_t mde_regs[MDE_REGS_CNT]; 1816bafec742SSukumar Swaminathan 1817bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xaui_an_hdr; 1818bafec742SSukumar Swaminathan uint32_t serdes_xaui_an[14]; 1819bafec742SSukumar Swaminathan 1820bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xaui_hss_pcs_hdr; 1821bafec742SSukumar Swaminathan uint32_t serdes_xaui_hss_pcs[33]; 1822bafec742SSukumar Swaminathan 1823bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_an_hdr; 1824bafec742SSukumar Swaminathan uint32_t serdes_xfi_an[14]; 1825bafec742SSukumar Swaminathan 1826bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_train_hdr; 1827bafec742SSukumar Swaminathan uint32_t serdes_xfi_train[12]; 1828bafec742SSukumar Swaminathan 1829bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_hss_pcs_hdr; 1830bafec742SSukumar Swaminathan uint32_t serdes_xfi_hss_pcs[15]; 1831bafec742SSukumar Swaminathan 1832bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_hss_tx_hdr; 1833bafec742SSukumar Swaminathan uint32_t serdes_xfi_hss_tx[32]; 1834bafec742SSukumar Swaminathan 1835bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_hss_rx_hdr; 1836bafec742SSukumar Swaminathan uint32_t serdes_xfi_hss_rx[32]; 1837bafec742SSukumar Swaminathan 1838bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xfi_hss_pll_hdr; 1839bafec742SSukumar Swaminathan uint32_t serdes_xfi_hss_pll[32]; 1840bafec742SSukumar Swaminathan 1841bafec742SSukumar Swaminathan mpi_coredump_segment_header_t nic_regs_seg_hdr; 1842bafec742SSukumar Swaminathan uint32_t nic_regs[64]; 1843bafec742SSukumar Swaminathan 1844bafec742SSukumar Swaminathan /* one interrupt state for each CQ */ 1845bafec742SSukumar Swaminathan mpi_coredump_segment_header_t intr_states_seg_hdr; 1846bafec742SSukumar Swaminathan uint32_t intr_states[MAX_RX_RINGS]; 1847bafec742SSukumar Swaminathan 1848bafec742SSukumar Swaminathan mpi_coredump_segment_header_t xgmac_seg_hdr; 1849bafec742SSukumar Swaminathan #define XGMAC_REGISTER_END 0x740 1850bafec742SSukumar Swaminathan uint32_t xgmac[XGMAC_REGISTER_END]; 1851bafec742SSukumar Swaminathan 1852bafec742SSukumar Swaminathan mpi_coredump_segment_header_t probe_dump_seg_hdr; 1853bafec742SSukumar Swaminathan uint32_t probe_dump[PROBE_DATA_LENGTH_WORDS * NUMBER_OF_PROBES]; 1854bafec742SSukumar Swaminathan 1855bafec742SSukumar Swaminathan mpi_coredump_segment_header_t routing_reg_seg_hdr; 1856bafec742SSukumar Swaminathan uint32_t routing_regs[NUMBER_ROUTING_REG_ENTRIES * WORDS_PER_ROUTING_REG_ENTRY]; 1857bafec742SSukumar Swaminathan 1858bafec742SSukumar Swaminathan mpi_coredump_segment_header_t mac_prot_reg_seg_hdr; 1859bafec742SSukumar Swaminathan uint32_t mac_prot_regs[MAC_PROTOCOL_REGISTER_WORDS * WORDS_PER_MAC_PROT_ENTRY]; 1860bafec742SSukumar Swaminathan 1861bafec742SSukumar Swaminathan 1862bafec742SSukumar Swaminathan mpi_coredump_segment_header_t ets_seg_hdr; 1863bafec742SSukumar Swaminathan uint32_t ets[8+2]; 1864bafec742SSukumar Swaminathan 1865bafec742SSukumar Swaminathan mpi_coredump_segment_header_t code_ram_seg_hdr; 1866bafec742SSukumar Swaminathan uint32_t code_ram[CODE_RAM_CNT]; 1867bafec742SSukumar Swaminathan 1868bafec742SSukumar Swaminathan mpi_coredump_segment_header_t memc_ram_seg_hdr; 1869bafec742SSukumar Swaminathan uint32_t memc_ram[MEMC_RAM_CNT]; 1870bafec742SSukumar Swaminathan 1871bafec742SSukumar Swaminathan } ql_mpi_coredump_t; 1872bafec742SSukumar Swaminathan 1873bafec742SSukumar Swaminathan #define WCS_MPI_CODE_RAM_LENGTH (0x2000*4) 1874bafec742SSukumar Swaminathan #define MEMC_MPI_RAM_LENGTH (0x2000*4) 1875bafec742SSukumar Swaminathan 1876bafec742SSukumar Swaminathan #define XG_SERDES_ADDR_RDY BIT_31 1877bafec742SSukumar Swaminathan #define XG_SERDES_ADDR_R BIT_30 1878bafec742SSukumar Swaminathan 1879bafec742SSukumar Swaminathan #define CORE_SEG_NUM 1 1880bafec742SSukumar Swaminathan #define TEST_LOGIC_SEG_NUM 2 1881bafec742SSukumar Swaminathan #define RMII_SEG_NUM 3 1882bafec742SSukumar Swaminathan #define FCMAC1_SEG_NUM 4 1883bafec742SSukumar Swaminathan #define FCMAC2_SEG_NUM 5 1884bafec742SSukumar Swaminathan #define FC1_MBOX_SEG_NUM 6 1885bafec742SSukumar Swaminathan #define IDE_SEG_NUM 7 1886bafec742SSukumar Swaminathan #define NIC1_MBOX_SEG_NUM 8 1887bafec742SSukumar Swaminathan #define SMBUS_SEG_NUM 9 1888bafec742SSukumar Swaminathan #define FC2_MBOX_SEG_NUM 10 1889bafec742SSukumar Swaminathan #define NIC2_MBOX_SEG_NUM 11 1890bafec742SSukumar Swaminathan #define I2C_SEG_NUM 12 1891bafec742SSukumar Swaminathan #define MEMC_SEG_NUM 13 1892bafec742SSukumar Swaminathan #define PBUS_SEG_NUM 14 1893bafec742SSukumar Swaminathan #define MDE_SEG_NUM 15 1894bafec742SSukumar Swaminathan #define NIC1_CONTROL_SEG_NUM 16 1895bafec742SSukumar Swaminathan #define NIC2_CONTROL_SEG_NUM 17 1896bafec742SSukumar Swaminathan #define NIC1_XGMAC_SEG_NUM 18 1897bafec742SSukumar Swaminathan #define NIC2_XGMAC_SEG_NUM 19 1898bafec742SSukumar Swaminathan #define WCS_RAM_SEG_NUM 20 1899bafec742SSukumar Swaminathan #define MEMC_RAM_SEG_NUM 21 1900bafec742SSukumar Swaminathan #define XAUI_AN_SEG_NUM 22 1901bafec742SSukumar Swaminathan #define XAUI_HSS_PCS_SEG_NUM 23 1902bafec742SSukumar Swaminathan #define XFI_AN_SEG_NUM 24 1903bafec742SSukumar Swaminathan #define XFI_TRAIN_SEG_NUM 25 1904bafec742SSukumar Swaminathan #define XFI_HSS_PCS_SEG_NUM 26 1905bafec742SSukumar Swaminathan #define XFI_HSS_TX_SEG_NUM 27 1906bafec742SSukumar Swaminathan #define XFI_HSS_RX_SEG_NUM 28 1907bafec742SSukumar Swaminathan #define XFI_HSS_PLL_SEG_NUM 29 1908bafec742SSukumar Swaminathan #define INTR_STATES_SEG_NUM 31 1909bafec742SSukumar Swaminathan #define ETS_SEG_NUM 34 1910bafec742SSukumar Swaminathan #define PROBE_DUMP_SEG_NUM 35 1911bafec742SSukumar Swaminathan #define ROUTING_INDEX_SEG_NUM 36 1912bafec742SSukumar Swaminathan #define MAC_PROTOCOL_SEG_NUM 37 1913bafec742SSukumar Swaminathan 1914bafec742SSukumar Swaminathan /* Force byte packing for the following structures */ 1915bafec742SSukumar Swaminathan #pragma pack(1) 1916bafec742SSukumar Swaminathan 1917bafec742SSukumar Swaminathan /* 1918bafec742SSukumar Swaminathan * Work Queue (Request Queue) Initialization Control Block (WQICB) 1919bafec742SSukumar Swaminathan */ 1920bafec742SSukumar Swaminathan 1921bafec742SSukumar Swaminathan struct wqicb_t { 1922bafec742SSukumar Swaminathan uint16_t len; 1923bafec742SSukumar Swaminathan #define Q_LEN_V (1 << 4) 1924bafec742SSukumar Swaminathan #define Q_LEN_CPP_CONT 0x0000 1925bafec742SSukumar Swaminathan #define Q_LEN_CPP_16 0x0001 1926bafec742SSukumar Swaminathan #define Q_LEN_CPP_32 0x0002 1927bafec742SSukumar Swaminathan #define Q_LEN_CPP_64 0x0003 1928bafec742SSukumar Swaminathan #define Q_LEN_CPP_512 0x0006 1929bafec742SSukumar Swaminathan uint16_t flags; 1930bafec742SSukumar Swaminathan #define Q_PRI_SHIFT 1 1931bafec742SSukumar Swaminathan #define Q_FLAGS_LC 0x1000 1932bafec742SSukumar Swaminathan #define Q_FLAGS_LB 0x2000 1933bafec742SSukumar Swaminathan #define Q_FLAGS_LI 0x4000 1934bafec742SSukumar Swaminathan #define Q_FLAGS_LO 0x8000 1935bafec742SSukumar Swaminathan uint16_t cq_id_rss; 1936bafec742SSukumar Swaminathan #define Q_CQ_ID_RSS_RV 0x8000 1937bafec742SSukumar Swaminathan uint16_t rid; 1938bafec742SSukumar Swaminathan uint32_t wq_addr_lo; 1939bafec742SSukumar Swaminathan uint32_t wq_addr_hi; 1940bafec742SSukumar Swaminathan uint32_t cnsmr_idx_addr_lo; 1941bafec742SSukumar Swaminathan uint32_t cnsmr_idx_addr_hi; 1942bafec742SSukumar Swaminathan }; 1943bafec742SSukumar Swaminathan 1944bafec742SSukumar Swaminathan /* 1945bafec742SSukumar Swaminathan * Completion Queue (Response Queue) Initialization Control Block (CQICB) 1946bafec742SSukumar Swaminathan */ 1947bafec742SSukumar Swaminathan 1948bafec742SSukumar Swaminathan struct cqicb_t { 1949bafec742SSukumar Swaminathan uint8_t msix_vect; 1950bafec742SSukumar Swaminathan uint8_t reserved1; 1951bafec742SSukumar Swaminathan uint8_t reserved2; 1952bafec742SSukumar Swaminathan uint8_t flags; 1953bafec742SSukumar Swaminathan #define FLAGS_LV 0x08 1954bafec742SSukumar Swaminathan #define FLAGS_LS 0x10 1955bafec742SSukumar Swaminathan #define FLAGS_LL 0x20 1956bafec742SSukumar Swaminathan #define FLAGS_LI 0x40 1957bafec742SSukumar Swaminathan #define FLAGS_LC 0x80 1958bafec742SSukumar Swaminathan uint16_t len; 1959bafec742SSukumar Swaminathan #define LEN_V (1 << 4) 1960bafec742SSukumar Swaminathan #define LEN_CPP_CONT 0x0000 1961bafec742SSukumar Swaminathan #define LEN_CPP_32 0x0001 1962bafec742SSukumar Swaminathan #define LEN_CPP_64 0x0002 1963bafec742SSukumar Swaminathan #define LEN_CPP_128 0x0003 1964bafec742SSukumar Swaminathan uint16_t rid; 1965bafec742SSukumar Swaminathan uint32_t cq_base_addr_lo; /* completion queue base address */ 1966bafec742SSukumar Swaminathan uint32_t cq_base_addr_hi; 1967bafec742SSukumar Swaminathan uint32_t prod_idx_addr_lo; /* completion queue host copy */ 1968bafec742SSukumar Swaminathan /* producer index host shadow */ 1969bafec742SSukumar Swaminathan uint32_t prod_idx_addr_hi; 1970bafec742SSukumar Swaminathan uint16_t pkt_delay; 1971bafec742SSukumar Swaminathan uint16_t irq_delay; 1972bafec742SSukumar Swaminathan uint32_t lbq_addr_lo; 1973bafec742SSukumar Swaminathan uint32_t lbq_addr_hi; 1974bafec742SSukumar Swaminathan uint16_t lbq_buf_size; 1975bafec742SSukumar Swaminathan uint16_t lbq_len; /* entry count */ 1976bafec742SSukumar Swaminathan uint32_t sbq_addr_lo; 1977bafec742SSukumar Swaminathan uint32_t sbq_addr_hi; 1978bafec742SSukumar Swaminathan uint16_t sbq_buf_size; 1979bafec742SSukumar Swaminathan uint16_t sbq_len; /* entry count */ 1980bafec742SSukumar Swaminathan }; 1981bafec742SSukumar Swaminathan 1982bafec742SSukumar Swaminathan struct ricb { 1983bafec742SSukumar Swaminathan uint8_t base_cq; 1984bafec742SSukumar Swaminathan #define RSS_L4K 0x80 1985bafec742SSukumar Swaminathan uint8_t flags; 1986bafec742SSukumar Swaminathan #define RSS_L6K 0x01 1987bafec742SSukumar Swaminathan #define RSS_LI 0x02 1988bafec742SSukumar Swaminathan #define RSS_LB 0x04 1989bafec742SSukumar Swaminathan #define RSS_LM 0x08 1990bafec742SSukumar Swaminathan #define RSS_RI4 0x10 1991bafec742SSukumar Swaminathan #define RSS_RT4 0x20 1992bafec742SSukumar Swaminathan #define RSS_RI6 0x40 1993bafec742SSukumar Swaminathan #define RSS_RT6 0x80 1994bafec742SSukumar Swaminathan uint16_t mask; 1995bafec742SSukumar Swaminathan #define RSS_HASH_CQ_ID_MAX 1024 1996bafec742SSukumar Swaminathan uint8_t hash_cq_id[RSS_HASH_CQ_ID_MAX]; 1997bafec742SSukumar Swaminathan uint32_t ipv6_hash_key[10]; 1998bafec742SSukumar Swaminathan uint32_t ipv4_hash_key[4]; 1999bafec742SSukumar Swaminathan }; 2000bafec742SSukumar Swaminathan 2001bafec742SSukumar Swaminathan /* 2002bafec742SSukumar Swaminathan * Host Command IOCB Formats 2003bafec742SSukumar Swaminathan */ 2004bafec742SSukumar Swaminathan 2005bafec742SSukumar Swaminathan #define OPCODE_OB_MAC_IOCB 0x01 2006bafec742SSukumar Swaminathan #define OPCODE_OB_MAC_OFFLOAD_IOCB 0x02 2007bafec742SSukumar Swaminathan 2008bafec742SSukumar Swaminathan #define OPCODE_IB_MAC_IOCB 0x20 2009bafec742SSukumar Swaminathan #define OPCODE_IB_SYS_EVENT_IOCB 0x3f 2010bafec742SSukumar Swaminathan 2011bafec742SSukumar Swaminathan /* 2012bafec742SSukumar Swaminathan * The following constants define control bits for buffer 2013bafec742SSukumar Swaminathan * length fields for all IOCB's. 2014bafec742SSukumar Swaminathan */ 2015bafec742SSukumar Swaminathan #define OAL_LAST_ENTRY 0x80000000 /* Last valid buffer in list. */ 2016bafec742SSukumar Swaminathan #define OAL_CONT_ENTRY 0x40000000 /* points to an OAL. (continuation) */ 2017bafec742SSukumar Swaminathan 2018bafec742SSukumar Swaminathan struct oal_entry { 2019bafec742SSukumar Swaminathan uint32_t buf_addr_low; 2020bafec742SSukumar Swaminathan uint32_t buf_addr_high; 2021bafec742SSukumar Swaminathan uint32_t buf_len; 2022bafec742SSukumar Swaminathan }; 2023bafec742SSukumar Swaminathan 2024bafec742SSukumar Swaminathan /* 32 words, 128 bytes */ 2025bafec742SSukumar Swaminathan #define TX_DESC_PER_IOCB 8 /* Number of descs in one TX IOCB */ 2026bafec742SSukumar Swaminathan 2027bafec742SSukumar Swaminathan struct ob_mac_iocb_req { 2028bafec742SSukumar Swaminathan uint8_t opcode; 2029bafec742SSukumar Swaminathan uint8_t flag0; 2030bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_IPv6 0x80 2031bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_IPv4 0x40 2032bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_D 0x08 /* disable generation of comp. msg */ 2033bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_I 0x02 /* disable generation of intr at comp */ 2034bafec742SSukumar Swaminathan uint8_t flag1; 2035bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_TC 0x80 /* enable TCP checksum offload */ 2036bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_UC 0x40 /* enable UDP checksum offload */ 2037bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_LSO 0x20 /* enable LSO offload */ 2038bafec742SSukumar Swaminathan uint8_t flag2; 2039bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_VLAN_OFFSET_MASK 0xF8 /* VLAN TCI insert */ 2040bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_V 0x04 /* insert VLAN TCI */ 2041bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_DFP 0x02 /* Drop for Failover port */ 2042bafec742SSukumar Swaminathan #define OB_MAC_IOCB_REQ_IC 0x01 /* enable IP checksum offload */ 2043bafec742SSukumar Swaminathan uint32_t unused; 2044bafec742SSukumar Swaminathan uint32_t reserved_cq_tag; 2045bafec742SSukumar Swaminathan uint32_t frame_len; /* max 9000,for none LSO, 16M for LSO */ 2046bafec742SSukumar Swaminathan uint32_t tid; 2047bafec742SSukumar Swaminathan uint32_t txq_idx; 2048bafec742SSukumar Swaminathan uint16_t protocol_hdr_len; 2049bafec742SSukumar Swaminathan uint16_t hdr_off; /* tcp/udp hdr offset */ 2050bafec742SSukumar Swaminathan uint16_t vlan_tci; 2051bafec742SSukumar Swaminathan uint16_t mss; 2052bafec742SSukumar Swaminathan 2053bafec742SSukumar Swaminathan struct oal_entry oal_entry[TX_DESC_PER_IOCB]; /* max FFFFF 1M bytes */ 2054bafec742SSukumar Swaminathan 2055bafec742SSukumar Swaminathan }; 2056bafec742SSukumar Swaminathan /* 16 words, 64 bytes */ 2057bafec742SSukumar Swaminathan struct ob_mac_iocb_rsp { 2058bafec742SSukumar Swaminathan uint8_t opcode; 2059bafec742SSukumar Swaminathan uint8_t flags1; 2060bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_OI 0x01 /* */ 2061bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_I 0x02 /* */ 2062bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_E 0x08 /* */ 2063bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_S 0x10 /* too Short */ 2064bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_L 0x20 /* too Large */ 2065bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_P 0x40 /* Padded */ 2066bafec742SSukumar Swaminathan 2067bafec742SSukumar Swaminathan uint8_t flags2; 2068bafec742SSukumar Swaminathan uint8_t flags3; 2069bafec742SSukumar Swaminathan 2070bafec742SSukumar Swaminathan #define OB_MAC_IOCB_RSP_B 0x80 2071bafec742SSukumar Swaminathan 2072bafec742SSukumar Swaminathan uint32_t tid; 2073bafec742SSukumar Swaminathan uint32_t txq_idx; 2074bafec742SSukumar Swaminathan 2075bafec742SSukumar Swaminathan uint32_t reserved[13]; 2076bafec742SSukumar Swaminathan }; 2077bafec742SSukumar Swaminathan 2078bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_VLAN_MASK 0x0ffff 2079bafec742SSukumar Swaminathan 2080bafec742SSukumar Swaminathan struct ib_mac_iocb_rsp { 2081bafec742SSukumar Swaminathan uint8_t opcode; /* 0x20 */ 2082bafec742SSukumar Swaminathan uint8_t flags1; 2083bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_OI 0x01 /* Overide intr delay */ 2084bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_I 0x02 /* Disble Intr Generation */ 2085bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_TE 0x04 /* Checksum error */ 2086bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_NU 0x08 /* No checksum rcvd */ 2087bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_IE 0x10 /* IPv4 checksum error */ 2088bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_MASK 0x60 /* Multicast info */ 2089bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_NONE 0x00 /* Not mcast frame */ 2090bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_HASH 0x20 /* HASH mcast frame */ 2091bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_REG 0x40 /* Registered mcast frame */ 2092bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_PROM 0x60 /* Promiscuous mcast frame */ 2093bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_B 0x80 /* Broadcast frame */ 2094bafec742SSukumar Swaminathan uint8_t flags2; 2095bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_P 0x01 /* Promiscuous frame */ 2096bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_V 0x02 /* Vlan tag present */ 2097bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_MASK 0x1c /* */ 2098bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_CODE_ERR 0x04 2099bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_OVERSIZE 0x08 2100bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_UNDERSIZE 0x10 2101bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_PREAMBLE 0x14 2102bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_FRAME_LEN 0x18 2103bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_ERR_CRC 0x1c 2104bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_U 0x20 /* UDP packet */ 2105bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_T 0x40 /* TCP packet */ 2106bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_FO 0x80 /* Failover port */ 2107bafec742SSukumar Swaminathan uint8_t flags3; 2108bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_RSS_MASK 0x07 /* RSS mask */ 2109bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_NONE 0x00 /* No RSS match */ 2110bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_IPV4 0x04 /* IPv4 RSS match */ 2111bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_IPV6 0x02 /* IPv6 RSS match */ 2112bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_TCP_V4 0x05 /* TCP with IPv4 */ 2113bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_M_TCP_V6 0x03 /* TCP with IPv6 */ 2114bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_V4 0x08 /* IPV4 */ 2115bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_V6 0x10 /* IPV6 */ 2116bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_IH 0x20 /* Split after IP header */ 2117bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_DS 0x40 /* data is in small buffer */ 2118bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_DL 0x80 /* data is in large buffer */ 2119bafec742SSukumar Swaminathan uint32_t data_len; 2120bafec742SSukumar Swaminathan uint64_t data_addr; 2121bafec742SSukumar Swaminathan uint32_t rss; 2122bafec742SSukumar Swaminathan uint16_t vlan_id; /* 12 bits */ 2123bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_VLAN_ID_MASK 0xFFF 2124bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_C 0x1000 /* VLAN CFI bit */ 2125bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_COS_SHIFT 12 /* class of service value */ 2126bafec742SSukumar Swaminathan 2127bafec742SSukumar Swaminathan uint16_t reserved1; 2128bafec742SSukumar Swaminathan uint32_t reserved2[6]; 2129bafec742SSukumar Swaminathan uint8_t reserved3[3]; 2130bafec742SSukumar Swaminathan uint8_t flags4; 2131bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_HV 0x20 2132bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_HS 0x40 2133bafec742SSukumar Swaminathan #define IB_MAC_IOCB_RSP_HL 0x80 2134bafec742SSukumar Swaminathan uint32_t hdr_len; 2135bafec742SSukumar Swaminathan uint64_t hdr_addr; 2136bafec742SSukumar Swaminathan }; 2137bafec742SSukumar Swaminathan 2138bafec742SSukumar Swaminathan /* 16 words, 64 bytes */ 2139bafec742SSukumar Swaminathan struct ib_sys_event_iocb_rsp { 2140bafec742SSukumar Swaminathan uint8_t opcode; 2141bafec742SSukumar Swaminathan uint8_t flag0; 2142bafec742SSukumar Swaminathan uint8_t event_type; 2143bafec742SSukumar Swaminathan uint8_t q_id; 2144bafec742SSukumar Swaminathan uint32_t reserved[15]; 2145bafec742SSukumar Swaminathan }; 2146bafec742SSukumar Swaminathan #define SYS_EVENT_PORT_LINK_UP 0x0 2147bafec742SSukumar Swaminathan #define SYS_EVENT_PORT_LINK_DOWN 0x1 2148bafec742SSukumar Swaminathan #define SYS_EVENT_MULTIPLE_CAM_HITS 0x6 2149bafec742SSukumar Swaminathan #define SYS_EVENT_SOFT_ECC_ERR 0x7 2150bafec742SSukumar Swaminathan #define SYS_EVENT_MGMT_FATAL_ERR 0x8 /* MPI_PROCESSOR */ 2151bafec742SSukumar Swaminathan #define SYS_EVENT_MAC_INTERRUPT 0x9 2152bafec742SSukumar Swaminathan #define SYS_EVENT_PCI_ERR_READING_SML_LRG_BUF 0x40 2153bafec742SSukumar Swaminathan 2154bafec742SSukumar Swaminathan /* 2155bafec742SSukumar Swaminathan * Status Register (#define STATUS) bit definitions. 2156bafec742SSukumar Swaminathan */ 2157bafec742SSukumar Swaminathan #define STATUS_FE (1 << 0) 2158bafec742SSukumar Swaminathan #define STATUS_PI (1 << 1) 2159bafec742SSukumar Swaminathan #define STATUS_PL0 (1 << 2), 2160bafec742SSukumar Swaminathan #define STATUS_PL1 (1 << 3) 2161bafec742SSukumar Swaminathan #define STATUS_PI0 (1 << 4) 2162bafec742SSukumar Swaminathan #define STATUS_PI1 (1 << 5) 2163bafec742SSukumar Swaminathan #define STATUS_FUNC_ID_MASK 0x000000c0 2164bafec742SSukumar Swaminathan #define STATUS_FUNC_ID_SHIFT 6 2165bafec742SSukumar Swaminathan #define STATUS_F0E (1 << 8) 2166bafec742SSukumar Swaminathan #define STATUS_F1E (1 << 9) 2167bafec742SSukumar Swaminathan #define STATUS_F2E (1 << 10) 2168bafec742SSukumar Swaminathan #define STATUS_F3E (1 << 11) 2169bafec742SSukumar Swaminathan #define STATUS_NFE (1 << 12) 2170bafec742SSukumar Swaminathan 2171bafec742SSukumar Swaminathan /* 2172bafec742SSukumar Swaminathan * Generic Response Queue IOCB Format which abstracts the difference between 2173bafec742SSukumar Swaminathan * IB_MAC, OB_MAC IOCBs 2174bafec742SSukumar Swaminathan */ 2175bafec742SSukumar Swaminathan struct net_rsp_iocb { 2176bafec742SSukumar Swaminathan uint8_t opcode; 2177bafec742SSukumar Swaminathan uint8_t flag0; 2178bafec742SSukumar Swaminathan uint8_t flag1; 2179bafec742SSukumar Swaminathan uint8_t flag2; 2180bafec742SSukumar Swaminathan uint32_t reserved[15]; 2181bafec742SSukumar Swaminathan }; 2182bafec742SSukumar Swaminathan 2183bafec742SSukumar Swaminathan /* Restore original packing rules */ 2184bafec742SSukumar Swaminathan #pragma pack() 2185bafec742SSukumar Swaminathan 2186bafec742SSukumar Swaminathan #define RESPONSE_ENTRY_SIZE (sizeof (struct net_rsp_iocb)) 2187bafec742SSukumar Swaminathan #define REQUEST_ENTRY_SIZE (sizeof (struct ob_mac_iocb_req)) 2188bafec742SSukumar Swaminathan 2189bafec742SSukumar Swaminathan /* flash */ 2190bafec742SSukumar Swaminathan /* Little endian machine correction defines. */ 2191bafec742SSukumar Swaminathan #ifdef _LITTLE_ENDIAN 2192bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_16(x) 2193bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_24(x) 2194bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_32(x) 2195bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_64(x) 2196bafec742SSukumar Swaminathan #define LITTLE_ENDIAN(bp, bytes) 2197bafec742SSukumar Swaminathan #define BIG_ENDIAN_16(x) ql_change_endian((uint8_t *)x, 2) 2198bafec742SSukumar Swaminathan #define BIG_ENDIAN_24(x) ql_change_endian((uint8_t *)x, 3) 2199bafec742SSukumar Swaminathan #define BIG_ENDIAN_32(x) ql_change_endian((uint8_t *)x, 4) 2200bafec742SSukumar Swaminathan #define BIG_ENDIAN_64(x) ql_change_endian((uint8_t *)x, 8) 2201bafec742SSukumar Swaminathan #define BIG_ENDIAN(bp, bytes) ql_change_endian((uint8_t *)bp, bytes) 2202bafec742SSukumar Swaminathan #endif /* _LITTLE_ENDIAN */ 2203bafec742SSukumar Swaminathan 2204bafec742SSukumar Swaminathan /* Big endian machine correction defines. */ 2205bafec742SSukumar Swaminathan #ifdef _BIG_ENDIAN 2206bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_16(x) ql_change_endian((uint8_t *)x, 2) 2207bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_24(x) ql_change_endian((uint8_t *)x, 3) 2208bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_32(x) ql_change_endian((uint8_t *)x, 4) 2209bafec742SSukumar Swaminathan #define LITTLE_ENDIAN_64(x) ql_change_endian((uint8_t *)x, 8) 2210bafec742SSukumar Swaminathan #define LITTLE_ENDIAN(bp, bytes) ql_change_endian((uint8_t *)bp, bytes) 2211bafec742SSukumar Swaminathan #define BIG_ENDIAN_16(x) 2212bafec742SSukumar Swaminathan #define BIG_ENDIAN_24(x) 2213bafec742SSukumar Swaminathan #define BIG_ENDIAN_32(x) 2214bafec742SSukumar Swaminathan #define BIG_ENDIAN_64(x) 2215bafec742SSukumar Swaminathan #define BIG_ENDIAN(bp, bytes) 2216bafec742SSukumar Swaminathan #endif /* _BIG_ENDIAN */ 2217bafec742SSukumar Swaminathan 2218bafec742SSukumar Swaminathan void ql_change_endian(uint8_t *, size_t); 2219bafec742SSukumar Swaminathan 2220bafec742SSukumar Swaminathan /* Flash Address Register 0x88 */ 2221bafec742SSukumar Swaminathan #define FLASH_RDY_FLAG BIT_31 2222bafec742SSukumar Swaminathan #define FLASH_R_FLAG BIT_30 2223bafec742SSukumar Swaminathan #define FLASH_ERR_FLAG BIT_29 2224bafec742SSukumar Swaminathan #define FLASH_CONF_ADDR 0x7D0000u 2225bafec742SSukumar Swaminathan #define FLASH_ADDR_MASK 0x7F0000 2226bafec742SSukumar Swaminathan 2227bafec742SSukumar Swaminathan #define FLASH_WRSR_CMD 0x01 2228bafec742SSukumar Swaminathan #define FLASH_PP_CMD 0x02 2229bafec742SSukumar Swaminathan #define FLASH_READ_CMD 0x03 2230bafec742SSukumar Swaminathan #define FLASH_WRDI_CMD 0x04 2231bafec742SSukumar Swaminathan #define FLASH_RDSR_CMD 0x05 2232bafec742SSukumar Swaminathan #define FLASH_WREN_CMD 0x06 2233bafec742SSukumar Swaminathan #define FLASH_RDID_CMD 0x9F 2234bafec742SSukumar Swaminathan #define FLASH_RES_CMD 0xAB 2235bafec742SSukumar Swaminathan 2236bafec742SSukumar Swaminathan /* 2237bafec742SSukumar Swaminathan * Flash definitions. 2238bafec742SSukumar Swaminathan */ 2239bafec742SSukumar Swaminathan typedef struct ql_flash_info { 2240bafec742SSukumar Swaminathan uint32_t type; /* flash type */ 2241bafec742SSukumar Swaminathan uint32_t flash_size; /* length in bytes of flash */ 2242bafec742SSukumar Swaminathan uint32_t sec_mask; /* sector number mask */ 2243bafec742SSukumar Swaminathan uint8_t flash_manuf; /* flash chip manufacturer id */ 2244bafec742SSukumar Swaminathan uint8_t flash_id; /* flash chip id */ 2245bafec742SSukumar Swaminathan uint8_t flash_cap; /* flash chip capacity */ 2246bafec742SSukumar Swaminathan } ql_flash_info_t; 2247bafec742SSukumar Swaminathan 2248bafec742SSukumar Swaminathan /* 2249bafec742SSukumar Swaminathan * Flash Description Table 2250bafec742SSukumar Swaminathan */ 2251bafec742SSukumar Swaminathan #define FLASH_DESC_VERSION 1 2252bafec742SSukumar Swaminathan #define FLASH_DESC_VAILD 0x44494C51 /* "QLID" */ 2253bafec742SSukumar Swaminathan typedef struct flash_desc { 2254bafec742SSukumar Swaminathan uint32_t flash_valid; 2255bafec742SSukumar Swaminathan uint16_t flash_version; 2256bafec742SSukumar Swaminathan uint16_t flash_len; /* flash description table length */ 2257bafec742SSukumar Swaminathan uint16_t flash_checksum; 2258bafec742SSukumar Swaminathan uint16_t flash_unused; 2259bafec742SSukumar Swaminathan uint8_t flash_model[16]; 2260bafec742SSukumar Swaminathan uint16_t flash_manuf; 2261bafec742SSukumar Swaminathan uint16_t flash_id; 2262bafec742SSukumar Swaminathan uint8_t flash_flag; 2263bafec742SSukumar Swaminathan uint8_t erase_cmd; 2264bafec742SSukumar Swaminathan uint8_t alt_erase_cmd; 2265bafec742SSukumar Swaminathan uint8_t write_enable_cmd; 2266bafec742SSukumar Swaminathan uint8_t write_enable_bits; 2267bafec742SSukumar Swaminathan uint8_t write_statusreg_cmd; 2268bafec742SSukumar Swaminathan uint8_t unprotect_sector_cmd; 2269bafec742SSukumar Swaminathan uint8_t read_manuf_cmd; 2270bafec742SSukumar Swaminathan uint32_t block_size; 2271bafec742SSukumar Swaminathan uint32_t alt_block_size; 2272bafec742SSukumar Swaminathan uint32_t flash_size; 2273bafec742SSukumar Swaminathan uint32_t write_enable_data; 2274bafec742SSukumar Swaminathan uint8_t readid_address_len; 2275bafec742SSukumar Swaminathan uint8_t write_disable_bits; 2276bafec742SSukumar Swaminathan uint8_t read_device_id_len; 2277bafec742SSukumar Swaminathan uint8_t chip_erase_cmd; 2278bafec742SSukumar Swaminathan uint16_t read_timeout; 2279bafec742SSukumar Swaminathan uint8_t protect_sector_cmd; 2280bafec742SSukumar Swaminathan uint8_t exp_reserved[65]; 2281bafec742SSukumar Swaminathan } flash_desc_t; 2282bafec742SSukumar Swaminathan 2283bafec742SSukumar Swaminathan /* flash manufacturer id's */ 2284bafec742SSukumar Swaminathan #define AMD_FLASH 0x01 /* AMD / Spansion */ 2285bafec742SSukumar Swaminathan #define ST_FLASH 0x20 /* ST Electronics */ 2286bafec742SSukumar Swaminathan #define SST_FLASH 0xbf /* SST Electronics */ 2287bafec742SSukumar Swaminathan #define MXIC_FLASH 0xc2 /* Macronix (MXIC) */ 2288bafec742SSukumar Swaminathan #define ATMEL_FLASH 0x1f /* Atmel (AT26DF081A) */ 2289bafec742SSukumar Swaminathan #define WINBOND_FLASH 0xef /* Winbond (W25X16,W25X32) */ 2290bafec742SSukumar Swaminathan #define INTEL_FLASH 0x89 /* Intel (QB25F016S33B8) */ 2291bafec742SSukumar Swaminathan 2292bafec742SSukumar Swaminathan /* flash id defines */ 2293bafec742SSukumar Swaminathan #define AMD_FLASHID_128K 0x6e /* 128k AMD flash chip */ 2294bafec742SSukumar Swaminathan #define AMD_FLASHID_512K 0x4f /* 512k AMD flash chip */ 2295bafec742SSukumar Swaminathan #define AMD_FLASHID_512Kt 0xb9 /* 512k AMD flash chip - top boot blk */ 2296bafec742SSukumar Swaminathan #define AMD_FLASHID_512Kb 0xba /* 512k AMD flash chip - btm boot blk */ 2297bafec742SSukumar Swaminathan #define AMD_FLASHID_1024K 0x38 /* 1 MB AMD flash chip */ 2298bafec742SSukumar Swaminathan #define ST_FLASHID_128K 0x23 /* 128k ST flash chip */ 2299bafec742SSukumar Swaminathan #define ST_FLASHID_512K 0xe3 /* 512k ST flash chip */ 2300bafec742SSukumar Swaminathan #define ST_FLASHID_M25PXX 0x20 /* M25Pxx ST flash chip */ 2301bafec742SSukumar Swaminathan #define SST_FLASHID_128K 0xd5 /* 128k SST flash chip */ 2302bafec742SSukumar Swaminathan #define SST_FLASHID_1024K 0xd8 /* 1 MB SST flash chip */ 2303bafec742SSukumar Swaminathan #define SST_FLASHID_1024K_A 0x80 /* 1 MB SST 25LF080A flash chip */ 2304bafec742SSukumar Swaminathan #define SST_FLASHID_1024K_B 0x8e /* 1 MB SST 25VF080B flash chip */ 2305bafec742SSukumar Swaminathan #define SST_FLASHID_2048K 0x25 /* 2 MB SST 25VF016B flash chip */ 2306bafec742SSukumar Swaminathan #define MXIC_FLASHID_512K 0x4f /* 512k MXIC flash chip */ 2307bafec742SSukumar Swaminathan #define MXIC_FLASHID_1024K 0x38 /* 1 MB MXIC flash chip */ 2308bafec742SSukumar Swaminathan #define MXIC_FLASHID_25LXX 0x20 /* 25Lxx MXIC flash chip */ 2309bafec742SSukumar Swaminathan #define ATMEL_FLASHID_1024K 0x45 /* 1 MB ATMEL flash chip */ 2310bafec742SSukumar Swaminathan #define SPAN_FLASHID_2048K 0x02 /* 2 MB Spansion flash chip */ 2311bafec742SSukumar Swaminathan #define WINBOND_FLASHID 0x30 /* Winbond W25Xxx flash chip */ 2312bafec742SSukumar Swaminathan #define INTEL_FLASHID 0x89 /* Intel QB25F016S33B8 flash chip */ 2313bafec742SSukumar Swaminathan 2314bafec742SSukumar Swaminathan /* flash type defines */ 2315bafec742SSukumar Swaminathan #define FLASH128 BIT_0 2316bafec742SSukumar Swaminathan #define FLASH512 BIT_1 2317bafec742SSukumar Swaminathan #define FLASH512S BIT_2 2318bafec742SSukumar Swaminathan #define FLASH1024 BIT_3 2319bafec742SSukumar Swaminathan #define FLASH2048 BIT_4 2320bafec742SSukumar Swaminathan #define FLASH4096 BIT_5 2321bafec742SSukumar Swaminathan #define FLASH8192 BIT_6 2322bafec742SSukumar Swaminathan #define FLASH_PAGE BIT_31 2323bafec742SSukumar Swaminathan #define FLASH_LEGACY (FLASH128 | FLASH512S) 2324bafec742SSukumar Swaminathan 2325bafec742SSukumar Swaminathan #define FLASH_FIRMWARE_IMAGE_ADDR 0x100000 /* 1M */ 2326bafec742SSukumar Swaminathan typedef struct { 2327bafec742SSukumar Swaminathan uint8_t signature[2]; 2328bafec742SSukumar Swaminathan uint8_t reserved[0x16]; 2329bafec742SSukumar Swaminathan uint8_t dataoffset[2]; 2330bafec742SSukumar Swaminathan uint8_t pad[6]; 2331bafec742SSukumar Swaminathan } pci_header_t; 2332bafec742SSukumar Swaminathan 2333bafec742SSukumar Swaminathan typedef struct { 2334bafec742SSukumar Swaminathan uint8_t signature[4]; 2335bafec742SSukumar Swaminathan uint8_t vid[2]; 2336bafec742SSukumar Swaminathan uint8_t did[2]; 2337bafec742SSukumar Swaminathan uint8_t reserved0[2]; 2338bafec742SSukumar Swaminathan uint8_t pcidatalen[2]; 2339bafec742SSukumar Swaminathan uint8_t pcidatarev; 2340bafec742SSukumar Swaminathan uint8_t classcode[3]; 2341bafec742SSukumar Swaminathan uint8_t imagelength[2]; /* In sectors */ 2342bafec742SSukumar Swaminathan uint8_t revisionlevel[2]; 2343bafec742SSukumar Swaminathan uint8_t codetype; 2344bafec742SSukumar Swaminathan uint8_t indicator; 2345bafec742SSukumar Swaminathan uint8_t reserved1[2]; 2346bafec742SSukumar Swaminathan uint8_t pad[8]; 2347bafec742SSukumar Swaminathan } pci_data_t; 2348bafec742SSukumar Swaminathan 2349bafec742SSukumar Swaminathan #define PCI_HEADER0 0x55 2350bafec742SSukumar Swaminathan #define PCI_HEADER1 0xAA 2351bafec742SSukumar Swaminathan #define PCI_DATASIG "PCIR" 2352bafec742SSukumar Swaminathan #define PCI_SECTOR_SIZE 0x200 2353bafec742SSukumar Swaminathan #define PCI_CODE_X86PC 0 2354bafec742SSukumar Swaminathan #define PCI_CODE_FCODE 1 2355bafec742SSukumar Swaminathan #define PCI_CODE_HPPA 2 2356bafec742SSukumar Swaminathan #define PCI_CODE_EFI 3 2357bafec742SSukumar Swaminathan #define PCI_CODE_FW 0xfe 2358bafec742SSukumar Swaminathan #define PCI_IND_LAST_IMAGE 0x80 2359bafec742SSukumar Swaminathan #define SBUS_CODE_FCODE 0xf1 2360bafec742SSukumar Swaminathan 2361bafec742SSukumar Swaminathan #define FBUFSIZE 100 2362bafec742SSukumar Swaminathan /* Flash Layout Table Data Structure(FLTDS) */ 2363bafec742SSukumar Swaminathan #define FLASH_FLTDS_SIGNATURE 0x544C4651 /* "QFLT" */ 2364bafec742SSukumar Swaminathan 2365bafec742SSukumar Swaminathan typedef struct ql_fltds { 2366bafec742SSukumar Swaminathan uint32_t signature; 2367bafec742SSukumar Swaminathan uint16_t flt_addr_lo; 2368bafec742SSukumar Swaminathan uint16_t flt_addr_hi; 2369bafec742SSukumar Swaminathan uint8_t version; 2370bafec742SSukumar Swaminathan uint8_t reserved; 2371bafec742SSukumar Swaminathan uint16_t checksum; 2372bafec742SSukumar Swaminathan } ql_fltds_t; 2373bafec742SSukumar Swaminathan /* Image Layout Table Data Structure(ILTDS) */ 2374bafec742SSukumar Swaminathan #define FLASH_ILTDS_SIGNATURE 0x4D494651 /* "QFIM" */ 2375bafec742SSukumar Swaminathan typedef struct ql_iltds_header { 2376bafec742SSukumar Swaminathan uint32_t signature; 2377bafec742SSukumar Swaminathan uint16_t table_version; /* version of this structure */ 2378bafec742SSukumar Swaminathan uint16_t length; /* length of the table */ 2379bafec742SSukumar Swaminathan uint16_t checksum; 2380bafec742SSukumar Swaminathan uint16_t number_entries; /* Number of type/len/size entries */ 2381bafec742SSukumar Swaminathan uint16_t reserved; 2382bafec742SSukumar Swaminathan uint16_t version; /* version of the image */ 2383bafec742SSukumar Swaminathan } ql_iltds_header_t; 2384bafec742SSukumar Swaminathan 2385bafec742SSukumar Swaminathan #define IMAGE_TABLE_HEADER_LEN sizeof (ql_iltds_header_t) 2386bafec742SSukumar Swaminathan 2387bafec742SSukumar Swaminathan #define ILTDS_REGION_VERSION_LEN_NA 0 /* version not applicable */ 2388bafec742SSukumar Swaminathan typedef struct ql_iltds_img_entry { 2389bafec742SSukumar Swaminathan uint16_t region_type; 2390bafec742SSukumar Swaminathan uint8_t region_version_len; 2391bafec742SSukumar Swaminathan uint8_t region_version[3]; 2392bafec742SSukumar Swaminathan uint16_t offset_lo; 2393bafec742SSukumar Swaminathan uint16_t offset_hi; 2394bafec742SSukumar Swaminathan uint16_t size_lo; 2395bafec742SSukumar Swaminathan uint16_t size_hi; 2396bafec742SSukumar Swaminathan uint8_t swap_mode; 2397bafec742SSukumar Swaminathan #define ILTDS_IMG_SWAP_NONE 0 /* no swap needed */ 2398bafec742SSukumar Swaminathan #define ILTDS_IMG_SWAP_WORD 1 2399bafec742SSukumar Swaminathan 2400bafec742SSukumar Swaminathan uint8_t card_type; 2401bafec742SSukumar Swaminathan #define ILTDS_IMG_CARD_TYPE_ALL 0 /* apply to all types */ 2402bafec742SSukumar Swaminathan #define ILTDS_IMG_CARD_TYPE_SR 1 /* apply to SR/fc cards */ 2403bafec742SSukumar Swaminathan #define ILTDS_IMG_CARD_TYPE_COPPER 2 /* apply to Copper cards */ 2404bafec742SSukumar Swaminathan #define ILTDS_IMG_CARD_TYPE_MEZZ 4 /* apply to Mezz cards */ 2405bafec742SSukumar Swaminathan } ql_iltds_img_entry_t; 2406bafec742SSukumar Swaminathan 2407bafec742SSukumar Swaminathan #define IMAGE_TABLE_ENTRY_LEN sizeof (ql_iltds_img_entry_t) 2408bafec742SSukumar Swaminathan 2409bafec742SSukumar Swaminathan typedef struct ql_iltds_time_stamp { 2410bafec742SSukumar Swaminathan uint16_t region_type; 2411bafec742SSukumar Swaminathan uint8_t region_version_len; 2412bafec742SSukumar Swaminathan uint8_t region_version[3]; 2413bafec742SSukumar Swaminathan uint8_t year; 2414bafec742SSukumar Swaminathan uint8_t month; 2415bafec742SSukumar Swaminathan uint8_t day; 2416bafec742SSukumar Swaminathan uint8_t hour; 2417bafec742SSukumar Swaminathan uint8_t min; 2418bafec742SSukumar Swaminathan uint8_t sec; 2419bafec742SSukumar Swaminathan uint32_t reserved; 2420bafec742SSukumar Swaminathan } ql_iltds_time_stamp_t; 2421bafec742SSukumar Swaminathan 2422bafec742SSukumar Swaminathan #define IMAGE_TABLE_TIME_STAMP_LEN sizeof (ql_iltds_time_stamp_t) 2423bafec742SSukumar Swaminathan 2424bafec742SSukumar Swaminathan #define IMAGE_TABLE_IMAGE_DEFAULT_ENTRIES 5 2425bafec742SSukumar Swaminathan 2426bafec742SSukumar Swaminathan typedef struct ql_iltds_description_header { 2427bafec742SSukumar Swaminathan ql_iltds_header_t iltds_table_header; 2428bafec742SSukumar Swaminathan ql_iltds_img_entry_t img_entry[IMAGE_TABLE_IMAGE_DEFAULT_ENTRIES]; 2429bafec742SSukumar Swaminathan ql_iltds_time_stamp_t time_stamp; 2430bafec742SSukumar Swaminathan }ql_iltds_description_header_t; 2431bafec742SSukumar Swaminathan 2432bafec742SSukumar Swaminathan #define ILTDS_DESCRIPTION_HEADERS_LEN sizeof (ql_iltds_description_header_t) 2433bafec742SSukumar Swaminathan 2434bafec742SSukumar Swaminathan /* flash layout table definition */ 2435bafec742SSukumar Swaminathan /* header */ 2436bafec742SSukumar Swaminathan typedef struct ql_flt_header { 2437bafec742SSukumar Swaminathan uint16_t version; 2438bafec742SSukumar Swaminathan uint16_t length; /* length of the flt table,no table header */ 2439bafec742SSukumar Swaminathan uint16_t checksum; 2440bafec742SSukumar Swaminathan uint16_t reserved; 2441bafec742SSukumar Swaminathan } ql_flt_header_t; 2442bafec742SSukumar Swaminathan 2443bafec742SSukumar Swaminathan /* table entry */ 2444bafec742SSukumar Swaminathan typedef struct ql_flt_entry { 2445bafec742SSukumar Swaminathan uint8_t region; 2446bafec742SSukumar Swaminathan uint8_t reserved0; 2447bafec742SSukumar Swaminathan uint8_t attr; 2448bafec742SSukumar Swaminathan #define FLT_ATTR_READ_ONLY BIT_0 2449bafec742SSukumar Swaminathan #define FLT_ATTR_NEED_FW_RESTART BIT_1 2450bafec742SSukumar Swaminathan #define FLT_ATTR_NEED_DATA_REALOAD BIT_2 2451bafec742SSukumar Swaminathan uint8_t reserved1; 2452bafec742SSukumar Swaminathan uint32_t size; 2453bafec742SSukumar Swaminathan uint32_t begin_addr; 2454bafec742SSukumar Swaminathan uint32_t end_addr; 2455bafec742SSukumar Swaminathan } ql_flt_entry_t; 2456bafec742SSukumar Swaminathan 2457bafec742SSukumar Swaminathan /* flt table */ 2458bafec742SSukumar Swaminathan typedef struct ql_flt { 2459bafec742SSukumar Swaminathan ql_flt_header_t header; 2460bafec742SSukumar Swaminathan uint16_t num_entries; 2461bafec742SSukumar Swaminathan ql_flt_entry_t *ql_flt_entry_ptr; 2462bafec742SSukumar Swaminathan } ql_flt_t; 2463bafec742SSukumar Swaminathan 2464bafec742SSukumar Swaminathan /* Nic Configuration Table */ 2465bafec742SSukumar Swaminathan #define FLASH_NIC_CONFIG_SIGNATURE 0x30303038 /* "8000" */ 2466bafec742SSukumar Swaminathan 2467bafec742SSukumar Swaminathan enum { 2468bafec742SSukumar Swaminathan DATA_TYPE_NONE, 2469bafec742SSukumar Swaminathan DATA_TYPE_FACTORY_MAC_ADDR, 2470bafec742SSukumar Swaminathan DATA_TYPE_CLP_MAC_ADDR, 2471bafec742SSukumar Swaminathan DATA_TYPE_CLP_VLAN_MAC_ADDR, 2472bafec742SSukumar Swaminathan DATA_TYPE_RESERVED, 2473bafec742SSukumar Swaminathan DATA_TYPE_LAST_ENTRY 2474bafec742SSukumar Swaminathan }; 2475bafec742SSukumar Swaminathan 2476bafec742SSukumar Swaminathan typedef struct ql_nic_config { 2477bafec742SSukumar Swaminathan uint32_t signature; 2478bafec742SSukumar Swaminathan uint16_t version; 2479bafec742SSukumar Swaminathan uint16_t size; 2480bafec742SSukumar Swaminathan uint16_t checksum; 2481bafec742SSukumar Swaminathan uint16_t reserved0; 2482bafec742SSukumar Swaminathan uint16_t total_data_size; 2483bafec742SSukumar Swaminathan uint16_t num_of_entries; 2484bafec742SSukumar Swaminathan uint8_t factory_data_type; 2485bafec742SSukumar Swaminathan uint8_t factory_data_type_size; 2486bafec742SSukumar Swaminathan uint8_t factory_MAC[6]; 2487bafec742SSukumar Swaminathan uint8_t clp_data_type; 2488bafec742SSukumar Swaminathan uint8_t clp_data_type_size; 2489bafec742SSukumar Swaminathan uint8_t clp_MAC[6]; 2490bafec742SSukumar Swaminathan uint8_t clp_vlan_data_type; 2491bafec742SSukumar Swaminathan uint8_t clp_vlan_data_type_size; 2492bafec742SSukumar Swaminathan uint16_t vlan_id; 2493bafec742SSukumar Swaminathan uint8_t last_data_type; 2494bafec742SSukumar Swaminathan uint8_t last_data_type_size; 2495bafec742SSukumar Swaminathan uint16_t last_entry; 2496bafec742SSukumar Swaminathan uint8_t reserved1[464]; 2497bafec742SSukumar Swaminathan uint16_t subsys_vendor_id; 2498bafec742SSukumar Swaminathan uint16_t subsys_device_id; 2499bafec742SSukumar Swaminathan uint8_t reserved2[4]; 2500bafec742SSukumar Swaminathan } ql_nic_config_t; 2501bafec742SSukumar Swaminathan 2502bafec742SSukumar Swaminathan #ifdef __cplusplus 2503bafec742SSukumar Swaminathan } 2504bafec742SSukumar Swaminathan #endif 2505bafec742SSukumar Swaminathan 2506bafec742SSukumar Swaminathan #endif /* _QLGE_HW_H */ 2507